diff --git a/SoftLayer/managers/storage_utils.py b/SoftLayer/managers/storage_utils.py index ba6dfc8c0..5040078e6 100644 --- a/SoftLayer/managers/storage_utils.py +++ b/SoftLayer/managers/storage_utils.py @@ -887,8 +887,8 @@ def prepare_duplicate_order_object(manager, origin_volume, iops, tier, :param manager: The File or Block manager calling this function :param origin_volume: The origin volume which is being duplicated - :param iops: The IOPS per GB for the duplicant volume (performance) - :param tier: The tier level for the duplicant volume (endurance) + :param iops: The IOPS for the duplicate volume (performance) + :param tier: The tier level for the duplicate volume (endurance) :param duplicate_size: The requested size for the duplicate volume :param duplicate_snapshot_size: The size for the duplicate snapshot space :param volume_type: The type of the origin volume ('file' or 'block') @@ -931,9 +931,9 @@ def prepare_duplicate_order_object(manager, origin_volume, iops, tier, if duplicate_snapshot_size is None: duplicate_snapshot_size = origin_snapshot_size - # Validate the requested duplicate size, and set the size if none was given - duplicate_size = _validate_duplicate_size( - origin_volume, duplicate_size, volume_type) + # Use the origin volume size if no size was specified for the duplicate + if duplicate_size is None: + duplicate_size = origin_volume['capacityGb'] # Get the appropriate package for the order # ('storage_as_a_service' is currently used for duplicate volumes) @@ -942,13 +942,13 @@ def prepare_duplicate_order_object(manager, origin_volume, iops, tier, # Determine the IOPS or tier level for the duplicate volume, along with # the type and prices for the order origin_storage_type = origin_volume['storageType']['keyName'] - if origin_storage_type == 'PERFORMANCE_BLOCK_STORAGE'\ - or origin_storage_type == 'PERFORMANCE_BLOCK_STORAGE_REPLICANT'\ - or origin_storage_type == 'PERFORMANCE_FILE_STORAGE'\ - or origin_storage_type == 'PERFORMANCE_FILE_STORAGE_REPLICANT': + if 'PERFORMANCE' in origin_storage_type: volume_is_performance = True - iops = _validate_dupl_performance_iops( - origin_volume, iops, duplicate_size) + if iops is None: + iops = int(origin_volume.get('provisionedIops', 0)) + if iops <= 0: + raise exceptions.SoftLayerError( + "Cannot find origin volume's provisioned IOPS") # Set up the price array for the order prices = [ find_price_by_category(package, 'storage_as_a_service'), @@ -961,12 +961,10 @@ def prepare_duplicate_order_object(manager, origin_volume, iops, tier, prices.append(find_saas_snapshot_space_price( package, duplicate_snapshot_size, iops=iops)) - elif origin_storage_type == 'ENDURANCE_BLOCK_STORAGE'\ - or origin_storage_type == 'ENDURANCE_BLOCK_STORAGE_REPLICANT'\ - or origin_storage_type == 'ENDURANCE_FILE_STORAGE'\ - or origin_storage_type == 'ENDURANCE_FILE_STORAGE_REPLICANT': + elif 'ENDURANCE' in origin_storage_type: volume_is_performance = False - tier = _validate_dupl_endurance_tier(origin_volume, tier) + if tier is None: + tier = find_endurance_tier_iops_per_gb(origin_volume) # Set up the price array for the order prices = [ find_price_by_category(package, 'storage_as_a_service'), @@ -1003,97 +1001,6 @@ def prepare_duplicate_order_object(manager, origin_volume, iops, tier, return duplicate_order -def _validate_duplicate_size(origin_volume, duplicate_volume_size, - volume_type): - # Ensure the origin volume's size is found - if not isinstance(utils.lookup(origin_volume, 'capacityGb'), int): - raise exceptions.SoftLayerError("Cannot find origin volume's size.") - - # Determine the volume size/capacity for the duplicate - if duplicate_volume_size is None: - duplicate_volume_size = origin_volume['capacityGb'] - # Ensure the duplicate volume size is not below the minimum - elif duplicate_volume_size < origin_volume['capacityGb']: - raise exceptions.SoftLayerError( - "The requested duplicate volume size is too small. Duplicate " - "volumes must be at least as large as their origin volumes.") - - # Ensure the duplicate volume size is not above the maximum - if volume_type == 'block': - # Determine the base size for validating the requested duplicate size - if 'originalVolumeSize' in origin_volume: - base_volume_size = int(origin_volume['originalVolumeSize']) - else: - base_volume_size = origin_volume['capacityGb'] - - # Current limit for block volumes: 10*[origin size] - if duplicate_volume_size > base_volume_size * 10: - raise exceptions.SoftLayerError( - "The requested duplicate volume size is too large. The " - "maximum size for duplicate block volumes is 10 times the " - "size of the origin volume or, if the origin volume was also " - "a duplicate, 10 times the size of the initial origin volume " - "(i.e. the origin volume from which the first duplicate was " - "created in the chain of duplicates). " - "Requested: %s GB. Base origin size: %s GB." - % (duplicate_volume_size, base_volume_size)) - - return duplicate_volume_size - - -def _validate_dupl_performance_iops(origin_volume, duplicate_iops, - duplicate_size): - if not isinstance(utils.lookup(origin_volume, 'provisionedIops'), str): - raise exceptions.SoftLayerError( - "Cannot find origin volume's provisioned IOPS") - - if duplicate_iops is None: - duplicate_iops = int(origin_volume['provisionedIops']) - else: - origin_iops_per_gb = float(origin_volume['provisionedIops'])\ - / float(origin_volume['capacityGb']) - duplicate_iops_per_gb = float(duplicate_iops) / float(duplicate_size) - if origin_iops_per_gb < 0.3 and duplicate_iops_per_gb >= 0.3: - raise exceptions.SoftLayerError( - "Origin volume performance is < 0.3 IOPS/GB, " - "duplicate volume performance must also be < 0.3 " - "IOPS/GB. %s IOPS/GB (%s/%s) requested." - % (duplicate_iops_per_gb, duplicate_iops, duplicate_size)) - elif origin_iops_per_gb >= 0.3 and duplicate_iops_per_gb < 0.3: - raise exceptions.SoftLayerError( - "Origin volume performance is >= 0.3 IOPS/GB, " - "duplicate volume performance must also be >= 0.3 " - "IOPS/GB. %s IOPS/GB (%s/%s) requested." - % (duplicate_iops_per_gb, duplicate_iops, duplicate_size)) - return duplicate_iops - - -def _validate_dupl_endurance_tier(origin_volume, duplicate_tier): - try: - origin_tier = find_endurance_tier_iops_per_gb(origin_volume) - except ValueError: - raise exceptions.SoftLayerError( - "Cannot find origin volume's tier level") - - if duplicate_tier is None: - duplicate_tier = origin_tier - else: - if duplicate_tier != 0.25: - duplicate_tier = int(duplicate_tier) - - if origin_tier == 0.25 and duplicate_tier != 0.25: - raise exceptions.SoftLayerError( - "Origin volume performance tier is 0.25 IOPS/GB, " - "duplicate volume performance tier must also be 0.25 " - "IOPS/GB. %s IOPS/GB requested." % duplicate_tier) - elif origin_tier != 0.25 and duplicate_tier == 0.25: - raise exceptions.SoftLayerError( - "Origin volume performance tier is above 0.25 IOPS/GB, " - "duplicate volume performance tier must also be above 0.25 " - "IOPS/GB. %s IOPS/GB requested." % duplicate_tier) - return duplicate_tier - - def _has_category(categories, category_code): return any( True diff --git a/tests/managers/block_tests.py b/tests/managers/block_tests.py index 53dac03fe..d3ebe922a 100644 --- a/tests/managers/block_tests.py +++ b/tests/managers/block_tests.py @@ -5,6 +5,7 @@ :license: MIT, see LICENSE for more details. """ +import copy import SoftLayer from SoftLayer import exceptions from SoftLayer import fixtures @@ -336,8 +337,7 @@ def test_order_block_volume_performance(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'PERFORMANCE_BLOCK_STORAGE' mock = self.set_mock('SoftLayer_Network_Storage', 'getObject') mock.return_value = mock_volume @@ -375,8 +375,6 @@ def test_order_block_volume_performance(self): },) ) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_order_block_volume_endurance(self): mock = self.set_mock('SoftLayer_Location_Datacenter', 'getDatacenters') mock.return_value = [{'id': 449494, 'name': 'dal09'}] @@ -498,8 +496,7 @@ def test_order_block_snapshot_space_upgrade(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'ENDURANCE_BLOCK_STORAGE' mock = self.set_mock('SoftLayer_Network_Storage', 'getObject') mock.return_value = mock_volume @@ -525,8 +522,6 @@ def test_order_block_snapshot_space_upgrade(self): },) ) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_order_block_snapshot_space(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] @@ -557,8 +552,7 @@ def test_order_block_snapshot_space(self): ) def test_order_block_replicant_os_type_not_found(self): - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_os_type = mock_volume['osType'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) del mock_volume['osType'] mock = self.set_mock('SoftLayer_Network_Storage', 'getObject') mock.return_value = mock_volume @@ -575,8 +569,6 @@ def test_order_block_replicant_os_type_not_found(self): str(exception) ) - mock_volume['osType'] = prev_os_type - def test_order_block_replicant_performance_os_type_given(self): mock = self.set_mock('SoftLayer_Location_Datacenter', 'getDatacenters') mock.return_value = [{'id': 449494, 'name': 'dal09'}] @@ -584,8 +576,7 @@ def test_order_block_replicant_performance_os_type_given(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'PERFORMANCE_BLOCK_STORAGE' mock = self.set_mock('SoftLayer_Network_Storage', 'getObject') mock.return_value = mock_volume @@ -625,8 +616,6 @@ def test_order_block_replicant_performance_os_type_given(self): },) ) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_order_block_replicant_endurance(self): mock = self.set_mock('SoftLayer_Location_Datacenter', 'getDatacenters') mock.return_value = [{'id': 449494, 'name': 'dal09'}] @@ -671,8 +660,7 @@ def test_order_block_duplicate_origin_os_type_not_found(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_os_type = mock_volume['osType'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) del mock_volume['osType'] mock = self.set_mock('SoftLayer_Network_Storage', 'getObject') mock.return_value = mock_volume @@ -686,14 +674,11 @@ def test_order_block_duplicate_origin_os_type_not_found(self): self.assertEqual(str(exception), "Cannot find origin volume's os-type") - mock_volume['osType'] = prev_os_type - def test_order_block_duplicate_performance_no_duplicate_snapshot(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'PERFORMANCE_BLOCK_STORAGE' mock = self.set_mock('SoftLayer_Network_Storage', 'getObject') mock.return_value = mock_volume @@ -726,14 +711,11 @@ def test_order_block_duplicate_performance_no_duplicate_snapshot(self): 'useHourlyPricing': False },)) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_order_block_duplicate_performance(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'PERFORMANCE_BLOCK_STORAGE' mock = self.set_mock('SoftLayer_Network_Storage', 'getObject') mock.return_value = mock_volume @@ -773,8 +755,6 @@ def test_order_block_duplicate_performance(self): 'useHourlyPricing': False },)) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_order_block_duplicate_endurance_no_duplicate_snapshot(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] diff --git a/tests/managers/file_tests.py b/tests/managers/file_tests.py index bb4e2bfc3..6a6d14d82 100644 --- a/tests/managers/file_tests.py +++ b/tests/managers/file_tests.py @@ -5,6 +5,7 @@ :license: MIT, see LICENSE for more details. """ +import copy import SoftLayer from SoftLayer import exceptions from SoftLayer import fixtures @@ -410,8 +411,7 @@ def test_order_file_volume_performance(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'PERFORMANCE_FILE_STORAGE' mock = self.set_mock('SoftLayer_Network_Storage', 'getObject') mock.return_value = mock_volume @@ -447,8 +447,6 @@ def test_order_file_volume_performance(self): },) ) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_order_file_volume_endurance(self): mock = self.set_mock('SoftLayer_Location_Datacenter', 'getDatacenters') mock.return_value = [{'id': 449494, 'name': 'dal09'}] @@ -456,8 +454,7 @@ def test_order_file_volume_endurance(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'ENDURANCE_FILE_STORAGE' mock = self.set_mock('SoftLayer_Network_Storage', 'getObject') mock.return_value = mock_volume @@ -492,14 +489,11 @@ def test_order_file_volume_endurance(self): },) ) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_order_file_snapshot_space_upgrade(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'ENDURANCE_FILE_STORAGE' mock = self.set_mock('SoftLayer_Network_Storage', 'getObject') mock.return_value = mock_volume @@ -525,14 +519,11 @@ def test_order_file_snapshot_space_upgrade(self): },) ) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_order_file_snapshot_space(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'ENDURANCE_FILE_STORAGE' mock = self.set_mock('SoftLayer_Network_Storage', 'getObject') mock.return_value = mock_volume @@ -558,8 +549,6 @@ def test_order_file_snapshot_space(self): },) ) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_order_file_replicant_performance(self): mock = self.set_mock('SoftLayer_Location_Datacenter', 'getDatacenters') mock.return_value = [{'id': 449494, 'name': 'dal09'}] @@ -567,8 +556,7 @@ def test_order_file_replicant_performance(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'PERFORMANCE_FILE_STORAGE' mock = self.set_mock('SoftLayer_Network_Storage', 'getObject') mock.return_value = mock_volume @@ -602,8 +590,6 @@ def test_order_file_replicant_performance(self): },) ) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_order_file_replicant_endurance(self): mock = self.set_mock('SoftLayer_Location_Datacenter', 'getDatacenters') mock.return_value = [{'id': 449494, 'name': 'dal09'}] @@ -611,8 +597,7 @@ def test_order_file_replicant_endurance(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'ENDURANCE_FILE_STORAGE' mock = self.set_mock('SoftLayer_Network_Storage', 'getObject') mock.return_value = mock_volume @@ -645,14 +630,11 @@ def test_order_file_replicant_endurance(self): },) ) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_order_file_duplicate_performance_no_duplicate_snapshot(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'PERFORMANCE_FILE_STORAGE' mock = self.set_mock('SoftLayer_Network_Storage', 'getObject') mock.return_value = mock_volume @@ -684,14 +666,11 @@ def test_order_file_duplicate_performance_no_duplicate_snapshot(self): 'useHourlyPricing': False },)) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_order_file_duplicate_performance(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'PERFORMANCE_FILE_STORAGE' mock = self.set_mock('SoftLayer_Network_Storage', 'getObject') mock.return_value = mock_volume @@ -730,14 +709,11 @@ def test_order_file_duplicate_performance(self): 'useHourlyPricing': False },)) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_order_file_duplicate_endurance_no_duplicate_snapshot(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'ENDURANCE_FILE_STORAGE' mock = self.set_mock('SoftLayer_Network_Storage', 'getObject') mock.return_value = mock_volume @@ -768,14 +744,11 @@ def test_order_file_duplicate_endurance_no_duplicate_snapshot(self): 'useHourlyPricing': False },)) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_order_file_duplicate_endurance(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'ENDURANCE_FILE_STORAGE' mock = self.set_mock('SoftLayer_Network_Storage', 'getObject') mock.return_value = mock_volume @@ -812,5 +785,3 @@ def test_order_file_duplicate_endurance(self): 'duplicateOriginSnapshotId': 470, 'useHourlyPricing': False },)) - - mock_volume['storageType']['keyName'] = prev_storage_type_keyname diff --git a/tests/managers/storage_utils_tests.py b/tests/managers/storage_utils_tests.py index 1df9547c5..c3676d9cb 100644 --- a/tests/managers/storage_utils_tests.py +++ b/tests/managers/storage_utils_tests.py @@ -5,6 +5,7 @@ :license: MIT, see LICENSE for more details. """ +import copy import SoftLayer from SoftLayer import exceptions from SoftLayer import fixtures @@ -2672,8 +2673,7 @@ def test_find_snapshot_schedule_id(self): # Tests for prepare_snapshot_order_object() # --------------------------------------------------------------------- def test_prep_snapshot_order_billing_item_cancelled(self): - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_billing_item = mock_volume['billingItem'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) del mock_volume['billingItem'] exception = self.assertRaises( @@ -2687,11 +2687,8 @@ def test_prep_snapshot_order_billing_item_cancelled(self): str(exception) ) - mock_volume['billingItem'] = prev_billing_item - def test_prep_snapshot_order_invalid_billing_item_category_code(self): - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_billing_item_category = mock_volume['billingItem']['categoryCode'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['billingItem']['categoryCode'] = 'invalid_type_ninja_cat' exception = self.assertRaises( @@ -2706,8 +2703,6 @@ def test_prep_snapshot_order_invalid_billing_item_category_code(self): str(exception) ) - mock_volume['billingItem']['categoryCode'] = prev_billing_item_category - def test_prep_snapshot_order_saas_endurance_tier_is_not_none(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] @@ -2758,9 +2753,7 @@ def test_prep_snapshot_order_saas_performance_volume_below_staas_v2(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] - prev_staas_version = mock_volume['staasVersion'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'PERFORMANCE_BLOCK_STORAGE' mock_volume['staasVersion'] = '1' @@ -2776,15 +2769,11 @@ def test_prep_snapshot_order_saas_performance_volume_below_staas_v2(self): str(exception) ) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - mock_volume['staasVersion'] = prev_staas_version - def test_prep_snapshot_order_saas_performance(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'PERFORMANCE_BLOCK_STORAGE' expected_object = { @@ -2804,14 +2793,11 @@ def test_prep_snapshot_order_saas_performance(self): self.assertEqual(expected_object, result) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_prep_snapshot_order_saas_invalid_storage_type(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'TASTY_PASTA_STORAGE' exception = self.assertRaises( @@ -2827,8 +2813,6 @@ def test_prep_snapshot_order_saas_invalid_storage_type(self): str(exception) ) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_prep_snapshot_order_enterprise_tier_is_not_none(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [ @@ -2883,8 +2867,7 @@ def test_prep_snapshot_order_hourly_billing(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_hourly_flag = mock_volume['billingItem']['hourlyFlag'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['billingItem']['hourlyFlag'] = True expected_object = { @@ -2904,8 +2887,6 @@ def test_prep_snapshot_order_hourly_billing(self): self.assertEqual(expected_object, result) - mock_volume['billingItem']['hourlyFlag'] = prev_hourly_flag - # --------------------------------------------------------------------- # Tests for prepare_volume_order_object() # --------------------------------------------------------------------- @@ -3233,8 +3214,7 @@ def test_prep_volume_order_ent_endurance_with_snapshot(self): # Tests for prepare_replicant_order_object() # --------------------------------------------------------------------- def test_prep_replicant_order_volume_cancelled(self): - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_billing_item = mock_volume['billingItem'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) del mock_volume['billingItem'] exception = self.assertRaises( @@ -3249,11 +3229,8 @@ def test_prep_replicant_order_volume_cancelled(self): str(exception) ) - mock_volume['billingItem'] = prev_billing_item - def test_prep_replicant_order_volume_cancellation_date_set(self): - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_cancellation_date = mock_volume['billingItem']['cancellationDate'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['billingItem']['cancellationDate'] = 'y2k, oh nooooo' exception = self.assertRaises( @@ -3268,12 +3245,9 @@ def test_prep_replicant_order_volume_cancellation_date_set(self): str(exception) ) - mock_volume['billingItem']['cancellationDate'] = prev_cancellation_date - def test_prep_replicant_order_snapshot_space_cancelled(self): - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) snapshot_billing_item = mock_volume['billingItem']['activeChildren'][0] - prev_cancellation_date = snapshot_billing_item['cancellationDate'] snapshot_billing_item['cancellationDate'] = 'daylight saving time, no!' exception = self.assertRaises( @@ -3288,8 +3262,6 @@ def test_prep_replicant_order_snapshot_space_cancelled(self): str(exception) ) - snapshot_billing_item['cancellationDate'] = prev_cancellation_date - def test_prep_replicant_order_invalid_location(self): mock = self.set_mock('SoftLayer_Location_Datacenter', 'getDatacenters') mock.return_value = [] @@ -3312,8 +3284,7 @@ def test_prep_replicant_order_enterprise_offering_invalid_type(self): mock = self.set_mock('SoftLayer_Location_Datacenter', 'getDatacenters') mock.return_value = [{'id': 51, 'name': 'wdc04'}] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_billing_item_category = mock_volume['billingItem']['categoryCode'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['billingItem']['categoryCode'] = 'invalid_type_ninja_cat' exception = self.assertRaises( @@ -3328,14 +3299,11 @@ def test_prep_replicant_order_enterprise_offering_invalid_type(self): str(exception) ) - mock_volume['billingItem']['categoryCode'] = prev_billing_item_category - def test_prep_replicant_order_snapshot_capacity_not_found(self): mock = self.set_mock('SoftLayer_Location_Datacenter', 'getDatacenters') mock.return_value = [{'id': 51, 'name': 'wdc04'}] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_snapshot_capacity = mock_volume['snapshotCapacityGb'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) del mock_volume['snapshotCapacityGb'] exception = self.assertRaises( @@ -3349,8 +3317,6 @@ def test_prep_replicant_order_snapshot_capacity_not_found(self): str(exception) ) - mock_volume['snapshotCapacityGb'] = prev_snapshot_capacity - def test_prep_replicant_order_saas_endurance(self): mock = self.set_mock('SoftLayer_Location_Datacenter', 'getDatacenters') mock.return_value = [{'id': 51, 'name': 'wdc04'}] @@ -3425,9 +3391,7 @@ def test_prep_replicant_order_saas_performance_volume_below_staas_v2(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type = mock_volume['storageType']['keyName'] - prev_has_encryption_at_rest_flag = mock_volume['hasEncryptionAtRest'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'PERFORMANCE_BLOCK_STORAGE' mock_volume['hasEncryptionAtRest'] = 0 @@ -3443,17 +3407,13 @@ def test_prep_replicant_order_saas_performance_volume_below_staas_v2(self): str(exception) ) - mock_volume['storageType']['keyName'] = prev_storage_type - mock_volume['hasEncryptionAtRest'] = prev_has_encryption_at_rest_flag - def test_prep_replicant_order_saas_performance(self): mock = self.set_mock('SoftLayer_Location_Datacenter', 'getDatacenters') mock.return_value = [{'id': 51, 'name': 'wdc04'}] mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'PERFORMANCE_BLOCK_STORAGE' expected_object = { @@ -3483,16 +3443,13 @@ def test_prep_replicant_order_saas_performance(self): self.assertEqual(expected_object, result) - mock_volume['storageType']['keyName'] = prev_storage_type - def test_prep_replicant_order_saas_invalid_storage_type(self): mock = self.set_mock('SoftLayer_Location_Datacenter', 'getDatacenters') mock.return_value = [{'id': 51, 'name': 'wdc04'}] mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'CATS_LIKE_PIANO_MUSIC' exception = self.assertRaises( @@ -3508,8 +3465,6 @@ def test_prep_replicant_order_saas_invalid_storage_type(self): str(exception) ) - mock_volume['storageType']['keyName'] = prev_storage_type - def test_prep_replicant_order_ent_endurance(self): mock = self.set_mock('SoftLayer_Location_Datacenter', 'getDatacenters') mock.return_value = [{'id': 51, 'name': 'wdc04'}] @@ -3586,8 +3541,7 @@ def test_prep_replicant_order_hourly_billing(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_hourly_flag = mock_volume['billingItem']['hourlyFlag'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['billingItem']['hourlyFlag'] = True expected_object = { @@ -3616,8 +3570,6 @@ def test_prep_replicant_order_hourly_billing(self): self.assertEqual(expected_object, result) - mock_volume['billingItem']['hourlyFlag'] = prev_hourly_flag - # --------------------------------------------------------------------- # Tests for prepare_duplicate_order_object() # --------------------------------------------------------------------- @@ -3625,8 +3577,7 @@ def test_prep_duplicate_order_origin_volume_cancelled(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_billing_item = mock_volume['billingItem'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) del mock_volume['billingItem'] exception = self.assertRaises( @@ -3639,14 +3590,11 @@ def test_prep_duplicate_order_origin_volume_cancelled(self): "The origin volume has been cancelled; " "unable to order duplicate volume") - mock_volume['billingItem'] = prev_billing_item - def test_prep_duplicate_order_origin_snapshot_capacity_not_found(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_snapshot_capacity_gb = mock_volume['snapshotCapacityGb'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) del mock_volume['snapshotCapacityGb'] exception = self.assertRaises( @@ -3659,14 +3607,11 @@ def test_prep_duplicate_order_origin_snapshot_capacity_not_found(self): "Snapshot space not found for the origin volume. " "Origin snapshot space is needed for duplication.") - mock_volume['snapshotCapacityGb'] = prev_snapshot_capacity_gb - def test_prep_duplicate_order_origin_volume_location_not_found(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_location = mock_volume['billingItem']['location'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) del mock_volume['billingItem']['location'] exception = self.assertRaises( @@ -3678,14 +3623,11 @@ def test_prep_duplicate_order_origin_volume_location_not_found(self): self.assertEqual(str(exception), "Cannot find origin volume's location") - mock_volume['billingItem']['location'] = prev_location - def test_prep_duplicate_order_origin_volume_staas_version_below_v2(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_staas_version = mock_volume['staasVersion'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['staasVersion'] = 1 exception = self.assertRaises( @@ -3698,107 +3640,13 @@ def test_prep_duplicate_order_origin_volume_staas_version_below_v2(self): "does not support Encryption at Rest.", str(exception)) - mock_volume['staasVersion'] = prev_staas_version - - def test_prep_duplicate_order_origin_volume_capacity_not_found(self): - mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') - mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_capacity_gb = mock_volume['capacityGb'] - mock_volume['capacityGb'] = None - - exception = self.assertRaises( - exceptions.SoftLayerError, - storage_utils.prepare_duplicate_order_object, - self.block, mock_volume, None, None, None, None, 'block' - ) - - self.assertEqual(str(exception), "Cannot find origin volume's size.") - - mock_volume['capacityGb'] = prev_capacity_gb - - def test_prep_duplicate_order_origin_originalVolumeSize_empty_block(self): - mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') - mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_original_volume_size = mock_volume['originalVolumeSize'] - del mock_volume['originalVolumeSize'] - - expected_object = { - 'complexType': 'SoftLayer_Container_Product_Order_' - 'Network_Storage_AsAService', - 'packageId': 759, - 'prices': [ - {'id': 189433}, - {'id': 189443}, - {'id': 193433}, - {'id': 193373}, - {'id': 193613} - ], - 'volumeSize': 500, - 'quantity': 1, - 'location': 449500, - 'duplicateOriginVolumeId': 102, - 'useHourlyPricing': False} - - result = storage_utils.prepare_duplicate_order_object( - self.block, mock_volume, None, None, None, None, 'block') - - self.assertEqual(expected_object, result) - - mock_volume['originalVolumeSize'] = prev_original_volume_size - - def test_prep_duplicate_order_size_too_small(self): - mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') - mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - - exception = self.assertRaises( - exceptions.SoftLayerError, - storage_utils.prepare_duplicate_order_object, - self.block, mock_volume, None, None, 250, None, 'block' - ) - - self.assertEqual(str(exception), - "The requested duplicate volume size is too small. " - "Duplicate volumes must be at least as large as " - "their origin volumes.") - - def test_prep_duplicate_order_size_too_large_block(self): - mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') - mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - - exception = self.assertRaises( - exceptions.SoftLayerError, - storage_utils.prepare_duplicate_order_object, - self.block, mock_volume, None, None, 8000, None, 'block' - ) - - self.assertEqual(str(exception), - "The requested duplicate volume size is too large. " - "The maximum size for duplicate block volumes is 10 " - "times the size of the origin volume or, if the " - "origin volume was also a duplicate, 10 times the " - "size of the initial origin volume (i.e. the origin " - "volume from which the first duplicate was created " - "in the chain of duplicates). " - "Requested: 8000 GB. Base origin size: 500 GB.") - def test_prep_duplicate_order_performance_origin_iops_not_found(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] - prev_provisioned_iops = mock_volume['provisionedIops'] - mock_volume['storageType']['keyName'] = 'PERFORMANCE_BLOCK_'\ - 'STORAGE_REPLICANT' - mock_volume['provisionedIops'] = None + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) + mock_volume['storageType']['keyName'] = 'PERFORMANCE_BLOCK_STORAGE_REPLICANT' + del mock_volume['provisionedIops'] exception = self.assertRaises( exceptions.SoftLayerError, @@ -3809,62 +3657,12 @@ def test_prep_duplicate_order_performance_origin_iops_not_found(self): self.assertEqual(str(exception), "Cannot find origin volume's provisioned IOPS") - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - mock_volume['provisionedIops'] = prev_provisioned_iops - - def test_prep_duplicate_order_performance_iops_above_limit(self): - mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') - mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] - prev_provisioned_iops = mock_volume['provisionedIops'] - mock_volume['storageType']['keyName'] = 'PERFORMANCE_BLOCK_STORAGE' - mock_volume['provisionedIops'] = '100' - - exception = self.assertRaises( - exceptions.SoftLayerError, - storage_utils.prepare_duplicate_order_object, - self.block, mock_volume, 1000, None, 500, None, 'block' - ) - - self.assertEqual(str(exception), - "Origin volume performance is < 0.3 IOPS/GB, " - "duplicate volume performance must also be < 0.3 " - "IOPS/GB. 2.0 IOPS/GB (1000/500) requested.") - - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - mock_volume['provisionedIops'] = prev_provisioned_iops - - def test_prep_duplicate_order_performance_iops_below_limit(self): - mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') - mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] - mock_volume['storageType']['keyName'] = 'PERFORMANCE_BLOCK_STORAGE' - - exception = self.assertRaises( - exceptions.SoftLayerError, - storage_utils.prepare_duplicate_order_object, - self.block, mock_volume, 200, None, 1000, None, 'block' - ) - - self.assertEqual(str(exception), - "Origin volume performance is >= 0.3 IOPS/GB, " - "duplicate volume performance must also be >= 0.3 " - "IOPS/GB. 0.2 IOPS/GB (200/1000) requested.") - - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_prep_duplicate_order_performance_use_default_origin_values(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] - mock_volume['storageType']['keyName'] = 'PERFORMANCE_FILE_'\ - 'STORAGE_REPLICANT' + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) + mock_volume['storageType']['keyName'] = 'PERFORMANCE_FILE_STORAGE_REPLICANT' expected_object = { 'complexType': 'SoftLayer_Container_Product_Order_' @@ -3889,14 +3687,11 @@ def test_prep_duplicate_order_performance_use_default_origin_values(self): self.assertEqual(expected_object, result) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_prep_duplicate_order_performance_block(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'PERFORMANCE_BLOCK_STORAGE' expected_object = { @@ -3922,14 +3717,11 @@ def test_prep_duplicate_order_performance_block(self): self.assertEqual(expected_object, result) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_prep_duplicate_order_performance_file(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'PERFORMANCE_FILE_STORAGE' expected_object = { @@ -3955,75 +3747,11 @@ def test_prep_duplicate_order_performance_file(self): self.assertEqual(expected_object, result) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - - def test_prep_duplicate_order_endurance_origin_tier_not_found(self): - mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') - mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_tier_level = mock_volume['storageTierLevel'] - prev_storage_type_keyname = mock_volume['storageType']['keyName'] - mock_volume['storageTierLevel'] = 'NINJA_PENGUINS' - mock_volume['storageType']['keyName'] = 'ENDURANCE_BLOCK_'\ - 'STORAGE_REPLICANT' - - exception = self.assertRaises( - exceptions.SoftLayerError, - storage_utils.prepare_duplicate_order_object, - self.block, mock_volume, None, None, None, None, 'block' - ) - - self.assertEqual(str(exception), - "Cannot find origin volume's tier level") - - mock_volume['storageTierLevel'] = prev_tier_level - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - - def test_prep_duplicate_order_endurance_tier_above_limit(self): - mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') - mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_tier_level = mock_volume['storageTierLevel'] - mock_volume['storageTierLevel'] = 'LOW_INTENSITY_TIER' - - exception = self.assertRaises( - exceptions.SoftLayerError, - storage_utils.prepare_duplicate_order_object, - self.block, mock_volume, None, 2, None, None, 'block' - ) - - self.assertEqual(str(exception), - "Origin volume performance tier is 0.25 IOPS/GB, " - "duplicate volume performance tier must also be 0.25 " - "IOPS/GB. 2 IOPS/GB requested.") - - mock_volume['storageTierLevel'] = prev_tier_level - - def test_prep_duplicate_order_endurance_tier_below_limit(self): - mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') - mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - - exception = self.assertRaises( - exceptions.SoftLayerError, - storage_utils.prepare_duplicate_order_object, - self.block, mock_volume, None, 0.25, None, None, 'block' - ) - - self.assertEqual(str(exception), - "Origin volume performance tier is above 0.25 " - "IOPS/GB, duplicate volume performance tier must " - "also be above 0.25 IOPS/GB. 0.25 IOPS/GB requested.") - def test_prep_duplicate_order_endurance_use_default_origin_values(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'ENDURANCE_FILE_'\ 'STORAGE_REPLICANT' @@ -4049,8 +3777,6 @@ def test_prep_duplicate_order_endurance_use_default_origin_values(self): self.assertEqual(expected_object, result) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_prep_duplicate_order_endurance_block(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] @@ -4083,8 +3809,7 @@ def test_prep_duplicate_order_endurance_file(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'ENDURANCE_FILE_STORAGE' expected_object = { @@ -4109,14 +3834,11 @@ def test_prep_duplicate_order_endurance_file(self): self.assertEqual(expected_object, result) - mock_volume['storageType']['keyName'] = prev_storage_type_keyname - def test_prep_duplicate_order_invalid_origin_storage_type(self): mock = self.set_mock('SoftLayer_Product_Package', 'getAllObjects') mock.return_value = [fixtures.SoftLayer_Product_Package.SAAS_PACKAGE] - mock_volume = fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME - prev_storage_type_keyname = mock_volume['storageType']['keyName'] + mock_volume = copy.deepcopy(fixtures.SoftLayer_Network_Storage.STAAS_TEST_VOLUME) mock_volume['storageType']['keyName'] = 'NINJA_CATS' exception = self.assertRaises( @@ -4129,5 +3851,3 @@ def test_prep_duplicate_order_invalid_origin_storage_type(self): "Origin volume does not have a valid storage type " "(with an appropriate keyName to indicate the " "volume is a PERFORMANCE or an ENDURANCE volume)") - - mock_volume['storageType']['keyName'] = prev_storage_type_keyname