Fix and gate on H302 (import only modules)

H302 is already part of the OpenStack style guide, and we only had a few
violations.  This fixes and gates on H302, so there is one less thing
for a reviewer to worry about.

gettext import line is ignored using hacking 0.7's import_exceptions
option.

Reason for import only modules 'The namespace management convention is
simple. The source of each identifier is indicated in a consistent way;
x.Obj says that object Obj is defined in module x.'
http://google-styleguide.googlecode.com/svn/trunk/pyguide.html

Change-Id: I53e8039f1dd2ebf8ab5fcf5a561feb3ca3363107
This commit is contained in:
Joe Gordon 2013-07-25 22:04:25 -04:00
parent 1b96b77211
commit 686d48d386
10 changed files with 42 additions and 41 deletions

View File

@ -20,10 +20,10 @@ Unit tests for EC2 error responses.
from lxml import etree from lxml import etree
from nova.api.ec2 import ec2_error_ex from nova.api import ec2
from nova.context import RequestContext from nova import context
from nova import test from nova import test
from nova.wsgi import Request from nova import wsgi
class TestClientExceptionEC2(Exception): class TestClientExceptionEC2(Exception):
@ -37,12 +37,13 @@ class Ec2ErrorResponseTestCase(test.TestCase):
Test EC2 error responses. Test EC2 error responses.
This deals mostly with api/ec2/__init__.py code, especially This deals mostly with api/ec2/__init__.py code, especially
the ec2_error_ex helper. the ec2.ec2_error_ex helper.
""" """
def setUp(self): def setUp(self):
super(Ec2ErrorResponseTestCase, self).setUp() super(Ec2ErrorResponseTestCase, self).setUp()
self.context = RequestContext('test_user_id', 'test_project_id') self.context = context.RequestContext('test_user_id',
self.req = Request.blank('/test') 'test_project_id')
self.req = wsgi.Request.blank('/test')
self.req.environ['nova.context'] = self.context self.req.environ['nova.context'] = self.context
def _validate_ec2_error(self, response, http_status, ec2_code, msg=None, def _validate_ec2_error(self, response, http_status, ec2_code, msg=None,
@ -82,7 +83,7 @@ class Ec2ErrorResponseTestCase(test.TestCase):
Test response to client (400) EC2 exception. Test response to client (400) EC2 exception.
""" """
msg = "Test client failure." msg = "Test client failure."
err = ec2_error_ex(TestClientExceptionEC2(msg), self.req) err = ec2.ec2_error_ex(TestClientExceptionEC2(msg), self.req)
self._validate_ec2_error(err, TestClientExceptionEC2.code, self._validate_ec2_error(err, TestClientExceptionEC2.code,
TestClientExceptionEC2.ec2_code, msg) TestClientExceptionEC2.ec2_code, msg)
@ -91,7 +92,7 @@ class Ec2ErrorResponseTestCase(test.TestCase):
Test response to an unexpected client (400) exception. Test response to an unexpected client (400) exception.
""" """
msg = "Test client failure." msg = "Test client failure."
err = ec2_error_ex(TestClientExceptionEC2(msg), self.req, err = ec2.ec2_error_ex(TestClientExceptionEC2(msg), self.req,
unexpected=True) unexpected=True)
self._validate_ec2_error(err, TestClientExceptionEC2.code, self._validate_ec2_error(err, TestClientExceptionEC2.code,
TestClientExceptionEC2.ec2_code, msg) TestClientExceptionEC2.ec2_code, msg)

View File

@ -17,7 +17,7 @@ import webob
from nova.api.ec2 import faults from nova.api.ec2 import faults
from nova import test from nova import test
from nova.wsgi import Request from nova import wsgi
class TestFaults(test.TestCase): class TestFaults(test.TestCase):
@ -40,7 +40,7 @@ class TestFaults(test.TestCase):
message = 'test message' message = 'test message'
ex = webob.exc.HTTPNotFound(explanation=message) ex = webob.exc.HTTPNotFound(explanation=message)
fault = faults.Fault(ex) fault = faults.Fault(ex)
req = Request.blank('/test') req = wsgi.Request.blank('/test')
req.GET['AWSAccessKeyId'] = "test_user_id:test_project_id" req.GET['AWSAccessKeyId'] = "test_user_id:test_project_id"
self.mox.StubOutWithMock(faults, 'ec2_error_response') self.mox.StubOutWithMock(faults, 'ec2_error_response')
faults.ec2_error_response(mox.IgnoreArg(), 'HTTPNotFound', faults.ec2_error_response(mox.IgnoreArg(), 'HTTPNotFound',

View File

@ -77,11 +77,7 @@ from nova.tests.image import fake as fake_image
from nova.tests import matchers from nova.tests import matchers
from nova.tests.objects import test_migration from nova.tests.objects import test_migration
from nova import utils from nova import utils
from nova.virt.event import EVENT_LIFECYCLE_PAUSED from nova.virt import event
from nova.virt.event import EVENT_LIFECYCLE_RESUMED
from nova.virt.event import EVENT_LIFECYCLE_STARTED
from nova.virt.event import EVENT_LIFECYCLE_STOPPED
from nova.virt.event import LifecycleEvent
from nova.virt import fake from nova.virt import fake
from nova.volume import cinder from nova.volume import cinder
@ -5284,26 +5280,27 @@ class ComputeTestCase(BaseTestCase):
mox.ContainsKeyValue('uuid', uuid), mox.ContainsKeyValue('uuid', uuid),
power_state) power_state)
self.mox.ReplayAll() self.mox.ReplayAll()
self.compute.handle_events(LifecycleEvent(uuid, lifecycle_event)) self.compute.handle_events(event.LifecycleEvent(uuid, lifecycle_event))
self.mox.VerifyAll() self.mox.VerifyAll()
self.mox.UnsetStubs() self.mox.UnsetStubs()
def test_lifecycle_events(self): def test_lifecycle_events(self):
self._test_lifecycle_event(EVENT_LIFECYCLE_STOPPED, self._test_lifecycle_event(event.EVENT_LIFECYCLE_STOPPED,
power_state.SHUTDOWN) power_state.SHUTDOWN)
self._test_lifecycle_event(EVENT_LIFECYCLE_STARTED, self._test_lifecycle_event(event.EVENT_LIFECYCLE_STARTED,
power_state.RUNNING) power_state.RUNNING)
self._test_lifecycle_event(EVENT_LIFECYCLE_PAUSED, self._test_lifecycle_event(event.EVENT_LIFECYCLE_PAUSED,
power_state.PAUSED) power_state.PAUSED)
self._test_lifecycle_event(EVENT_LIFECYCLE_RESUMED, self._test_lifecycle_event(event.EVENT_LIFECYCLE_RESUMED,
power_state.RUNNING) power_state.RUNNING)
self._test_lifecycle_event(-1, None) self._test_lifecycle_event(-1, None)
def test_lifecycle_event_non_existent_instance(self): def test_lifecycle_event_non_existent_instance(self):
# No error raised for non-existent instance because of inherent race # No error raised for non-existent instance because of inherent race
# between database updates and hypervisor events. See bug #1180501. # between database updates and hypervisor events. See bug #1180501.
event = LifecycleEvent('does-not-exist', EVENT_LIFECYCLE_STOPPED) event_instance = event.LifecycleEvent('does-not-exist',
self.compute.handle_events(event) event.EVENT_LIFECYCLE_STOPPED)
self.compute.handle_events(event_instance)
def test_allow_confirm_resize_on_instance_in_deleting_task_state(self): def test_allow_confirm_resize_on_instance_in_deleting_task_state(self):
instance = self._create_fake_instance_obj() instance = self._create_fake_instance_obj()

View File

@ -48,8 +48,7 @@ from nova.openstack.common.db import exception as db_exc
from nova.openstack.common.db.sqlalchemy import session as db_session from nova.openstack.common.db.sqlalchemy import session as db_session
from nova.openstack.common import timeutils from nova.openstack.common import timeutils
from nova.openstack.common import uuidutils from nova.openstack.common import uuidutils
from nova.quota import ReservableResource from nova import quota
from nova.quota import resources
from nova import test from nova import test
from nova.tests import matchers from nova.tests import matchers
from nova import utils from nova import utils
@ -95,7 +94,7 @@ def _quota_reserve(context, project_id, user_id):
resource, i, resource, i,
user_id=user_id) user_id=user_id)
sync_name = '_sync_%s' % resource sync_name = '_sync_%s' % resource
resources[resource] = ReservableResource( resources[resource] = quota.ReservableResource(
resource, sync_name, 'quota_res_%d' % i) resource, sync_name, 'quota_res_%d' % i)
deltas[resource] = i deltas[resource] = i
setattr(sqlalchemy_api, sync_name, get_sync(resource, i)) setattr(sqlalchemy_api, sync_name, get_sync(resource, i))
@ -4899,8 +4898,8 @@ class QuotaTestCase(test.TestCase, ModelsObjectComparatorMixin):
quotas = {} quotas = {}
deltas = {} deltas = {}
reservable_resources = {} reservable_resources = {}
for i, resource in enumerate(resources): for i, resource in enumerate(quota.resources):
if isinstance(resource, ReservableResource): if isinstance(resource, quota.ReservableResource):
quotas[resource.name] = db.quota_create(self.ctxt, 'project1', quotas[resource.name] = db.quota_create(self.ctxt, 'project1',
resource.name, 100) resource.name, 100)
deltas[resource.name] = i deltas[resource.name] = i

