diff --git a/test-requirements.txt b/test-requirements.txt index 0d567a98..ace010b4 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -1,5 +1,5 @@ # Hacking already pins down pep8, pyflakes and flake8 -hacking>=0.8.0,<0.9 +hacking>=0.9.2,<0.10 coverage>=3.6 discover diff --git a/tox.ini b/tox.ini index 6677585b..ff916dc8 100644 --- a/tox.ini +++ b/tox.ini @@ -30,6 +30,8 @@ commands = {posargs} [flake8] # H302 import only modules. -ignore = H302 +# H405 multi line docstring summary not separated with an empty line +# H904 Wrap long lines in parentheses instead of a backslash +ignore = H302,H405,H904 builtins = _ exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,tools diff --git a/tuskar/api/controllers/v1/models.py b/tuskar/api/controllers/v1/models.py index a9919fac..26e598bc 100644 --- a/tuskar/api/controllers/v1/models.py +++ b/tuskar/api/controllers/v1/models.py @@ -18,6 +18,7 @@ the internal Tuskar domain model. """ import logging + from wsme import types as wtypes from tuskar.db.sqlalchemy import models as db_models diff --git a/tuskar/api/controllers/v1/overcloud.py b/tuskar/api/controllers/v1/overcloud.py index acf71698..ba7389fa 100644 --- a/tuskar/api/controllers/v1/overcloud.py +++ b/tuskar/api/controllers/v1/overcloud.py @@ -11,11 +11,11 @@ # under the License. import logging -import pecan -import wsme +import pecan from pecan import rest import six +import wsme from wsmeext import pecan as wsme_pecan from tuskar.api.controllers.v1 import models diff --git a/tuskar/api/controllers/v1/overcloud_roles.py b/tuskar/api/controllers/v1/overcloud_roles.py index 4a724d83..4d30abc4 100644 --- a/tuskar/api/controllers/v1/overcloud_roles.py +++ b/tuskar/api/controllers/v1/overcloud_roles.py @@ -12,6 +12,7 @@ # under the License. import logging + import pecan from pecan import rest import wsme diff --git a/tuskar/cmd/api.py b/tuskar/cmd/api.py index 317e66a7..75586331 100644 --- a/tuskar/cmd/api.py +++ b/tuskar/cmd/api.py @@ -20,9 +20,9 @@ import logging import os import sys +from wsgiref import simple_server from oslo.config import cfg -from wsgiref import simple_server from tuskar.api import app from tuskar.common import service as tuskar_service diff --git a/tuskar/cmd/manager.py b/tuskar/cmd/manager.py index 52fae318..dd8bb510 100644 --- a/tuskar/cmd/manager.py +++ b/tuskar/cmd/manager.py @@ -23,10 +23,9 @@ import sys from oslo.config import cfg -from tuskar.openstack.common import service - from tuskar.common import service as tuskar_service from tuskar.manager import manager +from tuskar.openstack.common import service CONF = cfg.CONF diff --git a/tuskar/common/exception.py b/tuskar/common/exception.py index fc57b502..14da2911 100644 --- a/tuskar/common/exception.py +++ b/tuskar/common/exception.py @@ -50,19 +50,21 @@ class ProcessExecutionError(IOError): description = _('Unexpected error while running command.') if exit_code is None: exit_code = '-' - message = _('%(description)s\nCommand: %(cmd)s\n' - 'Exit code: %(exit_code)s\nStdout: %(stdout)r\n' - 'Stderr: %(stderr)r') % { - 'description': description, 'cmd': cmd, - 'exit_code': exit_code, 'stdout': stdout, - 'stderr': stderr - } + message = _( + '%(description)s\nCommand: %(cmd)s\n' + 'Exit code: %(exit_code)s\nStdout: %(stdout)r\n' + 'Stderr: %(stderr)r' + ) % { + 'description': description, 'cmd': cmd, + 'exit_code': exit_code, 'stdout': stdout, + 'stderr': stderr + } IOError.__init__(self, message) def _cleanse_dict(original): """Strip all admin_password, new_pass, rescue_pass keys from a dict.""" - return dict((k, v) for k, v in original.iteritems() if not "_pass" in k) + return dict((k, v) for k, v in original.iteritems() if "_pass" not in k) class TuskarException(Exception): diff --git a/tuskar/common/safe_utils.py b/tuskar/common/safe_utils.py index 1e8e8ad5..0d4572e2 100644 --- a/tuskar/common/safe_utils.py +++ b/tuskar/common/safe_utils.py @@ -30,7 +30,7 @@ def getcallargs(function, *args, **kwargs): keyed_args.update(kwargs) - #NOTE(alaski) the implicit 'self' or 'cls' argument shows up in + # NOTE(alaski) the implicit 'self' or 'cls' argument shows up in # argnames but not in args or kwargs. Uses 'in' rather than '==' because # some tests use 'self2'. if 'self' in argnames[0] or 'cls' == argnames[0]: diff --git a/tuskar/db/api.py b/tuskar/db/api.py index c4124531..a2f350e4 100644 --- a/tuskar/db/api.py +++ b/tuskar/db/api.py @@ -17,6 +17,7 @@ Base classes for storage engines """ import abc + import six from tuskar.openstack.common.db import api as db_api diff --git a/tuskar/heat/client.py b/tuskar/heat/client.py index a76bc244..a631187e 100644 --- a/tuskar/heat/client.py +++ b/tuskar/heat/client.py @@ -22,7 +22,9 @@ """A client library for accessing Heat CloudFormations API using Boto""" from os import environ as env + from oslo.config import cfg + from tuskar.openstack.common import log as logging heat_opts = [ @@ -74,7 +76,7 @@ from keystoneclient.v2_0 import client as ksclient class HeatClient(object): - """Heat CloudFormations API client to use in Tuskar""" + """Heat CloudFormations API client to use in Tuskar.""" def __init__(self): try: @@ -133,6 +135,6 @@ class HeatClient(object): try: self.get_stack(name) return True - #return false if 404 + # return false if 404 except HeatStackNotFound: return False diff --git a/tuskar/templates/plan.py b/tuskar/templates/plan.py index 154c9961..679a210c 100644 --- a/tuskar/templates/plan.py +++ b/tuskar/templates/plan.py @@ -28,7 +28,6 @@ from tuskar.templates.heat import RegistryEntry from tuskar.templates.heat import Resource from tuskar.templates.heat import ResourceProperty from tuskar.templates.heat import Template - import tuskar.templates.namespace as ns_utils diff --git a/tuskar/tests/api/controllers/v1/test_models.py b/tuskar/tests/api/controllers/v1/test_models.py index c35ee6bd..390bbfb9 100644 --- a/tuskar/tests/api/controllers/v1/test_models.py +++ b/tuskar/tests/api/controllers/v1/test_models.py @@ -12,7 +12,6 @@ # under the License. import testtools - from wsme import types as wtypes from tuskar.api.controllers.v1 import models as api_models diff --git a/tuskar/tests/api/controllers/v1/test_overcloud.py b/tuskar/tests/api/controllers/v1/test_overcloud.py index f606f775..7385b378 100644 --- a/tuskar/tests/api/controllers/v1/test_overcloud.py +++ b/tuskar/tests/api/controllers/v1/test_overcloud.py @@ -11,9 +11,9 @@ # License for the specific language governing permissions and limitations # under the License. -import mock import os +import mock from pecan.testing import load_test_app from tuskar.api.controllers.v1 import overcloud @@ -123,7 +123,7 @@ class OvercloudTests(base.TestCase): 'overcloud-compute': '2', 'overcloud-cinder-volume': '3'} - # Test + # Test result = overcloud.get_flavor_attributes(parsed_flavors) # Verify diff --git a/tuskar/tests/base.py b/tuskar/tests/base.py index 354d97b9..6f00e636 100644 --- a/tuskar/tests/base.py +++ b/tuskar/tests/base.py @@ -30,15 +30,13 @@ import sys import fixtures import mox +from oslo.config import cfg import stubout import testtools import unittest2 -from oslo.config import cfg - -from tuskar.db import migration - from tuskar.common import paths +from tuskar.db import migration from tuskar.openstack.common.db.sqlalchemy import session from tuskar.openstack.common import log as logging from tuskar.tests import conf_fixture diff --git a/tuskar/tests/heat/test_template_tools.py b/tuskar/tests/heat/test_template_tools.py index c1d84f13..8a4e11c9 100644 --- a/tuskar/tests/heat/test_template_tools.py +++ b/tuskar/tests/heat/test_template_tools.py @@ -11,9 +11,10 @@ # License for the specific language governing permissions and limitations # under the License. -import mock import unittest +import mock + from tuskar.heat import template_tools @@ -39,14 +40,16 @@ class TemplateToolsTests(unittest.TestCase): template_tools.merge_templates(overcloud_roles) # Verify - mock_merge.assert_called_once_with([ - '/etc/tuskar/tripleo-heat-templates/overcloud-source.yaml', - '/etc/tuskar/tripleo-heat-templates/block-storage.yaml', - '/etc/tuskar/tripleo-heat-templates/swift-source.yaml', - '/etc/tuskar/tripleo-heat-templates/swift-storage-source.yaml', - '/etc/tuskar/tripleo-heat-templates/ssl-source.yaml', - '/etc/tuskar/tripleo-heat-templates/swift-deploy.yaml', - '/etc/tuskar/tripleo-heat-templates/nova-compute-config.yaml', ], + mock_merge.assert_called_once_with( + [ + '/etc/tuskar/tripleo-heat-templates/overcloud-source.yaml', + '/etc/tuskar/tripleo-heat-templates/block-storage.yaml', + '/etc/tuskar/tripleo-heat-templates/swift-source.yaml', + '/etc/tuskar/tripleo-heat-templates/swift-storage-source.yaml', + '/etc/tuskar/tripleo-heat-templates/ssl-source.yaml', + '/etc/tuskar/tripleo-heat-templates/swift-deploy.yaml', + '/etc/tuskar/tripleo-heat-templates/nova-compute-config.yaml' + ], None, None, scaling={ @@ -64,14 +67,16 @@ class TemplateToolsTests(unittest.TestCase): template_tools.merge_templates(overcloud_roles) # Verify - mock_merge.assert_called_once_with([ - '/etc/tuskar/tripleo-heat-templates/overcloud-source.yaml', - '/etc/tuskar/tripleo-heat-templates/block-storage.yaml', - '/etc/tuskar/tripleo-heat-templates/swift-source.yaml', - '/etc/tuskar/tripleo-heat-templates/swift-storage-source.yaml', - '/etc/tuskar/tripleo-heat-templates/ssl-source.yaml', - '/etc/tuskar/tripleo-heat-templates/swift-deploy.yaml', - '/etc/tuskar/tripleo-heat-templates/nova-compute-config.yaml', ], + mock_merge.assert_called_once_with( + [ + '/etc/tuskar/tripleo-heat-templates/overcloud-source.yaml', + '/etc/tuskar/tripleo-heat-templates/block-storage.yaml', + '/etc/tuskar/tripleo-heat-templates/swift-source.yaml', + '/etc/tuskar/tripleo-heat-templates/swift-storage-source.yaml', + '/etc/tuskar/tripleo-heat-templates/ssl-source.yaml', + '/etc/tuskar/tripleo-heat-templates/swift-deploy.yaml', + '/etc/tuskar/tripleo-heat-templates/nova-compute-config.yaml' + ], None, None, scaling={ @@ -89,14 +94,16 @@ class TemplateToolsTests(unittest.TestCase): template_tools.merge_templates(overcloud_roles) # Verify - mock_merge.assert_called_once_with([ - '/etc/tuskar/tripleo-heat-templates/overcloud-source.yaml', - '/etc/tuskar/tripleo-heat-templates/block-storage.yaml', - '/etc/tuskar/tripleo-heat-templates/swift-source.yaml', - '/etc/tuskar/tripleo-heat-templates/swift-storage-source.yaml', - '/etc/tuskar/tripleo-heat-templates/ssl-source.yaml', - '/etc/tuskar/tripleo-heat-templates/swift-deploy.yaml', - '/etc/tuskar/tripleo-heat-templates/nova-compute-config.yaml', ], + mock_merge.assert_called_once_with( + [ + '/etc/tuskar/tripleo-heat-templates/overcloud-source.yaml', + '/etc/tuskar/tripleo-heat-templates/block-storage.yaml', + '/etc/tuskar/tripleo-heat-templates/swift-source.yaml', + '/etc/tuskar/tripleo-heat-templates/swift-storage-source.yaml', + '/etc/tuskar/tripleo-heat-templates/ssl-source.yaml', + '/etc/tuskar/tripleo-heat-templates/swift-deploy.yaml', + '/etc/tuskar/tripleo-heat-templates/nova-compute-config.yaml' + ], None, None, scaling={ diff --git a/tuskar/tests/templates/test_composer.py b/tuskar/tests/templates/test_composer.py index 531c60b9..3d0202e9 100644 --- a/tuskar/tests/templates/test_composer.py +++ b/tuskar/tests/templates/test_composer.py @@ -13,6 +13,7 @@ # under the License. import unittest + import yaml from tuskar.templates import composer