tests: Remove unnecessary nesting of volume resources

Change-Id: I210ce7534d161e89115e5cb96e42ab7f27170aa1
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
This commit is contained in:
Stephen Finucane 2022-09-29 18:42:26 +01:00 committed by Stephen Finucane
parent d7f431be50
commit 1aaaa6f1d1
34 changed files with 2299 additions and 2488 deletions

@ -78,7 +78,7 @@ def _build_network_az_datalist(network_az, long_datalist=False):
class TestAvailabilityZone(utils.TestCommand): class TestAvailabilityZone(utils.TestCommand):
def setUp(self): def setUp(self):
super(TestAvailabilityZone, self).setUp() super().setUp()
compute_client = compute_fakes.FakeComputev2Client( compute_client = compute_fakes.FakeComputev2Client(
endpoint=fakes.AUTH_URL, endpoint=fakes.AUTH_URL,
@ -113,8 +113,7 @@ class TestAvailabilityZoneList(TestAvailabilityZone):
compute_azs = \ compute_azs = \
compute_fakes.FakeAvailabilityZone.create_availability_zones() compute_fakes.FakeAvailabilityZone.create_availability_zones()
volume_azs = \ volume_azs = volume_fakes.create_availability_zones(count=1)
volume_fakes.FakeAvailabilityZone.create_availability_zones(count=1)
network_azs = network_fakes.create_availability_zones() network_azs = network_fakes.create_availability_zones()
short_columnslist = ('Zone Name', 'Zone Status') short_columnslist = ('Zone Name', 'Zone Status')
@ -128,7 +127,7 @@ class TestAvailabilityZoneList(TestAvailabilityZone):
) )
def setUp(self): def setUp(self):
super(TestAvailabilityZoneList, self).setUp() super().setUp()
self.compute_azs_mock.list.return_value = self.compute_azs self.compute_azs_mock.list.return_value = self.compute_azs
self.volume_azs_mock.list.return_value = self.volume_azs self.volume_azs_mock.list.return_value = self.volume_azs

@ -26,7 +26,7 @@ from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
class TestExtension(utils.TestCommand): class TestExtension(utils.TestCommand):
def setUp(self): def setUp(self):
super(TestExtension, self).setUp() super().setUp()
identity_client = identity_fakes.FakeIdentityv2Client( identity_client = identity_fakes.FakeIdentityv2Client(
endpoint=fakes.AUTH_URL, endpoint=fakes.AUTH_URL,
@ -66,13 +66,13 @@ class TestExtensionList(TestExtension):
long_columns = ('Name', 'Alias', 'Description', 'Namespace', 'Updated', long_columns = ('Name', 'Alias', 'Description', 'Namespace', 'Updated',
'Links') 'Links')
volume_extension = volume_fakes.FakeExtension.create_one_extension() volume_extension = volume_fakes.create_one_extension()
identity_extension = identity_fakes.FakeExtension.create_one_extension() identity_extension = identity_fakes.FakeExtension.create_one_extension()
compute_extension = compute_fakes.FakeExtension.create_one_extension() compute_extension = compute_fakes.FakeExtension.create_one_extension()
network_extension = network_fakes.FakeExtension.create_one_extension() network_extension = network_fakes.FakeExtension.create_one_extension()
def setUp(self): def setUp(self):
super(TestExtensionList, self).setUp() super().setUp()
self.identity_extensions_mock.list.return_value = [ self.identity_extensions_mock.list.return_value = [
self.identity_extension] self.identity_extension]
@ -310,7 +310,7 @@ class TestExtensionShow(TestExtension):
) )
def setUp(self): def setUp(self):
super(TestExtensionShow, self).setUp() super().setUp()
self.cmd = extension.ShowExtension(self.app, None) self.cmd = extension.ShowExtension(self.app, None)

@ -33,7 +33,7 @@ class TestComputeLimits(compute_fakes.TestComputev2):
] ]
def setUp(self): def setUp(self):
super(TestComputeLimits, self).setUp() super().setUp()
self.app.client_manager.volume_endpoint_enabled = False self.app.client_manager.volume_endpoint_enabled = False
self.compute = self.app.client_manager.compute self.compute = self.app.client_manager.compute
@ -87,7 +87,7 @@ class TestVolumeLimits(volume_fakes.TestVolume):
] ]
def setUp(self): def setUp(self):
super(TestVolumeLimits, self).setUp() super().setUp()
self.app.client_manager.compute_endpoint_enabled = False self.app.client_manager.compute_endpoint_enabled = False
self.volume = self.app.client_manager.volume self.volume = self.app.client_manager.volume

@ -26,7 +26,7 @@ from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
class TestProjectPurgeInit(tests_utils.TestCommand): class TestProjectPurgeInit(tests_utils.TestCommand):
def setUp(self): def setUp(self):
super(TestProjectPurgeInit, self).setUp() super().setUp()
compute_client = compute_fakes.FakeComputev2Client( compute_client = compute_fakes.FakeComputev2Client(
endpoint=fakes.AUTH_URL, endpoint=fakes.AUTH_URL,
token=fakes.AUTH_TOKEN, token=fakes.AUTH_TOKEN,
@ -71,12 +71,12 @@ class TestProjectPurge(TestProjectPurgeInit):
project = identity_fakes.FakeProject.create_one_project() project = identity_fakes.FakeProject.create_one_project()
server = compute_fakes.FakeServer.create_one_server() server = compute_fakes.FakeServer.create_one_server()
image = image_fakes.create_one_image() image = image_fakes.create_one_image()
volume = volume_fakes.FakeVolume.create_one_volume() volume = volume_fakes.create_one_volume()
backup = volume_fakes.FakeBackup.create_one_backup() backup = volume_fakes.create_one_backup()
snapshot = volume_fakes.FakeSnapshot.create_one_snapshot() snapshot = volume_fakes.create_one_snapshot()
def setUp(self): def setUp(self):
super(TestProjectPurge, self).setUp() super().setUp()
self.projects_mock.get.return_value = self.project self.projects_mock.get.return_value = self.project
self.projects_mock.delete.return_value = None self.projects_mock.delete.return_value = None
self.images_mock.list.return_value = [self.image] self.images_mock.list.return_value = [self.image]

@ -176,12 +176,12 @@ class TestQuotaList(TestQuota):
) )
self.volume_quotas = [ self.volume_quotas = [
volume_fakes.FakeQuota.create_one_vol_quota(), volume_fakes.create_one_vol_quota(),
volume_fakes.FakeQuota.create_one_vol_quota(), volume_fakes.create_one_vol_quota(),
] ]
self.volume_default_quotas = [ self.volume_default_quotas = [
volume_fakes.FakeQuota.create_one_default_vol_quota(), volume_fakes.create_one_default_vol_quota(),
volume_fakes.FakeQuota.create_one_default_vol_quota(), volume_fakes.create_one_default_vol_quota(),
] ]
self.volume = self.app.client_manager.volume self.volume = self.app.client_manager.volume
self.volume.quotas.defaults = mock.Mock( self.volume.quotas.defaults = mock.Mock(
@ -280,8 +280,7 @@ class TestQuotaList(TestQuota):
sorted(detailed_reference_data), sorted(ret_quotas)) sorted(detailed_reference_data), sorted(ret_quotas))
def test_quota_list_details_volume(self): def test_quota_list_details_volume(self):
detailed_quota = ( detailed_quota = volume_fakes.create_one_detailed_quota()
volume_fakes.FakeQuota.create_one_detailed_quota())
detailed_column_header = ( detailed_column_header = (
'Resource', 'Resource',
@ -567,7 +566,7 @@ class TestQuotaList(TestQuota):
self.volume.quotas.get = mock.Mock( self.volume.quotas.get = mock.Mock(
side_effect=[ side_effect=[
self.volume_quotas[0], self.volume_quotas[0],
volume_fakes.FakeQuota.create_one_default_vol_quota(), volume_fakes.create_one_default_vol_quota(),
], ],
) )
@ -591,7 +590,7 @@ class TestQuotaList(TestQuota):
self.volume.quotas.get = mock.Mock( self.volume.quotas.get = mock.Mock(
side_effect=[ side_effect=[
self.volume_quotas[0], self.volume_quotas[0],
volume_fakes.FakeQuota.create_one_default_vol_quota(), volume_fakes.create_one_default_vol_quota(),
], ],
) )
@ -1046,10 +1045,9 @@ class TestQuotaShow(TestQuota):
loaded=True, loaded=True,
) )
self.volume_quota = volume_fakes.FakeQuota.create_one_vol_quota() self.volume_quota = volume_fakes.create_one_vol_quota()
self.volume_quotas_mock.get.return_value = self.volume_quota self.volume_quotas_mock.get.return_value = self.volume_quota
self.volume_default_quota = \ self.volume_default_quota = volume_fakes.create_one_default_vol_quota()
volume_fakes.FakeQuota.create_one_default_vol_quota()
self.volume_quotas_mock.defaults.return_value = \ self.volume_quotas_mock.defaults.return_value = \
self.volume_default_quota self.volume_default_quota
self.volume_quotas_class_mock.get.return_value = FakeQuotaResource( self.volume_quotas_class_mock.get.return_value = FakeQuotaResource(
@ -1217,8 +1215,7 @@ class TestQuotaShow(TestQuota):
self.compute_quota = \ self.compute_quota = \
compute_fakes.FakeQuota.create_one_comp_detailed_quota() compute_fakes.FakeQuota.create_one_comp_detailed_quota()
self.compute_quotas_mock.get.return_value = self.compute_quota self.compute_quotas_mock.get.return_value = self.compute_quota
self.volume_quota = \ self.volume_quota = volume_fakes.create_one_detailed_quota()
volume_fakes.FakeQuota.create_one_detailed_quota()
self.volume_quotas_mock.get.return_value = self.volume_quota self.volume_quotas_mock.get.return_value = self.volume_quota
self.network.get_quota.return_value = \ self.network.get_quota.return_value = \
network_fakes.FakeQuota.create_one_net_detailed_quota() network_fakes.FakeQuota.create_one_net_detailed_quota()

@ -153,7 +153,7 @@ class TestServer(compute_fakes.TestComputev2):
return servers return servers
def setup_sdk_volumes_mock(self, count): def setup_sdk_volumes_mock(self, count):
volumes = volume_fakes.FakeVolume.create_sdk_volumes(count=count) volumes = volume_fakes.create_sdk_volumes(count=count)
# This is the return value for volume_client.find_volume() # This is the return value for volume_client.find_volume()
self.sdk_volume_client.find_volume.side_effect = volumes self.sdk_volume_client.find_volume.side_effect = volumes
@ -1444,10 +1444,10 @@ class TestServerCreate(TestServer):
self.flavor = compute_fakes.FakeFlavor.create_one_flavor() self.flavor = compute_fakes.FakeFlavor.create_one_flavor()
self.flavors_mock.get.return_value = self.flavor self.flavors_mock.get.return_value = self.flavor
self.volume = volume_fakes.FakeVolume.create_one_volume() self.volume = volume_fakes.create_one_volume()
self.volumes_mock.get.return_value = self.volume self.volumes_mock.get.return_value = self.volume
self.snapshot = volume_fakes.FakeSnapshot.create_one_snapshot() self.snapshot = volume_fakes.create_one_snapshot()
self.snapshots_mock.get.return_value = self.snapshot self.snapshots_mock.get.return_value = self.snapshot
# Get the command object to test # Get the command object to test

@ -24,7 +24,6 @@ from openstackclient.tests.unit import utils
class FakeVolumev1Client: class FakeVolumev1Client:
def __init__(self, **kwargs): def __init__(self, **kwargs):
self.volumes = mock.Mock() self.volumes = mock.Mock()
self.volumes.resource_class = fakes.FakeResource(None, {}) self.volumes.resource_class = fakes.FakeResource(None, {})
@ -37,8 +36,9 @@ class FakeVolumev1Client:
self.volume_types = mock.Mock() self.volume_types = mock.Mock()
self.volume_types.resource_class = fakes.FakeResource(None, {}) self.volume_types.resource_class = fakes.FakeResource(None, {})
self.volume_encryption_types = mock.Mock() self.volume_encryption_types = mock.Mock()
self.volume_encryption_types.resource_class = ( self.volume_encryption_types.resource_class = fakes.FakeResource(
fakes.FakeResource(None, {})) None, {}
)
self.transfers = mock.Mock() self.transfers = mock.Mock()
self.transfers.resource_class = fakes.FakeResource(None, {}) self.transfers.resource_class = fakes.FakeResource(None, {})
self.volume_snapshots = mock.Mock() self.volume_snapshots = mock.Mock()
@ -52,7 +52,6 @@ class FakeVolumev1Client:
class TestVolumev1(utils.TestCommand): class TestVolumev1(utils.TestCommand):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
@ -75,11 +74,7 @@ class TestVolumev1(utils.TestCommand):
) )
class FakeTransfer(object): def create_one_transfer(attrs=None):
"""Fake one or more Transfer."""
@staticmethod
def create_one_transfer(attrs=None):
"""Create a fake transfer. """Create a fake transfer.
:param Dictionary attrs: :param Dictionary attrs:
@ -100,15 +95,12 @@ class FakeTransfer(object):
transfer_info.update(attrs) transfer_info.update(attrs)
transfer = fakes.FakeResource( transfer = fakes.FakeResource(None, transfer_info, loaded=True)
None,
transfer_info,
loaded=True)
return transfer return transfer
@staticmethod
def create_transfers(attrs=None, count=2): def create_transfers(attrs=None, count=2):
"""Create multiple fake transfers. """Create multiple fake transfers.
:param Dictionary attrs: :param Dictionary attrs:
@ -120,12 +112,12 @@ class FakeTransfer(object):
""" """
transfers = [] transfers = []
for n in range(0, count): for n in range(0, count):
transfers.append(FakeTransfer.create_one_transfer(attrs)) transfers.append(create_one_transfer(attrs))
return transfers return transfers
@staticmethod
def get_transfers(transfers=None, count=2): def get_transfers(transfers=None, count=2):
"""Get an iterable MagicMock object with a list of faked transfers. """Get an iterable MagicMock object with a list of faked transfers.
If transfers list is provided, then initialize the Mock object with the If transfers list is provided, then initialize the Mock object with the
@ -140,16 +132,12 @@ class FakeTransfer(object):
transfers transfers
""" """
if transfers is None: if transfers is None:
transfers = FakeTransfer.create_transfers(count) transfers = create_transfers(count)
return mock.Mock(side_effect=transfers) return mock.Mock(side_effect=transfers)
class FakeService(object): def create_one_service(attrs=None):
"""Fake one or more Services."""
@staticmethod
def create_one_service(attrs=None):
"""Create a fake service. """Create a fake service.
:param Dictionary attrs: :param Dictionary attrs:
@ -173,15 +161,12 @@ class FakeService(object):
service_info.update(attrs) service_info.update(attrs)
service = fakes.FakeResource( service = fakes.FakeResource(None, service_info, loaded=True)
None,
service_info,
loaded=True)
return service return service
@staticmethod
def create_services(attrs=None, count=2): def create_services(attrs=None, count=2):
"""Create multiple fake services. """Create multiple fake services.
:param Dictionary attrs: :param Dictionary attrs:
@ -193,12 +178,12 @@ class FakeService(object):
""" """
services = [] services = []
for n in range(0, count): for n in range(0, count):
services.append(FakeService.create_one_service(attrs)) services.append(create_one_service(attrs))
return services return services
@staticmethod
def get_services(services=None, count=2): def get_services(services=None, count=2):
"""Get an iterable MagicMock object with a list of faked services. """Get an iterable MagicMock object with a list of faked services.
If services list is provided, then initialize the Mock object with the If services list is provided, then initialize the Mock object with the
@ -213,16 +198,12 @@ class FakeService(object):
services services
""" """
if services is None: if services is None:
services = FakeService.create_services(count) services = create_services(count)
return mock.Mock(side_effect=services) return mock.Mock(side_effect=services)
class FakeQos(object): def create_one_qos(attrs=None):
"""Fake one or more Qos specification."""
@staticmethod
def create_one_qos(attrs=None):
"""Create a fake Qos specification. """Create a fake Qos specification.
:param Dictionary attrs: :param Dictionary attrs:
@ -243,13 +224,11 @@ class FakeQos(object):
# Overwrite default attributes. # Overwrite default attributes.
qos_info.update(attrs) qos_info.update(attrs)
qos = fakes.FakeResource( qos = fakes.FakeResource(info=copy.deepcopy(qos_info), loaded=True)
info=copy.deepcopy(qos_info),
loaded=True)
return qos return qos
@staticmethod
def create_one_qos_association(attrs=None): def create_one_qos_association(attrs=None):
"""Create a fake Qos specification association. """Create a fake Qos specification association.
:param Dictionary attrs: :param Dictionary attrs:
@ -270,12 +249,12 @@ class FakeQos(object):
qos_association_info.update(attrs) qos_association_info.update(attrs)
qos_association = fakes.FakeResource( qos_association = fakes.FakeResource(
info=copy.deepcopy(qos_association_info), info=copy.deepcopy(qos_association_info), loaded=True
loaded=True) )
return qos_association return qos_association
@staticmethod
def create_qoses(attrs=None, count=2): def create_qoses(attrs=None, count=2):
"""Create multiple fake Qos specifications. """Create multiple fake Qos specifications.
:param Dictionary attrs: :param Dictionary attrs:
@ -287,13 +266,13 @@ class FakeQos(object):
""" """
qoses = [] qoses = []
for i in range(0, count): for i in range(0, count):
qos = FakeQos.create_one_qos(attrs) qos = create_one_qos(attrs)
qoses.append(qos) qoses.append(qos)
return qoses return qoses
@staticmethod
def get_qoses(qoses=None, count=2): def get_qoses(qoses=None, count=2):
"""Get an iterable MagicMock object with a list of faked qoses. """Get an iterable MagicMock object with a list of faked qoses.
If qoses list is provided, then initialize the Mock object with the If qoses list is provided, then initialize the Mock object with the
@ -308,16 +287,12 @@ class FakeQos(object):
qoses qoses
""" """
if qoses is None: if qoses is None:
qoses = FakeQos.create_qoses(count) qoses = create_qoses(count)
return mock.Mock(side_effect=qoses) return mock.Mock(side_effect=qoses)
class FakeVolume(object): def create_one_volume(attrs=None):
"""Fake one or more volumes."""
@staticmethod
def create_one_volume(attrs=None):
"""Create a fake volume. """Create a fake volume.
:param Dictionary attrs: :param Dictionary attrs:
@ -334,33 +309,32 @@ class FakeVolume(object):
'display_description': 'description' + uuid.uuid4().hex, 'display_description': 'description' + uuid.uuid4().hex,
'status': 'available', 'status': 'available',
'size': 10, 'size': 10,
'volume_type': 'volume_type': random.choice(['fake_lvmdriver-1', 'fake_lvmdriver-2']),
random.choice(['fake_lvmdriver-1', 'fake_lvmdriver-2']),
'bootable': 'true', 'bootable': 'true',
'metadata': { 'metadata': {
'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex, 'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex,
'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex, 'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex,
'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex}, 'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex,
},
'snapshot_id': 'snapshot-id-' + uuid.uuid4().hex, 'snapshot_id': 'snapshot-id-' + uuid.uuid4().hex,
'availability_zone': 'zone' + uuid.uuid4().hex, 'availability_zone': 'zone' + uuid.uuid4().hex,
'attachments': [{ 'attachments': [
{
'device': '/dev/' + uuid.uuid4().hex, 'device': '/dev/' + uuid.uuid4().hex,
'server_id': uuid.uuid4().hex, 'server_id': uuid.uuid4().hex,
}, ], },
],
'created_at': 'time-' + uuid.uuid4().hex, 'created_at': 'time-' + uuid.uuid4().hex,
} }
# Overwrite default attributes if there are some attributes set # Overwrite default attributes if there are some attributes set
volume_info.update(attrs) volume_info.update(attrs)
volume = fakes.FakeResource( volume = fakes.FakeResource(None, volume_info, loaded=True)
None,
volume_info,
loaded=True)
return volume return volume
@staticmethod
def create_volumes(attrs=None, count=2): def create_volumes(attrs=None, count=2):
"""Create multiple fake volumes. """Create multiple fake volumes.
:param Dictionary attrs: :param Dictionary attrs:
@ -372,12 +346,12 @@ class FakeVolume(object):
""" """
volumes = [] volumes = []
for n in range(0, count): for n in range(0, count):
volumes.append(FakeVolume.create_one_volume(attrs)) volumes.append(create_one_volume(attrs))
return volumes return volumes
@staticmethod
def get_volumes(volumes=None, count=2): def get_volumes(volumes=None, count=2):
"""Get an iterable MagicMock object with a list of faked volumes. """Get an iterable MagicMock object with a list of faked volumes.
If volumes list is provided, then initialize the Mock object with the If volumes list is provided, then initialize the Mock object with the
@ -392,16 +366,12 @@ class FakeVolume(object):
volumes volumes
""" """
if volumes is None: if volumes is None:
volumes = FakeVolume.create_volumes(count) volumes = create_volumes(count)
return mock.Mock(side_effect=volumes) return mock.Mock(side_effect=volumes)
class FakeVolumeType(object): def create_one_volume_type(attrs=None, methods=None):
"""Fake one or more type."""
@staticmethod
def create_one_volume_type(attrs=None, methods=None):
"""Create a fake volume type. """Create a fake volume type.
:param Dictionary attrs: :param Dictionary attrs:
@ -427,13 +397,12 @@ class FakeVolumeType(object):
volume_type_info.update(attrs) volume_type_info.update(attrs)
volume_type = fakes.FakeResource( volume_type = fakes.FakeResource(
info=copy.deepcopy(volume_type_info), info=copy.deepcopy(volume_type_info), methods=methods, loaded=True
methods=methods, )
loaded=True)
return volume_type return volume_type
@staticmethod
def create_volume_types(attrs=None, count=2): def create_volume_types(attrs=None, count=2):
"""Create multiple fake types. """Create multiple fake types.
:param Dictionary attrs: :param Dictionary attrs:
@ -445,13 +414,13 @@ class FakeVolumeType(object):
""" """
volume_types = [] volume_types = []
for i in range(0, count): for i in range(0, count):
volume_type = FakeVolumeType.create_one_volume_type(attrs) volume_type = create_one_volume_type(attrs)
volume_types.append(volume_type) volume_types.append(volume_type)
return volume_types return volume_types
@staticmethod
def get_volume_types(volume_types=None, count=2): def get_volume_types(volume_types=None, count=2):
"""Get an iterable MagicMock object with a list of faked types. """Get an iterable MagicMock object with a list of faked types.
If types list is provided, then initialize the Mock object with the If types list is provided, then initialize the Mock object with the
@ -466,12 +435,12 @@ class FakeVolumeType(object):
types types
""" """
if volume_types is None: if volume_types is None:
volume_types = FakeVolumeType.create_volume_types(count) volume_types = create_volume_types(count)
return mock.Mock(side_effect=volume_types) return mock.Mock(side_effect=volume_types)
@staticmethod
def create_one_encryption_volume_type(attrs=None): def create_one_encryption_volume_type(attrs=None):
"""Create a fake encryption volume type. """Create a fake encryption volume type.
:param Dictionary attrs: :param Dictionary attrs:
@ -494,16 +463,12 @@ class FakeVolumeType(object):
encryption_info.update(attrs) encryption_info.update(attrs)
encryption_type = fakes.FakeResource( encryption_type = fakes.FakeResource(
info=copy.deepcopy(encryption_info), info=copy.deepcopy(encryption_info), loaded=True
loaded=True) )
return encryption_type return encryption_type
class FakeSnapshot(object): def create_one_snapshot(attrs=None):
"""Fake one or more snapshot."""
@staticmethod
def create_one_snapshot(attrs=None):
"""Create a fake snapshot. """Create a fake snapshot.
:param Dictionary attrs: :param Dictionary attrs:
@ -533,11 +498,12 @@ class FakeSnapshot(object):
snapshot = fakes.FakeResource( snapshot = fakes.FakeResource(
info=copy.deepcopy(snapshot_info), info=copy.deepcopy(snapshot_info),
methods=copy.deepcopy(snapshot_method), methods=copy.deepcopy(snapshot_method),
loaded=True) loaded=True,
)
return snapshot return snapshot
@staticmethod
def create_snapshots(attrs=None, count=2): def create_snapshots(attrs=None, count=2):
"""Create multiple fake snapshots. """Create multiple fake snapshots.
:param Dictionary attrs: :param Dictionary attrs:
@ -549,13 +515,13 @@ class FakeSnapshot(object):
""" """
snapshots = [] snapshots = []
for i in range(0, count): for i in range(0, count):
snapshot = FakeSnapshot.create_one_snapshot(attrs) snapshot = create_one_snapshot(attrs)
snapshots.append(snapshot) snapshots.append(snapshot)
return snapshots return snapshots
@staticmethod
def get_snapshots(snapshots=None, count=2): def get_snapshots(snapshots=None, count=2):
"""Get an iterable MagicMock object with a list of faked snapshots. """Get an iterable MagicMock object with a list of faked snapshots.
If snapshots list is provided, then initialize the Mock object with the If snapshots list is provided, then initialize the Mock object with the
@ -570,16 +536,12 @@ class FakeSnapshot(object):
snapshots snapshots
""" """
if snapshots is None: if snapshots is None:
snapshots = FakeSnapshot.create_snapshots(count) snapshots = create_snapshots(count)
return mock.Mock(side_effect=snapshots) return mock.Mock(side_effect=snapshots)
class FakeBackup(object): def create_one_backup(attrs=None):
"""Fake one or more backup."""
@staticmethod
def create_one_backup(attrs=None):
"""Create a fake backup. """Create a fake backup.
:param Dictionary attrs: :param Dictionary attrs:
@ -607,13 +569,11 @@ class FakeBackup(object):
# Overwrite default attributes. # Overwrite default attributes.
backup_info.update(attrs) backup_info.update(attrs)
backup = fakes.FakeResource( backup = fakes.FakeResource(info=copy.deepcopy(backup_info), loaded=True)
info=copy.deepcopy(backup_info),
loaded=True)
return backup return backup
@staticmethod
def create_backups(attrs=None, count=2): def create_backups(attrs=None, count=2):
"""Create multiple fake backups. """Create multiple fake backups.
:param Dictionary attrs: :param Dictionary attrs:
@ -625,13 +585,13 @@ class FakeBackup(object):
""" """
backups = [] backups = []
for i in range(0, count): for i in range(0, count):
backup = FakeBackup.create_one_backup(attrs) backup = create_one_backup(attrs)
backups.append(backup) backups.append(backup)
return backups return backups
@staticmethod
def get_backups(backups=None, count=2): def get_backups(backups=None, count=2):
"""Get an iterable MagicMock object with a list of faked backups. """Get an iterable MagicMock object with a list of faked backups.
If backups list is provided, then initialize the Mock object with the If backups list is provided, then initialize the Mock object with the
@ -646,6 +606,6 @@ class FakeBackup(object):
backups backups
""" """
if backups is None: if backups is None:
backups = FakeBackup.create_backups(count) backups = create_backups(count)
return mock.Mock(side_effect=backups) return mock.Mock(side_effect=backups)

