Merge "Add autopep8 to tox and pre-commit"
This commit is contained in:
commit
0e0196d979
|
@ -33,3 +33,9 @@ repos:
|
|||
entry: flake8
|
||||
files: '^.*\.py$'
|
||||
exclude: '^(doc|releasenotes|tools)/.*$'
|
||||
|
||||
- repo: https://github.com/pre-commit/mirrors-autopep8
|
||||
rev: 'v1.5.7'
|
||||
hooks:
|
||||
- id: autopep8
|
||||
files: '^.*\.py$'
|
||||
|
|
|
@ -34,6 +34,7 @@ class Matrix(object):
|
|||
* self.features is a list of MatrixFeature instances, the rows and cells
|
||||
* self.targets is a dict of (MatrixTarget.key, MatrixTarget), the columns
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self.features = []
|
||||
self.targets = {}
|
||||
|
|
|
@ -42,6 +42,7 @@ def _get_context(req):
|
|||
|
||||
class AggregateController(wsgi.Controller):
|
||||
"""The Host Aggregates API controller for the OpenStack API."""
|
||||
|
||||
def __init__(self):
|
||||
super(AggregateController, self).__init__()
|
||||
self.api = compute.AggregateAPI()
|
||||
|
|
|
@ -33,6 +33,7 @@ LOG = logging.getLogger(__name__)
|
|||
|
||||
class HostController(wsgi.Controller):
|
||||
"""The Hosts API controller for the OpenStack API."""
|
||||
|
||||
def __init__(self):
|
||||
super(HostController, self).__init__()
|
||||
self.api = compute.HostAPI()
|
||||
|
|
|
@ -848,6 +848,7 @@ class APIRouterV21(base_wsgi.Router):
|
|||
and method. The URL mapping based on the plain list `ROUTE_LIST` is built
|
||||
at here.
|
||||
"""
|
||||
|
||||
def __init__(self, custom_routes=None):
|
||||
""":param custom_routes: the additional routes can be added by this
|
||||
parameter. This parameter is used to test on some fake routes
|
||||
|
|
|
@ -24,6 +24,7 @@ from nova.policies import server_password as sp_policies
|
|||
|
||||
class ServerPasswordController(wsgi.Controller):
|
||||
"""The Server Password API controller for the OpenStack API."""
|
||||
|
||||
def __init__(self):
|
||||
super(ServerPasswordController, self).__init__()
|
||||
self.compute_api = compute.API()
|
||||
|
|
|
@ -163,6 +163,7 @@ class MoveClaim(Claim):
|
|||
|
||||
Move can be either a migrate/resize, live-migrate or an evacuate operation.
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self, context, instance, nodename, flavor, image_meta, tracker,
|
||||
compute_node, pci_requests, migration, limits=None,
|
||||
|
|
|
@ -58,6 +58,7 @@ class RecordWrapper(object):
|
|||
|
||||
Implementing __lt__ is enough for heapq.merge() to do its work.
|
||||
"""
|
||||
|
||||
def __init__(self, ctx, sort_ctx, db_record):
|
||||
self.cell_uuid = ctx.cell_uuid
|
||||
self._sort_ctx = sort_ctx
|
||||
|
@ -122,6 +123,7 @@ class CrossCellLister(metaclass=abc.ABCMeta):
|
|||
your data type from cell databases.
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self, sort_ctx, cells=None, batch_size=None):
|
||||
self.sort_ctx = sort_ctx
|
||||
self.cells = cells
|
||||
|
|
|
@ -48,6 +48,7 @@ class _Provider(object):
|
|||
tree should be done using the ProviderTree interface, since it controls
|
||||
thread-safety.
|
||||
"""
|
||||
|
||||
def __init__(self, name, uuid=None, generation=None, parent_uuid=None):
|
||||
if uuid is None:
|
||||
uuid = uuidutils.generate_uuid()
|
||||
|
|
|
@ -77,6 +77,7 @@ class TargetDBSetupTask(base.TaskBase):
|
|||
This is needed before any work can be done with the instance in the target
|
||||
cell, like validating the selected target compute host.
|
||||
"""
|
||||
|
||||
def __init__(self, context, instance, source_migration,
|
||||
target_cell_context):
|
||||
"""Initialize this task.
|
||||
|
|
|
@ -1951,7 +1951,6 @@ def _get_regexp_ops(connection):
|
|||
|
||||
|
||||
def _regex_instance_filter(query, filters):
|
||||
|
||||
"""Applies regular expression filtering to an Instance query.
|
||||
|
||||
Returns the updated query.
|
||||
|
|
|
@ -26,6 +26,7 @@ LOG = logging.getLogger(__name__)
|
|||
|
||||
class BaseFilter(object):
|
||||
"""Base class for all filter classes."""
|
||||
|
||||
def _filter_one(self, obj, spec_obj):
|
||||
"""Return True if it passes the filter, False otherwise.
|
||||
Override this in a subclass.
|
||||
|
|
|
@ -186,6 +186,7 @@ NIC_NAME_LEN = 14
|
|||
|
||||
class Model(dict):
|
||||
"""Defines some necessary structures for most of the network models."""
|
||||
|
||||
def __repr__(self):
|
||||
return jsonutils.dumps(self)
|
||||
|
||||
|
@ -202,6 +203,7 @@ class Model(dict):
|
|||
|
||||
class IP(Model):
|
||||
"""Represents an IP address in Nova."""
|
||||
|
||||
def __init__(self, address=None, type=None, **kwargs):
|
||||
super(IP, self).__init__()
|
||||
|
||||
|
@ -242,6 +244,7 @@ class IP(Model):
|
|||
|
||||
class FixedIP(IP):
|
||||
"""Represents a Fixed IP address in Nova."""
|
||||
|
||||
def __init__(self, floating_ips=None, **kwargs):
|
||||
super(FixedIP, self).__init__(**kwargs)
|
||||
self['floating_ips'] = floating_ips or []
|
||||
|
@ -273,6 +276,7 @@ class FixedIP(IP):
|
|||
|
||||
class Route(Model):
|
||||
"""Represents an IP Route in Nova."""
|
||||
|
||||
def __init__(self, cidr=None, gateway=None, interface=None, **kwargs):
|
||||
super(Route, self).__init__()
|
||||
|
||||
|
@ -292,6 +296,7 @@ class Route(Model):
|
|||
|
||||
class Subnet(Model):
|
||||
"""Represents a Subnet in Nova."""
|
||||
|
||||
def __init__(self, cidr=None, dns=None, gateway=None, ips=None,
|
||||
routes=None, **kwargs):
|
||||
super(Subnet, self).__init__()
|
||||
|
@ -343,6 +348,7 @@ class Subnet(Model):
|
|||
|
||||
class Network(Model):
|
||||
"""Represents a Network in Nova."""
|
||||
|
||||
def __init__(self, id=None, bridge=None, label=None,
|
||||
subnets=None, **kwargs):
|
||||
super(Network, self).__init__()
|
||||
|
@ -397,6 +403,7 @@ class VIF8021QbhParams(Model):
|
|||
|
||||
class VIF(Model):
|
||||
"""Represents a Virtual Interface in Nova."""
|
||||
|
||||
def __init__(self, id=None, address=None, network=None, type=None,
|
||||
details=None, devname=None, ovs_interfaceid=None,
|
||||
qbh_params=None, qbg_params=None, active=False,
|
||||
|
|
|
@ -165,6 +165,7 @@ class ClientWrapper(clientv20.Client):
|
|||
Wraps the callable methods, catches Unauthorized,Forbidden from Neutron and
|
||||
convert it to a 401,403 for Nova clients.
|
||||
"""
|
||||
|
||||
def __init__(self, base_client, admin):
|
||||
# Expose all attributes from the base_client instance
|
||||
self.__dict__ = base_client.__dict__
|
||||
|
|
|
@ -203,6 +203,7 @@ class WhitelistPciAddress(object):
|
|||
| passthrough_whitelist = {"vendor_id":"1137","product_id":"0071"}
|
||||
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self, pci_addr: PCISpecAddressType, is_physical_function: bool
|
||||
) -> None:
|
||||
|
|
|
@ -49,6 +49,7 @@ HOST_INSTANCE_SEMAPHORE = "host_instance"
|
|||
|
||||
class ReadOnlyDict(IterableUserDict):
|
||||
"""A read-only dict."""
|
||||
|
||||
def __init__(self, source=None):
|
||||
self.data = {}
|
||||
if source:
|
||||
|
|
|
@ -67,6 +67,7 @@ class RBDVolumeProxy(object):
|
|||
The underlying librados client and ioctx can be accessed as the attributes
|
||||
'client' and 'ioctx'.
|
||||
"""
|
||||
|
||||
def __init__(self, driver, name, pool=None, snapshot=None,
|
||||
read_only=False):
|
||||
client, ioctx = driver._connect_to_rados(pool)
|
||||
|
@ -102,6 +103,7 @@ class RBDVolumeProxy(object):
|
|||
|
||||
class RADOSClient(object):
|
||||
"""Context manager to simplify error handling for connecting to ceph."""
|
||||
|
||||
def __init__(self, driver, pool=None):
|
||||
self.driver = driver
|
||||
self.cluster, self.ioctx = driver._connect_to_rados(pool)
|
||||
|
|
|
@ -779,6 +779,7 @@ class MatchType(object):
|
|||
"world",
|
||||
MatchType(objects.KeyPair))
|
||||
"""
|
||||
|
||||
def __init__(self, wanttype):
|
||||
self.wanttype = wanttype
|
||||
|
||||
|
@ -794,6 +795,7 @@ class MatchType(object):
|
|||
|
||||
class MatchObjPrims(object):
|
||||
"""Matches objects with equal primitives."""
|
||||
|
||||
def __init__(self, want_obj):
|
||||
self.want_obj = want_obj
|
||||
|
||||
|
@ -823,6 +825,7 @@ class ContainKeyValue(object):
|
|||
"world",
|
||||
ContainKeyValue('hello', world))
|
||||
"""
|
||||
|
||||
def __init__(self, wantkey, wantvalue):
|
||||
self.wantkey = wantkey
|
||||
self.wantvalue = wantvalue
|
||||
|
|
|
@ -25,6 +25,7 @@ from nova import config
|
|||
|
||||
class ConfFixture(config_fixture.Config):
|
||||
"""Fixture to manage global conf settings."""
|
||||
|
||||
def setUp(self):
|
||||
super(ConfFixture, self).setUp()
|
||||
|
||||
|
|
|
@ -907,6 +907,7 @@ class libvirtError(Exception):
|
|||
Alternatively, you can use the `make_libvirtError` convenience function to
|
||||
allow you to specify these attributes in one shot.
|
||||
"""
|
||||
|
||||
def __init__(self, defmsg, conn=None, dom=None, net=None, pool=None,
|
||||
vol=None):
|
||||
Exception.__init__(self, defmsg)
|
||||
|
@ -2137,6 +2138,7 @@ _EventAddHandleFunc = FakeHandler
|
|||
class LibvirtFixture(fixtures.Fixture):
|
||||
"""Performs global setup/stubbing for all libvirt tests.
|
||||
"""
|
||||
|
||||
def __init__(self, stub_os_vif=True):
|
||||
self.stub_os_vif = stub_os_vif
|
||||
|
||||
|
|
|
@ -39,6 +39,7 @@ class _FakeNeutronClient:
|
|||
For all other methods, this wrapper class simply calls through to the
|
||||
corresponding NeutronFixture class method without any modifications.
|
||||
"""
|
||||
|
||||
def __init__(self, fixture, is_admin):
|
||||
self.fixture = fixture
|
||||
self.is_admin = is_admin
|
||||
|
|
|
@ -102,6 +102,7 @@ class NullHandler(std_logging.Handler):
|
|||
log_fixture.get_logging_handle_error_fixture to detect formatting errors in
|
||||
debug level logs without saving the logs.
|
||||
"""
|
||||
|
||||
def handle(self, record):
|
||||
self.format(record)
|
||||
|
||||
|
@ -352,6 +353,7 @@ class CheatingSerializer(rpc.RequestContextSerializer):
|
|||
Unless we had per-service config and database layer state for
|
||||
the fake services we start, this is a reasonable cheat.
|
||||
"""
|
||||
|
||||
def serialize_context(self, context):
|
||||
"""Serialize context with the db_connection inside."""
|
||||
values = super(CheatingSerializer, self).serialize_context(context)
|
||||
|
@ -380,6 +382,7 @@ class CellDatabases(fixtures.Fixture):
|
|||
Passing default=True tells the fixture which database should
|
||||
be given to code that doesn't target a specific cell.
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self._ctxt_mgrs = {}
|
||||
self._last_ctxt_mgr = None
|
||||
|
@ -963,6 +966,7 @@ class OSMetadataServer(fixtures.Fixture):
|
|||
interactions needed.
|
||||
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(OSMetadataServer, self).setUp()
|
||||
# in order to run these in tests we need to bind only to local
|
||||
|
@ -1092,6 +1096,7 @@ class SynchronousThreadPoolExecutorFixture(fixtures.Fixture):
|
|||
|
||||
Replace the GreenThreadPoolExecutor with the SynchronousExecutor.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(SynchronousThreadPoolExecutorFixture, self).setUp()
|
||||
self.useFixture(fixtures.MonkeyPatch(
|
||||
|
@ -1100,6 +1105,7 @@ class SynchronousThreadPoolExecutorFixture(fixtures.Fixture):
|
|||
|
||||
class BannedDBSchemaOperations(fixtures.Fixture):
|
||||
"""Ban some operations for migrations"""
|
||||
|
||||
def __init__(self, banned_resources=None):
|
||||
super(BannedDBSchemaOperations, self).__init__()
|
||||
self._banned_resources = banned_resources or []
|
||||
|
@ -1123,6 +1129,7 @@ class BannedDBSchemaOperations(fixtures.Fixture):
|
|||
|
||||
class ForbidNewLegacyNotificationFixture(fixtures.Fixture):
|
||||
"""Make sure the test fails if new legacy notification is added"""
|
||||
|
||||
def __init__(self):
|
||||
super(ForbidNewLegacyNotificationFixture, self).__init__()
|
||||
self.notifier = rpc.LegacyValidatingNotifier
|
||||
|
@ -1216,6 +1223,7 @@ class PrivsepFixture(fixtures.Fixture):
|
|||
"""Disable real privsep checking so we can test the guts of methods
|
||||
decorated with sys_admin_pctxt.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(PrivsepFixture, self).setUp()
|
||||
self.useFixture(fixtures.MockPatchObject(
|
||||
|
@ -1268,6 +1276,7 @@ class DownCellFixture(fixtures.Fixture):
|
|||
# List services with down cells.
|
||||
self.admin_api.api_get('/os-services')
|
||||
"""
|
||||
|
||||
def __init__(self, down_cell_mappings=None):
|
||||
self.down_cell_mappings = down_cell_mappings
|
||||
|
||||
|
@ -1369,6 +1378,7 @@ class AvailabilityZoneFixture(fixtures.Fixture):
|
|||
requested when creating a server otherwise the instance.availabilty_zone
|
||||
or default_availability_zone is returned.
|
||||
"""
|
||||
|
||||
def __init__(self, zones):
|
||||
self.zones = zones
|
||||
|
||||
|
@ -1405,6 +1415,7 @@ class KSAFixture(fixtures.Fixture):
|
|||
"""Lets us initialize an openstack.connection.Connection by stubbing the
|
||||
auth plugin.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(KSAFixture, self).setUp()
|
||||
self.mock_load_auth = self.useFixture(fixtures.MockPatch(
|
||||
|
@ -1533,6 +1544,7 @@ class PropagateTestCaseIdToChildEventlets(fixtures.Fixture):
|
|||
https://bugs.launchpad.net/nova/+bug/1946339
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self, test_case_id):
|
||||
self.test_case_id = test_case_id
|
||||
|
||||
|
|
|
@ -39,6 +39,7 @@ class RealPolicyFixture(fixtures.Fixture):
|
|||
``policy_file`` accordingly.
|
||||
|
||||
"""
|
||||
|
||||
def _prepare_policy(self):
|
||||
"""Allow changing of the policy before we get started"""
|
||||
pass
|
||||
|
@ -92,6 +93,7 @@ class PolicyFixture(RealPolicyFixture):
|
|||
be better in those cases.
|
||||
|
||||
"""
|
||||
|
||||
def _prepare_policy(self):
|
||||
self.policy_dir = self.useFixture(fixtures.TempDir())
|
||||
self.policy_file = os.path.join(self.policy_dir.path,
|
||||
|
|
|
@ -168,6 +168,7 @@ class LibvirtMigrationMixin(object):
|
|||
scenarios more complex than this they should override _migrate_stub with
|
||||
their own implementation.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.useFixture(fixtures.MonkeyPatch(
|
||||
|
|
|
@ -107,6 +107,7 @@ SERVER_DISKS = {
|
|||
|
||||
class _FileTest(object):
|
||||
"""A base class for the _FlatTest and _Qcow2Test mixin test classes"""
|
||||
|
||||
def setUp(self):
|
||||
super(_FileTest, self).setUp()
|
||||
|
||||
|
@ -148,6 +149,7 @@ class _FlatTest(_FileTest):
|
|||
mock create_image to touch a file so we can assert its existence/removal in
|
||||
tests.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(_FlatTest, self).setUp()
|
||||
|
||||
|
@ -172,6 +174,7 @@ class _Qcow2Test(_FileTest):
|
|||
mock create_image to touch a file so we can assert its existence/removal in
|
||||
tests.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(_Qcow2Test, self).setUp()
|
||||
|
||||
|
@ -193,6 +196,7 @@ class _RbdTest(object):
|
|||
create_image to store which rbd volumes would have been created, and exists
|
||||
to reference that store.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(_RbdTest, self).setUp()
|
||||
|
||||
|
@ -287,6 +291,7 @@ class _LVMTest(object):
|
|||
the nova.virt.libvirt.storage.lvm module immediately before starting a new
|
||||
compute.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(_LVMTest, self).setUp()
|
||||
|
||||
|
@ -395,6 +400,7 @@ class _LibvirtEvacuateTest(integrated_helpers.InstanceHelperMixin):
|
|||
with these mixins we get test coverage of all combinations of
|
||||
shared/nonshared instanace directories and block storage.
|
||||
"""
|
||||
|
||||
def _start_compute(self, name):
|
||||
# NOTE(mdbooth): fakelibvirt's getHostname currently returns a
|
||||
# hardcoded 'compute1', which is undesirable if we want multiple fake
|
||||
|
|
|
@ -31,6 +31,7 @@ class TestRequestSpecRetryReschedule(test.TestCase,
|
|||
resize, it is rejected by the RetryFilter because it's already in the
|
||||
RequestSpec.retry field.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(TestRequestSpecRetryReschedule, self).setUp()
|
||||
self.useFixture(nova_fixtures.RealPolicyFixture())
|
||||
|
|
|
@ -31,6 +31,7 @@ class TestRescheduleWithServerGroup(test.TestCase,
|
|||
we hit an exception "'NoneType' object is not iterable" in the
|
||||
RequestSpec.from_primitives method and the reschedule fails.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(TestRescheduleWithServerGroup, self).setUp()
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ class TestBootFromVolumeIsolatedHostsFilter(
|
|||
The regression is that the RequestSpec.image.id field is not set and the
|
||||
IsolatedHostsFilter blows up trying to load the image id.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(TestBootFromVolumeIsolatedHostsFilter, self).setUp()
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ class InstanceListWithDeletedServicesTestCase(
|
|||
service uuid migration routine gets a ServiceNotFound error when loading
|
||||
up a deleted service by hostname.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(InstanceListWithDeletedServicesTestCase, self).setUp()
|
||||
self.useFixture(nova_fixtures.RealPolicyFixture())
|
||||
|
|
|
@ -34,6 +34,7 @@ class TestMultiCreateServerGroupMemberOverQuota(
|
|||
to bypass the server_group_members quota check when creating multiple
|
||||
servers in the same request.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(TestMultiCreateServerGroupMemberOverQuota, self).setUp()
|
||||
self.flags(server_group_members=2, group='quota')
|
||||
|
|
|
@ -32,6 +32,7 @@ class RescheduleBuildAvailabilityZoneUpCall(
|
|||
trying to connect to the API DB to get availability zone (aggregate) info
|
||||
about the alternate host selection.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(RescheduleBuildAvailabilityZoneUpCall, self).setUp()
|
||||
# Use the standard fixtures.
|
||||
|
@ -96,6 +97,7 @@ class RescheduleMigrateAvailabilityZoneUpCall(
|
|||
"""This is a regression test for the resize/cold migrate aspect of
|
||||
bug 1781286 where the cell conductor does not have access to the API DB.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(RescheduleMigrateAvailabilityZoneUpCall, self).setUp()
|
||||
# Use the standard fixtures.
|
||||
|
|
|
@ -43,6 +43,7 @@ class PeriodicNodeRecreateTestCase(test.TestCase,
|
|||
there is a (soft) deleted version of the ComputeNode with the same uuid
|
||||
in the database.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(PeriodicNodeRecreateTestCase, self).setUp()
|
||||
# We need the PlacementFixture for the compute nodes to report in but
|
||||
|
|
|
@ -24,6 +24,7 @@ class ListDeletedServersWithMarker(test.TestCase,
|
|||
MarkerNotFound, but that does not mean the marker was found in the build
|
||||
request list.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(ListDeletedServersWithMarker, self).setUp()
|
||||
# Start standard fixtures.
|
||||
|
|
|
@ -24,6 +24,7 @@ class TestInstanceActionBuryInCell0(test.TestCase,
|
|||
event was not being created for instances buried in cell0 starting in
|
||||
Ocata.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(TestInstanceActionBuryInCell0, self).setUp()
|
||||
# Setup common fixtures.
|
||||
|
|
|
@ -38,6 +38,7 @@ class TestServersPerUserQuota(test.TestCase,
|
|||
error because the 'instances' resource count isn't being correctly scoped
|
||||
per-user.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(TestServersPerUserQuota, self).setUp()
|
||||
self.useFixture(nova_fixtures.RealPolicyFixture())
|
||||
|
|
|
@ -24,6 +24,7 @@ class TestCreateServerGroupWithEmptyPolicies(
|
|||
Attempt to create a server group with an invalid 'policies' field. It
|
||||
should fail cleanly.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@ class TestDeleteWhileBooting(test.TestCase,
|
|||
delete request. We aim to mock only the bare minimum necessary to recreate
|
||||
the bug scenarios.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(TestDeleteWhileBooting, self).setUp()
|
||||
self.useFixture(nova_fixtures.RealPolicyFixture())
|
||||
|
|
|
@ -25,6 +25,7 @@ class TestNeutronExternalNetworks(test.TestCase,
|
|||
"""Tests for creating a server on a neutron network with
|
||||
router:external=True.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(TestNeutronExternalNetworks, self).setUp()
|
||||
# Use the standard fixtures.
|
||||
|
|
|
@ -1641,6 +1641,7 @@ class TestNovaManagePlacementHealPortAllocationsExtended(
|
|||
extended format. Note that this will test the extended format handling but
|
||||
only with a single request group per port.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.neutron = self.useFixture(
|
||||
|
@ -1667,6 +1668,7 @@ class TestNovaManagePlacementHealPortAllocationsMultiGroup(
|
|||
with the MultiGroupResourceRequestNeutronFixture to test with extended
|
||||
resource request with multiple groups.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.neutron = self.useFixture(
|
||||
|
|
|
@ -4546,6 +4546,7 @@ class ServerTestV256SingleCellMultiHostTestCase(ServerTestV256Common):
|
|||
"""Happy path test where we create a server on one host, migrate it to
|
||||
another host of our choosing and ensure it lands there.
|
||||
"""
|
||||
|
||||
def test_migrate_server_to_host_in_same_cell(self):
|
||||
server = self._create_server()
|
||||
server = self._wait_for_state_change(server, 'ACTIVE')
|
||||
|
|
|
@ -1638,6 +1638,7 @@ class MultiGroupResourceRequestBasedSchedulingTest(
|
|||
and packet rate resource requests. This also means that the neutron fixture
|
||||
simulates the new resource_request format for all ports.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.neutron = self.useFixture(
|
||||
|
@ -2972,6 +2973,7 @@ class ExtendedResourceRequestOldCompute(
|
|||
hasn't been upgraded to a version that support extended resource request.
|
||||
So nova rejects the operations due to the old compute.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.neutron = self.useFixture(
|
||||
|
|
|
@ -52,7 +52,7 @@ class MicroversionsController2(wsgi.Controller):
|
|||
|
||||
@wsgi.Controller.api_version("2.5", "3.1") # noqa
|
||||
@wsgi.response(202)
|
||||
def index(self, req): # noqa
|
||||
def index(self, req): # noqa
|
||||
data = {'param': 'controller2_val2'}
|
||||
return data
|
||||
|
||||
|
|
|
@ -560,6 +560,7 @@ class InterfaceAttachTestsV249(test.NoDBTestCase):
|
|||
|
||||
class InterfaceAttachTestsV270(test.NoDBTestCase):
|
||||
"""os-interface API tests for microversion 2.70"""
|
||||
|
||||
def setUp(self):
|
||||
super(InterfaceAttachTestsV270, self).setUp()
|
||||
self.attachments = (
|
||||
|
|
|
@ -6789,6 +6789,7 @@ class ServersControllerCreateTestV237(test.NoDBTestCase):
|
|||
These tests are mostly about testing the validation on the 2.37
|
||||
server create request with emphasis on negative scenarios.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(ServersControllerCreateTestV237, self).setUp()
|
||||
# Create the server controller.
|
||||
|
@ -6989,6 +6990,7 @@ class ServersControllerCreateTestV257(test.NoDBTestCase):
|
|||
new=lambda *args, **kwargs: 1)
|
||||
class ServersControllerCreateTestV260(test.NoDBTestCase):
|
||||
"""Negative tests for creating a server with a multiattach volume."""
|
||||
|
||||
def setUp(self):
|
||||
super(ServersControllerCreateTestV260, self).setUp()
|
||||
self.useFixture(nova_fixtures.NoopQuotaDriverFixture())
|
||||
|
|
|
@ -933,6 +933,7 @@ class VolumeAttachTestsV249(test.NoDBTestCase):
|
|||
|
||||
class VolumeAttachTestsV260(test.NoDBTestCase):
|
||||
"""Negative tests for attaching a multiattach volume with version 2.60."""
|
||||
|
||||
def setUp(self):
|
||||
super(VolumeAttachTestsV260, self).setUp()
|
||||
self.controller = volumes_v21.VolumeAttachmentController()
|
||||
|
|
|
@ -2376,6 +2376,7 @@ class TestNovaManagePlacement(test.NoDBTestCase):
|
|||
For more involved functional scenarios, use
|
||||
nova.tests.functional.test_nova_manage.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(TestNovaManagePlacement, self).setUp()
|
||||
self.output = StringIO()
|
||||
|
|
|
@ -19,5 +19,6 @@ class SyncPool(eventlet.GreenPool):
|
|||
"""Synchronous pool for testing threaded code without adding sleep
|
||||
waits.
|
||||
"""
|
||||
|
||||
def spawn_n(self, func, *args, **kwargs):
|
||||
func(*args, **kwargs)
|
||||
|
|
|
@ -13180,6 +13180,7 @@ class DisabledInstanceTypesTestCase(BaseTestCase):
|
|||
migrations against it, but we *don't* want customers building new
|
||||
instances with the phased-out instance-type.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(DisabledInstanceTypesTestCase, self).setUp()
|
||||
self.compute_api = compute.API()
|
||||
|
@ -13249,6 +13250,7 @@ class ComputeRescheduleResizeOrReraiseTestCase(BaseTestCase):
|
|||
"""Test logic and exception handling around rescheduling prep resize
|
||||
requests
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(ComputeRescheduleResizeOrReraiseTestCase, self).setUp()
|
||||
self.instance = self._create_fake_instance_obj()
|
||||
|
|
|
@ -39,6 +39,7 @@ class TestValidateExtraSpecKeys(test.NoDBTestCase):
|
|||
|
||||
class TestGetFlavorByFlavorID(test.TestCase):
|
||||
"""Test cases for flavor code."""
|
||||
|
||||
def test_will_not_get_instance_by_unknown_flavor_id(self):
|
||||
# Ensure get by flavor raises error with wrong flavorid.
|
||||
self.assertRaises(exception.FlavorNotFound,
|
||||
|
|
|
@ -37,6 +37,7 @@ class SchemaValidationMixin(base.BaseTestCase):
|
|||
the subclass that call the run_test_ methods in this class. This should
|
||||
keep things simple as more schema versions are added.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(SchemaValidationMixin, self).setUp()
|
||||
self.mock_load_yaml = self.useFixture(
|
||||
|
|
|
@ -147,6 +147,7 @@ class _BaseTestCase(object):
|
|||
|
||||
class ConductorTestCase(_BaseTestCase, test.TestCase):
|
||||
"""Conductor Manager Tests."""
|
||||
|
||||
def setUp(self):
|
||||
super(ConductorTestCase, self).setUp()
|
||||
self.conductor = conductor_manager.ConductorManager()
|
||||
|
@ -308,6 +309,7 @@ class ConductorTestCase(_BaseTestCase, test.TestCase):
|
|||
|
||||
class ConductorRPCAPITestCase(_BaseTestCase, test.TestCase):
|
||||
"""Conductor RPC API Tests."""
|
||||
|
||||
def setUp(self):
|
||||
super(ConductorRPCAPITestCase, self).setUp()
|
||||
self.conductor_service = self.start_service(
|
||||
|
@ -318,6 +320,7 @@ class ConductorRPCAPITestCase(_BaseTestCase, test.TestCase):
|
|||
|
||||
class ConductorAPITestCase(_BaseTestCase, test.TestCase):
|
||||
"""Conductor API Tests."""
|
||||
|
||||
def setUp(self):
|
||||
super(ConductorAPITestCase, self).setUp()
|
||||
self.conductor_service = self.start_service(
|
||||
|
@ -4333,6 +4336,7 @@ class ConductorTaskTestCase(_BaseTaskTestCase, test_compute.BaseTestCase):
|
|||
class ConductorTaskRPCAPITestCase(_BaseTaskTestCase,
|
||||
test_compute.BaseTestCase):
|
||||
"""Conductor compute_task RPC namespace Tests."""
|
||||
|
||||
def setUp(self):
|
||||
super(ConductorTaskRPCAPITestCase, self).setUp()
|
||||
self.conductor_service = self.start_service(
|
||||
|
@ -4675,6 +4679,7 @@ class ConductorTaskRPCAPITestCase(_BaseTaskTestCase,
|
|||
|
||||
class ConductorTaskAPITestCase(_BaseTaskTestCase, test_compute.BaseTestCase):
|
||||
"""Compute task API Tests."""
|
||||
|
||||
def setUp(self):
|
||||
super(ConductorTaskAPITestCase, self).setUp()
|
||||
self.conductor_service = self.start_service(
|
||||
|
|
|
@ -540,6 +540,7 @@ class TestFlavorExtraSpecs(test.TestCase):
|
|||
|
||||
class TestFlavorFiltering(test.TestCase):
|
||||
"""Test cases for the filter option available for FlavorList.get_all."""
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.context = nova_context.get_admin_context()
|
||||
|
|
|
@ -4213,6 +4213,7 @@ class TestAggregateAddRemoveHost(SchedulerReportClientTestCase):
|
|||
access the SchedulerReportClient provider_tree attribute and are called
|
||||
from the nova API, not the nova compute manager/resource tracker.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(TestAggregateAddRemoveHost, self).setUp()
|
||||
self.mock_get = self.useFixture(
|
||||
|
|
|
@ -51,6 +51,7 @@ class HackingTestCase(test.NoDBTestCase):
|
|||
just assertTrue if the check is expected to fail and assertFalse if it
|
||||
should pass.
|
||||
"""
|
||||
|
||||
def test_virt_driver_imports(self):
|
||||
|
||||
expect = (0, "N311: importing code from other virt drivers forbidden")
|
||||
|
|
|
@ -44,6 +44,7 @@ class IdentityValidationTest(test.NoDBTestCase):
|
|||
not exist.
|
||||
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(IdentityValidationTest, self).setUp()
|
||||
get_adap_p = mock.patch('nova.utils.get_ksa_adapter')
|
||||
|
|
|
@ -48,6 +48,7 @@ CONF.register_opts(test_service_opts)
|
|||
|
||||
class FakeManager(manager.Manager):
|
||||
"""Fake manager for tests."""
|
||||
|
||||
def test_method(self):
|
||||
return 'manager'
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@ class IsolationTestCase(test.TestCase):
|
|||
of other tests should fail.
|
||||
|
||||
"""
|
||||
|
||||
def test_service_isolation(self):
|
||||
self.useFixture(fixtures.ServiceFixture('compute'))
|
||||
|
||||
|
@ -301,6 +302,7 @@ class ContainKeyValueTestCase(test.NoDBTestCase):
|
|||
|
||||
class NovaExceptionReraiseFormatErrorTestCase(test.NoDBTestCase):
|
||||
"""Test that format errors are reraised in tests."""
|
||||
|
||||
def test_format_error_in_nova_exception(self):
|
||||
class FakeImageException(exception.NovaException):
|
||||
msg_fmt = 'Image %(image_id)s has wrong type %(type)s.'
|
||||
|
|
|
@ -907,6 +907,7 @@ class TestObjectCallHelpers(test.NoDBTestCase):
|
|||
|
||||
class GetKSAAdapterTestCase(test.NoDBTestCase):
|
||||
"""Tests for nova.utils.get_endpoint_data()."""
|
||||
|
||||
def setUp(self):
|
||||
super(GetKSAAdapterTestCase, self).setUp()
|
||||
self.sess = mock.create_autospec(ks_session.Session, instance=True)
|
||||
|
@ -1072,6 +1073,7 @@ class TestGetConfGroup(test.NoDBTestCase):
|
|||
|
||||
class TestGetAuthAndSession(test.NoDBTestCase):
|
||||
"""Tests for nova.utils._get_auth_and_session"""
|
||||
|
||||
def setUp(self):
|
||||
super(TestGetAuthAndSession, self).setUp()
|
||||
|
||||
|
|
|
@ -298,6 +298,7 @@ class ItemsMatcher(CustomMockCallMatcher):
|
|||
But the following will fail::
|
||||
my_mock(..., listy_kwarg=['foo', 'bar'], ...)
|
||||
"""
|
||||
|
||||
def __init__(self, iterable):
|
||||
# NOTE(gibi): we need the extra iter() call as Counter handles dicts
|
||||
# directly to initialize item count. However if a dict passed to
|
||||
|
|
|
@ -20516,6 +20516,7 @@ class HostStateTestCase(test.NoDBTestCase):
|
|||
|
||||
class FakeConnection(libvirt_driver.LibvirtDriver):
|
||||
"""Fake connection object."""
|
||||
|
||||
def __init__(self):
|
||||
super(HostStateTestCase.FakeConnection,
|
||||
self).__init__(fake.FakeVirtAPI(), True)
|
||||
|
@ -21384,6 +21385,7 @@ class TraitsComparisonMixin(object):
|
|||
@ddt.ddt
|
||||
class LibvirtDriverTestCase(test.NoDBTestCase, TraitsComparisonMixin):
|
||||
"""Test for nova.virt.libvirt.libvirt_driver.LibvirtDriver."""
|
||||
|
||||
def setUp(self):
|
||||
super(LibvirtDriverTestCase, self).setUp()
|
||||
self.flags(sysinfo_serial="none", group="libvirt")
|
||||
|
@ -28033,6 +28035,7 @@ class LibvirtSnapshotTests(_BaseSnapshotTests):
|
|||
|
||||
class LXCSnapshotTests(LibvirtSnapshotTests):
|
||||
"""Repeat all of the Libvirt snapshot tests, but with LXC enabled"""
|
||||
|
||||
def setUp(self):
|
||||
super(LXCSnapshotTests, self).setUp()
|
||||
self.flags(virt_type='lxc', group='libvirt')
|
||||
|
|
|
@ -23,6 +23,7 @@ class FakeDiskAdapter(disk_dvr.DiskAdapter):
|
|||
This is done so that the abstract methods/properties can be stubbed and the
|
||||
class can be instantiated for testing.
|
||||
"""
|
||||
|
||||
def _vios_uuids(self):
|
||||
pass
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@ def catch_notimplementederror(f):
|
|||
If a particular call makes a driver raise NotImplementedError, we
|
||||
log it so that we can extract this information afterwards as needed.
|
||||
"""
|
||||
|
||||
def wrapped_func(self, *args, **kwargs):
|
||||
try:
|
||||
return f(self, *args, **kwargs)
|
||||
|
|
|
@ -366,6 +366,7 @@ class VirtualIDEController(DataObject):
|
|||
|
||||
class VirtualLsiLogicController(DataObject):
|
||||
"""VirtualLsiLogicController class."""
|
||||
|
||||
def __init__(self, key=0, scsiCtlrUnitNumber=0, busNumber=0):
|
||||
self.key = key
|
||||
self.busNumber = busNumber
|
||||
|
|
|
@ -2190,6 +2190,7 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
|||
coming from the image is bigger than the maximum allowed video ram from
|
||||
the flavor.
|
||||
"""
|
||||
|
||||
def test_video_ram(self):
|
||||
meta_dict = {'id': self._image_id, 'properties': {'hw_video_ram': 120}}
|
||||
image_meta, flavor = self._get_image_and_flavor_for_test_video(
|
||||
|
@ -2205,6 +2206,7 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
|||
coming from the image is not specified. This is a success scenario,
|
||||
in the case where `hw_video_ram` property is not set.
|
||||
"""
|
||||
|
||||
def test_video_ram_if_none(self):
|
||||
meta_dict = {'id': self._image_id, 'properties': {}}
|
||||
image_meta, flavor = self._get_image_and_flavor_for_test_video(
|
||||
|
@ -2218,6 +2220,7 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
|||
coming from the flavor is not specified. This is a success scenario,
|
||||
in the case where `hw_video_ram` property is not set.
|
||||
"""
|
||||
|
||||
def test_max_video_ram_none(self):
|
||||
meta_dict = {'id': self._image_id, 'properties': {'hw_video_ram': 120}}
|
||||
image_meta = objects.ImageMeta.from_dict(meta_dict)
|
||||
|
@ -2242,6 +2245,7 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
|||
the flavor. This is a success scenario, in the case where `hw_video_ram`
|
||||
property is set in the extra spec.
|
||||
"""
|
||||
|
||||
def test_success_video_ram(self):
|
||||
expected_video_ram = 90
|
||||
meta_dict = {'id': self._image_id, 'properties': {
|
||||
|
@ -2258,6 +2262,7 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
|||
coming from the image is equal to 0. This is a success scenario, in the
|
||||
case where `hw_video_ram` property is not set in the extra spec.
|
||||
"""
|
||||
|
||||
def test_zero_video_ram(self):
|
||||
meta_dict = {'id': self._image_id, 'properties': {'hw_video_ram': 0}}
|
||||
image_meta, flavor = self._get_image_and_flavor_for_test_video(
|
||||
|
|
|
@ -484,6 +484,7 @@ class UndoManager(object):
|
|||
"""Provides a mechanism to facilitate rolling back a series of actions
|
||||
when an exception is raised.
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self.undo_stack = []
|
||||
|
||||
|
|
|
@ -51,6 +51,7 @@ class VFSGuestFS(vfs.VFS):
|
|||
the host filesystem, thus avoiding any potential for symlink
|
||||
attacks from the guest filesystem.
|
||||
"""
|
||||
|
||||
def __init__(self, image, partition=None):
|
||||
"""Create a new local VFS instance
|
||||
|
||||
|
|
|
@ -757,6 +757,7 @@ class PredictableNodeUUIDDriver(SmallFakeDriver):
|
|||
"""SmallFakeDriver variant that reports a predictable node uuid in
|
||||
get_available_resource, like IronicDriver.
|
||||
"""
|
||||
|
||||
def get_available_resource(self, nodename):
|
||||
resources = super(
|
||||
PredictableNodeUUIDDriver, self).get_available_resource(nodename)
|
||||
|
@ -798,6 +799,7 @@ class FakeBuildAbortDriver(FakeDriver):
|
|||
"""FakeDriver derivative that always fails on spawn() with a
|
||||
BuildAbortException so no reschedule is attempted.
|
||||
"""
|
||||
|
||||
def spawn(self, context, instance, image_meta, injected_files,
|
||||
admin_password, allocations, network_info=None,
|
||||
block_device_info=None, power_on=True, accel_info=None):
|
||||
|
@ -814,6 +816,7 @@ class FakeUnshelveSpawnFailDriver(FakeDriver):
|
|||
"""FakeDriver derivative that always fails on spawn() with a
|
||||
VirtualInterfaceCreateException when unshelving an offloaded instance.
|
||||
"""
|
||||
|
||||
def spawn(self, context, instance, image_meta, injected_files,
|
||||
admin_password, allocations, network_info=None,
|
||||
block_device_info=None, power_on=True, accel_info=None):
|
||||
|
|
|
@ -35,6 +35,7 @@ threading = patcher.original('threading')
|
|||
|
||||
class SerialConsoleHandler(object):
|
||||
"""Handles serial console ops related to a given instance."""
|
||||
|
||||
def __init__(self, instance_name):
|
||||
self._vmutils = utilsfactory.get_vmutils()
|
||||
self._pathutils = pathutils.PathUtils()
|
||||
|
|
|
@ -963,6 +963,7 @@ class IronicDriver(virt_driver.ComputeDriver):
|
|||
If false, pull fresh data from ironic.
|
||||
:returns: an InstanceInfo object
|
||||
"""
|
||||
|
||||
def _fetch_from_ironic(self, instance):
|
||||
try:
|
||||
node = self._validate_instance_and_node(instance)
|
||||
|
|
|
@ -1550,6 +1550,7 @@ class LibvirtConfigGuestDiskEncryptionSecret(LibvirtConfigObject):
|
|||
class LibvirtConfigGuestDiskEncryption(LibvirtConfigObject):
|
||||
"""https://libvirt.org/formatstorageencryption.html
|
||||
"""
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super(LibvirtConfigGuestDiskEncryption, self).__init__(**kwargs)
|
||||
self.format = None
|
||||
|
|
|
@ -196,6 +196,7 @@ def patch_tpool_proxy():
|
|||
or __repr__() calls. See bug #962840 for details.
|
||||
We perform a monkey patch to replace those two instance methods.
|
||||
"""
|
||||
|
||||
def str_method(self):
|
||||
return str(self._obj)
|
||||
|
||||
|
@ -3933,7 +3934,6 @@ class LibvirtDriver(driver.ComputeDriver):
|
|||
accel_info)
|
||||
|
||||
def trigger_crash_dump(self, instance):
|
||||
|
||||
"""Trigger crash dump by injecting an NMI to the specified instance."""
|
||||
try:
|
||||
self._host.get_guest(instance).inject_nmi()
|
||||
|
|
|
@ -21,6 +21,7 @@ class LibvirtEvent(event.InstanceEvent):
|
|||
|
||||
class DeviceEvent(LibvirtEvent):
|
||||
"""Base class for device related libvirt events"""
|
||||
|
||||
def __init__(self, uuid: str, dev: str, timestamp: float = None):
|
||||
super().__init__(uuid, timestamp)
|
||||
self.dev = dev
|
||||
|
|
|
@ -521,6 +521,7 @@ class Flat(Image):
|
|||
creating an overlay. By default it creates raw files, but will use qcow2
|
||||
when creating a disk from a qcow2 if force_raw_images is not set in config.
|
||||
"""
|
||||
|
||||
def __init__(self, instance=None, disk_name=None, path=None):
|
||||
self.disk_name = disk_name
|
||||
path = (path or os.path.join(libvirt_utils.get_instance_path(instance),
|
||||
|
|
|
@ -23,6 +23,7 @@ CONF = nova.conf.CONF
|
|||
|
||||
class LibvirtISERVolumeDriver(iscsi.LibvirtISCSIVolumeDriver):
|
||||
"""Driver to attach Network volumes to libvirt."""
|
||||
|
||||
def __init__(self, connection):
|
||||
super(LibvirtISERVolumeDriver, self).__init__(connection)
|
||||
|
||||
|
|
|
@ -174,6 +174,7 @@ class _HostMountState(object):
|
|||
|
||||
class _MountPoint(object):
|
||||
"""A single mountpoint, and the set of attachments in use on it."""
|
||||
|
||||
def __init__(self):
|
||||
# A guard for operations on this mountpoint
|
||||
# N.B. Care is required using this lock, as it will be deleted
|
||||
|
|
|
@ -22,6 +22,7 @@ LOG = logging.getLogger(__name__)
|
|||
|
||||
class LibvirtNetVolumeDriver(libvirt_volume.LibvirtBaseVolumeDriver):
|
||||
"""Driver to attach Network volumes to libvirt."""
|
||||
|
||||
def __init__(self, host):
|
||||
super(LibvirtNetVolumeDriver,
|
||||
self).__init__(host, is_block_dev=False)
|
||||
|
|
|
@ -34,6 +34,7 @@ class LibvirtScaleIOVolumeDriver(libvirt_volume.LibvirtBaseVolumeDriver):
|
|||
Implements Libvirt part of volume driver for ScaleIO cinder driver.
|
||||
Uses the ScaleIO connector from the os-brick projects
|
||||
"""
|
||||
|
||||
def __init__(self, host):
|
||||
super(LibvirtScaleIOVolumeDriver, self).__init__(host,
|
||||
is_block_dev=False)
|
||||
|
|
|
@ -31,6 +31,7 @@ LOG = logging.getLogger(__name__)
|
|||
@profiler.trace_cls("volume_api")
|
||||
class LibvirtBaseVolumeDriver(object):
|
||||
"""Base class for volume drivers."""
|
||||
|
||||
def __init__(self, host, is_block_dev):
|
||||
self.host = host
|
||||
self.is_block_dev = is_block_dev
|
||||
|
@ -156,6 +157,7 @@ class LibvirtBaseVolumeDriver(object):
|
|||
|
||||
class LibvirtVolumeDriver(LibvirtBaseVolumeDriver):
|
||||
"""Class for volumes backed by local file."""
|
||||
|
||||
def __init__(self, host):
|
||||
super(LibvirtVolumeDriver,
|
||||
self).__init__(host, is_block_dev=True)
|
||||
|
@ -171,6 +173,7 @@ class LibvirtVolumeDriver(LibvirtBaseVolumeDriver):
|
|||
|
||||
class LibvirtFakeVolumeDriver(LibvirtBaseVolumeDriver):
|
||||
"""Driver to attach fake volumes to libvirt."""
|
||||
|
||||
def __init__(self, host):
|
||||
super(LibvirtFakeVolumeDriver,
|
||||
self).__init__(host, is_block_dev=True)
|
||||
|
|
|
@ -724,6 +724,7 @@ class VMwareAPISession(api.VMwareAPISession):
|
|||
"""Sets up a session with the VC/ESX host and handles all
|
||||
the calls made to the host.
|
||||
"""
|
||||
|
||||
def __init__(self, host_ip=CONF.vmware.host_ip,
|
||||
host_port=CONF.vmware.host_port,
|
||||
username=CONF.vmware.host_username,
|
||||
|
|
|
@ -47,6 +47,7 @@ def _get_ds_capacity_and_freespace(session, cluster=None,
|
|||
|
||||
class VCState(object):
|
||||
"""Manages information about the vCenter cluster"""
|
||||
|
||||
def __init__(self, session, host_name, cluster, datastore_regex):
|
||||
super(VCState, self).__init__()
|
||||
self._session = session
|
||||
|
|
|
@ -412,6 +412,7 @@ def translate_cinder_exception(method):
|
|||
def translate_create_exception(method):
|
||||
"""Transforms the exception for create but keeps its traceback intact.
|
||||
"""
|
||||
|
||||
def wrapper(self, ctx, size, *args, **kwargs):
|
||||
try:
|
||||
res = method(self, ctx, size, *args, **kwargs)
|
||||
|
@ -426,6 +427,7 @@ def translate_create_exception(method):
|
|||
def translate_volume_exception(method):
|
||||
"""Transforms the exception for the volume but keeps its traceback intact.
|
||||
"""
|
||||
|
||||
def wrapper(self, ctx, volume_id, *args, **kwargs):
|
||||
try:
|
||||
res = method(self, ctx, volume_id, *args, **kwargs)
|
||||
|
@ -441,6 +443,7 @@ def translate_attachment_exception(method):
|
|||
"""Transforms the exception for the attachment but keeps its traceback
|
||||
intact.
|
||||
"""
|
||||
|
||||
def wrapper(self, ctx, attachment_id, *args, **kwargs):
|
||||
try:
|
||||
res = method(self, ctx, attachment_id, *args, **kwargs)
|
||||
|
@ -455,6 +458,7 @@ def translate_snapshot_exception(method):
|
|||
"""Transforms the exception for the snapshot but keeps its traceback
|
||||
intact.
|
||||
"""
|
||||
|
||||
def wrapper(self, ctx, snapshot_id, *args, **kwargs):
|
||||
try:
|
||||
res = method(self, ctx, snapshot_id, *args, **kwargs)
|
||||
|
@ -466,6 +470,7 @@ def translate_snapshot_exception(method):
|
|||
|
||||
def translate_mixed_exceptions(method):
|
||||
"""Transforms exceptions that can come from both volumes and snapshots."""
|
||||
|
||||
def wrapper(self, ctx, res_id, *args, **kwargs):
|
||||
try:
|
||||
res = method(self, ctx, res_id, *args, **kwargs)
|
||||
|
|
|
@ -53,6 +53,7 @@ def normalize(weight_list, minval=None, maxval=None):
|
|||
|
||||
class WeighedObject(object):
|
||||
"""Object with weight information."""
|
||||
|
||||
def __init__(self, obj, weight):
|
||||
self.obj = obj
|
||||
self.weight = weight
|
||||
|
|
15
tox.ini
15
tox.ini
|
@ -47,14 +47,29 @@ commands =
|
|||
description =
|
||||
Run style checks.
|
||||
envdir = {toxworkdir}/shared
|
||||
deps =
|
||||
{[testenv]deps}
|
||||
autopep8
|
||||
commands =
|
||||
{[testenv:mypy]commands}
|
||||
# check if autopep8 would alter the formatting but don't actually change it
|
||||
# so we can gate on this in the ci
|
||||
autopep8 --exit-code --max-line-length=79 --diff -r nova doc setup.py
|
||||
# since autopep8 only tries to make minimal changes to conform to pep8 we still need to run
|
||||
# our hacking and flake8 check to keep our existing code style consistent.
|
||||
# The full list of issues addressable by autopep8 can be found here
|
||||
# https://pypi.org/project/autopep8/#features
|
||||
bash tools/flake8wrap.sh {posargs}
|
||||
# Check that all JSON files don't have \r\n in line.
|
||||
bash -c "! find doc/ -type f -name *.json | xargs grep -U -n $'\r'"
|
||||
# Check that all included JSON files are valid JSON
|
||||
bash -c '! find doc/ -type f -name *.json | xargs -t -n1 python -m json.tool 2>&1 > /dev/null | grep -B1 -v ^python'
|
||||
|
||||
[testenv:autopep8]
|
||||
deps = autopep8
|
||||
commands =
|
||||
autopep8 --exit-code --max-line-length=79 --in-place -r nova doc setup.py
|
||||
|
||||
[testenv:fast8]
|
||||
description =
|
||||
Run style checks on the changes made since HEAD~. For a full run including docs, use 'pep8'
|
||||
|
|
Loading…
Reference in New Issue