View File

@ -30,7 +30,7 @@ from oslo.config import cfg
from nova.api.metadata import password from nova.api.metadata import password
from nova.api.openstack.compute.contrib import coverage_ext from nova.api.openstack.compute.contrib import coverage_ext
from nova.api.openstack.compute.contrib import fping from nova.api.openstack.compute.contrib import fping
from nova.api.openstack.compute.extensions import ExtensionManager as ext_mgr from nova.api.openstack.compute import extensions
# Import extensions to pull in osapi_compute_extension CONF option used below. # Import extensions to pull in osapi_compute_extension CONF option used below.
from nova.cells import rpcapi as cells_rpcapi from nova.cells import rpcapi as cells_rpcapi
from nova.cells import state from nova.cells import state
@ -1759,7 +1759,8 @@ class ServicesJsonTest(ApiSampleTestBaseV2):
Return a list of all running services with the disable reason Return a list of all running services with the disable reason
information if that exists. information if that exists.
""" """
self.stubs.Set(ext_mgr, "is_loaded", self.fake_load) self.stubs.Set(extensions.ExtensionManager, "is_loaded",
self.fake_load)
response = self._do_get('os-services') response = self._do_get('os-services')
self.assertEqual(response.status, 200) self.assertEqual(response.status, 200)
subs = {'binary': 'nova-compute', subs = {'binary': 'nova-compute',
@ -1773,7 +1774,8 @@ class ServicesJsonTest(ApiSampleTestBaseV2):
def test_service_disable_log_reason(self): def test_service_disable_log_reason(self):
"""Disable an existing service and log the reason.""" """Disable an existing service and log the reason."""
self.stubs.Set(ext_mgr, "is_loaded", self.fake_load) self.stubs.Set(extensions.ExtensionManager, "is_loaded",
self.fake_load)
subs = {"host": "host1", subs = {"host": "host1",
'binary': 'nova-compute', 'binary': 'nova-compute',
'disabled_reason': 'test2'} 'disabled_reason': 'test2'}
@ -2140,7 +2142,8 @@ class UserQuotasSampleJsonTests(ApiSampleTestBaseV2):
def test_delete_quotas_for_user(self): def test_delete_quotas_for_user(self):
# Get api sample to delete quota for user. # Get api sample to delete quota for user.
self.stubs.Set(ext_mgr, "is_loaded", self.fake_load) self.stubs.Set(extensions.ExtensionManager, "is_loaded",
self.fake_load)
response = self._do_delete('os-quota-sets/fake_tenant?user_id=1') response = self._do_delete('os-quota-sets/fake_tenant?user_id=1')
self.assertEqual(response.status, 202) self.assertEqual(response.status, 202)
self.assertEqual(response.read(), '') self.assertEqual(response.read(), '')

View File

@ -17,7 +17,7 @@ import os
from oslo.config import cfg from oslo.config import cfg
from nova.api.openstack import API_V3_CORE_EXTENSIONS from nova.api.openstack import API_V3_CORE_EXTENSIONS # noqa
from nova import test from nova import test
from nova.tests import fake_network from nova.tests import fake_network
from nova.tests import fake_utils from nova.tests import fake_utils

View File

@ -15,7 +15,7 @@
# under the License. # under the License.
from nova import test from nova import test
from nova.virt.libvirt.designer import set_vif_bandwidth_config from nova.virt.libvirt import designer
class DesignerTestCase(test.TestCase): class DesignerTestCase(test.TestCase):
@ -27,6 +27,6 @@ class DesignerTestCase(test.TestCase):
# The conf will never be user be used, so we can use 'None'. # The conf will never be user be used, so we can use 'None'.
# An empty dictionary is fine: all that matters it that there is no # An empty dictionary is fine: all that matters it that there is no
# 'extra_specs' field. # 'extra_specs' field.
set_vif_bandwidth_config(None, {}) designer.set_vif_bandwidth_config(None, {})
except KeyError as e: except KeyError as e:
self.fail('KeyError: %s' % e) self.fail('KeyError: %s' % e)

View File

@ -16,7 +16,7 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from collections import namedtuple import collections
import re import re
from nova import exception from nova import exception
@ -159,9 +159,9 @@ class VMwareVMUtilTestCase(test.TestCase):
def test_property_from_property_set(self): def test_property_from_property_set(self):
ObjectContent = namedtuple('ObjectContent', ['propSet']) ObjectContent = collections.namedtuple('ObjectContent', ['propSet'])
DynamicProperty = namedtuple('Property', ['name', 'val']) DynamicProperty = collections.namedtuple('Property', ['name', 'val'])
MoRef = namedtuple('Val', ['value']) MoRef = collections.namedtuple('Val', ['value'])
good_objects = fake.FakeRetrieveResult() good_objects = fake.FakeRetrieveResult()
results_good = [ results_good = [

View File

@ -17,7 +17,7 @@
from nova.tests.virt.xenapi import stubs from nova.tests.virt.xenapi import stubs
from nova.virt import fake from nova.virt import fake
from nova.virt.xenapi import XenAPIDriver from nova.virt import xenapi
class XenAPIDriverTestCase(stubs.XenAPITestBase): class XenAPIDriverTestCase(stubs.XenAPITestBase):
@ -37,7 +37,7 @@ class XenAPIDriverTestCase(stubs.XenAPITestBase):
xenapi_connection_password='test_pass') xenapi_connection_password='test_pass')
stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests)
driver = XenAPIDriver(fake.FakeVirtAPI(), False) driver = xenapi.XenAPIDriver(fake.FakeVirtAPI(), False)
driver._session.product_version = (6, 8, 2) driver._session.product_version = (6, 8, 2)
self.stubs.Set(driver, 'get_host_stats', self.host_stats) self.stubs.Set(driver, 'get_host_stats', self.host_stats)

View File

@ -46,8 +46,9 @@ commands = {posargs}
# TODO Hacking 0.6 checks to fix # TODO Hacking 0.6 checks to fix
# H102 Apache 2.0 license header not found # H102 Apache 2.0 license header not found
ignore = E121,E122,E123,E124,E126,E127,E128,E711,E712,H102,H302,H404,F403,F811,F841 ignore = E121,E122,E123,E124,E126,E127,E128,E711,E712,H102,H404,F403,F811,F841
exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,*plugins/xenserver*,tools exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,*plugins/xenserver*,tools
[hacking] [hacking]
local-check-factory = nova.hacking.checks.factory local-check-factory = nova.hacking.checks.factory
import_exceptions = nova.openstack.common.gettextutils._