@ -28,7 +28,7 @@ from openstackclient.volume.v1 import qos_specs
class TestQos(volume_fakes.TestVolumev1): class TestQos(volume_fakes.TestVolumev1):
def setUp(self): def setUp(self):
super(TestQos, self).setUp() super().setUp()
self.qos_mock = self.app.client_manager.volume.qos_specs self.qos_mock = self.app.client_manager.volume.qos_specs
self.qos_mock.reset_mock() self.qos_mock.reset_mock()
@ -39,11 +39,11 @@ class TestQos(volume_fakes.TestVolumev1):
class TestQosAssociate(TestQos): class TestQosAssociate(TestQos):
volume_type = volume_fakes.FakeVolumeType.create_one_volume_type() volume_type = volume_fakes.create_one_volume_type()
qos_spec = volume_fakes.FakeQos.create_one_qos() qos_spec = volume_fakes.create_one_qos()
def setUp(self): def setUp(self):
super(TestQosAssociate, self).setUp() super().setUp()
self.qos_mock.get.return_value = self.qos_spec self.qos_mock.get.return_value = self.qos_spec
self.types_mock.get.return_value = self.volume_type self.types_mock.get.return_value = self.volume_type
@ -80,8 +80,8 @@ class TestQosCreate(TestQos):
) )
def setUp(self): def setUp(self):
super(TestQosCreate, self).setUp() super().setUp()
self.new_qos_spec = volume_fakes.FakeQos.create_one_qos() self.new_qos_spec = volume_fakes.create_one_qos()
self.datalist = ( self.datalist = (
self.new_qos_spec.consumer, self.new_qos_spec.consumer,
self.new_qos_spec.id, self.new_qos_spec.id,
@ -160,13 +160,13 @@ class TestQosCreate(TestQos):
class TestQosDelete(TestQos): class TestQosDelete(TestQos):
qos_specs = volume_fakes.FakeQos.create_qoses(count=2) qos_specs = volume_fakes.create_qoses(count=2)
def setUp(self): def setUp(self):
super(TestQosDelete, self).setUp() super().setUp()
self.qos_mock.get = ( self.qos_mock.get = (
volume_fakes.FakeQos.get_qoses(self.qos_specs)) volume_fakes.get_qoses(self.qos_specs))
# Get the command object to test # Get the command object to test
self.cmd = qos_specs.DeleteQos(self.app, None) self.cmd = qos_specs.DeleteQos(self.app, None)
@ -263,11 +263,11 @@ class TestQosDelete(TestQos):
class TestQosDisassociate(TestQos): class TestQosDisassociate(TestQos):
volume_type = volume_fakes.FakeVolumeType.create_one_volume_type() volume_type = volume_fakes.create_one_volume_type()
qos_spec = volume_fakes.FakeQos.create_one_qos() qos_spec = volume_fakes.create_one_qos()
def setUp(self): def setUp(self):
super(TestQosDisassociate, self).setUp() super().setUp()
self.qos_mock.get.return_value = self.qos_spec self.qos_mock.get.return_value = self.qos_spec
self.types_mock.get.return_value = self.volume_type self.types_mock.get.return_value = self.volume_type
@ -311,8 +311,8 @@ class TestQosDisassociate(TestQos):
class TestQosList(TestQos): class TestQosList(TestQos):
qos_specs = volume_fakes.FakeQos.create_qoses(count=2) qos_specs = volume_fakes.create_qoses(count=2)
qos_association = volume_fakes.FakeQos.create_one_qos_association() qos_association = volume_fakes.create_one_qos_association()
columns = ( columns = (
'ID', 'ID',
@ -332,7 +332,7 @@ class TestQosList(TestQos):
)) ))
def setUp(self): def setUp(self):
super(TestQosList, self).setUp() super().setUp()
self.qos_mock.list.return_value = self.qos_specs self.qos_mock.list.return_value = self.qos_specs
self.qos_mock.get_associations.return_value = [self.qos_association] self.qos_mock.get_associations.return_value = [self.qos_association]
@ -382,10 +382,10 @@ class TestQosList(TestQos):
class TestQosSet(TestQos): class TestQosSet(TestQos):
qos_spec = volume_fakes.FakeQos.create_one_qos() qos_spec = volume_fakes.create_one_qos()
def setUp(self): def setUp(self):
super(TestQosSet, self).setUp() super().setUp()
self.qos_mock.get.return_value = self.qos_spec self.qos_mock.get.return_value = self.qos_spec
# Get the command object to test # Get the command object to test
@ -414,11 +414,11 @@ class TestQosSet(TestQos):
class TestQosShow(TestQos): class TestQosShow(TestQos):
qos_spec = volume_fakes.FakeQos.create_one_qos() qos_spec = volume_fakes.create_one_qos()
qos_association = volume_fakes.FakeQos.create_one_qos_association() qos_association = volume_fakes.create_one_qos_association()
def setUp(self): def setUp(self):
super(TestQosShow, self).setUp() super().setUp()
self.qos_mock.get.return_value = self.qos_spec self.qos_mock.get.return_value = self.qos_spec
self.qos_mock.get_associations.return_value = [self.qos_association] self.qos_mock.get_associations.return_value = [self.qos_association]
# Get the command object to test # Get the command object to test
@ -459,10 +459,10 @@ class TestQosShow(TestQos):
class TestQosUnset(TestQos): class TestQosUnset(TestQos):
qos_spec = volume_fakes.FakeQos.create_one_qos() qos_spec = volume_fakes.create_one_qos()
def setUp(self): def setUp(self):
super(TestQosUnset, self).setUp() super().setUp()
self.qos_mock.get.return_value = self.qos_spec self.qos_mock.get.return_value = self.qos_spec
# Get the command object to test # Get the command object to test

@ -14,14 +14,14 @@
from osc_lib import exceptions from osc_lib import exceptions
from openstackclient.tests.unit.volume.v1 import fakes as service_fakes from openstackclient.tests.unit.volume.v1 import fakes as volume_fakes
from openstackclient.volume.v1 import service from openstackclient.volume.v1 import service
class TestService(service_fakes.TestVolumev1): class TestService(volume_fakes.TestVolumev1):
def setUp(self): def setUp(self):
super(TestService, self).setUp() super().setUp()
# Get a shortcut to the ServiceManager Mock # Get a shortcut to the ServiceManager Mock
self.service_mock = self.app.client_manager.volume.services self.service_mock = self.app.client_manager.volume.services
@ -31,10 +31,10 @@ class TestService(service_fakes.TestVolumev1):
class TestServiceList(TestService): class TestServiceList(TestService):
# The service to be listed # The service to be listed
services = service_fakes.FakeService.create_one_service() services = volume_fakes.create_one_service()
def setUp(self): def setUp(self):
super(TestServiceList, self).setUp() super().setUp()
self.service_mock.list.return_value = [self.services] self.service_mock.list.return_value = [self.services]
@ -144,10 +144,10 @@ class TestServiceList(TestService):
class TestServiceSet(TestService): class TestServiceSet(TestService):
service = service_fakes.FakeService.create_one_service() service = volume_fakes.create_one_service()
def setUp(self): def setUp(self):
super(TestServiceSet, self).setUp() super().setUp()
self.service_mock.enable.return_value = self.service self.service_mock.enable.return_value = self.service
self.service_mock.disable.return_value = self.service self.service_mock.disable.return_value = self.service

