From 7064c9bed45ed5be0f2f51ed18137d981a92d697 Mon Sep 17 00:00:00 2001 From: James Laska Date: Wed, 20 May 2015 15:26:44 -0400 Subject: [PATCH] Additional flake8 cleanup The flake8 command was identifying several warnings and errors. This change addresses the flake8 warnings and updates the setup.cfg with additional exclusions. If accepted, jenkins will be updated to use the flake8 command, rather than using the django_jenkins plugin. This will expedite jenkins testing. --- Makefile | 20 +++-- awx/plugins/callback/job_event_callback.py | 3 - awx/plugins/fact_caching/tower.py | 1 - awx/plugins/inventory/awxrest.py | 12 +-- awx/plugins/library/scan_services.py | 4 +- awx/settings/defaults.py | 20 +++-- awx/settings/development.py | 14 ++-- awx/settings/development_quiet.py | 4 +- awx/settings/production.py | 10 +-- config/wsgi.py | 2 +- setup.cfg | 4 +- tools/sosreport/tower.py | 87 ++++++++-------------- 12 files changed, 77 insertions(+), 104 deletions(-) diff --git a/Makefile b/Makefile index 4c99a5bd71..f79d2405a9 100644 --- a/Makefile +++ b/Makefile @@ -244,14 +244,22 @@ socketservice: factcacher: $(PYTHON) manage.py run_fact_cache_receiver -pep8: - pep8 -r awx/ +reports: + mkdir -p $@ -pyflakes: - pyflakes awx/ +pep8: reports + @(set -o pipefail && $@ | tee reports/$@.report) -check: - flake8 +flake8: reports + @$@ --output-file=reports/$@.report + +pyflakes: reports + @(set -o pipefail && $@ | tee reports/$@.report) + +pylint: reports + @(set -o pipefail && $@ | reports/$@.report) + +check: flake8 pep8 # pyflakes pylint # Run all API unit tests. test: diff --git a/awx/plugins/callback/job_event_callback.py b/awx/plugins/callback/job_event_callback.py index 3f91c55b19..81f4a00b92 100644 --- a/awx/plugins/callback/job_event_callback.py +++ b/awx/plugins/callback/job_event_callback.py @@ -36,11 +36,8 @@ import json import logging import os import pwd -import sys -import urllib import urlparse import time -from contextlib import closing # Requests import requests diff --git a/awx/plugins/fact_caching/tower.py b/awx/plugins/fact_caching/tower.py index 5d0516b92b..eaa404e744 100755 --- a/awx/plugins/fact_caching/tower.py +++ b/awx/plugins/fact_caching/tower.py @@ -32,7 +32,6 @@ import sys import time import datetime -import json from copy import deepcopy from ansible import constants as C from ansible.cache.base import BaseCacheModule diff --git a/awx/plugins/inventory/awxrest.py b/awx/plugins/inventory/awxrest.py index 347ecb0961..2ab30dedd4 100755 --- a/awx/plugins/inventory/awxrest.py +++ b/awx/plugins/inventory/awxrest.py @@ -4,10 +4,10 @@ # This file is a utility script that is not part of the AWX or Ansible # packages. It does not import any code from either package, nor does its # license apply to Ansible or AWX. -# +# # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: -# +# # Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # @@ -61,7 +61,7 @@ class TokenAuth(requests.auth.AuthBase): return request class InventoryScript(object): - + def __init__(self, **options): self.options = options @@ -95,11 +95,11 @@ class InventoryScript(object): def run(self): try: self.base_url = self.options.get('base_url', '') or \ - os.getenv('REST_API_URL', '') + os.getenv('REST_API_URL', '') if not self.base_url: raise ValueError('No REST API URL specified') self.auth_token = self.options.get('authtoken', '') or \ - os.getenv('REST_API_TOKEN', '') + os.getenv('REST_API_TOKEN', '') parts = urlparse.urlsplit(self.base_url) if not (parts.username and parts.password) and not self.auth_token: raise ValueError('No username/password specified in REST API ' @@ -107,7 +107,7 @@ class InventoryScript(object): try: # Command line argument takes precedence over environment # variable. - self.inventory_id = int(self.options.get('inventory_id', 0) or \ + self.inventory_id = int(self.options.get('inventory_id', 0) or os.getenv('INVENTORY_ID', 0)) except ValueError: raise ValueError('Inventory ID must be an integer') diff --git a/awx/plugins/library/scan_services.py b/awx/plugins/library/scan_services.py index 920daa860c..0db0c3d4c5 100644 --- a/awx/plugins/library/scan_services.py +++ b/awx/plugins/library/scan_services.py @@ -84,7 +84,7 @@ class ServiceScanService(BaseService): else: pid = None else: - pid = None + pid = None # NOQA payload = {"name": service_name, "state": service_state, "goal": service_goal, "source": "upstart"} services.append(payload) @@ -104,7 +104,7 @@ class ServiceScanService(BaseService): service_state = "dead" elif len(line_data) == 3: service_name = line_data[0] - service_pid = None + service_pid = None # NOQA service_state = "stopped" else: continue diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py index 18146a9042..f1a03ba26c 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -3,9 +3,7 @@ import os import sys -import glob from datetime import timedelta -import tempfile MONGO_DB = 'system_tracking' @@ -119,13 +117,13 @@ ALLOWED_HOSTS = [] # reverse proxy. REMOTE_HOST_HEADERS = ['REMOTE_ADDR', 'REMOTE_HOST'] -TEMPLATE_CONTEXT_PROCESSORS += ( +TEMPLATE_CONTEXT_PROCESSORS += ( # NOQA 'django.core.context_processors.request', 'awx.ui.context_processors.settings', 'awx.ui.context_processors.version', ) -MIDDLEWARE_CLASSES += ( +MIDDLEWARE_CLASSES += ( # NOQA 'awx.main.middleware.HAMiddleware', 'awx.main.middleware.ActivityStreamMiddleware', 'crum.CurrentRequestUserMiddleware', @@ -247,7 +245,7 @@ EMAIL_USE_TLS = False # Use Django-Debug-Toolbar if installed. try: import debug_toolbar - INSTALLED_APPS += ('debug_toolbar',) + INSTALLED_APPS += (debug_toolbar.__name__,) except ImportError: pass @@ -259,7 +257,7 @@ DEBUG_TOOLBAR_CONFIG = { # Use Django-devserver if installed. try: import devserver - INSTALLED_APPS += ('devserver',) + INSTALLED_APPS += (devserver.__name__,) except ImportError: pass @@ -444,7 +442,7 @@ VMWARE_REGIONS_BLACKLIST = [] # Inventory variable name/values for determining whether a host is # active in vSphere. -VMWARE_ENABLED_VAR = 'vmware_powerState' +VMWARE_ENABLED_VAR = 'vmware_powerState' VMWARE_ENABLED_VALUE = 'poweredOn' # Inventory variable name containing the unique instance ID. @@ -609,7 +607,7 @@ LOGGING = { 'class':'logging.handlers.RotatingFileHandler', 'filters': ['require_debug_false'], 'filename': os.path.join(LOG_ROOT, 'tower_warnings.log'), - 'maxBytes': 1024*1024*5, # 5 MB + 'maxBytes': 1024 * 1024 * 5, # 5 MB 'backupCount': 5, 'formatter':'simple', }, @@ -618,7 +616,7 @@ LOGGING = { 'class':'logging.handlers.RotatingFileHandler', 'filters': ['require_debug_false'], 'filename': os.path.join(LOG_ROOT, 'callback_receiver.log'), - 'maxBytes': 1024*1024*5, # 5 MB + 'maxBytes': 1024 * 1024 * 5, # 5 MB 'backupCount': 5, 'formatter':'simple', }, @@ -627,7 +625,7 @@ LOGGING = { 'class':'logging.handlers.RotatingFileHandler', 'filters': ['require_debug_false'], 'filename': os.path.join(LOG_ROOT, 'socketio_service.log'), - 'maxBytes': 1024*1024*5, # 5 MB + 'maxBytes': 1024 * 1024 * 5, # 5 MB 'backupCount': 5, 'formatter':'simple', }, @@ -636,7 +634,7 @@ LOGGING = { 'class':'logging.handlers.RotatingFileHandler', 'filters': ['require_debug_false'], 'filename': os.path.join(LOG_ROOT, 'task_system.log'), - 'maxBytes': 1024*1024*5, # 5 MB + 'maxBytes': 1024 * 1024 * 5, # 5 MB 'backupCount': 5, 'formatter':'simple', }, diff --git a/awx/settings/development.py b/awx/settings/development.py index a5bbfa36ac..abc983af73 100644 --- a/awx/settings/development.py +++ b/awx/settings/development.py @@ -6,13 +6,12 @@ # Python import sys import traceback -import glob # Django Split Settings from split_settings.tools import optional, include # Load default settings. -from defaults import * +from defaults import * # NOQA MONGO_DB = 'system_tracking_dev' @@ -31,27 +30,24 @@ AWX_PROOT_ENABLED = True # Use Django-Jenkins if installed. Only run tests for awx.main app. try: import django_jenkins - INSTALLED_APPS += ('django_jenkins',) + INSTALLED_APPS += (django_jenkins.__name__,) PROJECT_APPS = ('awx.main.tests', 'awx.api.tests', 'awx.fact.tests',) except ImportError: pass if 'django_jenkins' in INSTALLED_APPS: JENKINS_TASKS = ( - 'django_jenkins.tasks.run_pylint', - 'django_jenkins.tasks.run_flake8', + # 'django_jenkins.tasks.run_pylint', + # 'django_jenkins.tasks.run_flake8', # The following are not needed when including run_flake8 # 'django_jenkins.tasks.run_pep8', # 'django_jenkins.tasks.run_pyflakes', # The following are handled by various grunt tasks and no longer required # 'django_jenkins.tasks.run_jshint', # 'django_jenkins.tasks.run_csslint', - ) + ) PEP8_RCFILE = "setup.cfg" PYLINT_RCFILE = ".pylintrc" - CSSLINT_CHECKED_FILES = glob.glob(os.path.join(BASE_DIR, 'ui/static/less/*.less')) - JSHINT_CHECKED_FILES = [os.path.join(BASE_DIR, 'ui/static/js'), - os.path.join(BASE_DIR, 'ui/static/lib/ansible'),] # Much faster than the default # https://docs.djangoproject.com/en/1.6/topics/auth/passwords/#how-django-stores-passwords diff --git a/awx/settings/development_quiet.py b/awx/settings/development_quiet.py index 282319b503..ef017f7340 100644 --- a/awx/settings/development_quiet.py +++ b/awx/settings/development_quiet.py @@ -4,10 +4,10 @@ # Development settings for AWX project, but with DEBUG disabled # Load development settings. -from defaults import * +from defaults import * # NOQA # Load development settings. -from development import * +from development import * # NOQA # Disable capturing DEBUG DEBUG = False diff --git a/awx/settings/production.py b/awx/settings/production.py index 2fa3c439fe..2552d91ce6 100644 --- a/awx/settings/production.py +++ b/awx/settings/production.py @@ -12,7 +12,7 @@ import traceback from split_settings.tools import optional, include # Load default settings. -from defaults import * +from defaults import * # NOQA DEBUG = False TEMPLATE_DEBUG = DEBUG @@ -49,7 +49,7 @@ LOGGING['handlers']['tower_warnings'] = { 'class':'logging.handlers.RotatingFileHandler', 'filters': ['require_debug_false'], 'filename': '/var/log/tower/tower.log', - 'maxBytes': 1024*1024*5, # 5 MB + 'maxBytes': 1024 * 1024 * 5, # 5 MB 'backupCount': 5, 'formatter':'simple', } @@ -60,7 +60,7 @@ LOGGING['handlers']['callback_receiver'] = { 'class':'logging.handlers.RotatingFileHandler', 'filters': ['require_debug_false'], 'filename': '/var/log/tower/callback_receiver.log', - 'maxBytes': 1024*1024*5, # 5 MB + 'maxBytes': 1024 * 1024 * 5, # 5 MB 'backupCount': 5, 'formatter':'simple', } @@ -70,7 +70,7 @@ LOGGING['handlers']['socketio_service'] = { 'class':'logging.handlers.RotatingFileHandler', 'filters': ['require_debug_false'], 'filename': '/var/log/tower/socketio_service.log', - 'maxBytes': 1024*1024*5, # 5 MB + 'maxBytes': 1024 * 1024 * 5, # 5 MB 'backupCount': 5, 'formatter':'simple', } @@ -80,7 +80,7 @@ LOGGING['handlers']['task_system'] = { 'class':'logging.handlers.RotatingFileHandler', 'filters': ['require_debug_false'], 'filename': '/var/log/tower/task_system.log', - 'maxBytes': 1024*1024*5, # 5 MB + 'maxBytes': 1024 * 1024 * 5, # 5 MB 'backupCount': 5, 'formatter':'simple', } diff --git a/config/wsgi.py b/config/wsgi.py index d517e2385a..9999eb08c8 100644 --- a/config/wsgi.py +++ b/config/wsgi.py @@ -1 +1 @@ -from awx.wsgi import application +from awx.wsgi import application # NOQA diff --git a/setup.cfg b/setup.cfg index bd64ca1943..64d74af131 100755 --- a/setup.cfg +++ b/setup.cfg @@ -14,8 +14,8 @@ # W391 - Blank line at end of file # W293 - Blank line contains whitespace ignore=E201,E203,E221,E225,E231,E241,E251,E261,E265,E302,E303,E501,W291,W391,W293 -exclude=awx/lib/site-packages,awx/ui,awx/api/urls.py,awx/main/migrations,awx/main/tests/data +exclude=.tox,awx/lib/site-packages,awx/plugins/inventory/ec2.py,awx/plugins/inventory/gce.py,awx/plugins/inventory/vmware.py,awx/plugins/inventory/windows_azure.py,awx/plugins/inventory/openstack.py,awx/ui,awx/api/urls.py,awx/main/migrations,awx/main/tests/data [flake8] ignore=E201,E203,E221,E225,E231,E241,E251,E261,E265,E302,E303,E501,W291,W391,W293,E731 -exclude=awx/lib/site-packages,awx/ui,awx/api/urls.py,awx/main/migrations,awx/main/tests/data,node_modules/,awx/projects/ +exclude=.tox,awx/lib/site-packages,awx/plugins/inventory/ec2.py,awx/plugins/inventory/gce.py,awx/plugins/inventory/vmware.py,awx/plugins/inventory/windows_azure.py,awx/plugins/inventory/openstack.py,awx/ui,awx/api/urls.py,awx/main/migrations,awx/main/tests/data,node_modules/,awx/projects/,tools/docker diff --git a/tools/sosreport/tower.py b/tools/sosreport/tower.py index 53dff76195..154c628a0b 100644 --- a/tools/sosreport/tower.py +++ b/tools/sosreport/tower.py @@ -4,6 +4,33 @@ import sos from distutils.version import LooseVersion +SOSREPORT_TOWER_COMMANDS = [ + "ansible --version", # ansible core version + "tower-manage --version", # tower version + "supervisorctl status", # tower process status + "pip list" # pip package list + "tree -d /var/lib/awx", # show me the dirs + "ls -ll /var/lib/awx", # check permissions + "ls -ll /etc/tower", +] + +SOSREPORT_TOWER_DIRS = [ + "/etc/tower/", + "/var/log/tower", + "/var/log/httpd", + "/var/log/apache2", + "/var/log/redis", + "/var/log/supervisor", + "/var/log/syslog", + "/var/log/udev", + "/var/log/kern*", + "/var/log/dist-upgrade", + "/var/log/installer", + "/var/log/unattended-upgrades", + "/var/log/apport.log" +] + + if LooseVersion(sos.__version__) >= LooseVersion('3.0'): from sos.plugins import Plugin, RedHatPlugin, UbuntuPlugin @@ -13,36 +40,10 @@ if LooseVersion(sos.__version__) >= LooseVersion('3.0'): def setup(self): - commands = [ - "ansible --version", # ansible core version - "awx-manage --version", # tower version - "supervisorctl status", # tower process status - "pip list" # pip package list - "tree -d /var/lib/awx", # show me the dirs - "ls -ll /var/lib/awx", # check permissions - "ls -ll /etc/tower" - ] - - dirs = [ - "/etc/tower/", - "/var/log/tower", - "/var/log/httpd", - "/var/log/apache2", - "/var/log/redis", - "/var/log/supervisor", - "/var/log/syslog", - "/var/log/udev", - "/var/log/kern*", - "/var/log/dist-upgrade", - "/var/log/installer", - "/var/log/unattended-upgrades", - "/var/log/apport.log" - ] - - for path in dirs: + for path in SOSREPORT_TOWER_DIRS: self.add_copy_spec(path) - for command in commands: + for command in SOSREPORT_TOWER_COMMANDS: self.add_cmd_output(command) else: @@ -53,35 +54,9 @@ else: def setup(self): - commands = [ - "ansible --version", # ansible core version - "awx-manage --version", # tower version - "supervisorctl status", # tower process status - "pip list" # pip package list - "tree -d /var/lib/awx", # show me the dirs - "ls -ll /var/lib/awx", # check permissions - "ls -ll /etc/tower" - ] - - dirs = [ - "/etc/tower/", - "/var/log/tower", - "/var/log/httpd", - "/var/log/apache2", - "/var/log/redis", - "/var/log/supervisor", - "/var/log/syslog", - "/var/log/udev", - "/var/log/kern*", - "/var/log/dist-upgrade", - "/var/log/installer", - "/var/log/unattended-upgrades", - "/var/log/apport.log" - ] - - for path in dirs: + for path in SOSREPORT_TOWER_DIRS: self.addCopySpec(path) - for command in commands: + for command in SOSREPORT_TOWER_COMMANDS: self.collectExtOutput(command)