@ -18,14 +18,14 @@ from unittest.mock import call
from osc_lib import exceptions from osc_lib import exceptions
from osc_lib import utils from osc_lib import utils
from openstackclient.tests.unit.volume.v1 import fakes as transfer_fakes from openstackclient.tests.unit.volume.v1 import fakes as volume_fakes
from openstackclient.volume.v1 import volume_transfer_request from openstackclient.volume.v1 import volume_transfer_request
class TestTransfer(transfer_fakes.TestVolumev1): class TestTransfer(volume_fakes.TestVolumev1):
def setUp(self): def setUp(self):
super(TestTransfer, self).setUp() super().setUp()
# Get a shortcut to the TransferManager Mock # Get a shortcut to the TransferManager Mock
self.transfer_mock = self.app.client_manager.volume.transfers self.transfer_mock = self.app.client_manager.volume.transfers
@ -45,10 +45,9 @@ class TestTransferAccept(TestTransfer):
) )
def setUp(self): def setUp(self):
super(TestTransferAccept, self).setUp() super().setUp()
self.volume_transfer = ( self.volume_transfer = volume_fakes.create_one_transfer()
transfer_fakes.FakeTransfer.create_one_transfer())
self.data = ( self.data = (
self.volume_transfer.id, self.volume_transfer.id,
self.volume_transfer.name, self.volume_transfer.name,
@ -103,7 +102,7 @@ class TestTransferAccept(TestTransfer):
class TestTransferCreate(TestTransfer): class TestTransferCreate(TestTransfer):
volume = transfer_fakes.FakeVolume.create_one_volume() volume = volume_fakes.create_one_volume()
columns = ( columns = (
'auth_key', 'auth_key',
@ -114,12 +113,14 @@ class TestTransferCreate(TestTransfer):
) )
def setUp(self): def setUp(self):
super(TestTransferCreate, self).setUp() super().setUp()
self.volume_transfer = transfer_fakes.FakeTransfer.create_one_transfer( self.volume_transfer = volume_fakes.create_one_transfer(
attrs={'volume_id': self.volume.id, attrs={
'volume_id': self.volume.id,
'auth_key': 'key', 'auth_key': 'key',
'created_at': 'time'} 'created_at': 'time',
},
) )
self.data = ( self.data = (
self.volume_transfer.auth_key, self.volume_transfer.auth_key,
@ -173,13 +174,14 @@ class TestTransferCreate(TestTransfer):
class TestTransferDelete(TestTransfer): class TestTransferDelete(TestTransfer):
volume_transfers = transfer_fakes.FakeTransfer.create_transfers(count=2) volume_transfers = volume_fakes.create_transfers(count=2)
def setUp(self): def setUp(self):
super(TestTransferDelete, self).setUp() super().setUp()
self.transfer_mock.get = ( self.transfer_mock.get = volume_fakes.get_transfers(
transfer_fakes.FakeTransfer.get_transfers(self.volume_transfers)) self.volume_transfers,
)
self.transfer_mock.delete.return_value = None self.transfer_mock.delete.return_value = None
# Get the command object to mock # Get the command object to mock
@ -252,10 +254,10 @@ class TestTransferDelete(TestTransfer):
class TestTransferList(TestTransfer): class TestTransferList(TestTransfer):
# The Transfers to be listed # The Transfers to be listed
volume_transfers = transfer_fakes.FakeTransfer.create_one_transfer() volume_transfers = volume_fakes.create_one_transfer()
def setUp(self): def setUp(self):
super(TestTransferList, self).setUp() super().setUp()
self.transfer_mock.list.return_value = [self.volume_transfers] self.transfer_mock.list.return_value = [self.volume_transfers]
@ -346,11 +348,10 @@ class TestTransferShow(TestTransfer):
) )
def setUp(self): def setUp(self):
super(TestTransferShow, self).setUp() super().setUp()
self.volume_transfer = ( self.volume_transfer = volume_fakes.create_one_transfer(
transfer_fakes.FakeTransfer.create_one_transfer( attrs={'created_at': 'time'}
attrs={'created_at': 'time'})
) )
self.data = ( self.data = (
self.volume_transfer.created_at, self.volume_transfer.created_at,

@ -27,7 +27,7 @@ from openstackclient.volume.v1 import volume_type
class TestType(volume_fakes.TestVolumev1): class TestType(volume_fakes.TestVolumev1):
def setUp(self): def setUp(self):
super(TestType, self).setUp() super().setUp()
self.types_mock = self.app.client_manager.volume.volume_types self.types_mock = self.app.client_manager.volume.volume_types
self.types_mock.reset_mock() self.types_mock.reset_mock()
@ -47,11 +47,11 @@ class TestTypeCreate(TestType):
) )
def setUp(self): def setUp(self):
super(TestTypeCreate, self).setUp() super().setUp()
self.new_volume_type = \ self.new_volume_type = volume_fakes.create_one_volume_type(
volume_fakes.FakeVolumeType.create_one_volume_type( methods={'set_keys': {'myprop': 'myvalue'}},
methods={'set_keys': {'myprop': 'myvalue'}}) )
self.data = ( self.data = (
self.new_volume_type.description, self.new_volume_type.description,
self.new_volume_type.id, self.new_volume_type.id,
@ -87,12 +87,12 @@ class TestTypeCreate(TestType):
'key_size': '128', 'key_size': '128',
'control_location': 'front-end', 'control_location': 'front-end',
} }
encryption_type = \ encryption_type = volume_fakes.create_one_encryption_volume_type(
volume_fakes.FakeVolumeType.create_one_encryption_volume_type( attrs=encryption_info,
attrs=encryption_info) )
self.new_volume_type = \ self.new_volume_type = volume_fakes.create_one_volume_type(
volume_fakes.FakeVolumeType.create_one_volume_type( attrs={'encryption': encryption_info},
attrs={'encryption': encryption_info}) )
self.types_mock.create.return_value = self.new_volume_type self.types_mock.create.return_value = self.new_volume_type
self.encryption_types_mock.create.return_value = encryption_type self.encryption_types_mock.create.return_value = encryption_type
encryption_columns = ( encryption_columns = (
@ -145,13 +145,12 @@ class TestTypeCreate(TestType):
class TestTypeDelete(TestType): class TestTypeDelete(TestType):
volume_types = volume_fakes.FakeVolumeType.create_volume_types(count=2) volume_types = volume_fakes.create_volume_types(count=2)
def setUp(self): def setUp(self):
super(TestTypeDelete, self).setUp() super().setUp()
self.types_mock.get = volume_fakes.FakeVolumeType.get_volume_types( self.types_mock.get = volume_fakes.get_volume_types(self.volume_types)
self.volume_types)
self.types_mock.delete.return_value = None self.types_mock.delete.return_value = None
# Get the command object to mock # Get the command object to mock
@ -221,7 +220,7 @@ class TestTypeDelete(TestType):
class TestTypeList(TestType): class TestTypeList(TestType):
volume_types = volume_fakes.FakeVolumeType.create_volume_types() volume_types = volume_fakes.create_volume_types()
columns = [ columns = [
"ID", "ID",
@ -252,7 +251,7 @@ class TestTypeList(TestType):
)) ))
def setUp(self): def setUp(self):
super(TestTypeList, self).setUp() super().setUp()
self.types_mock.list.return_value = self.volume_types self.types_mock.list.return_value = self.volume_types
self.encryption_types_mock.create.return_value = None self.encryption_types_mock.create.return_value = None
@ -288,9 +287,9 @@ class TestTypeList(TestType):
self.assertCountEqual(self.data_long, list(data)) self.assertCountEqual(self.data_long, list(data))
def test_type_list_with_encryption(self): def test_type_list_with_encryption(self):
encryption_type = \ encryption_type = volume_fakes.create_one_encryption_volume_type(
volume_fakes.FakeVolumeType.create_one_encryption_volume_type( attrs={'volume_type_id': self.volume_types[0].id},
attrs={'volume_type_id': self.volume_types[0].id}) )
encryption_info = { encryption_info = {
'provider': 'LuksEncryptor', 'provider': 'LuksEncryptor',
'cipher': None, 'cipher': None,
@ -335,11 +334,12 @@ class TestTypeList(TestType):
class TestTypeSet(TestType): class TestTypeSet(TestType):
volume_type = volume_fakes.FakeVolumeType.create_one_volume_type( volume_type = volume_fakes.create_one_volume_type(
methods={'set_keys': None}) methods={'set_keys': None},
)
def setUp(self): def setUp(self):
super(TestTypeSet, self).setUp() super().setUp()
self.types_mock.get.return_value = self.volume_type self.types_mock.get.return_value = self.volume_type
@ -441,9 +441,9 @@ class TestTypeShow(TestType):
) )
def setUp(self): def setUp(self):
super(TestTypeShow, self).setUp() super().setUp()
self.volume_type = volume_fakes.FakeVolumeType.create_one_volume_type() self.volume_type = volume_fakes.create_one_volume_type()
self.data = ( self.data = (
self.volume_type.description, self.volume_type.description,
self.volume_type.id, self.volume_type.id,
@ -474,16 +474,16 @@ class TestTypeShow(TestType):
self.assertCountEqual(self.data, data) self.assertCountEqual(self.data, data)
def test_type_show_with_encryption(self): def test_type_show_with_encryption(self):
encryption_type = \ encryption_type = volume_fakes.create_one_encryption_volume_type()
volume_fakes.FakeVolumeType.create_one_encryption_volume_type()
encryption_info = { encryption_info = {
'provider': 'LuksEncryptor', 'provider': 'LuksEncryptor',
'cipher': None, 'cipher': None,
'key_size': None, 'key_size': None,
'control_location': 'front-end', 'control_location': 'front-end',
} }
self.volume_type = volume_fakes.FakeVolumeType.create_one_volume_type( self.volume_type = volume_fakes.create_one_volume_type(
attrs={'encryption': encryption_info}) attrs={'encryption': encryption_info},
)
self.types_mock.get.return_value = self.volume_type self.types_mock.get.return_value = self.volume_type
self.encryption_types_mock.get.return_value = encryption_type self.encryption_types_mock.get.return_value = encryption_type
encryption_columns = ( encryption_columns = (
@ -521,11 +521,12 @@ class TestTypeShow(TestType):
class TestTypeUnset(TestType): class TestTypeUnset(TestType):
volume_type = volume_fakes.FakeVolumeType.create_one_volume_type( volume_type = volume_fakes.create_one_volume_type(
methods={'unset_keys': None}) methods={'unset_keys': None},
)
def setUp(self): def setUp(self):
super(TestTypeUnset, self).setUp() super().setUp()
self.types_mock.get.return_value = self.volume_type self.types_mock.get.return_value = self.volume_type
@ -599,7 +600,7 @@ class TestTypeUnset(TestType):
class TestColumns(TestType): class TestColumns(TestType):
def test_encryption_info_column_with_info(self): def test_encryption_info_column_with_info(self):
fake_volume_type = volume_fakes.FakeVolumeType.create_one_volume_type() fake_volume_type = volume_fakes.create_one_volume_type()
type_id = fake_volume_type.id type_id = fake_volume_type.id
encryption_info = { encryption_info = {
@ -615,7 +616,7 @@ class TestColumns(TestType):
self.assertEqual(encryption_info, col.machine_readable()) self.assertEqual(encryption_info, col.machine_readable())
def test_encryption_info_column_without_info(self): def test_encryption_info_column_without_info(self):
fake_volume_type = volume_fakes.FakeVolumeType.create_one_volume_type() fake_volume_type = volume_fakes.create_one_volume_type()
type_id = fake_volume_type.id type_id = fake_volume_type.id
col = volume_type.EncryptionInfoColumn(type_id, {}) col = volume_type.EncryptionInfoColumn(type_id, {})

@ -31,7 +31,7 @@ from openstackclient.volume.v1 import volume
class TestVolume(volume_fakes.TestVolumev1): class TestVolume(volume_fakes.TestVolumev1):
def setUp(self): def setUp(self):
super(TestVolume, self).setUp() super().setUp()
# Get a shortcut to the VolumeManager Mock # Get a shortcut to the VolumeManager Mock
self.volumes_mock = self.app.client_manager.volume.volumes self.volumes_mock = self.app.client_manager.volume.volumes
@ -50,11 +50,9 @@ class TestVolume(volume_fakes.TestVolumev1):
self.images_mock.reset_mock() self.images_mock.reset_mock()
def setup_volumes_mock(self, count): def setup_volumes_mock(self, count):
volumes = volume_fakes.FakeVolume.create_volumes(count=count) volumes = volume_fakes.create_volumes(count=count)
self.volumes_mock.get = volume_fakes.FakeVolume.get_volumes( self.volumes_mock.get = volume_fakes.get_volumes(volumes, 0)
volumes,
0)
return volumes return volumes
@ -79,8 +77,8 @@ class TestVolumeCreate(TestVolume):
) )
def setUp(self): def setUp(self):
super(TestVolumeCreate, self).setUp() super().setUp()
self.new_volume = volume_fakes.FakeVolume.create_one_volume() self.new_volume = volume_fakes.create_one_volume()
self.datalist = ( self.datalist = (
self.new_volume.attachments, self.new_volume.attachments,
self.new_volume.availability_zone, self.new_volume.availability_zone,
@ -635,7 +633,7 @@ class TestVolumeCreate(TestVolume):
class TestVolumeDelete(TestVolume): class TestVolumeDelete(TestVolume):
def setUp(self): def setUp(self):
super(TestVolumeDelete, self).setUp() super().setUp()
self.volumes_mock.delete.return_value = None self.volumes_mock.delete.return_value = None
@ -725,7 +723,7 @@ class TestVolumeDelete(TestVolume):
class TestVolumeList(TestVolume): class TestVolumeList(TestVolume):
_volume = volume_fakes.FakeVolume.create_one_volume() _volume = volume_fakes.create_one_volume()
columns = ( columns = (
'ID', 'ID',
'Name', 'Name',
@ -744,7 +742,7 @@ class TestVolumeList(TestVolume):
) )
def setUp(self): def setUp(self):
super(TestVolumeList, self).setUp() super().setUp()
self.volumes_mock.list.return_value = [self._volume] self.volumes_mock.list.return_value = [self._volume]
@ -921,10 +919,10 @@ class TestVolumeList(TestVolume):
class TestVolumeMigrate(TestVolume): class TestVolumeMigrate(TestVolume):
_volume = volume_fakes.FakeVolume.create_one_volume() _volume = volume_fakes.create_one_volume()
def setUp(self): def setUp(self):
super(TestVolumeMigrate, self).setUp() super().setUp()
self.volumes_mock.get.return_value = self._volume self.volumes_mock.get.return_value = self._volume
self.volumes_mock.migrate_volume.return_value = None self.volumes_mock.migrate_volume.return_value = None
@ -983,10 +981,10 @@ class TestVolumeMigrate(TestVolume):
class TestVolumeSet(TestVolume): class TestVolumeSet(TestVolume):
_volume = volume_fakes.FakeVolume.create_one_volume() _volume = volume_fakes.create_one_volume()
def setUp(self): def setUp(self):
super(TestVolumeSet, self).setUp() super().setUp()
self.volumes_mock.get.return_value = self._volume self.volumes_mock.get.return_value = self._volume
@ -1243,8 +1241,8 @@ class TestVolumeShow(TestVolume):
) )
def setUp(self): def setUp(self):
super(TestVolumeShow, self).setUp() super().setUp()
self._volume = volume_fakes.FakeVolume.create_one_volume() self._volume = volume_fakes.create_one_volume()
self.datalist = ( self.datalist = (
self._volume.attachments, self._volume.attachments,
self._volume.availability_zone, self._volume.availability_zone,
@ -1300,10 +1298,10 @@ class TestVolumeShow(TestVolume):
class TestVolumeUnset(TestVolume): class TestVolumeUnset(TestVolume):
_volume = volume_fakes.FakeVolume.create_one_volume() _volume = volume_fakes.create_one_volume()
def setUp(self): def setUp(self):
super(TestVolumeUnset, self).setUp() super().setUp()
self.volumes_mock.get.return_value = self._volume self.volumes_mock.get.return_value = self._volume
@ -1346,7 +1344,7 @@ class TestVolumeUnset(TestVolume):
class TestColumns(TestVolume): class TestColumns(TestVolume):
def test_attachments_column_without_server_cache(self): def test_attachments_column_without_server_cache(self):
_volume = volume_fakes.FakeVolume.create_one_volume() _volume = volume_fakes.create_one_volume()
server_id = _volume.attachments[0]['server_id'] server_id = _volume.attachments[0]['server_id']
device = _volume.attachments[0]['device'] device = _volume.attachments[0]['device']
@ -1356,7 +1354,7 @@ class TestColumns(TestVolume):
self.assertEqual(_volume.attachments, col.machine_readable()) self.assertEqual(_volume.attachments, col.machine_readable())
def test_attachments_column_with_server_cache(self): def test_attachments_column_with_server_cache(self):
_volume = volume_fakes.FakeVolume.create_one_volume() _volume = volume_fakes.create_one_volume()
server_id = _volume.attachments[0]['server_id'] server_id = _volume.attachments[0]['server_id']
device = _volume.attachments[0]['device'] device = _volume.attachments[0]['device']

@ -25,7 +25,7 @@ from openstackclient.volume.v1 import volume_backup
class TestBackup(volume_fakes.TestVolumev1): class TestBackup(volume_fakes.TestVolumev1):
def setUp(self): def setUp(self):
super(TestBackup, self).setUp() super().setUp()
self.backups_mock = self.app.client_manager.volume.backups self.backups_mock = self.app.client_manager.volume.backups
self.backups_mock.reset_mock() self.backups_mock.reset_mock()
@ -39,7 +39,7 @@ class TestBackup(volume_fakes.TestVolumev1):
class TestBackupCreate(TestBackup): class TestBackupCreate(TestBackup):
volume = volume_fakes.FakeVolume.create_one_volume() volume = volume_fakes.create_one_volume()
columns = ( columns = (
'availability_zone', 'availability_zone',
@ -55,9 +55,10 @@ class TestBackupCreate(TestBackup):
) )
def setUp(self): def setUp(self):
super(TestBackupCreate, self).setUp() super().setUp()
self.new_backup = volume_fakes.FakeBackup.create_one_backup( self.new_backup = volume_fakes.create_one_backup(
attrs={'volume_id': self.volume.id}) attrs={'volume_id': self.volume.id},
)
self.data = ( self.data = (
self.new_backup.availability_zone, self.new_backup.availability_zone,
self.new_backup.container, self.new_backup.container,
@ -129,13 +130,12 @@ class TestBackupCreate(TestBackup):
class TestBackupDelete(TestBackup): class TestBackupDelete(TestBackup):
backups = volume_fakes.FakeBackup.create_backups(count=2) backups = volume_fakes.create_backups(count=2)
def setUp(self): def setUp(self):
super(TestBackupDelete, self).setUp() super().setUp()
self.backups_mock.get = ( self.backups_mock.get = volume_fakes.get_backups(self.backups)
volume_fakes.FakeBackup.get_backups(self.backups))
self.backups_mock.delete.return_value = None self.backups_mock.delete.return_value = None
# Get the command object to mock # Get the command object to mock
@ -205,9 +205,11 @@ class TestBackupDelete(TestBackup):
class TestBackupList(TestBackup): class TestBackupList(TestBackup):
volume = volume_fakes.FakeVolume.create_one_volume() volume = volume_fakes.create_one_volume()
backups = volume_fakes.FakeBackup.create_backups( backups = volume_fakes.create_backups(
attrs={'volume_id': volume.display_name}, count=3) attrs={'volume_id': volume.display_name},
count=3,
)
columns = [ columns = [
'ID', 'ID',
@ -245,7 +247,7 @@ class TestBackupList(TestBackup):
)) ))
def setUp(self): def setUp(self):
super(TestBackupList, self).setUp() super().setUp()
self.volumes_mock.list.return_value = [self.volume] self.volumes_mock.list.return_value = [self.volume]
self.backups_mock.list.return_value = self.backups self.backups_mock.list.return_value = self.backups
@ -314,9 +316,10 @@ class TestBackupList(TestBackup):
class TestBackupRestore(TestBackup): class TestBackupRestore(TestBackup):
volume = volume_fakes.FakeVolume.create_one_volume() volume = volume_fakes.create_one_volume()
backup = volume_fakes.FakeBackup.create_one_backup( backup = volume_fakes.create_one_backup(
attrs={'volume_id': volume.id}) attrs={'volume_id': volume.id},
)
def setUp(self): def setUp(self):
super().setUp() super().setUp()
@ -324,7 +327,7 @@ class TestBackupRestore(TestBackup):
self.backups_mock.get.return_value = self.backup self.backups_mock.get.return_value = self.backup
self.volumes_mock.get.return_value = self.volume self.volumes_mock.get.return_value = self.volume
self.restores_mock.restore.return_value = ( self.restores_mock.restore.return_value = (
volume_fakes.FakeVolume.create_one_volume( volume_fakes.create_one_volume(
{'id': self.volume['id']}, {'id': self.volume['id']},
) )
) )
@ -400,8 +403,8 @@ class TestBackupShow(TestBackup):
) )
def setUp(self): def setUp(self):
super(TestBackupShow, self).setUp() super().setUp()
self.backup = volume_fakes.FakeBackup.create_one_backup() self.backup = volume_fakes.create_one_backup()
self.data = ( self.data = (
self.backup.availability_zone, self.backup.availability_zone,
self.backup.container, self.backup.container,

@ -41,7 +41,6 @@ QUOTA = {
class FakeVolumeClient: class FakeVolumeClient:
def __init__(self, **kwargs): def __init__(self, **kwargs):
self.auth_token = kwargs['token'] self.auth_token = kwargs['token']
self.management_url = kwargs['endpoint'] self.management_url = kwargs['endpoint']
@ -76,8 +75,9 @@ class FakeVolumeClient:
self.transfers = mock.Mock() self.transfers = mock.Mock()
self.transfers.resource_class = fakes.FakeResource(None, {}) self.transfers.resource_class = fakes.FakeResource(None, {})
self.volume_encryption_types = mock.Mock() self.volume_encryption_types = mock.Mock()
self.volume_encryption_types.resource_class = ( self.volume_encryption_types.resource_class = fakes.FakeResource(
fakes.FakeResource(None, {})) None, {}
)
self.volume_snapshots = mock.Mock() self.volume_snapshots = mock.Mock()
self.volume_snapshots.resource_class = fakes.FakeResource(None, {}) self.volume_snapshots.resource_class = fakes.FakeResource(None, {})
self.volume_type_access = mock.Mock() self.volume_type_access = mock.Mock()
@ -89,29 +89,21 @@ class FakeVolumeClient:
class TestVolume(utils.TestCommand): class TestVolume(utils.TestCommand):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.app.client_manager.volume = FakeVolumeClient( self.app.client_manager.volume = FakeVolumeClient(
endpoint=fakes.AUTH_URL, endpoint=fakes.AUTH_URL, token=fakes.AUTH_TOKEN
token=fakes.AUTH_TOKEN
) )
self.app.client_manager.identity = identity_fakes.FakeIdentityv3Client( self.app.client_manager.identity = identity_fakes.FakeIdentityv3Client(
endpoint=fakes.AUTH_URL, endpoint=fakes.AUTH_URL, token=fakes.AUTH_TOKEN
token=fakes.AUTH_TOKEN
) )
self.app.client_manager.image = image_fakes.FakeImagev2Client( self.app.client_manager.image = image_fakes.FakeImagev2Client(
endpoint=fakes.AUTH_URL, endpoint=fakes.AUTH_URL, token=fakes.AUTH_TOKEN
token=fakes.AUTH_TOKEN
) )
class FakeTransfer(object): def create_one_transfer(attrs=None):
"""Fake one or more Transfer."""
@staticmethod
def create_one_transfer(attrs=None):
"""Create a fake transfer. """Create a fake transfer.
:param dict attrs: :param dict attrs:
@ -132,15 +124,12 @@ class FakeTransfer(object):
transfer_info.update(attrs) transfer_info.update(attrs)
transfer = fakes.FakeResource( transfer = fakes.FakeResource(None, transfer_info, loaded=True)
None,
transfer_info,
loaded=True)
return transfer return transfer
@staticmethod
def create_transfers(attrs=None, count=2): def create_transfers(attrs=None, count=2):
"""Create multiple fake transfers. """Create multiple fake transfers.
:param dict attrs: :param dict attrs:
@ -152,12 +141,12 @@ class FakeTransfer(object):
""" """
transfers = [] transfers = []
for n in range(0, count): for n in range(0, count):
transfers.append(FakeTransfer.create_one_transfer(attrs)) transfers.append(create_one_transfer(attrs))
return transfers return transfers
@staticmethod
def get_transfers(transfers=None, count=2): def get_transfers(transfers=None, count=2):
"""Get an iterable MagicMock object with a list of faked transfers. """Get an iterable MagicMock object with a list of faked transfers.
If transfers list is provided, then initialize the Mock object with the If transfers list is provided, then initialize the Mock object with the
@ -172,16 +161,12 @@ class FakeTransfer(object):
transfers transfers
""" """
if transfers is None: if transfers is None:
transfers = FakeTransfer.create_transfers(count) transfers = create_transfers(count)
return mock.Mock(side_effect=transfers) return mock.Mock(side_effect=transfers)
class FakeTypeAccess(object): def create_one_type_access(attrs=None):
"""Fake one or more volume type access."""
@staticmethod
def create_one_type_access(attrs=None):
"""Create a fake volume type access for project. """Create a fake volume type access for project.
:param dict attrs: :param dict attrs:
@ -201,19 +186,12 @@ class FakeTypeAccess(object):
# Overwrite default attributes. # Overwrite default attributes.
type_access_attrs.update(attrs) type_access_attrs.update(attrs)
type_access = fakes.FakeResource( type_access = fakes.FakeResource(None, type_access_attrs, loaded=True)
None,
type_access_attrs,
loaded=True)
return type_access return type_access
class FakeService(object): def create_one_service(attrs=None):
"""Fake one or more Services."""
@staticmethod
def create_one_service(attrs=None):
"""Create a fake service. """Create a fake service.
:param dict attrs: :param dict attrs:
@ -237,15 +215,12 @@ class FakeService(object):
service_info.update(attrs) service_info.update(attrs)
service = fakes.FakeResource( service = fakes.FakeResource(None, service_info, loaded=True)
None,
service_info,
loaded=True)
return service return service
@staticmethod
def create_services(attrs=None, count=2): def create_services(attrs=None, count=2):
"""Create multiple fake services. """Create multiple fake services.
:param dict attrs: :param dict attrs:
@ -257,16 +232,12 @@ class FakeService(object):
""" """
services = [] services = []
for n in range(0, count): for n in range(0, count):
services.append(FakeService.create_one_service(attrs)) services.append(create_one_service(attrs))
return services return services
class FakeCapability(object): def create_one_capability(attrs=None):
"""Fake capability."""
@staticmethod
def create_one_capability(attrs=None):
"""Create a fake volume backend capability. """Create a fake volume backend capability.
:param dict attrs: :param dict attrs:
@ -290,42 +261,35 @@ class FakeCapability(object):
"compression": { "compression": {
"title": "Compression", "title": "Compression",
"description": "Enables compression.", "description": "Enables compression.",
"type": "boolean" "type": "boolean",
}, },
"qos": { "qos": {
"title": "QoS", "title": "QoS",
"description": "Enables QoS.", "description": "Enables QoS.",
"type": "boolean" "type": "boolean",
}, },
"replication": { "replication": {
"title": "Replication", "title": "Replication",
"description": "Enables replication.", "description": "Enables replication.",
"type": "boolean" "type": "boolean",
}, },
"thin_provisioning": { "thin_provisioning": {
"title": "Thin Provisioning", "title": "Thin Provisioning",
"description": "Sets thin provisioning.", "description": "Sets thin provisioning.",
"type": "boolean" "type": "boolean",
} },
} },
} }
# Overwrite default attributes if there are some attributes set # Overwrite default attributes if there are some attributes set
capability_info.update(attrs or {}) capability_info.update(attrs or {})
capability = fakes.FakeResource( capability = fakes.FakeResource(None, capability_info, loaded=True)
None,
capability_info,
loaded=True)
return capability return capability
class FakePool(object): def create_one_pool(attrs=None):
"""Fake Pools."""
@staticmethod
def create_one_pool(attrs=None):
"""Create a fake pool. """Create a fake pool.
:param dict attrs: :param dict attrs:
@ -348,19 +312,12 @@ class FakePool(object):
# Overwrite default attributes if there are some attributes set # Overwrite default attributes if there are some attributes set
pool_info.update(attrs or {}) pool_info.update(attrs or {})
pool = fakes.FakeResource( pool = fakes.FakeResource(None, pool_info, loaded=True)
None,
pool_info,
loaded=True)
return pool return pool
class FakeVolume(object): def create_one_volume(attrs=None):
"""Fake one or more volumes."""
@staticmethod
def create_one_volume(attrs=None):
"""Create a fake volume. """Create a fake volume.
:param dict attrs: :param dict attrs:
@ -377,33 +334,31 @@ class FakeVolume(object):
'description': 'description' + uuid.uuid4().hex, 'description': 'description' + uuid.uuid4().hex,
'status': random.choice(['available', 'in_use']), 'status': random.choice(['available', 'in_use']),
'size': random.randint(1, 20), 'size': random.randint(1, 20),
'volume_type': 'volume_type': random.choice(['fake_lvmdriver-1', 'fake_lvmdriver-2']),
random.choice(['fake_lvmdriver-1', 'fake_lvmdriver-2']), 'bootable': random.randint(0, 1),
'bootable':
random.randint(0, 1),
'metadata': { 'metadata': {
'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex, 'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex,
'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex, 'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex,
'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex}, 'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex,
},
'snapshot_id': random.randint(1, 5), 'snapshot_id': random.randint(1, 5),
'availability_zone': 'zone' + uuid.uuid4().hex, 'availability_zone': 'zone' + uuid.uuid4().hex,
'attachments': [{ 'attachments': [
{
'device': '/dev/' + uuid.uuid4().hex, 'device': '/dev/' + uuid.uuid4().hex,
'server_id': uuid.uuid4().hex, 'server_id': uuid.uuid4().hex,
}, ], },
],
} }
# Overwrite default attributes if there are some attributes set # Overwrite default attributes if there are some attributes set
volume_info.update(attrs) volume_info.update(attrs)
volume = fakes.FakeResource( volume = fakes.FakeResource(None, volume_info, loaded=True)
None,
volume_info,
loaded=True)
return volume return volume
@staticmethod
def create_volumes(attrs=None, count=2): def create_volumes(attrs=None, count=2):
"""Create multiple fake volumes. """Create multiple fake volumes.
:param dict attrs: :param dict attrs:
@ -415,12 +370,12 @@ class FakeVolume(object):
""" """
volumes = [] volumes = []
for n in range(0, count): for n in range(0, count):
volumes.append(FakeVolume.create_one_volume(attrs)) volumes.append(create_one_volume(attrs))
return volumes return volumes
@staticmethod
def create_one_sdk_volume(attrs=None): def create_one_sdk_volume(attrs=None):
"""Create a fake volume. """Create a fake volume.
:param dict attrs: :param dict attrs:
@ -437,28 +392,29 @@ class FakeVolume(object):
'description': 'description' + uuid.uuid4().hex, 'description': 'description' + uuid.uuid4().hex,
'status': random.choice(['available', 'in_use']), 'status': random.choice(['available', 'in_use']),
'size': random.randint(1, 20), 'size': random.randint(1, 20),
'volume_type': 'volume_type': random.choice(['fake_lvmdriver-1', 'fake_lvmdriver-2']),
random.choice(['fake_lvmdriver-1', 'fake_lvmdriver-2']), 'bootable': random.choice(['true', 'false']),
'bootable':
random.choice(['true', 'false']),
'metadata': { 'metadata': {
'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex, 'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex,
'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex, 'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex,
'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex}, 'key' + uuid.uuid4().hex: 'val' + uuid.uuid4().hex,
},
'snapshot_id': random.randint(1, 5), 'snapshot_id': random.randint(1, 5),
'availability_zone': 'zone' + uuid.uuid4().hex, 'availability_zone': 'zone' + uuid.uuid4().hex,
'attachments': [{ 'attachments': [
{
'device': '/dev/' + uuid.uuid4().hex, 'device': '/dev/' + uuid.uuid4().hex,
'server_id': uuid.uuid4().hex, 'server_id': uuid.uuid4().hex,
}, ], },
],
} }
# Overwrite default attributes if there are some attributes set # Overwrite default attributes if there are some attributes set
volume_info.update(attrs) volume_info.update(attrs)
return volume.Volume(**volume_info) return volume.Volume(**volume_info)
@staticmethod
def create_sdk_volumes(attrs=None, count=2): def create_sdk_volumes(attrs=None, count=2):
"""Create multiple fake volumes. """Create multiple fake volumes.
:param dict attrs: :param dict attrs:
@ -470,12 +426,12 @@ class FakeVolume(object):
""" """
volumes = [] volumes = []
for n in range(0, count): for n in range(0, count):
volumes.append(FakeVolume.create_one_sdk_volume(attrs)) volumes.append(create_one_sdk_volume(attrs))
return volumes return volumes
@staticmethod
def get_volumes(volumes=None, count=2): def get_volumes(volumes=None, count=2):
"""Get an iterable MagicMock object with a list of faked volumes. """Get an iterable MagicMock object with a list of faked volumes.
If volumes list is provided, then initialize the Mock object with the If volumes list is provided, then initialize the Mock object with the
@ -490,12 +446,12 @@ class FakeVolume(object):
volumes volumes
""" """
if volumes is None: if volumes is None:
volumes = FakeVolume.create_volumes(count) volumes = create_volumes(count)
return mock.Mock(side_effect=volumes) return mock.Mock(side_effect=volumes)
@staticmethod
def get_volume_columns(volume=None): def get_volume_columns(volume=None):
"""Get the volume columns from a faked volume object. """Get the volume columns from a faked volume object.
:param volume: :param volume:
@ -509,8 +465,8 @@ class FakeVolume(object):
return tuple(k for k in sorted(volume.keys())) return tuple(k for k in sorted(volume.keys()))
return tuple([]) return tuple([])
@staticmethod
def get_volume_data(volume=None): def get_volume_data(volume=None):
"""Get the volume data from a faked volume object. """Get the volume data from a faked volume object.
:param volume: :param volume:
@ -526,18 +482,13 @@ class FakeVolume(object):
for x in sorted(volume.keys()): for x in sorted(volume.keys()):
if x == 'tags': if x == 'tags':
# The 'tags' should be format_list # The 'tags' should be format_list
data_list.append( data_list.append(format_columns.ListColumn(volume.info.get(x)))
format_columns.ListColumn(volume.info.get(x)))
else: else:
data_list.append(volume.info.get(x)) data_list.append(volume.info.get(x))
return tuple(data_list) return tuple(data_list)
class FakeAvailabilityZone(object): def create_one_availability_zone(attrs=None):
"""Fake one or more volume availability zones (AZs)."""
@staticmethod
def create_one_availability_zone(attrs=None):
"""Create a fake AZ. """Create a fake AZ.
:param dict attrs: :param dict attrs:
@ -557,12 +508,12 @@ class FakeAvailabilityZone(object):
availability_zone.update(attrs) availability_zone.update(attrs)
availability_zone = fakes.FakeResource( availability_zone = fakes.FakeResource(
info=copy.deepcopy(availability_zone), info=copy.deepcopy(availability_zone), loaded=True
loaded=True) )
return availability_zone return availability_zone
@staticmethod
def create_availability_zones(attrs=None, count=2): def create_availability_zones(attrs=None, count=2):
"""Create multiple fake AZs. """Create multiple fake AZs.
:param dict attrs: :param dict attrs:
@ -574,18 +525,13 @@ class FakeAvailabilityZone(object):
""" """
availability_zones = [] availability_zones = []
for i in range(0, count): for i in range(0, count):
availability_zone = \ availability_zone = create_one_availability_zone(attrs)
FakeAvailabilityZone.create_one_availability_zone(attrs)
availability_zones.append(availability_zone) availability_zones.append(availability_zone)
return availability_zones return availability_zones
class FakeBackup(object): def create_one_backup(attrs=None):
"""Fake one or more backup."""
@staticmethod
def create_one_backup(attrs=None):
"""Create a fake backup. """Create a fake backup.
:param dict attrs: :param dict attrs:
@ -612,13 +558,11 @@ class FakeBackup(object):
# Overwrite default attributes. # Overwrite default attributes.
backup_info.update(attrs) backup_info.update(attrs)
backup = fakes.FakeResource( backup = fakes.FakeResource(info=copy.deepcopy(backup_info), loaded=True)
info=copy.deepcopy(backup_info),
loaded=True)
return backup return backup
@staticmethod
def create_backups(attrs=None, count=2): def create_backups(attrs=None, count=2):
"""Create multiple fake backups. """Create multiple fake backups.
:param dict attrs: :param dict attrs:
@ -630,13 +574,13 @@ class FakeBackup(object):
""" """
backups = [] backups = []
for i in range(0, count): for i in range(0, count):
backup = FakeBackup.create_one_backup(attrs) backup = create_one_backup(attrs)
backups.append(backup) backups.append(backup)
return backups return backups
@staticmethod
def get_backups(backups=None, count=2): def get_backups(backups=None, count=2):
"""Get an iterable MagicMock object with a list of faked backups. """Get an iterable MagicMock object with a list of faked backups.
If backups list is provided, then initialize the Mock object with the If backups list is provided, then initialize the Mock object with the
@ -651,12 +595,12 @@ class FakeBackup(object):
backups backups
""" """
if backups is None: if backups is None:
backups = FakeBackup.create_backups(count) backups = create_backups(count)
return mock.Mock(side_effect=backups) return mock.Mock(side_effect=backups)
@staticmethod
def create_backup_record(): def create_backup_record():
"""Gets a fake backup record for a given backup. """Gets a fake backup record for a given backup.
:return: An "exported" backup record. :return: An "exported" backup record.
@ -667,8 +611,8 @@ class FakeBackup(object):
'backup_url': 'eyJzdGF0dXMiOiAiYXZh', 'backup_url': 'eyJzdGF0dXMiOiAiYXZh',
} }
@staticmethod
def import_backup_record(): def import_backup_record():
"""Creates a fake backup record import response from a backup. """Creates a fake backup record import response from a backup.
:return: The fake backup object that was encoded. :return: The fake backup object that was encoded.
@ -685,11 +629,7 @@ class FakeBackup(object):
} }
class FakeConsistencyGroup(object): def create_one_consistency_group(attrs=None):
"""Fake one or more consistency group."""
@staticmethod
def create_one_consistency_group(attrs=None):
"""Create a fake consistency group. """Create a fake consistency group.
:param dict attrs: :param dict attrs:
@ -714,12 +654,12 @@ class FakeConsistencyGroup(object):
consistency_group_info.update(attrs) consistency_group_info.update(attrs)
consistency_group = fakes.FakeResource( consistency_group = fakes.FakeResource(
info=copy.deepcopy(consistency_group_info), info=copy.deepcopy(consistency_group_info), loaded=True
loaded=True) )
return consistency_group return consistency_group
@staticmethod
def create_consistency_groups(attrs=None, count=2): def create_consistency_groups(attrs=None, count=2):
"""Create multiple fake consistency groups. """Create multiple fake consistency groups.
:param dict attrs: :param dict attrs:
@ -731,14 +671,13 @@ class FakeConsistencyGroup(object):
""" """
consistency_groups = [] consistency_groups = []
for i in range(0, count): for i in range(0, count):
consistency_group = ( consistency_group = create_one_consistency_group(attrs)
FakeConsistencyGroup.create_one_consistency_group(attrs))
consistency_groups.append(consistency_group) consistency_groups.append(consistency_group)
return consistency_groups return consistency_groups
@staticmethod
def get_consistency_groups(consistency_groups=None, count=2): def get_consistency_groups(consistency_groups=None, count=2):
"""Note: """Note:
Get an iterable MagicMock object with a list of faked Get an iterable MagicMock object with a list of faked
@ -756,17 +695,12 @@ class FakeConsistencyGroup(object):
consistency_groups consistency_groups
""" """
if consistency_groups is None: if consistency_groups is None:
consistency_groups = (FakeConsistencyGroup. consistency_groups = create_consistency_groups(count)
create_consistency_groups(count))
return mock.Mock(side_effect=consistency_groups) return mock.Mock(side_effect=consistency_groups)
class FakeConsistencyGroupSnapshot(object): def create_one_consistency_group_snapshot(attrs=None):
"""Fake one or more consistency group snapshot."""
@staticmethod
def create_one_consistency_group_snapshot(attrs=None):
"""Create a fake consistency group snapshot. """Create a fake consistency group snapshot.
:param dict attrs: :param dict attrs:
@ -790,12 +724,12 @@ class FakeConsistencyGroupSnapshot(object):
consistency_group_snapshot_info.update(attrs) consistency_group_snapshot_info.update(attrs)
consistency_group_snapshot = fakes.FakeResource( consistency_group_snapshot = fakes.FakeResource(
info=copy.deepcopy(consistency_group_snapshot_info), info=copy.deepcopy(consistency_group_snapshot_info), loaded=True
loaded=True) )
return consistency_group_snapshot return consistency_group_snapshot
@staticmethod
def create_consistency_group_snapshots(attrs=None, count=2): def create_consistency_group_snapshots(attrs=None, count=2):
"""Create multiple fake consistency group snapshots. """Create multiple fake consistency group snapshots.
:param dict attrs: :param dict attrs:
@ -808,16 +742,15 @@ class FakeConsistencyGroupSnapshot(object):
""" """
consistency_group_snapshots = [] consistency_group_snapshots = []
for i in range(0, count): for i in range(0, count):
consistency_group_snapshot = ( consistency_group_snapshot = create_one_consistency_group_snapshot(
FakeConsistencyGroupSnapshot. attrs,
create_one_consistency_group_snapshot(attrs)
) )
consistency_group_snapshots.append(consistency_group_snapshot) consistency_group_snapshots.append(consistency_group_snapshot)
return consistency_group_snapshots return consistency_group_snapshots
@staticmethod
def get_consistency_group_snapshots(snapshots=None, count=2): def get_consistency_group_snapshots(snapshots=None, count=2):
"""Get an iterable MagicMock object with a list of faked cgsnapshots. """Get an iterable MagicMock object with a list of faked cgsnapshots.
If consistenct group snapshots list is provided, then initialize If consistenct group snapshots list is provided, then initialize
@ -832,17 +765,12 @@ class FakeConsistencyGroupSnapshot(object):
consistency groups consistency groups
""" """
if snapshots is None: if snapshots is None:
snapshots = (FakeConsistencyGroupSnapshot. snapshots = create_consistency_group_snapshots(count)
create_consistency_group_snapshots(count))
return mock.Mock(side_effect=snapshots) return mock.Mock(side_effect=snapshots)
class FakeExtension(object): def create_one_extension(attrs=None):
"""Fake one or more extension."""
@staticmethod
def create_one_extension(attrs=None):
"""Create a fake extension. """Create a fake extension.
:param dict attrs: :param dict attrs:
@ -855,30 +783,30 @@ class FakeExtension(object):
# Set default attributes. # Set default attributes.
extension_info = { extension_info = {
'name': 'name-' + uuid.uuid4().hex, 'name': 'name-' + uuid.uuid4().hex,
'namespace': ('http://docs.openstack.org/' 'namespace': (
'block-service/ext/scheduler-hints/api/v2'), 'http://docs.openstack.org/'
'block-service/ext/scheduler-hints/api/v2'
),
'description': 'description-' + uuid.uuid4().hex, 'description': 'description-' + uuid.uuid4().hex,
'updated': '2013-04-18T00:00:00+00:00', 'updated': '2013-04-18T00:00:00+00:00',
'alias': 'OS-SCH-HNT', 'alias': 'OS-SCH-HNT',
'links': ('[{"href":' 'links': (
'[{"href":'
'"https://github.com/openstack/block-api", "type":' '"https://github.com/openstack/block-api", "type":'
' "text/html", "rel": "describedby"}]'), ' "text/html", "rel": "describedby"}]'
),
} }
# Overwrite default attributes. # Overwrite default attributes.
extension_info.update(attrs) extension_info.update(attrs)
extension = fakes.FakeResource( extension = fakes.FakeResource(
info=copy.deepcopy(extension_info), info=copy.deepcopy(extension_info), loaded=True
loaded=True) )
return extension return extension
class FakeQos(object): def create_one_qos(attrs=None):
"""Fake one or more Qos specification."""
@staticmethod
def create_one_qos(attrs=None):
"""Create a fake Qos specification. """Create a fake Qos specification.
:param dict attrs: :param dict attrs:
@ -899,13 +827,11 @@ class FakeQos(object):
# Overwrite default attributes. # Overwrite default attributes.
qos_info.update(attrs) qos_info.update(attrs)
qos = fakes.FakeResource( qos = fakes.FakeResource(info=copy.deepcopy(qos_info), loaded=True)
info=copy.deepcopy(qos_info),
loaded=True)
return qos return qos
@staticmethod
def create_one_qos_association(attrs=None): def create_one_qos_association(attrs=None):
"""Create a fake Qos specification association. """Create a fake Qos specification association.
:param dict attrs: :param dict attrs:
@ -926,12 +852,12 @@ class FakeQos(object):
qos_association_info.update(attrs) qos_association_info.update(attrs)
qos_association = fakes.FakeResource( qos_association = fakes.FakeResource(
info=copy.deepcopy(qos_association_info), info=copy.deepcopy(qos_association_info), loaded=True
loaded=True) )
return qos_association return qos_association
@staticmethod
def create_qoses(attrs=None, count=2): def create_qoses(attrs=None, count=2):
"""Create multiple fake Qos specifications. """Create multiple fake Qos specifications.
:param dict attrs: :param dict attrs:
@ -943,13 +869,13 @@ class FakeQos(object):
""" """
qoses = [] qoses = []
for i in range(0, count): for i in range(0, count):
qos = FakeQos.create_one_qos(attrs) qos = create_one_qos(attrs)
qoses.append(qos) qoses.append(qos)
return qoses return qoses
@staticmethod
def get_qoses(qoses=None, count=2): def get_qoses(qoses=None, count=2):
"""Get an iterable MagicMock object with a list of faked qoses. """Get an iterable MagicMock object with a list of faked qoses.
If qoses list is provided, then initialize the Mock object with the If qoses list is provided, then initialize the Mock object with the
@ -964,16 +890,12 @@ class FakeQos(object):
qoses qoses
""" """
if qoses is None: if qoses is None:
qoses = FakeQos.create_qoses(count) qoses = create_qoses(count)
return mock.Mock(side_effect=qoses) return mock.Mock(side_effect=qoses)
class FakeSnapshot(object): def create_one_snapshot(attrs=None):
"""Fake one or more snapshot."""
@staticmethod
def create_one_snapshot(attrs=None):
"""Create a fake snapshot. """Create a fake snapshot.
:param dict attrs: :param dict attrs:
@ -999,12 +921,12 @@ class FakeSnapshot(object):
snapshot_info.update(attrs) snapshot_info.update(attrs)
snapshot = fakes.FakeResource( snapshot = fakes.FakeResource(
info=copy.deepcopy(snapshot_info), info=copy.deepcopy(snapshot_info), loaded=True
loaded=True) )
return snapshot return snapshot
@staticmethod
def create_snapshots(attrs=None, count=2): def create_snapshots(attrs=None, count=2):
"""Create multiple fake snapshots. """Create multiple fake snapshots.
:param dict attrs: :param dict attrs:
@ -1016,13 +938,13 @@ class FakeSnapshot(object):
""" """
snapshots = [] snapshots = []
for i in range(0, count): for i in range(0, count):
snapshot = FakeSnapshot.create_one_snapshot(attrs) snapshot = create_one_snapshot(attrs)
snapshots.append(snapshot) snapshots.append(snapshot)
return snapshots return snapshots
@staticmethod
def get_snapshots(snapshots=None, count=2): def get_snapshots(snapshots=None, count=2):
"""Get an iterable MagicMock object with a list of faked snapshots. """Get an iterable MagicMock object with a list of faked snapshots.
If snapshots list is provided, then initialize the Mock object with the If snapshots list is provided, then initialize the Mock object with the
@ -1037,16 +959,12 @@ class FakeSnapshot(object):
snapshots snapshots
""" """
if snapshots is None: if snapshots is None:
snapshots = FakeSnapshot.create_snapshots(count) snapshots = create_snapshots(count)
return mock.Mock(side_effect=snapshots) return mock.Mock(side_effect=snapshots)
class FakeVolumeType(object): def create_one_volume_type(attrs=None, methods=None):
"""Fake one or more volume type."""
@staticmethod
def create_one_volume_type(attrs=None, methods=None):
"""Create a fake volume type. """Create a fake volume type.
:param dict attrs: :param dict attrs:
@ -1072,13 +990,12 @@ class FakeVolumeType(object):
volume_type_info.update(attrs) volume_type_info.update(attrs)
volume_type = fakes.FakeResource( volume_type = fakes.FakeResource(
info=copy.deepcopy(volume_type_info), info=copy.deepcopy(volume_type_info), methods=methods, loaded=True
methods=methods, )
loaded=True)
return volume_type return volume_type
@staticmethod
def create_volume_types(attrs=None, count=2): def create_volume_types(attrs=None, count=2):
"""Create multiple fake volume_types. """Create multiple fake volume_types.
:param dict attrs: :param dict attrs:
@ -1090,13 +1007,13 @@ class FakeVolumeType(object):
""" """
volume_types = [] volume_types = []
for i in range(0, count): for i in range(0, count):
volume_type = FakeVolumeType.create_one_volume_type(attrs) volume_type = create_one_volume_type(attrs)
volume_types.append(volume_type) volume_types.append(volume_type)
return volume_types return volume_types
@staticmethod
def get_volume_types(volume_types=None, count=2): def get_volume_types(volume_types=None, count=2):
"""Get an iterable MagicMock object with a list of faked volume types. """Get an iterable MagicMock object with a list of faked volume types.
If volume_types list is provided, then initialize the Mock object with If volume_types list is provided, then initialize the Mock object with
@ -1111,12 +1028,12 @@ class FakeVolumeType(object):
volume types volume types
""" """
if volume_types is None: if volume_types is None:
volume_types = FakeVolumeType.create_volume_types(count) volume_types = create_volume_types(count)
return mock.Mock(side_effect=volume_types) return mock.Mock(side_effect=volume_types)
@staticmethod
def create_one_encryption_volume_type(attrs=None): def create_one_encryption_volume_type(attrs=None):
"""Create a fake encryption volume type. """Create a fake encryption volume type.
:param dict attrs: :param dict attrs:
@ -1139,16 +1056,12 @@ class FakeVolumeType(object):
encryption_info.update(attrs) encryption_info.update(attrs)
encryption_type = fakes.FakeResource( encryption_type = fakes.FakeResource(
info=copy.deepcopy(encryption_info), info=copy.deepcopy(encryption_info), loaded=True
loaded=True) )
return encryption_type return encryption_type
class FakeQuota(object): def create_one_vol_quota(attrs=None):
"""Fake quota"""
@staticmethod
def create_one_vol_quota(attrs=None):
"""Create one quota""" """Create one quota"""
attrs = attrs or {} attrs = attrs or {}
@ -1159,19 +1072,18 @@ class FakeQuota(object):
'gigabytes': 10, 'gigabytes': 10,
'per_volume_gigabytes': 10, 'per_volume_gigabytes': 10,
'snapshots': 0, 'snapshots': 0,
'volumes': 10} 'volumes': 10,
}
quota_attrs.update(attrs) quota_attrs.update(attrs)
quota = fakes.FakeResource( quota = fakes.FakeResource(info=copy.deepcopy(quota_attrs), loaded=True)
info=copy.deepcopy(quota_attrs),
loaded=True)
quota.project_id = quota_attrs['id'] quota.project_id = quota_attrs['id']
return quota return quota
@staticmethod
def create_one_default_vol_quota(attrs=None): def create_one_default_vol_quota(attrs=None):
"""Create one quota""" """Create one quota"""
attrs = attrs or {} attrs = attrs or {}
@ -1182,19 +1094,18 @@ class FakeQuota(object):
'gigabytes': 100, 'gigabytes': 100,
'per_volume_gigabytes': 100, 'per_volume_gigabytes': 100,
'snapshots': 100, 'snapshots': 100,
'volumes': 100} 'volumes': 100,
}
quota_attrs.update(attrs) quota_attrs.update(attrs)
quota = fakes.FakeResource( quota = fakes.FakeResource(info=copy.deepcopy(quota_attrs), loaded=True)
info=copy.deepcopy(quota_attrs),
loaded=True)
quota.project_id = quota_attrs['id'] quota.project_id = quota_attrs['id']
return quota return quota
@staticmethod
def create_one_detailed_quota(attrs=None): def create_one_detailed_quota(attrs=None):
"""Create one quota""" """Create one quota"""
attrs = attrs or {} attrs = attrs or {}
@ -1216,9 +1127,7 @@ class FakeQuota(object):
} }
quota_attrs.update(attrs) quota_attrs.update(attrs)
quota = fakes.FakeResource( quota = fakes.FakeResource(info=copy.deepcopy(quota_attrs), loaded=True)
info=copy.deepcopy(quota_attrs),
loaded=True)
return quota return quota
@ -1237,12 +1146,13 @@ class FakeLimits(object):
'maxTotalVolumes': 10, 'maxTotalVolumes': 10,
'totalVolumesUsed': 4, 'totalVolumesUsed': 4,
'totalBackupsUsed': 0, 'totalBackupsUsed': 0,
'totalGigabytesUsed': 35 'totalGigabytesUsed': 35,
} }
absolute_attrs = absolute_attrs or {} absolute_attrs = absolute_attrs or {}
self.absolute_limits_attrs.update(absolute_attrs) self.absolute_limits_attrs.update(absolute_attrs)
self.rate_limits_attrs = [{ self.rate_limits_attrs = [
{
"uri": "*", "uri": "*",
"limit": [ "limit": [
{ {
@ -1250,24 +1160,25 @@ class FakeLimits(object):
"verb": "POST", "verb": "POST",
"remaining": 2, "remaining": 2,
"unit": "MINUTE", "unit": "MINUTE",
"next-available": "2011-12-15T22:42:45Z" "next-available": "2011-12-15T22:42:45Z",
}, },
{ {
"value": 10, "value": 10,
"verb": "PUT", "verb": "PUT",
"remaining": 2, "remaining": 2,
"unit": "MINUTE", "unit": "MINUTE",
"next-available": "2011-12-15T22:42:45Z" "next-available": "2011-12-15T22:42:45Z",
}, },
{ {
"value": 100, "value": 100,
"verb": "DELETE", "verb": "DELETE",
"remaining": 100, "remaining": 100,
"unit": "MINUTE", "unit": "MINUTE",
"next-available": "2011-12-15T22:42:45Z" "next-available": "2011-12-15T22:42:45Z",
},
],
} }
] ]
}]
@property @property
def absolute(self): def absolute(self):
@ -1285,18 +1196,30 @@ class FakeLimits(object):
for group in self.rate_limits_attrs: for group in self.rate_limits_attrs:
uri = group['uri'] uri = group['uri']
for rate in group['limit']: for rate in group['limit']:
yield FakeRateLimit(rate['verb'], uri, rate['value'], yield FakeRateLimit(
rate['remaining'], rate['unit'], rate['verb'],
rate['next-available']) uri,
rate['value'],
rate['remaining'],
rate['unit'],
rate['next-available'],
)
def rate_limits(self): def rate_limits(self):
reference_data = [] reference_data = []
for group in self.rate_limits_attrs: for group in self.rate_limits_attrs:
uri = group['uri'] uri = group['uri']
for rate in group['limit']: for rate in group['limit']:
reference_data.append((rate['verb'], uri, rate['value'], reference_data.append(
rate['remaining'], rate['unit'], (
rate['next-available'])) rate['verb'],
uri,
rate['value'],
rate['remaining'],
rate['unit'],
rate['next-available'],
)
)
return reference_data return reference_data
@ -1311,8 +1234,7 @@ class FakeAbsoluteLimit(object):
class FakeRateLimit(object): class FakeRateLimit(object):
"""Data model that represents a flattened view of a single rate limit.""" """Data model that represents a flattened view of a single rate limit."""
def __init__(self, verb, uri, value, remain, def __init__(self, verb, uri, value, remain, unit, next_available):
unit, next_available):
self.verb = verb self.verb = verb
self.uri = uri self.uri = uri
self.value = value self.value = value

@ -19,7 +19,7 @@ from openstackclient.volume.v2 import backup_record
class TestBackupRecord(volume_fakes.TestVolume): class TestBackupRecord(volume_fakes.TestVolume):
def setUp(self): def setUp(self):
super(TestBackupRecord, self).setUp() super().setUp()
self.backups_mock = self.app.client_manager.volume.backups self.backups_mock = self.app.client_manager.volume.backups
self.backups_mock.reset_mock() self.backups_mock.reset_mock()
@ -27,12 +27,13 @@ class TestBackupRecord(volume_fakes.TestVolume):
class TestBackupRecordExport(TestBackupRecord): class TestBackupRecordExport(TestBackupRecord):
new_backup = volume_fakes.FakeBackup.create_one_backup( new_backup = volume_fakes.create_one_backup(
attrs={'volume_id': 'a54708a2-0388-4476-a909-09579f885c25'}) attrs={'volume_id': 'a54708a2-0388-4476-a909-09579f885c25'},
new_record = volume_fakes.FakeBackup.create_backup_record() )
new_record = volume_fakes.create_backup_record()
def setUp(self): def setUp(self):
super(TestBackupRecordExport, self).setUp() super().setUp()
self.backups_mock.export_record.return_value = self.new_record self.backups_mock.export_record.return_value = self.new_record
self.backups_mock.get.return_value = self.new_backup self.backups_mock.get.return_value = self.new_backup
@ -81,12 +82,13 @@ class TestBackupRecordExport(TestBackupRecord):
class TestBackupRecordImport(TestBackupRecord): class TestBackupRecordImport(TestBackupRecord):
new_backup = volume_fakes.FakeBackup.create_one_backup( new_backup = volume_fakes.create_one_backup(
attrs={'volume_id': 'a54708a2-0388-4476-a909-09579f885c25'}) attrs={'volume_id': 'a54708a2-0388-4476-a909-09579f885c25'},
new_import = volume_fakes.FakeBackup.import_backup_record() )
new_import = volume_fakes.import_backup_record()
def setUp(self): def setUp(self):
super(TestBackupRecordImport, self).setUp() super().setUp()
self.backups_mock.import_record.return_value = self.new_import self.backups_mock.import_record.return_value = self.new_import

@ -26,7 +26,7 @@ from openstackclient.volume.v2 import consistency_group
class TestConsistencyGroup(volume_fakes.TestVolume): class TestConsistencyGroup(volume_fakes.TestVolume):
def setUp(self): def setUp(self):
super(TestConsistencyGroup, self).setUp() super().setUp()
# Get a shortcut to the TransferManager Mock # Get a shortcut to the TransferManager Mock
self.consistencygroups_mock = ( self.consistencygroups_mock = (
@ -47,11 +47,10 @@ class TestConsistencyGroup(volume_fakes.TestVolume):
class TestConsistencyGroupAddVolume(TestConsistencyGroup): class TestConsistencyGroupAddVolume(TestConsistencyGroup):
_consistency_group = ( _consistency_group = volume_fakes.create_one_consistency_group()
volume_fakes.FakeConsistencyGroup.create_one_consistency_group())
def setUp(self): def setUp(self):
super(TestConsistencyGroupAddVolume, self).setUp() super().setUp()
self.consistencygroups_mock.get.return_value = ( self.consistencygroups_mock.get.return_value = (
self._consistency_group) self._consistency_group)
@ -60,7 +59,7 @@ class TestConsistencyGroupAddVolume(TestConsistencyGroup):
consistency_group.AddVolumeToConsistencyGroup(self.app, None) consistency_group.AddVolumeToConsistencyGroup(self.app, None)
def test_add_one_volume_to_consistency_group(self): def test_add_one_volume_to_consistency_group(self):
volume = volume_fakes.FakeVolume.create_one_volume() volume = volume_fakes.create_one_volume()
self.volumes_mock.get.return_value = volume self.volumes_mock.get.return_value = volume
arglist = [ arglist = [
self._consistency_group.id, self._consistency_group.id,
@ -85,8 +84,8 @@ class TestConsistencyGroupAddVolume(TestConsistencyGroup):
self.assertIsNone(result) self.assertIsNone(result)
def test_add_multiple_volumes_to_consistency_group(self): def test_add_multiple_volumes_to_consistency_group(self):
volumes = volume_fakes.FakeVolume.create_volumes(count=2) volumes = volume_fakes.create_volumes(count=2)
self.volumes_mock.get = volume_fakes.FakeVolume.get_volumes(volumes) self.volumes_mock.get = volume_fakes.get_volumes(volumes)
arglist = [ arglist = [
self._consistency_group.id, self._consistency_group.id,
volumes[0].id, volumes[0].id,
@ -112,8 +111,9 @@ class TestConsistencyGroupAddVolume(TestConsistencyGroup):
@mock.patch.object(consistency_group.LOG, 'error') @mock.patch.object(consistency_group.LOG, 'error')
def test_add_multiple_volumes_to_consistency_group_with_exception( def test_add_multiple_volumes_to_consistency_group_with_exception(
self, mock_error): self, mock_error,
volume = volume_fakes.FakeVolume.create_one_volume() ):
volume = volume_fakes.create_one_volume()
arglist = [ arglist = [
self._consistency_group.id, self._consistency_group.id,
volume.id, volume.id,
@ -148,13 +148,10 @@ class TestConsistencyGroupAddVolume(TestConsistencyGroup):
class TestConsistencyGroupCreate(TestConsistencyGroup): class TestConsistencyGroupCreate(TestConsistencyGroup):
volume_type = volume_fakes.FakeVolumeType.create_one_volume_type() volume_type = volume_fakes.create_one_volume_type()
new_consistency_group = ( new_consistency_group = volume_fakes.create_one_consistency_group()
volume_fakes.FakeConsistencyGroup.create_one_consistency_group())
consistency_group_snapshot = ( consistency_group_snapshot = (
volume_fakes. volume_fakes.create_one_consistency_group_snapshot()
FakeConsistencyGroupSnapshot.
create_one_consistency_group_snapshot()
) )
columns = ( columns = (
@ -177,7 +174,7 @@ class TestConsistencyGroupCreate(TestConsistencyGroup):
) )
def setUp(self): def setUp(self):
super(TestConsistencyGroupCreate, self).setUp() super().setUp()
self.consistencygroups_mock.create.return_value = ( self.consistencygroups_mock.create.return_value = (
self.new_consistency_group) self.new_consistency_group)
self.consistencygroups_mock.create_from_src.return_value = ( self.consistencygroups_mock.create_from_src.return_value = (
@ -313,13 +310,14 @@ class TestConsistencyGroupCreate(TestConsistencyGroup):
class TestConsistencyGroupDelete(TestConsistencyGroup): class TestConsistencyGroupDelete(TestConsistencyGroup):
consistency_groups =\ consistency_groups =\
volume_fakes.FakeConsistencyGroup.create_consistency_groups(count=2) volume_fakes.create_consistency_groups(count=2)
def setUp(self): def setUp(self):
super(TestConsistencyGroupDelete, self).setUp() super().setUp()
self.consistencygroups_mock.get = volume_fakes.FakeConsistencyGroup.\ self.consistencygroups_mock.get = volume_fakes.get_consistency_groups(
get_consistency_groups(self.consistency_groups) self.consistency_groups,
)
self.consistencygroups_mock.delete.return_value = None self.consistencygroups_mock.delete.return_value = None
# Get the command object to mock # Get the command object to mock
@ -409,8 +407,7 @@ class TestConsistencyGroupDelete(TestConsistencyGroup):
class TestConsistencyGroupList(TestConsistencyGroup): class TestConsistencyGroupList(TestConsistencyGroup):
consistency_groups = ( consistency_groups = volume_fakes.create_consistency_groups(count=2)
volume_fakes.FakeConsistencyGroup.create_consistency_groups(count=2))
columns = [ columns = [
'ID', 'ID',
@ -444,7 +441,7 @@ class TestConsistencyGroupList(TestConsistencyGroup):
)) ))
def setUp(self): def setUp(self):
super(TestConsistencyGroupList, self).setUp() super().setUp()
self.consistencygroups_mock.list.return_value = self.consistency_groups self.consistencygroups_mock.list.return_value = self.consistency_groups
# Get the command to test # Get the command to test
@ -502,11 +499,10 @@ class TestConsistencyGroupList(TestConsistencyGroup):
class TestConsistencyGroupRemoveVolume(TestConsistencyGroup): class TestConsistencyGroupRemoveVolume(TestConsistencyGroup):
_consistency_group = ( _consistency_group = volume_fakes.create_one_consistency_group()
volume_fakes.FakeConsistencyGroup.create_one_consistency_group())
def setUp(self): def setUp(self):
super(TestConsistencyGroupRemoveVolume, self).setUp() super().setUp()
self.consistencygroups_mock.get.return_value = ( self.consistencygroups_mock.get.return_value = (
self._consistency_group) self._consistency_group)
@ -515,7 +511,7 @@ class TestConsistencyGroupRemoveVolume(TestConsistencyGroup):
consistency_group.RemoveVolumeFromConsistencyGroup(self.app, None) consistency_group.RemoveVolumeFromConsistencyGroup(self.app, None)
def test_remove_one_volume_from_consistency_group(self): def test_remove_one_volume_from_consistency_group(self):
volume = volume_fakes.FakeVolume.create_one_volume() volume = volume_fakes.create_one_volume()
self.volumes_mock.get.return_value = volume self.volumes_mock.get.return_value = volume
arglist = [ arglist = [
self._consistency_group.id, self._consistency_group.id,
@ -540,8 +536,8 @@ class TestConsistencyGroupRemoveVolume(TestConsistencyGroup):
self.assertIsNone(result) self.assertIsNone(result)
def test_remove_multi_volumes_from_consistency_group(self): def test_remove_multi_volumes_from_consistency_group(self):
volumes = volume_fakes.FakeVolume.create_volumes(count=2) volumes = volume_fakes.create_volumes(count=2)
self.volumes_mock.get = volume_fakes.FakeVolume.get_volumes(volumes) self.volumes_mock.get = volume_fakes.get_volumes(volumes)
arglist = [ arglist = [
self._consistency_group.id, self._consistency_group.id,
volumes[0].id, volumes[0].id,
@ -567,8 +563,10 @@ class TestConsistencyGroupRemoveVolume(TestConsistencyGroup):
@mock.patch.object(consistency_group.LOG, 'error') @mock.patch.object(consistency_group.LOG, 'error')
def test_remove_multiple_volumes_from_consistency_group_with_exception( def test_remove_multiple_volumes_from_consistency_group_with_exception(
self, mock_error): self,
volume = volume_fakes.FakeVolume.create_one_volume() mock_error,
):
volume = volume_fakes.create_one_volume()
arglist = [ arglist = [
self._consistency_group.id, self._consistency_group.id,
volume.id, volume.id,
@ -603,11 +601,10 @@ class TestConsistencyGroupRemoveVolume(TestConsistencyGroup):
class TestConsistencyGroupSet(TestConsistencyGroup): class TestConsistencyGroupSet(TestConsistencyGroup):
consistency_group = ( consistency_group = volume_fakes.create_one_consistency_group()
volume_fakes.FakeConsistencyGroup.create_one_consistency_group())
def setUp(self): def setUp(self):
super(TestConsistencyGroupSet, self).setUp() super().setUp()
self.consistencygroups_mock.get.return_value = ( self.consistencygroups_mock.get.return_value = (
self.consistency_group) self.consistency_group)
@ -677,10 +674,9 @@ class TestConsistencyGroupShow(TestConsistencyGroup):
) )
def setUp(self): def setUp(self):
super(TestConsistencyGroupShow, self).setUp() super().setUp()
self.consistency_group = ( self.consistency_group = volume_fakes.create_one_consistency_group()
volume_fakes.FakeConsistencyGroup.create_one_consistency_group())
self.data = ( self.data = (
self.consistency_group.availability_zone, self.consistency_group.availability_zone,
self.consistency_group.created_at, self.consistency_group.created_at,

@ -35,12 +35,9 @@ class TestConsistencyGroupSnapshot(volume_fakes.TestVolume):
class TestConsistencyGroupSnapshotCreate(TestConsistencyGroupSnapshot): class TestConsistencyGroupSnapshotCreate(TestConsistencyGroupSnapshot):
_consistency_group_snapshot = ( _consistency_group_snapshot = (
volume_fakes. volume_fakes.create_one_consistency_group_snapshot()
FakeConsistencyGroupSnapshot.
create_one_consistency_group_snapshot()
) )
consistency_group = ( consistency_group = volume_fakes.create_one_consistency_group()
volume_fakes.FakeConsistencyGroup.create_one_consistency_group())
columns = ( columns = (
'consistencygroup_id', 'consistencygroup_id',
@ -124,16 +121,16 @@ class TestConsistencyGroupSnapshotCreate(TestConsistencyGroupSnapshot):
class TestConsistencyGroupSnapshotDelete(TestConsistencyGroupSnapshot): class TestConsistencyGroupSnapshotDelete(TestConsistencyGroupSnapshot):
consistency_group_snapshots = ( consistency_group_snapshots = (
volume_fakes.FakeConsistencyGroupSnapshot. volume_fakes.create_consistency_group_snapshots(count=2)
create_consistency_group_snapshots(count=2)
) )
def setUp(self): def setUp(self):
super(TestConsistencyGroupSnapshotDelete, self).setUp() super(TestConsistencyGroupSnapshotDelete, self).setUp()
self.cgsnapshots_mock.get = ( self.cgsnapshots_mock.get = (
volume_fakes.FakeConsistencyGroupSnapshot. volume_fakes.get_consistency_group_snapshots(
get_consistency_group_snapshots(self.consistency_group_snapshots) self.consistency_group_snapshots
)
) )
self.cgsnapshots_mock.delete.return_value = None self.cgsnapshots_mock.delete.return_value = None
@ -178,12 +175,9 @@ class TestConsistencyGroupSnapshotDelete(TestConsistencyGroupSnapshot):
class TestConsistencyGroupSnapshotList(TestConsistencyGroupSnapshot): class TestConsistencyGroupSnapshotList(TestConsistencyGroupSnapshot):
consistency_group_snapshots = ( consistency_group_snapshots = (
volume_fakes.FakeConsistencyGroupSnapshot. volume_fakes.create_consistency_group_snapshots(count=2)
create_consistency_group_snapshots(count=2)
)
consistency_group = (
volume_fakes.FakeConsistencyGroup.create_one_consistency_group()
) )
consistency_group = volume_fakes.create_one_consistency_group()
columns = [ columns = [
'ID', 'ID',
@ -306,9 +300,7 @@ class TestConsistencyGroupSnapshotList(TestConsistencyGroupSnapshot):
class TestConsistencyGroupSnapshotShow(TestConsistencyGroupSnapshot): class TestConsistencyGroupSnapshotShow(TestConsistencyGroupSnapshot):
_consistency_group_snapshot = ( _consistency_group_snapshot = (
volume_fakes. volume_fakes.create_one_consistency_group_snapshot()
FakeConsistencyGroupSnapshot.
create_one_consistency_group_snapshot()
) )
columns = ( columns = (

@ -39,8 +39,8 @@ class TestQos(volume_fakes.TestVolume):
class TestQosAssociate(TestQos): class TestQosAssociate(TestQos):
volume_type = volume_fakes.FakeVolumeType.create_one_volume_type() volume_type = volume_fakes.create_one_volume_type()
qos_spec = volume_fakes.FakeQos.create_one_qos() qos_spec = volume_fakes.create_one_qos()
def setUp(self): def setUp(self):
super(TestQosAssociate, self).setUp() super(TestQosAssociate, self).setUp()
@ -82,7 +82,7 @@ class TestQosCreate(TestQos):
def setUp(self): def setUp(self):
super(TestQosCreate, self).setUp() super(TestQosCreate, self).setUp()
self.new_qos_spec = volume_fakes.FakeQos.create_one_qos() self.new_qos_spec = volume_fakes.create_one_qos()
self.qos_mock.create.return_value = self.new_qos_spec self.qos_mock.create.return_value = self.new_qos_spec
self.data = ( self.data = (
@ -164,13 +164,13 @@ class TestQosCreate(TestQos):
class TestQosDelete(TestQos): class TestQosDelete(TestQos):
qos_specs = volume_fakes.FakeQos.create_qoses(count=2) qos_specs = volume_fakes.create_qoses(count=2)
def setUp(self): def setUp(self):
super(TestQosDelete, self).setUp() super(TestQosDelete, self).setUp()
self.qos_mock.get = ( self.qos_mock.get = (
volume_fakes.FakeQos.get_qoses(self.qos_specs)) volume_fakes.get_qoses(self.qos_specs))
# Get the command object to test # Get the command object to test
self.cmd = qos_specs.DeleteQos(self.app, None) self.cmd = qos_specs.DeleteQos(self.app, None)
@ -255,8 +255,8 @@ class TestQosDelete(TestQos):
class TestQosDisassociate(TestQos): class TestQosDisassociate(TestQos):
volume_type = volume_fakes.FakeVolumeType.create_one_volume_type() volume_type = volume_fakes.create_one_volume_type()
qos_spec = volume_fakes.FakeQos.create_one_qos() qos_spec = volume_fakes.create_one_qos()
def setUp(self): def setUp(self):
super(TestQosDisassociate, self).setUp() super(TestQosDisassociate, self).setUp()
@ -303,8 +303,8 @@ class TestQosDisassociate(TestQos):
class TestQosList(TestQos): class TestQosList(TestQos):
qos_specs = volume_fakes.FakeQos.create_qoses(count=2) qos_specs = volume_fakes.create_qoses(count=2)
qos_association = volume_fakes.FakeQos.create_one_qos_association() qos_association = volume_fakes.create_one_qos_association()
columns = ( columns = (
'ID', 'ID',
@ -374,7 +374,7 @@ class TestQosList(TestQos):
class TestQosSet(TestQos): class TestQosSet(TestQos):
qos_spec = volume_fakes.FakeQos.create_one_qos() qos_spec = volume_fakes.create_one_qos()
def setUp(self): def setUp(self):
super(TestQosSet, self).setUp() super(TestQosSet, self).setUp()
@ -406,8 +406,8 @@ class TestQosSet(TestQos):
class TestQosShow(TestQos): class TestQosShow(TestQos):
qos_spec = volume_fakes.FakeQos.create_one_qos() qos_spec = volume_fakes.create_one_qos()
qos_association = volume_fakes.FakeQos.create_one_qos_association() qos_association = volume_fakes.create_one_qos_association()
columns = ( columns = (
'associations', 'associations',
@ -454,7 +454,7 @@ class TestQosShow(TestQos):
class TestQosUnset(TestQos): class TestQosUnset(TestQos):
qos_spec = volume_fakes.FakeQos.create_one_qos() qos_spec = volume_fakes.create_one_qos()
def setUp(self): def setUp(self):
super(TestQosUnset, self).setUp() super(TestQosUnset, self).setUp()

@ -14,14 +14,14 @@
from osc_lib import exceptions from osc_lib import exceptions
from openstackclient.tests.unit.volume.v2 import fakes as service_fakes from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
from openstackclient.volume.v2 import service from openstackclient.volume.v2 import service
class TestService(service_fakes.TestVolume): class TestService(volume_fakes.TestVolume):
def setUp(self): def setUp(self):
super(TestService, self).setUp() super().setUp()
# Get a shortcut to the ServiceManager Mock # Get a shortcut to the ServiceManager Mock
self.service_mock = self.app.client_manager.volume.services self.service_mock = self.app.client_manager.volume.services
@ -31,10 +31,10 @@ class TestService(service_fakes.TestVolume):
class TestServiceList(TestService): class TestServiceList(TestService):
# The service to be listed # The service to be listed
services = service_fakes.FakeService.create_one_service() services = volume_fakes.create_one_service()
def setUp(self): def setUp(self):
super(TestServiceList, self).setUp() super().setUp()
self.service_mock.list.return_value = [self.services] self.service_mock.list.return_value = [self.services]
@ -144,10 +144,10 @@ class TestServiceList(TestService):
class TestServiceSet(TestService): class TestServiceSet(TestService):
service = service_fakes.FakeService.create_one_service() service = volume_fakes.create_one_service()
def setUp(self): def setUp(self):
super(TestServiceSet, self).setUp() super().setUp()
self.service_mock.enable.return_value = self.service self.service_mock.enable.return_value = self.service
self.service_mock.disable.return_value = self.service self.service_mock.disable.return_value = self.service

@ -28,7 +28,7 @@ from openstackclient.volume.v2 import volume_type
class TestType(volume_fakes.TestVolume): class TestType(volume_fakes.TestVolume):
def setUp(self): def setUp(self):
super(TestType, self).setUp() super().setUp()
self.types_mock = self.app.client_manager.volume.volume_types self.types_mock = self.app.client_manager.volume.volume_types
self.types_mock.reset_mock() self.types_mock.reset_mock()
@ -56,10 +56,9 @@ class TestTypeCreate(TestType):
) )
def setUp(self): def setUp(self):
super(TestTypeCreate, self).setUp() super().setUp()
self.new_volume_type = \ self.new_volume_type = volume_fakes.create_one_volume_type()
volume_fakes.FakeVolumeType.create_one_volume_type()
self.data = ( self.data = (
self.new_volume_type.description, self.new_volume_type.description,
self.new_volume_type.id, self.new_volume_type.id,
@ -144,12 +143,12 @@ class TestTypeCreate(TestType):
'key_size': '128', 'key_size': '128',
'control_location': 'front-end', 'control_location': 'front-end',
} }
encryption_type = \ encryption_type = volume_fakes.create_one_encryption_volume_type(
volume_fakes.FakeVolumeType.create_one_encryption_volume_type( attrs=encryption_info,
attrs=encryption_info) )
self.new_volume_type = \ self.new_volume_type = volume_fakes.create_one_volume_type(
volume_fakes.FakeVolumeType.create_one_volume_type( attrs={'encryption': encryption_info},
attrs={'encryption': encryption_info}) )
self.types_mock.create.return_value = self.new_volume_type self.types_mock.create.return_value = self.new_volume_type
self.encryption_types_mock.create.return_value = encryption_type self.encryption_types_mock.create.return_value = encryption_type
encryption_columns = ( encryption_columns = (
@ -203,13 +202,14 @@ class TestTypeCreate(TestType):
class TestTypeDelete(TestType): class TestTypeDelete(TestType):
volume_types = volume_fakes.FakeVolumeType.create_volume_types(count=2) volume_types = volume_fakes.create_volume_types(count=2)
def setUp(self): def setUp(self):
super(TestTypeDelete, self).setUp() super().setUp()
self.types_mock.get = volume_fakes.FakeVolumeType.get_volume_types( self.types_mock.get = volume_fakes.get_volume_types(
self.volume_types) self.volume_types,
)
self.types_mock.delete.return_value = None self.types_mock.delete.return_value = None
# Get the command object to mock # Get the command object to mock
@ -278,7 +278,7 @@ class TestTypeDelete(TestType):
class TestTypeList(TestType): class TestTypeList(TestType):
volume_types = volume_fakes.FakeVolumeType.create_volume_types() volume_types = volume_fakes.create_volume_types()
columns = [ columns = [
"ID", "ID",
@ -312,7 +312,7 @@ class TestTypeList(TestType):
)) ))
def setUp(self): def setUp(self):
super(TestTypeList, self).setUp() super().setUp()
self.types_mock.list.return_value = self.volume_types self.types_mock.list.return_value = self.volume_types
self.types_mock.default.return_value = self.volume_types[0] self.types_mock.default.return_value = self.volume_types[0]
@ -388,9 +388,9 @@ class TestTypeList(TestType):
self.assertCountEqual(self.data_with_default_type, list(data)) self.assertCountEqual(self.data_with_default_type, list(data))
def test_type_list_with_encryption(self): def test_type_list_with_encryption(self):
encryption_type = \ encryption_type = volume_fakes.create_one_encryption_volume_type(
volume_fakes.FakeVolumeType.create_one_encryption_volume_type( attrs={'volume_type_id': self.volume_types[0].id},
attrs={'volume_type_id': self.volume_types[0].id}) )
encryption_info = { encryption_info = {
'provider': 'LuksEncryptor', 'provider': 'LuksEncryptor',
'cipher': None, 'cipher': None,
@ -436,11 +436,12 @@ class TestTypeList(TestType):
class TestTypeSet(TestType): class TestTypeSet(TestType):
project = identity_fakes.FakeProject.create_one_project() project = identity_fakes.FakeProject.create_one_project()
volume_type = volume_fakes.FakeVolumeType.create_one_volume_type( volume_type = volume_fakes.create_one_volume_type(
methods={'set_keys': None}) methods={'set_keys': None},
)
def setUp(self): def setUp(self):
super(TestTypeSet, self).setUp() super().setUp()
self.types_mock.get.return_value = self.volume_type self.types_mock.get.return_value = self.volume_type
@ -685,9 +686,9 @@ class TestTypeShow(TestType):
) )
def setUp(self): def setUp(self):
super(TestTypeShow, self).setUp() super().setUp()
self.volume_type = volume_fakes.FakeVolumeType.create_one_volume_type() self.volume_type = volume_fakes.create_one_volume_type()
self.data = ( self.data = (
None, None,
self.volume_type.description, self.volume_type.description,
@ -727,13 +728,20 @@ class TestTypeShow(TestType):
] ]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
private_type = volume_fakes.FakeVolumeType.create_one_volume_type( private_type = volume_fakes.create_one_volume_type(
attrs={'is_public': False}) attrs={'is_public': False},
type_access_list = volume_fakes.FakeTypeAccess.create_one_type_access() )
with mock.patch.object(self.types_mock, 'get', type_access_list = volume_fakes.create_one_type_access()
return_value=private_type): with mock.patch.object(
with mock.patch.object(self.types_access_mock, 'list', self.types_mock,
return_value=[type_access_list]): 'get',
return_value=private_type,
):
with mock.patch.object(
self.types_access_mock,
'list',
return_value=[type_access_list],
):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.types_mock.get.assert_called_once_with( self.types_mock.get.assert_called_once_with(
self.volume_type.id) self.volume_type.id)
@ -760,8 +768,9 @@ class TestTypeShow(TestType):
] ]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
private_type = volume_fakes.FakeVolumeType.create_one_volume_type( private_type = volume_fakes.create_one_volume_type(
attrs={'is_public': False}) attrs={'is_public': False},
)
with mock.patch.object(self.types_mock, 'get', with mock.patch.object(self.types_mock, 'get',
return_value=private_type): return_value=private_type):
with mock.patch.object(self.types_access_mock, 'list', with mock.patch.object(self.types_access_mock, 'list',
@ -784,16 +793,16 @@ class TestTypeShow(TestType):
self.assertCountEqual(private_type_data, data) self.assertCountEqual(private_type_data, data)
def test_type_show_with_encryption(self): def test_type_show_with_encryption(self):
encryption_type = \ encryption_type = volume_fakes.create_one_encryption_volume_type()
volume_fakes.FakeVolumeType.create_one_encryption_volume_type()
encryption_info = { encryption_info = {
'provider': 'LuksEncryptor', 'provider': 'LuksEncryptor',
'cipher': None, 'cipher': None,
'key_size': None, 'key_size': None,
'control_location': 'front-end', 'control_location': 'front-end',
} }
self.volume_type = volume_fakes.FakeVolumeType.create_one_volume_type( self.volume_type = volume_fakes.create_one_volume_type(
attrs={'encryption': encryption_info}) attrs={'encryption': encryption_info},
)
self.types_mock.get.return_value = self.volume_type self.types_mock.get.return_value = self.volume_type
self.encryption_types_mock.get.return_value = encryption_type self.encryption_types_mock.get.return_value = encryption_type
encryption_columns = ( encryption_columns = (
@ -834,11 +843,12 @@ class TestTypeShow(TestType):
class TestTypeUnset(TestType): class TestTypeUnset(TestType):
project = identity_fakes.FakeProject.create_one_project() project = identity_fakes.FakeProject.create_one_project()
volume_type = volume_fakes.FakeVolumeType.create_one_volume_type( volume_type = volume_fakes.create_one_volume_type(
methods={'unset_keys': None}) methods={'unset_keys': None},
)
def setUp(self): def setUp(self):
super(TestTypeUnset, self).setUp() super().setUp()
self.types_mock.get.return_value = self.volume_type self.types_mock.get.return_value = self.volume_type
@ -936,7 +946,7 @@ class TestTypeUnset(TestType):
class TestColumns(TestType): class TestColumns(TestType):
def test_encryption_info_column_with_info(self): def test_encryption_info_column_with_info(self):
fake_volume_type = volume_fakes.FakeVolumeType.create_one_volume_type() fake_volume_type = volume_fakes.create_one_volume_type()
type_id = fake_volume_type.id type_id = fake_volume_type.id
encryption_info = { encryption_info = {
@ -952,7 +962,7 @@ class TestColumns(TestType):
self.assertEqual(encryption_info, col.machine_readable()) self.assertEqual(encryption_info, col.machine_readable())
def test_encryption_info_column_without_info(self): def test_encryption_info_column_without_info(self):
fake_volume_type = volume_fakes.FakeVolumeType.create_one_volume_type() fake_volume_type = volume_fakes.create_one_volume_type()
type_id = fake_volume_type.id type_id = fake_volume_type.id
col = volume_type.EncryptionInfoColumn(type_id, {}) col = volume_type.EncryptionInfoColumn(type_id, {})

@ -30,7 +30,7 @@ from openstackclient.volume.v2 import volume
class TestVolume(volume_fakes.TestVolume): class TestVolume(volume_fakes.TestVolume):
def setUp(self): def setUp(self):
super(TestVolume, self).setUp() super().setUp()
self.volumes_mock = self.app.client_manager.volume.volumes self.volumes_mock = self.app.client_manager.volume.volumes
self.volumes_mock.reset_mock() self.volumes_mock.reset_mock()
@ -55,11 +55,9 @@ class TestVolume(volume_fakes.TestVolume):
self.consistencygroups_mock.reset_mock() self.consistencygroups_mock.reset_mock()
def setup_volumes_mock(self, count): def setup_volumes_mock(self, count):
volumes = volume_fakes.FakeVolume.create_volumes(count=count) volumes = volume_fakes.create_volumes(count=count)
self.volumes_mock.get = volume_fakes.FakeVolume.get_volumes( self.volumes_mock.get = volume_fakes.get_volumes(volumes, 0)
volumes,
0)
return volumes return volumes
@ -83,9 +81,9 @@ class TestVolumeCreate(TestVolume):
) )
def setUp(self): def setUp(self):
super(TestVolumeCreate, self).setUp() super().setUp()
self.new_volume = volume_fakes.FakeVolume.create_one_volume() self.new_volume = volume_fakes.create_one_volume()
self.volumes_mock.create.return_value = self.new_volume self.volumes_mock.create.return_value = self.new_volume
self.datalist = ( self.datalist = (
@ -139,8 +137,7 @@ class TestVolumeCreate(TestVolume):
self.assertCountEqual(self.datalist, data) self.assertCountEqual(self.datalist, data)
def test_volume_create_options(self): def test_volume_create_options(self):
consistency_group = ( consistency_group = volume_fakes.create_one_consistency_group()
volume_fakes.FakeConsistencyGroup.create_one_consistency_group())
self.consistencygroups_mock.get.return_value = consistency_group self.consistencygroups_mock.get.return_value = consistency_group
arglist = [ arglist = [
'--size', str(self.new_volume.size), '--size', str(self.new_volume.size),
@ -297,7 +294,7 @@ class TestVolumeCreate(TestVolume):
self.assertCountEqual(self.datalist, data) self.assertCountEqual(self.datalist, data)
def test_volume_create_with_snapshot(self): def test_volume_create_with_snapshot(self):
snapshot = volume_fakes.FakeSnapshot.create_one_snapshot() snapshot = volume_fakes.create_one_snapshot()
self.new_volume.snapshot_id = snapshot.id self.new_volume.snapshot_id = snapshot.id
arglist = [ arglist = [
'--snapshot', self.new_volume.snapshot_id, '--snapshot', self.new_volume.snapshot_id,
@ -504,7 +501,7 @@ class TestVolumeCreate(TestVolume):
class TestVolumeDelete(TestVolume): class TestVolumeDelete(TestVolume):
def setUp(self): def setUp(self):
super(TestVolumeDelete, self).setUp() super().setUp()
self.volumes_mock.delete.return_value = None self.volumes_mock.delete.return_value = None
@ -632,9 +629,9 @@ class TestVolumeList(TestVolume):
] ]
def setUp(self): def setUp(self):
super(TestVolumeList, self).setUp() super().setUp()
self.mock_volume = volume_fakes.FakeVolume.create_one_volume() self.mock_volume = volume_fakes.create_one_volume()
self.volumes_mock.list.return_value = [self.mock_volume] self.volumes_mock.list.return_value = [self.mock_volume]
self.users_mock.get.return_value = self.user self.users_mock.get.return_value = self.user
@ -1107,10 +1104,10 @@ class TestVolumeList(TestVolume):
class TestVolumeMigrate(TestVolume): class TestVolumeMigrate(TestVolume):
_volume = volume_fakes.FakeVolume.create_one_volume() _volume = volume_fakes.create_one_volume()
def setUp(self): def setUp(self):
super(TestVolumeMigrate, self).setUp() super().setUp()
self.volumes_mock.get.return_value = self._volume self.volumes_mock.get.return_value = self._volume
self.volumes_mock.migrate_volume.return_value = None self.volumes_mock.migrate_volume.return_value = None
@ -1173,12 +1170,12 @@ class TestVolumeMigrate(TestVolume):
class TestVolumeSet(TestVolume): class TestVolumeSet(TestVolume):
volume_type = volume_fakes.FakeVolumeType.create_one_volume_type() volume_type = volume_fakes.create_one_volume_type()
def setUp(self): def setUp(self):
super(TestVolumeSet, self).setUp() super().setUp()
self.new_volume = volume_fakes.FakeVolume.create_one_volume() self.new_volume = volume_fakes.create_one_volume()
self.volumes_mock.get.return_value = self.new_volume self.volumes_mock.get.return_value = self.new_volume
self.types_mock.get.return_value = self.volume_type self.types_mock.get.return_value = self.volume_type
@ -1427,9 +1424,9 @@ class TestVolumeSet(TestVolume):
class TestVolumeShow(TestVolume): class TestVolumeShow(TestVolume):
def setUp(self): def setUp(self):
super(TestVolumeShow, self).setUp() super().setUp()
self._volume = volume_fakes.FakeVolume.create_one_volume() self._volume = volume_fakes.create_one_volume()
self.volumes_mock.get.return_value = self._volume self.volumes_mock.get.return_value = self._volume
# Get the command object to test # Get the command object to test
self.cmd = volume.ShowVolume(self.app, None) self.cmd = volume.ShowVolume(self.app, None)
@ -1447,20 +1444,21 @@ class TestVolumeShow(TestVolume):
self.volumes_mock.get.assert_called_with(self._volume.id) self.volumes_mock.get.assert_called_with(self._volume.id)
self.assertEqual( self.assertEqual(
volume_fakes.FakeVolume.get_volume_columns(self._volume), volume_fakes.get_volume_columns(self._volume),
columns) columns,
)
self.assertCountEqual( self.assertCountEqual(
volume_fakes.FakeVolume.get_volume_data(self._volume), volume_fakes.get_volume_data(self._volume),
data) data,
)
class TestVolumeUnset(TestVolume): class TestVolumeUnset(TestVolume):
def setUp(self): def setUp(self):
super(TestVolumeUnset, self).setUp() super().setUp()
self.new_volume = volume_fakes.FakeVolume.create_one_volume() self.new_volume = volume_fakes.create_one_volume()
self.volumes_mock.get.return_value = self.new_volume self.volumes_mock.get.return_value = self.new_volume
# Get the command object to set property # Get the command object to set property
@ -1538,7 +1536,7 @@ class TestVolumeUnset(TestVolume):
class TestColumns(TestVolume): class TestColumns(TestVolume):
def test_attachments_column_without_server_cache(self): def test_attachments_column_without_server_cache(self):
_volume = volume_fakes.FakeVolume.create_one_volume() _volume = volume_fakes.create_one_volume()
server_id = _volume.attachments[0]['server_id'] server_id = _volume.attachments[0]['server_id']
device = _volume.attachments[0]['device'] device = _volume.attachments[0]['device']
@ -1548,7 +1546,7 @@ class TestColumns(TestVolume):
self.assertEqual(_volume.attachments, col.machine_readable()) self.assertEqual(_volume.attachments, col.machine_readable())
def test_attachments_column_with_server_cache(self): def test_attachments_column_with_server_cache(self):
_volume = volume_fakes.FakeVolume.create_one_volume() _volume = volume_fakes.create_one_volume()
server_id = _volume.attachments[0]['server_id'] server_id = _volume.attachments[0]['server_id']
device = _volume.attachments[0]['device'] device = _volume.attachments[0]['device']

@ -20,10 +20,10 @@ class TestShowVolumeCapability(volume_fakes.TestVolume):
"""Test backend capability functionality.""" """Test backend capability functionality."""
# The capability to be listed # The capability to be listed
capability = volume_fakes.FakeCapability.create_one_capability() capability = volume_fakes.create_one_capability()
def setUp(self): def setUp(self):
super(TestShowVolumeCapability, self).setUp() super().setUp()
# Get a shortcut to the capability Mock # Get a shortcut to the capability Mock
self.capability_mock = self.app.client_manager.volume.capabilities self.capability_mock = self.app.client_manager.volume.capabilities
@ -77,10 +77,10 @@ class TestListVolumePool(volume_fakes.TestVolume):
"""Tests for volume backend pool listing.""" """Tests for volume backend pool listing."""
# The pool to be listed # The pool to be listed
pools = volume_fakes.FakePool.create_one_pool() pools = volume_fakes.create_one_pool()
def setUp(self): def setUp(self):
super(TestListVolumePool, self).setUp() super().setUp()
self.pool_mock = self.app.client_manager.volume.pools self.pool_mock = self.app.client_manager.volume.pools
self.pool_mock.list.return_value = [self.pools] self.pool_mock.list.return_value = [self.pools]

@ -26,7 +26,7 @@ from openstackclient.volume.v2 import volume_backup
class TestBackup(volume_fakes.TestVolume): class TestBackup(volume_fakes.TestVolume):
def setUp(self): def setUp(self):
super(TestBackup, self).setUp() super().setUp()
self.backups_mock = self.app.client_manager.volume.backups self.backups_mock = self.app.client_manager.volume.backups
self.backups_mock.reset_mock() self.backups_mock.reset_mock()
@ -40,9 +40,9 @@ class TestBackup(volume_fakes.TestVolume):
class TestBackupCreate(TestBackup): class TestBackupCreate(TestBackup):
volume = volume_fakes.FakeVolume.create_one_volume() volume = volume_fakes.create_one_volume()
snapshot = volume_fakes.FakeSnapshot.create_one_snapshot() snapshot = volume_fakes.create_one_snapshot()
new_backup = volume_fakes.FakeBackup.create_one_backup( new_backup = volume_fakes.create_one_backup(
attrs={'volume_id': volume.id, 'snapshot_id': snapshot.id}) attrs={'volume_id': volume.id, 'snapshot_id': snapshot.id})
columns = ( columns = (
@ -71,7 +71,7 @@ class TestBackupCreate(TestBackup):
) )
def setUp(self): def setUp(self):
super(TestBackupCreate, self).setUp() super().setUp()
self.volumes_mock.get.return_value = self.volume self.volumes_mock.get.return_value = self.volume
self.snapshots_mock.get.return_value = self.snapshot self.snapshots_mock.get.return_value = self.snapshot
@ -242,13 +242,13 @@ class TestBackupCreate(TestBackup):
class TestBackupDelete(TestBackup): class TestBackupDelete(TestBackup):
backups = volume_fakes.FakeBackup.create_backups(count=2) backups = volume_fakes.create_backups(count=2)
def setUp(self): def setUp(self):
super(TestBackupDelete, self).setUp() super().setUp()
self.backups_mock.get = ( self.backups_mock.get = (
volume_fakes.FakeBackup.get_backups(self.backups)) volume_fakes.get_backups(self.backups))
self.backups_mock.delete.return_value = None self.backups_mock.delete.return_value = None
# Get the command object to mock # Get the command object to mock
@ -334,8 +334,8 @@ class TestBackupDelete(TestBackup):
class TestBackupList(TestBackup): class TestBackupList(TestBackup):
volume = volume_fakes.FakeVolume.create_one_volume() volume = volume_fakes.create_one_volume()
backups = volume_fakes.FakeBackup.create_backups( backups = volume_fakes.create_backups(
attrs={'volume_id': volume.name}, count=3) attrs={'volume_id': volume.name}, count=3)
columns = ( columns = (
@ -374,7 +374,7 @@ class TestBackupList(TestBackup):
)) ))
def setUp(self): def setUp(self):
super(TestBackupList, self).setUp() super().setUp()
self.volumes_mock.list.return_value = [self.volume] self.volumes_mock.list.return_value = [self.volume]
self.backups_mock.list.return_value = self.backups self.backups_mock.list.return_value = self.backups
@ -456,8 +456,8 @@ class TestBackupList(TestBackup):
class TestBackupRestore(TestBackup): class TestBackupRestore(TestBackup):
volume = volume_fakes.FakeVolume.create_one_volume() volume = volume_fakes.create_one_volume()
backup = volume_fakes.FakeBackup.create_one_backup( backup = volume_fakes.create_one_backup(
attrs={'volume_id': volume.id}, attrs={'volume_id': volume.id},
) )
@ -467,7 +467,7 @@ class TestBackupRestore(TestBackup):
self.backups_mock.get.return_value = self.backup self.backups_mock.get.return_value = self.backup
self.volumes_mock.get.return_value = self.volume self.volumes_mock.get.return_value = self.volume
self.restores_mock.restore.return_value = ( self.restores_mock.restore.return_value = (
volume_fakes.FakeVolume.create_one_volume( volume_fakes.create_one_volume(
{'id': self.volume['id']}, {'id': self.volume['id']},
) )
) )
@ -550,12 +550,12 @@ class TestBackupRestore(TestBackup):
class TestBackupSet(TestBackup): class TestBackupSet(TestBackup):
backup = volume_fakes.FakeBackup.create_one_backup( backup = volume_fakes.create_one_backup(
attrs={'metadata': {'wow': 'cool'}}, attrs={'metadata': {'wow': 'cool'}},
) )
def setUp(self): def setUp(self):
super(TestBackupSet, self).setUp() super().setUp()
self.backups_mock.get.return_value = self.backup self.backups_mock.get.return_value = self.backup
@ -784,7 +784,7 @@ class TestBackupSet(TestBackup):
class TestBackupUnset(TestBackup): class TestBackupUnset(TestBackup):
backup = volume_fakes.FakeBackup.create_one_backup( backup = volume_fakes.create_one_backup(
attrs={'metadata': {'foo': 'bar'}}, attrs={'metadata': {'foo': 'bar'}},
) )
@ -845,7 +845,7 @@ class TestBackupUnset(TestBackup):
class TestBackupShow(TestBackup): class TestBackupShow(TestBackup):
backup = volume_fakes.FakeBackup.create_one_backup() backup = volume_fakes.create_one_backup()
columns = ( columns = (
'availability_zone', 'availability_zone',
@ -873,7 +873,7 @@ class TestBackupShow(TestBackup):
) )
def setUp(self): def setUp(self):
super(TestBackupShow, self).setUp() super().setUp()
self.backups_mock.get.return_value = self.backup self.backups_mock.get.return_value = self.backup
# Get the command object to test # Get the command object to test

@ -12,14 +12,14 @@
# under the License. # under the License.
# #
from openstackclient.tests.unit.volume.v2 import fakes as host_fakes from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
from openstackclient.volume.v2 import volume_host from openstackclient.volume.v2 import volume_host
class TestVolumeHost(host_fakes.TestVolume): class TestVolumeHost(volume_fakes.TestVolume):
def setUp(self): def setUp(self):
super(TestVolumeHost, self).setUp() super().setUp()
self.host_mock = self.app.client_manager.volume.services self.host_mock = self.app.client_manager.volume.services
self.host_mock.reset_mock() self.host_mock.reset_mock()
@ -27,10 +27,10 @@ class TestVolumeHost(host_fakes.TestVolume):
class TestVolumeHostSet(TestVolumeHost): class TestVolumeHostSet(TestVolumeHost):
service = host_fakes.FakeService.create_one_service() service = volume_fakes.create_one_service()
def setUp(self): def setUp(self):
super(TestVolumeHostSet, self).setUp() super().setUp()
self.host_mock.freeze_host.return_value = None self.host_mock.freeze_host.return_value = None
self.host_mock.thaw_host.return_value = None self.host_mock.thaw_host.return_value = None
@ -89,10 +89,10 @@ class TestVolumeHostSet(TestVolumeHost):
class TestVolumeHostFailover(TestVolumeHost): class TestVolumeHostFailover(TestVolumeHost):
service = host_fakes.FakeService.create_one_service() service = volume_fakes.create_one_service()
def setUp(self): def setUp(self):
super(TestVolumeHostFailover, self).setUp() super().setUp()
self.host_mock.failover_host.return_value = None self.host_mock.failover_host.return_value = None

@ -54,8 +54,8 @@ class TestVolumeSnapshotCreate(TestVolumeSnapshot):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.volume = volume_fakes.FakeVolume.create_one_volume() self.volume = volume_fakes.create_one_volume()
self.new_snapshot = volume_fakes.FakeSnapshot.create_one_snapshot( self.new_snapshot = volume_fakes.create_one_snapshot(
attrs={'volume_id': self.volume.id}) attrs={'volume_id': self.volume.id})
self.data = ( self.data = (
@ -179,13 +179,13 @@ class TestVolumeSnapshotCreate(TestVolumeSnapshot):
class TestVolumeSnapshotDelete(TestVolumeSnapshot): class TestVolumeSnapshotDelete(TestVolumeSnapshot):
snapshots = volume_fakes.FakeSnapshot.create_snapshots(count=2) snapshots = volume_fakes.create_snapshots(count=2)
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.snapshots_mock.get = ( self.snapshots_mock.get = (
volume_fakes.FakeSnapshot.get_snapshots(self.snapshots)) volume_fakes.get_snapshots(self.snapshots))
self.snapshots_mock.delete.return_value = None self.snapshots_mock.delete.return_value = None
# Get the command object to mock # Get the command object to mock
@ -273,9 +273,9 @@ class TestVolumeSnapshotDelete(TestVolumeSnapshot):
class TestVolumeSnapshotList(TestVolumeSnapshot): class TestVolumeSnapshotList(TestVolumeSnapshot):
volume = volume_fakes.FakeVolume.create_one_volume() volume = volume_fakes.create_one_volume()
project = project_fakes.FakeProject.create_one_project() project = project_fakes.FakeProject.create_one_project()
snapshots = volume_fakes.FakeSnapshot.create_snapshots( snapshots = volume_fakes.create_snapshots(
attrs={'volume_id': volume.name}, count=3) attrs={'volume_id': volume.name}, count=3)
columns = [ columns = [
@ -495,7 +495,7 @@ class TestVolumeSnapshotList(TestVolumeSnapshot):
class TestVolumeSnapshotSet(TestVolumeSnapshot): class TestVolumeSnapshotSet(TestVolumeSnapshot):
snapshot = volume_fakes.FakeSnapshot.create_one_snapshot() snapshot = volume_fakes.create_one_snapshot()
def setUp(self): def setUp(self):
super().setUp() super().setUp()
@ -677,7 +677,7 @@ class TestVolumeSnapshotShow(TestVolumeSnapshot):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.snapshot = volume_fakes.FakeSnapshot.create_one_snapshot() self.snapshot = volume_fakes.create_one_snapshot()
self.data = ( self.data = (
self.snapshot.created_at, self.snapshot.created_at,
@ -712,7 +712,7 @@ class TestVolumeSnapshotShow(TestVolumeSnapshot):
class TestVolumeSnapshotUnset(TestVolumeSnapshot): class TestVolumeSnapshotUnset(TestVolumeSnapshot):
snapshot = volume_fakes.FakeSnapshot.create_one_snapshot() snapshot = volume_fakes.create_one_snapshot()
def setUp(self): def setUp(self):
super().setUp() super().setUp()

@ -20,14 +20,14 @@ from osc_lib import exceptions
from osc_lib import utils from osc_lib import utils
from openstackclient.tests.unit import utils as test_utils from openstackclient.tests.unit import utils as test_utils
from openstackclient.tests.unit.volume.v2 import fakes as transfer_fakes from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
from openstackclient.volume.v2 import volume_transfer_request from openstackclient.volume.v2 import volume_transfer_request
class TestTransfer(transfer_fakes.TestVolume): class TestTransfer(volume_fakes.TestVolume):
def setUp(self): def setUp(self):
super(TestTransfer, self).setUp() super().setUp()
# Get a shortcut to the TransferManager Mock # Get a shortcut to the TransferManager Mock
self.transfer_mock = self.app.client_manager.volume.transfers self.transfer_mock = self.app.client_manager.volume.transfers
@ -47,10 +47,9 @@ class TestTransferAccept(TestTransfer):
) )
def setUp(self): def setUp(self):
super(TestTransferAccept, self).setUp() super().setUp()
self.volume_transfer = ( self.volume_transfer = volume_fakes.create_one_transfer()
transfer_fakes.FakeTransfer.create_one_transfer())
self.data = ( self.data = (
self.volume_transfer.id, self.volume_transfer.id,
self.volume_transfer.name, self.volume_transfer.name,
@ -106,7 +105,7 @@ class TestTransferAccept(TestTransfer):
class TestTransferCreate(TestTransfer): class TestTransferCreate(TestTransfer):
volume = transfer_fakes.FakeVolume.create_one_volume() volume = volume_fakes.create_one_volume()
columns = ( columns = (
'auth_key', 'auth_key',
@ -117,12 +116,14 @@ class TestTransferCreate(TestTransfer):
) )
def setUp(self): def setUp(self):
super(TestTransferCreate, self).setUp() super().setUp()
self.volume_transfer = transfer_fakes.FakeTransfer.create_one_transfer( self.volume_transfer = volume_fakes.create_one_transfer(
attrs={'volume_id': self.volume.id, attrs={
'volume_id': self.volume.id,
'auth_key': 'key', 'auth_key': 'key',
'created_at': 'time'} 'created_at': 'time',
},
) )
self.data = ( self.data = (
self.volume_transfer.auth_key, self.volume_transfer.auth_key,
@ -221,13 +222,14 @@ class TestTransferCreate(TestTransfer):
class TestTransferDelete(TestTransfer): class TestTransferDelete(TestTransfer):
volume_transfers = transfer_fakes.FakeTransfer.create_transfers(count=2) volume_transfers = volume_fakes.create_transfers(count=2)
def setUp(self): def setUp(self):
super(TestTransferDelete, self).setUp() super().setUp()
self.transfer_mock.get = ( self.transfer_mock.get = volume_fakes.get_transfers(
transfer_fakes.FakeTransfer.get_transfers(self.volume_transfers)) self.volume_transfers,
)
self.transfer_mock.delete.return_value = None self.transfer_mock.delete.return_value = None
# Get the command object to mock # Get the command object to mock
@ -300,10 +302,10 @@ class TestTransferDelete(TestTransfer):
class TestTransferList(TestTransfer): class TestTransferList(TestTransfer):
# The Transfers to be listed # The Transfers to be listed
volume_transfers = transfer_fakes.FakeTransfer.create_one_transfer() volume_transfers = volume_fakes.create_one_transfer()
def setUp(self): def setUp(self):
super(TestTransferList, self).setUp() super().setUp()
self.transfer_mock.list.return_value = [self.volume_transfers] self.transfer_mock.list.return_value = [self.volume_transfers]
@ -394,11 +396,10 @@ class TestTransferShow(TestTransfer):
) )
def setUp(self): def setUp(self):
super(TestTransferShow, self).setUp() super().setUp()
self.volume_transfer = ( self.volume_transfer = volume_fakes.create_one_transfer(
transfer_fakes.FakeTransfer.create_one_transfer( attrs={'created_at': 'time'},
attrs={'created_at': 'time'})
) )
self.data = ( self.data = (
self.volume_transfer.created_at, self.volume_transfer.created_at,

@ -24,7 +24,6 @@ from openstackclient.tests.unit.volume.v2 import fakes as volume_v2_fakes
class FakeVolumeClient: class FakeVolumeClient:
def __init__(self, **kwargs): def __init__(self, **kwargs):
self.auth_token = kwargs['token'] self.auth_token = kwargs['token']
self.management_url = kwargs['endpoint'] self.management_url = kwargs['endpoint']
@ -51,17 +50,14 @@ class FakeVolumeClient:
class TestVolume(utils.TestCommand): class TestVolume(utils.TestCommand):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.app.client_manager.volume = FakeVolumeClient( self.app.client_manager.volume = FakeVolumeClient(
endpoint=fakes.AUTH_URL, endpoint=fakes.AUTH_URL, token=fakes.AUTH_TOKEN
token=fakes.AUTH_TOKEN
) )
self.app.client_manager.identity = identity_fakes.FakeIdentityv3Client( self.app.client_manager.identity = identity_fakes.FakeIdentityv3Client(
endpoint=fakes.AUTH_URL, endpoint=fakes.AUTH_URL, token=fakes.AUTH_TOKEN
token=fakes.AUTH_TOKEN
) )
self.app.client_manager.compute = compute_fakes.FakeComputev2Client( self.app.client_manager.compute = compute_fakes.FakeComputev2Client(
endpoint=fakes.AUTH_URL, endpoint=fakes.AUTH_URL,
@ -70,15 +66,11 @@ class TestVolume(utils.TestCommand):
# TODO(stephenfin): Check if the responses are actually the same # TODO(stephenfin): Check if the responses are actually the same
FakeVolume = volume_v2_fakes.FakeVolume create_one_volume = volume_v2_fakes.create_one_volume
FakeVolumeType = volume_v2_fakes.FakeVolumeType create_one_volume_type = volume_v2_fakes.create_one_volume_type
class FakeCluster: def create_one_cluster(attrs=None):
"""Fake one or more clusters."""
@staticmethod
def create_one_cluster(attrs=None):
"""Create a fake service cluster. """Create a fake service cluster.
:param attrs: A dictionary with all attributes of service cluster :param attrs: A dictionary with all attributes of service cluster
@ -106,13 +98,10 @@ class FakeCluster:
# Overwrite default attributes if there are some attributes set # Overwrite default attributes if there are some attributes set
cluster_info.update(attrs) cluster_info.update(attrs)
return fakes.FakeResource( return fakes.FakeResource(None, cluster_info, loaded=True)
None,
cluster_info,
loaded=True)
@staticmethod
def create_clusters(attrs=None, count=2): def create_clusters(attrs=None, count=2):
"""Create multiple fake service clusters. """Create multiple fake service clusters.
:param attrs: A dictionary with all attributes of service cluster :param attrs: A dictionary with all attributes of service cluster
@ -121,16 +110,12 @@ class FakeCluster:
""" """
clusters = [] clusters = []
for n in range(0, count): for n in range(0, count):
clusters.append(FakeCluster.create_one_cluster(attrs)) clusters.append(create_one_cluster(attrs))
return clusters return clusters
class FakeResourceFilter: def create_one_resource_filter(attrs=None):
"""Fake one or more resource filters."""
@staticmethod
def create_one_resource_filter(attrs=None):
"""Create a fake resource filter. """Create a fake resource filter.
:param attrs: A dictionary with all attributes of resource filter :param attrs: A dictionary with all attributes of resource filter
@ -156,8 +141,8 @@ class FakeResourceFilter:
return fakes.FakeResource(None, resource_filter_info, loaded=True) return fakes.FakeResource(None, resource_filter_info, loaded=True)
@staticmethod
def create_resource_filters(attrs=None, count=2): def create_resource_filters(attrs=None, count=2):
"""Create multiple fake resource filters. """Create multiple fake resource filters.
:param attrs: A dictionary with all attributes of resource filter :param attrs: A dictionary with all attributes of resource filter
@ -166,18 +151,12 @@ class FakeResourceFilter:
""" """
resource_filters = [] resource_filters = []
for n in range(0, count): for n in range(0, count):
resource_filters.append( resource_filters.append(create_one_resource_filter(attrs))
FakeResourceFilter.create_one_resource_filter(attrs)
)
return resource_filters return resource_filters
class FakeVolumeGroup: def create_one_volume_group(attrs=None):
"""Fake one or more volume groups."""
@staticmethod
def create_one_volume_group(attrs=None):
"""Create a fake group. """Create a fake group.
:param attrs: A dictionary with all attributes of group :param attrs: A dictionary with all attributes of group
@ -191,9 +170,11 @@ class FakeVolumeGroup:
# Set default attribute # Set default attribute
group_info = { group_info = {
'id': uuid.uuid4().hex, 'id': uuid.uuid4().hex,
'status': random.choice([ 'status': random.choice(
[
'available', 'available',
]), ]
),
'availability_zone': f'az-{uuid.uuid4().hex}', 'availability_zone': f'az-{uuid.uuid4().hex}',
'created_at': '2015-09-16T09:28:52.000000', 'created_at': '2015-09-16T09:28:52.000000',
'name': 'first_group', 'name': 'first_group',
@ -209,14 +190,11 @@ class FakeVolumeGroup:
# Overwrite default attributes if there are some attributes set # Overwrite default attributes if there are some attributes set
group_info.update(attrs) group_info.update(attrs)
group = fakes.FakeResource( group = fakes.FakeResource(None, group_info, loaded=True)
None,
group_info,
loaded=True)
return group return group
@staticmethod
def create_volume_groups(attrs=None, count=2): def create_volume_groups(attrs=None, count=2):
"""Create multiple fake groups. """Create multiple fake groups.
:param attrs: A dictionary with all attributes of group :param attrs: A dictionary with all attributes of group
@ -225,16 +203,12 @@ class FakeVolumeGroup:
""" """
groups = [] groups = []
for n in range(0, count): for n in range(0, count):
groups.append(FakeVolumeGroup.create_one_volume_group(attrs)) groups.append(create_one_volume_group(attrs))
return groups return groups
class FakeVolumeGroupSnapshot: def create_one_volume_group_snapshot(attrs=None, methods=None):
"""Fake one or more volume group snapshots."""
@staticmethod
def create_one_volume_group_snapshot(attrs=None, methods=None):
"""Create a fake group snapshot. """Create a fake group snapshot.
:param attrs: A dictionary with all attributes :param attrs: A dictionary with all attributes
@ -258,14 +232,12 @@ class FakeVolumeGroupSnapshot:
group_snapshot_info.update(attrs) group_snapshot_info.update(attrs)
group_snapshot = fakes.FakeResource( group_snapshot = fakes.FakeResource(
None, None, group_snapshot_info, methods=methods, loaded=True
group_snapshot_info, )
methods=methods,
loaded=True)
return group_snapshot return group_snapshot
@staticmethod
def create_volume_group_snapshots(attrs=None, count=2): def create_volume_group_snapshots(attrs=None, count=2):
"""Create multiple fake group snapshots. """Create multiple fake group snapshots.
:param attrs: A dictionary with all attributes of group snapshot :param attrs: A dictionary with all attributes of group snapshot
@ -274,18 +246,12 @@ class FakeVolumeGroupSnapshot:
""" """
group_snapshots = [] group_snapshots = []
for n in range(0, count): for n in range(0, count):
group_snapshots.append( group_snapshots.append(create_one_volume_group_snapshot(attrs))
FakeVolumeGroupSnapshot.create_one_volume_group_snapshot(attrs)
)
return group_snapshots return group_snapshots
class FakeVolumeGroupType: def create_one_volume_group_type(attrs=None, methods=None):
"""Fake one or more volume group types."""
@staticmethod
def create_one_volume_group_type(attrs=None, methods=None):
"""Create a fake group type. """Create a fake group type.
:param attrs: A dictionary with all attributes of group type :param attrs: A dictionary with all attributes of group type
@ -307,14 +273,12 @@ class FakeVolumeGroupType:
group_type_info.update(attrs) group_type_info.update(attrs)
group_type = fakes.FakeResource( group_type = fakes.FakeResource(
None, None, group_type_info, methods=methods, loaded=True
group_type_info, )
methods=methods,
loaded=True)
return group_type return group_type
@staticmethod
def create_volume_group_types(attrs=None, count=2): def create_volume_group_types(attrs=None, count=2):
"""Create multiple fake group types. """Create multiple fake group types.
:param attrs: A dictionary with all attributes of group type :param attrs: A dictionary with all attributes of group type
@ -323,18 +287,12 @@ class FakeVolumeGroupType:
""" """
group_types = [] group_types = []
for n in range(0, count): for n in range(0, count):
group_types.append( group_types.append(create_one_volume_group_type(attrs))
FakeVolumeGroupType.create_one_volume_group_type(attrs)
)
return group_types return group_types
class FakeVolumeMessage: def create_one_volume_message(attrs=None):
"""Fake one or more volume messages."""
@staticmethod
def create_one_volume_message(attrs=None):
"""Create a fake message. """Create a fake message.
:param attrs: A dictionary with all attributes of message :param attrs: A dictionary with all attributes of message
@ -358,13 +316,10 @@ class FakeVolumeMessage:
# Overwrite default attributes if there are some attributes set # Overwrite default attributes if there are some attributes set
message_info.update(attrs) message_info.update(attrs)
return fakes.FakeResource( return fakes.FakeResource(None, message_info, loaded=True)
None,
message_info,
loaded=True)
@staticmethod
def create_volume_messages(attrs=None, count=2): def create_volume_messages(attrs=None, count=2):
"""Create multiple fake messages. """Create multiple fake messages.
:param attrs: A dictionary with all attributes of message :param attrs: A dictionary with all attributes of message
@ -373,12 +328,12 @@ class FakeVolumeMessage:
""" """
messages = [] messages = []
for n in range(0, count): for n in range(0, count):
messages.append(FakeVolumeMessage.create_one_volume_message(attrs)) messages.append(create_one_volume_message(attrs))
return messages return messages
@staticmethod
def get_volume_messages(messages=None, count=2): def get_volume_messages(messages=None, count=2):
"""Get an iterable MagicMock object with a list of faked messages. """Get an iterable MagicMock object with a list of faked messages.
If messages list is provided, then initialize the Mock object with the If messages list is provided, then initialize the Mock object with the
@ -390,16 +345,12 @@ class FakeVolumeMessage:
messages messages
""" """
if messages is None: if messages is None:
messages = FakeVolumeMessage.create_messages(count) messages = create_volume_messages(count)
return mock.Mock(side_effect=messages) return mock.Mock(side_effect=messages)
class FakeVolumeAttachment: def create_one_volume_attachment(attrs=None):
"""Fake one or more volume attachments."""
@staticmethod
def create_one_volume_attachment(attrs=None):
"""Create a fake volume attachment. """Create a fake volume attachment.
:param attrs: A dictionary with all attributes of volume attachment :param attrs: A dictionary with all attributes of volume attachment
@ -416,7 +367,8 @@ class FakeVolumeAttachment:
'id': attachment_id, 'id': attachment_id,
'volume_id': volume_id, 'volume_id': volume_id,
'instance': server_id, 'instance': server_id,
'status': random.choice([ 'status': random.choice(
[
'attached', 'attached',
'attaching', 'attaching',
'detached', 'detached',
@ -424,7 +376,8 @@ class FakeVolumeAttachment:
'error_attaching', 'error_attaching',
'error_detaching', 'error_detaching',
'deleted', 'deleted',
]), ]
),
'attach_mode': random.choice(['ro', 'rw']), 'attach_mode': random.choice(['ro', 'rw']),
'attached_at': '2015-09-16T09:28:52.000000', 'attached_at': '2015-09-16T09:28:52.000000',
'detached_at': None, 'detached_at': None,
@ -439,8 +392,7 @@ class FakeVolumeAttachment:
'encrypted': False, 'encrypted': False,
'qos_specs': None, 'qos_specs': None,
'target_discovered': False, 'target_discovered': False,
'target_iqn': 'target_iqn': f'iqn.2010-10.org.openstack:volume-{attachment_id}',
f'iqn.2010-10.org.openstack:volume-{attachment_id}',
'target_lun': '1', 'target_lun': '1',
'target_portal': '192.168.122.170:3260', 'target_portal': '192.168.122.170:3260',
'volume_id': volume_id, 'volume_id': volume_id,
@ -450,13 +402,10 @@ class FakeVolumeAttachment:
# Overwrite default attributes if there are some attributes set # Overwrite default attributes if there are some attributes set
attachment_info.update(attrs) attachment_info.update(attrs)
return fakes.FakeResource( return fakes.FakeResource(None, attachment_info, loaded=True)
None,
attachment_info,
loaded=True)
@staticmethod
def create_volume_attachments(attrs=None, count=2): def create_volume_attachments(attrs=None, count=2):
"""Create multiple fake volume attachments. """Create multiple fake volume attachments.
:param attrs: A dictionary with all attributes of volume attachment :param attrs: A dictionary with all attributes of volume attachment
@ -466,13 +415,12 @@ class FakeVolumeAttachment:
attachments = [] attachments = []
for n in range(0, count): for n in range(0, count):
attachments.append( attachments.append(create_one_volume_attachment(attrs))
FakeVolumeAttachment.create_one_volume_attachment(attrs))
return attachments return attachments
@staticmethod
def get_volume_attachments(attachments=None, count=2): def get_volume_attachments(attachments=None, count=2):
"""Get an iterable MagicMock object with a list of faked volumes. """Get an iterable MagicMock object with a list of faked volumes.
If attachments list is provided, then initialize the Mock object with If attachments list is provided, then initialize the Mock object with
@ -485,6 +433,6 @@ class FakeVolumeAttachment:
volume attachments volume attachments
""" """
if attachments is None: if attachments is None:
attachments = FakeVolumeAttachment.create_volume_attachments(count) attachments = create_volume_attachments(count)
return mock.Mock(side_effect=attachments) return mock.Mock(side_effect=attachments)

@ -30,7 +30,7 @@ class TestBlockStorageCluster(volume_fakes.TestVolume):
class TestBlockStorageClusterList(TestBlockStorageCluster): class TestBlockStorageClusterList(TestBlockStorageCluster):
# The cluster to be listed # The cluster to be listed
fake_clusters = volume_fakes.FakeCluster.create_clusters() fake_clusters = volume_fakes.create_clusters()
def setUp(self): def setUp(self):
super().setUp() super().setUp()
@ -176,7 +176,7 @@ class TestBlockStorageClusterList(TestBlockStorageCluster):
class TestBlockStorageClusterSet(TestBlockStorageCluster): class TestBlockStorageClusterSet(TestBlockStorageCluster):
cluster = volume_fakes.FakeCluster.create_one_cluster() cluster = volume_fakes.create_one_cluster()
columns = ( columns = (
'Name', 'Name',
'Binary', 'Binary',
@ -347,7 +347,7 @@ class TestBlockStorageClusterSet(TestBlockStorageCluster):
class TestBlockStorageClusterShow(TestBlockStorageCluster): class TestBlockStorageClusterShow(TestBlockStorageCluster):
cluster = volume_fakes.FakeCluster.create_one_cluster() cluster = volume_fakes.create_one_cluster()
columns = ( columns = (
'Name', 'Name',
'Binary', 'Binary',

@ -31,8 +31,7 @@ class TestBlockStorageResourceFilter(volume_fakes.TestVolume):
class TestBlockStorageResourceFilterList(TestBlockStorageResourceFilter): class TestBlockStorageResourceFilterList(TestBlockStorageResourceFilter):
# The resource filters to be listed # The resource filters to be listed
fake_resource_filters = \ fake_resource_filters = volume_fakes.create_resource_filters()
volume_fakes.FakeResourceFilter.create_resource_filters()
def setUp(self): def setUp(self):
super().setUp() super().setUp()
@ -86,8 +85,7 @@ class TestBlockStorageResourceFilterList(TestBlockStorageResourceFilter):
class TestBlockStorageResourceFilterShow(TestBlockStorageResourceFilter): class TestBlockStorageResourceFilterShow(TestBlockStorageResourceFilter):
# The resource filters to be listed # The resource filters to be listed
fake_resource_filter = \ fake_resource_filter = volume_fakes.create_one_resource_filter()
volume_fakes.FakeResourceFilter.create_one_resource_filter()
def setUp(self): def setUp(self):
super().setUp() super().setUp()

@ -41,11 +41,11 @@ class TestVolumeAttachment(volume_fakes.TestVolume):
class TestVolumeAttachmentCreate(TestVolumeAttachment): class TestVolumeAttachmentCreate(TestVolumeAttachment):
volume = volume_fakes.FakeVolume.create_one_volume() volume = volume_fakes.create_one_volume()
server = compute_fakes.FakeServer.create_one_server() server = compute_fakes.FakeServer.create_one_server()
volume_attachment = \ volume_attachment = volume_fakes.create_one_volume_attachment(
volume_fakes.FakeVolumeAttachment.create_one_volume_attachment( attrs={'instance': server.id, 'volume_id': volume.id},
attrs={'instance': server.id, 'volume_id': volume.id}) )
columns = ( columns = (
'ID', 'ID',
@ -238,8 +238,7 @@ class TestVolumeAttachmentCreate(TestVolumeAttachment):
class TestVolumeAttachmentDelete(TestVolumeAttachment): class TestVolumeAttachmentDelete(TestVolumeAttachment):
volume_attachment = \ volume_attachment = volume_fakes.create_one_volume_attachment()
volume_fakes.FakeVolumeAttachment.create_one_volume_attachment()
def setUp(self): def setUp(self):
super().setUp() super().setUp()
@ -290,8 +289,7 @@ class TestVolumeAttachmentDelete(TestVolumeAttachment):
class TestVolumeAttachmentSet(TestVolumeAttachment): class TestVolumeAttachmentSet(TestVolumeAttachment):
volume_attachment = \ volume_attachment = volume_fakes.create_one_volume_attachment()
volume_fakes.FakeVolumeAttachment.create_one_volume_attachment()
columns = ( columns = (
'ID', 'ID',
@ -391,8 +389,7 @@ class TestVolumeAttachmentSet(TestVolumeAttachment):
class TestVolumeAttachmentComplete(TestVolumeAttachment): class TestVolumeAttachmentComplete(TestVolumeAttachment):
volume_attachment = \ volume_attachment = volume_fakes.create_one_volume_attachment()
volume_fakes.FakeVolumeAttachment.create_one_volume_attachment()
def setUp(self): def setUp(self):
super().setUp() super().setUp()
@ -444,8 +441,7 @@ class TestVolumeAttachmentComplete(TestVolumeAttachment):
class TestVolumeAttachmentList(TestVolumeAttachment): class TestVolumeAttachmentList(TestVolumeAttachment):
project = identity_fakes.FakeProject.create_one_project() project = identity_fakes.FakeProject.create_one_project()
volume_attachments = \ volume_attachments = volume_fakes.create_volume_attachments()
volume_fakes.FakeVolumeAttachment.create_volume_attachments()
columns = ( columns = (
'ID', 'ID',

@ -35,10 +35,9 @@ class TestVolumeGroup(volume_fakes.TestVolume):
class TestVolumeGroupCreate(TestVolumeGroup): class TestVolumeGroupCreate(TestVolumeGroup):
fake_volume_type = volume_fakes.FakeVolumeType.create_one_volume_type() fake_volume_type = volume_fakes.create_one_volume_type()
fake_volume_group_type = \ fake_volume_group_type = volume_fakes.create_one_volume_group_type()
volume_fakes.FakeVolumeGroupType.create_one_volume_group_type() fake_volume_group = volume_fakes.create_one_volume_group(
fake_volume_group = volume_fakes.FakeVolumeGroup.create_one_volume_group(
attrs={ attrs={
'group_type': fake_volume_group_type.id, 'group_type': fake_volume_group_type.id,
'volume_types': [fake_volume_type.id], 'volume_types': [fake_volume_type.id],
@ -180,8 +179,7 @@ class TestVolumeGroupCreate(TestVolumeGroup):
class TestVolumeGroupDelete(TestVolumeGroup): class TestVolumeGroupDelete(TestVolumeGroup):
fake_volume_group = \ fake_volume_group = volume_fakes.create_one_volume_group()
volume_fakes.FakeVolumeGroup.create_one_volume_group()
def setUp(self): def setUp(self):
super().setUp() super().setUp()
@ -236,8 +234,7 @@ class TestVolumeGroupDelete(TestVolumeGroup):
class TestVolumeGroupSet(TestVolumeGroup): class TestVolumeGroupSet(TestVolumeGroup):
fake_volume_group = \ fake_volume_group = volume_fakes.create_one_volume_group()
volume_fakes.FakeVolumeGroup.create_one_volume_group()
columns = ( columns = (
'ID', 'ID',
@ -368,8 +365,7 @@ class TestVolumeGroupSet(TestVolumeGroup):
class TestVolumeGroupList(TestVolumeGroup): class TestVolumeGroupList(TestVolumeGroup):
fake_volume_groups = \ fake_volume_groups = volume_fakes.create_volume_groups()
volume_fakes.FakeVolumeGroup.create_volume_groups()
columns = ( columns = (
'ID', 'ID',
@ -436,8 +432,7 @@ class TestVolumeGroupList(TestVolumeGroup):
class TestVolumeGroupFailover(TestVolumeGroup): class TestVolumeGroupFailover(TestVolumeGroup):
fake_volume_group = \ fake_volume_group = volume_fakes.create_one_volume_group()
volume_fakes.FakeVolumeGroup.create_one_volume_group()
def setUp(self): def setUp(self):
super().setUp() super().setUp()

@ -32,9 +32,9 @@ class TestVolumeGroupSnapshot(volume_fakes.TestVolume):
class TestVolumeGroupSnapshotCreate(TestVolumeGroupSnapshot): class TestVolumeGroupSnapshotCreate(TestVolumeGroupSnapshot):
fake_volume_group = volume_fakes.FakeVolumeGroup.create_one_volume_group() fake_volume_group = volume_fakes.create_one_volume_group()
fake_volume_group_snapshot = \ fake_volume_group_snapshot = \
volume_fakes.FakeVolumeGroupSnapshot.create_one_volume_group_snapshot() volume_fakes.create_one_volume_group_snapshot()
columns = ( columns = (
'ID', 'ID',
@ -141,7 +141,7 @@ class TestVolumeGroupSnapshotCreate(TestVolumeGroupSnapshot):
class TestVolumeGroupSnapshotDelete(TestVolumeGroupSnapshot): class TestVolumeGroupSnapshotDelete(TestVolumeGroupSnapshot):
fake_volume_group_snapshot = \ fake_volume_group_snapshot = \
volume_fakes.FakeVolumeGroupSnapshot.create_one_volume_group_snapshot() volume_fakes.create_one_volume_group_snapshot()
def setUp(self): def setUp(self):
super().setUp() super().setUp()
@ -195,8 +195,7 @@ class TestVolumeGroupSnapshotDelete(TestVolumeGroupSnapshot):
class TestVolumeGroupSnapshotList(TestVolumeGroupSnapshot): class TestVolumeGroupSnapshotList(TestVolumeGroupSnapshot):
fake_volume_group_snapshots = \ fake_volume_group_snapshots = volume_fakes.create_volume_group_snapshots()
volume_fakes.FakeVolumeGroupSnapshot.create_volume_group_snapshots()
columns = ( columns = (
'ID', 'ID',

@ -34,8 +34,7 @@ class TestVolumeGroupTypeCreate(TestVolumeGroupType):
maxDiff = 2000 maxDiff = 2000
fake_volume_group_type = \ fake_volume_group_type = volume_fakes.create_one_volume_group_type()
volume_fakes.FakeVolumeGroupType.create_one_volume_group_type()
columns = ( columns = (
'ID', 'ID',
@ -133,8 +132,7 @@ class TestVolumeGroupTypeCreate(TestVolumeGroupType):
class TestVolumeGroupTypeDelete(TestVolumeGroupType): class TestVolumeGroupTypeDelete(TestVolumeGroupType):
fake_volume_group_type = \ fake_volume_group_type = volume_fakes.create_one_volume_group_type()
volume_fakes.FakeVolumeGroupType.create_one_volume_group_type()
def setUp(self): def setUp(self):
super().setUp() super().setUp()
@ -187,13 +185,13 @@ class TestVolumeGroupTypeDelete(TestVolumeGroupType):
class TestVolumeGroupTypeSet(TestVolumeGroupType): class TestVolumeGroupTypeSet(TestVolumeGroupType):
fake_volume_group_type = \ fake_volume_group_type = volume_fakes.create_one_volume_group_type(
volume_fakes.FakeVolumeGroupType.create_one_volume_group_type(
methods={ methods={
'get_keys': {'foo': 'bar'}, 'get_keys': {'foo': 'bar'},
'set_keys': None, 'set_keys': None,
'unset_keys': None, 'unset_keys': None,
}) },
)
columns = ( columns = (
'ID', 'ID',
@ -316,9 +314,9 @@ class TestVolumeGroupTypeSet(TestVolumeGroupType):
class TestVolumeGroupTypeUnset(TestVolumeGroupType): class TestVolumeGroupTypeUnset(TestVolumeGroupType):
fake_volume_group_type = \ fake_volume_group_type = volume_fakes.create_one_volume_group_type(
volume_fakes.FakeVolumeGroupType.create_one_volume_group_type( methods={'unset_keys': None},
methods={'unset_keys': None}) )
columns = ( columns = (
'ID', 'ID',
@ -393,8 +391,7 @@ class TestVolumeGroupTypeUnset(TestVolumeGroupType):
class TestVolumeGroupTypeList(TestVolumeGroupType): class TestVolumeGroupTypeList(TestVolumeGroupType):
fake_volume_group_types = \ fake_volume_group_types = volume_fakes.create_volume_group_types()
volume_fakes.FakeVolumeGroupType.create_volume_group_types()
columns = ( columns = (
'ID', 'ID',

@ -34,15 +34,14 @@ class TestVolumeMessage(volume_fakes.TestVolume):
class TestVolumeMessageDelete(TestVolumeMessage): class TestVolumeMessageDelete(TestVolumeMessage):
fake_messages = volume_fakes.FakeVolumeMessage.create_volume_messages( fake_messages = volume_fakes.create_volume_messages(count=2)
count=2)
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.volume_messages_mock.get = \ self.volume_messages_mock.get = volume_fakes.get_volume_messages(
volume_fakes.FakeVolumeMessage.get_volume_messages( self.fake_messages,
self.fake_messages) )
self.volume_messages_mock.delete.return_value = None self.volume_messages_mock.delete.return_value = None
# Get the command object to mock # Get the command object to mock
@ -139,8 +138,7 @@ class TestVolumeMessageDelete(TestVolumeMessage):
class TestVolumeMessageList(TestVolumeMessage): class TestVolumeMessageList(TestVolumeMessage):
fake_project = identity_fakes.FakeProject.create_one_project() fake_project = identity_fakes.FakeProject.create_one_project()
fake_messages = volume_fakes.FakeVolumeMessage.create_volume_messages( fake_messages = volume_fakes.create_volume_messages(count=3)
count=3)
columns = ( columns = (
'ID', 'ID',
@ -253,7 +251,7 @@ class TestVolumeMessageList(TestVolumeMessage):
class TestVolumeMessageShow(TestVolumeMessage): class TestVolumeMessageShow(TestVolumeMessage):
fake_message = volume_fakes.FakeVolumeMessage.create_one_volume_message() fake_message = volume_fakes.create_one_volume_message()
columns = ( columns = (
'created_at', 'created_at',