@ -104,7 +104,6 @@ PURE_HOST = {
" iqn " : [ ] ,
" wwn " : [ ] ,
}
REST_VERSION = " 1.2 "
INITIATOR_IQN = " iqn.1993-08.org.debian:01:222 "
INITIATOR_WWN = " 5001500150015081abc "
ISCSI_CONNECTOR = { " initiator " : INITIATOR_IQN , " host " : HOSTNAME }
@ -626,9 +625,15 @@ class PureBaseSharedDriverTestCase(PureDriverTestCase):
self . driver . _array = self . array
self . driver . _replication_pod_name = ' cinder-pod '
self . driver . _replication_pg_name = ' cinder-group '
self . array . get_rest_version . return_value = ' 1.4 '
self . array . _list_available_rest_versions . return_value = [
' 1.0 ' , ' 1.1 ' , ' 1.2 ' , ' 1.3 ' , ' 1.4 ' , ' 1.5 ' , ' 1.6 ' , ' 1.7 ' , ' 1.8 ' ,
' 1.9 ' , ' 1.10 ' , ' 1.11 ' , ' 1.12 ' , ' 1.13 ' , ' 1.14 ' , ' 1.15 ' , ' 1.16 ' ,
' 1.17 ' , ' 1.18 ' , ' 1.19 ' ]
self . purestorage_module . FlashArray . side_effect = None
self . async_array2 . get_rest_version . return_value = ' 1.4 '
self . async_array2 . _list_available_rest_versions . return_value = [
' 1.0 ' , ' 1.1 ' , ' 1.2 ' , ' 1.3 ' , ' 1.4 ' , ' 1.5 ' , ' 1.6 ' , ' 1.7 ' , ' 1.8 ' ,
' 1.9 ' , ' 1.10 ' , ' 1.11 ' , ' 1.12 ' , ' 1.13 ' , ' 1.14 ' , ' 1.15 ' , ' 1.16 ' ,
' 1.17 ' , ' 1.18 ' , ' 1.19 ' ]
def new_fake_vol ( self , set_provider_id = True , fake_context = None ,
spec = None , type_extra_specs = None , type_qos_specs_id = None ,
@ -801,7 +806,10 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
]
mock_target = mock . MagicMock ( )
mock_target . get . return_value = GET_ARRAY_PRIMARY
mock_target . get_rest_version . return_value = ' 1.14 '
mock_target . _list_available_rest_versions . return_value = [
' 1.0 ' , ' 1.1 ' , ' 1.2 ' , ' 1.3 ' , ' 1.4 ' , ' 1.5 ' , ' 1.6 ' , ' 1.7 ' , ' 1.8 ' ,
' 1.9 ' , ' 1.10 ' , ' 1.11 ' , ' 1.12 ' , ' 1.13 ' , ' 1.14 ' , ' 1.15 ' , ' 1.16 ' ,
' 1.17 ' , ' 1.18 ' , ' 1.19 ' ]
self . purestorage_module . FlashArray . return_value = mock_target
self . driver . parse_replication_configs ( )
@ -838,7 +846,10 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
]
mock_target = mock . MagicMock ( )
mock_target . get . return_value = GET_ARRAY_PRIMARY
mock_target . get_rest_version . return_value = ' 1.14 '
mock_target . _list_available_rest_versions . return_value = [
' 1.0 ' , ' 1.1 ' , ' 1.2 ' , ' 1.3 ' , ' 1.4 ' , ' 1.5 ' , ' 1.6 ' , ' 1.7 ' , ' 1.8 ' ,
' 1.9 ' , ' 1.10 ' , ' 1.11 ' , ' 1.12 ' , ' 1.13 ' , ' 1.14 ' , ' 1.15 ' , ' 1.16 ' ,
' 1.17 ' , ' 1.18 ' , ' 1.19 ' ]
self . purestorage_module . FlashArray . return_value = mock_target
self . driver . parse_replication_configs ( )
@ -899,9 +910,15 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
]
mock_sync_target = mock . MagicMock ( )
mock_sync_target . get . return_value = GET_ARRAY_SECONDARY
mock_sync_target . get_rest_version . return_value = ' 1.14 '
mock_sync_target . _list_available_rest_versions . return_value = [
' 1.0 ' , ' 1.1 ' , ' 1.2 ' , ' 1.3 ' , ' 1.4 ' , ' 1.5 ' , ' 1.6 ' , ' 1.7 ' , ' 1.8 ' ,
' 1.9 ' , ' 1.10 ' , ' 1.11 ' , ' 1.12 ' , ' 1.13 ' , ' 1.14 ' , ' 1.15 ' , ' 1.16 ' ,
' 1.17 ' , ' 1.18 ' , ' 1.19 ' ]
self . array . get . return_value = GET_ARRAY_PRIMARY
self . array . get_rest_version . return_value = ' 1.14 '
self . array . _list_available_rest_versions . return_value = [
' 1.0 ' , ' 1.1 ' , ' 1.2 ' , ' 1.3 ' , ' 1.4 ' , ' 1.5 ' , ' 1.6 ' , ' 1.7 ' , ' 1.8 ' ,
' 1.9 ' , ' 1.10 ' , ' 1.11 ' , ' 1.12 ' , ' 1.13 ' , ' 1.14 ' , ' 1.15 ' , ' 1.16 ' ,
' 1.17 ' , ' 1.18 ' , ' 1.19 ' ]
self . purestorage_module . FlashArray . side_effect = [ self . array ,
mock_sync_target ]
self . driver . do_setup ( None )
@ -1251,7 +1268,8 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
} ]
self . driver . delete_volume ( vol )
expected = [ mock . call . list_volume_private_connections ( vol_name ) ,
expected = [ mock . call . list_volume_private_connections ( vol_name ,
remote = True ) ,
mock . call . disconnect_host ( host_name_a , vol_name ) ,
mock . call . list_host_connections ( host_name_a , private = True ) ,
mock . call . disconnect_host ( host_name_b , vol_name ) ,
@ -1267,7 +1285,10 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
vol , vol_name = self . new_fake_vol ( type_extra_specs = type_spec )
self . array . list_volume_private_connections . return_value = [ ]
# Set the array to be in a sync-rep enabled version
self . array . get_rest_version . return_value = " 1.14 "
self . array . _list_available_rest_versions . return_value = [
' 1.0 ' , ' 1.1 ' , ' 1.2 ' , ' 1.3 ' , ' 1.4 ' , ' 1.5 ' , ' 1.6 ' , ' 1.7 ' , ' 1.8 ' ,
' 1.9 ' , ' 1.10 ' , ' 1.11 ' , ' 1.12 ' , ' 1.13 ' , ' 1.14 ' , ' 1.15 ' , ' 1.16 ' ,
' 1.17 ' , ' 1.18 ' , ' 1.19 ' ]
self . driver . delete_volume ( vol )
@ -1307,11 +1328,14 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
]
# Set the array to be in a sync-rep enabled version
self . array . get_rest_version . return_value = " 1.14 "
self . array . _list_available_rest_versions . return_value = [
' 1.0 ' , ' 1.1 ' , ' 1.2 ' , ' 1.3 ' , ' 1.4 ' , ' 1.5 ' , ' 1.6 ' , ' 1.7 ' , ' 1.8 ' ,
' 1.9 ' , ' 1.10 ' , ' 1.11 ' , ' 1.12 ' , ' 1.13 ' , ' 1.14 ' , ' 1.15 ' , ' 1.16 ' ,
' 1.17 ' , ' 1.18 ' , ' 1.19 ' ]
self . driver . delete_volume ( vol )
expected = [
mock . call . get_rest_version ( ) ,
mock . call . _list_available_rest_versions ( ) ,
mock . call . list_volume_private_connections ( vol_name , remote = True ) ,
mock . call . disconnect_host ( host_name_a , vol_name ) ,
mock . call . list_host_connections ( host_name_a , private = True ) ,
@ -2180,7 +2204,8 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
snap , snap_ref )
def test_manage_existing_snapshot_bad_api_version ( self ) :
self . array . get_rest_version . return_value = ' 1.3 '
self . array . _list_available_rest_versions . return_value = [ ' 1.0 ' , ' 1.1 ' ,
' 1.2 ' ]
snap , _ = self . new_fake_snap ( )
self . assertRaises ( pure . PureDriverException ,
self . driver . manage_existing_snapshot ,
@ -2239,7 +2264,8 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
def test_manage_existing_snapshot_get_size_bad_api_version ( self ) :
snap , _ = self . new_fake_snap ( )
self . array . get_rest_version . return_value = ' 1.3 '
self . array . _list_available_rest_versions . return_value = [ ' 1.0 ' , ' 1.1 ' ,
' 1.2 ' ]
self . assertRaises ( pure . PureDriverException ,
self . driver . manage_existing_snapshot_get_size ,
snap , { ' name ' : PURE_SNAPSHOT [ ' name ' ] } )
@ -2288,7 +2314,8 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
def test_unmanage_snapshot_bad_api_version ( self ) :
snap , _ = self . new_fake_snap ( )
self . array . get_rest_version . return_value = ' 1.3 '
self . array . _list_available_rest_versions . return_value = [ ' 1.0 ' , ' 1.1 ' ,
' 1.2 ' ]
self . assertRaises ( pure . PureDriverException ,
self . driver . unmanage_snapshot ,
snap )
@ -3108,7 +3135,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
san_ip = ' 1.2.3.4 '
api_token = ' abcdef '
self . purestorage_module . FlashArray . return_value = mock . MagicMock ( )
self . purestorage_module . VERSION = " 1.1 4 .0"
self . purestorage_module . VERSION = " 1.1 7 .0"
self . driver . _get_flasharray ( san_ip ,
api_token ,
@ -3217,7 +3244,10 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
type_qos_specs_id = qos . id )
mock_get_volume_type . return_value = vol . volume_type
self . array . get_rest_version . return_value = ' 1.17 '
self . array . _list_available_rest_versions . return_value = [
' 1.0 ' , ' 1.1 ' , ' 1.2 ' , ' 1.3 ' , ' 1.4 ' , ' 1.5 ' , ' 1.6 ' , ' 1.7 ' , ' 1.8 ' ,
' 1.9 ' , ' 1.10 ' , ' 1.11 ' , ' 1.12 ' , ' 1.13 ' , ' 1.14 ' , ' 1.15 ' , ' 1.16 ' ,
' 1.17 ' , ' 1.18 ' , ' 1.19 ' ]
mock_get_qos_specs . return_value = qos
mock_get_repl_type . return_value = None
@ -3247,7 +3277,10 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
type_qos_specs_id = qos . id )
mock_get_volume_type . return_value = vol . volume_type
self . array . get_rest_version . return_value = ' 1.17 '
self . array . _list_available_rest_versions . return_value = [
' 1.0 ' , ' 1.1 ' , ' 1.2 ' , ' 1.3 ' , ' 1.4 ' , ' 1.5 ' , ' 1.6 ' , ' 1.7 ' , ' 1.8 ' ,
' 1.9 ' , ' 1.10 ' , ' 1.11 ' , ' 1.12 ' , ' 1.13 ' , ' 1.14 ' , ' 1.15 ' , ' 1.16 ' ,
' 1.17 ' , ' 1.18 ' , ' 1.19 ' ]
mock_get_qos_specs . return_value = qos
mock_get_repl_type . return_value = None
@ -3277,7 +3310,10 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
mock_get_volume_type . return_value = vol . volume_type
mock_get_qos_specs . return_value = qos
self . array . list_volume_private_connections . return_value = [ ]
self . array . get_rest_version . return_value = ' 1.17 '
self . array . _list_available_rest_versions . return_value = [
' 1.0 ' , ' 1.1 ' , ' 1.2 ' , ' 1.3 ' , ' 1.4 ' , ' 1.5 ' , ' 1.6 ' , ' 1.7 ' , ' 1.8 ' ,
' 1.9 ' , ' 1.10 ' , ' 1.11 ' , ' 1.12 ' , ' 1.13 ' , ' 1.14 ' , ' 1.15 ' , ' 1.16 ' ,
' 1.17 ' , ' 1.18 ' , ' 1.19 ' ]
self . driver . manage_existing ( vol , volume_ref )
self . array . list_volume_private_connections . assert_called_with ( ref_name )
@ -3294,7 +3330,10 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
new_type = fake_volume . fake_volume_type_obj ( mock_context )
new_type . qos_specs_id = qos . id
self . array . get_rest_version . return_value = ' 1.17 '
self . array . _list_available_rest_versions . return_value = [
' 1.0 ' , ' 1.1 ' , ' 1.2 ' , ' 1.3 ' , ' 1.4 ' , ' 1.5 ' , ' 1.6 ' , ' 1.7 ' , ' 1.8 ' ,
' 1.9 ' , ' 1.10 ' , ' 1.11 ' , ' 1.12 ' , ' 1.13 ' , ' 1.14 ' , ' 1.15 ' , ' 1.16 ' ,
' 1.17 ' , ' 1.18 ' , ' 1.19 ' ]
get_voltype = " cinder.objects.volume_type.VolumeType.get_by_name_or_id "
with mock . patch ( get_voltype ) as mock_get_vol_type :
mock_get_vol_type . return_value = new_type
@ -3318,7 +3357,10 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
vol , vol_name = self . new_fake_vol ( )
new_type = fake_volume . fake_volume_type_obj ( mock_context )
self . array . get_rest_version . return_value = ' 1.17 '
self . array . _list_available_rest_versions . return_value = [
' 1.0 ' , ' 1.1 ' , ' 1.2 ' , ' 1.3 ' , ' 1.4 ' , ' 1.5 ' , ' 1.6 ' , ' 1.7 ' , ' 1.8 ' ,
' 1.9 ' , ' 1.10 ' , ' 1.11 ' , ' 1.12 ' , ' 1.13 ' , ' 1.14 ' , ' 1.15 ' , ' 1.16 ' ,
' 1.17 ' , ' 1.18 ' , ' 1.19 ' ]
get_voltype = " cinder.objects.volume_type.VolumeType.get_by_name_or_id "
with mock . patch ( get_voltype ) as mock_get_vol_type :
mock_get_vol_type . return_value = new_type
@ -3697,13 +3739,19 @@ class PureISCSIDriverTestCase(PureBaseSharedDriverTestCase):
self . mock_config . use_chap_auth = False
self . mock_config . safe_get . return_value = ' oracle-vm-server '
self . array . _list_available_rest_versions . return_value = [
' 1.0 ' , ' 1.1 ' , ' 1.2 ' , ' 1.3 ' , ' 1.4 ' , ' 1.5 ' , ' 1.6 ' , ' 1.7 ' , ' 1.8 ' ,
' 1.9 ' , ' 1.10 ' , ' 1.11 ' ]
# Branch where we fail due to invalid version for setting personality
self . assertRaises ( pure . PureDriverException , self . driver . _connect ,
self . array , vol_name , ISCSI_CONNECTOR , None , None )
self . assertFalse ( self . array . create_host . called )
self . assertFalse ( self . array . set_host . called )
self . array . get_rest_version . return_value = ' 1.14 '
self . array . _list_available_rest_versions . return_value = [
' 1.0 ' , ' 1.1 ' , ' 1.2 ' , ' 1.3 ' , ' 1.4 ' , ' 1.5 ' , ' 1.6 ' , ' 1.7 ' , ' 1.8 ' ,
' 1.9 ' , ' 1.10 ' , ' 1.11 ' , ' 1.12 ' , ' 1.13 ' , ' 1.14 ' , ' 1.15 ' , ' 1.16 ' ,
' 1.17 ' , ' 1.18 ' , ' 1.19 ' ]
# Branch where personality is set
self . driver . _connect ( self . array , vol_name , ISCSI_CONNECTOR ,
@ -3961,6 +4009,9 @@ class PureFCDriverTestCase(PureBaseSharedDriverTestCase):
self . driver . _connect , self . array , vol_name , FC_CONNECTOR )
self . mock_config . safe_get . return_value = ' oracle-vm-server '
self . array . _list_available_rest_versions . return_value = [
' 1.0 ' , ' 1.1 ' , ' 1.2 ' , ' 1.3 ' , ' 1.4 ' , ' 1.5 ' , ' 1.6 ' , ' 1.7 ' , ' 1.8 ' ,
' 1.9 ' , ' 1.10 ' , ' 1.11 ' ]
# Branch where we fail due to invalid version for setting personality
self . assertRaises ( pure . PureDriverException , self . driver . _connect ,
@ -3968,7 +4019,10 @@ class PureFCDriverTestCase(PureBaseSharedDriverTestCase):
self . assertTrue ( self . array . create_host . called )
self . assertFalse ( self . array . set_host . called )
self . array . get_rest_version . return_value = ' 1.14 '
self . array . _list_available_rest_versions . return_value = [
' 1.0 ' , ' 1.1 ' , ' 1.2 ' , ' 1.3 ' , ' 1.4 ' , ' 1.5 ' , ' 1.6 ' , ' 1.7 ' , ' 1.8 ' ,
' 1.9 ' , ' 1.10 ' , ' 1.11 ' , ' 1.12 ' , ' 1.13 ' , ' 1.14 ' , ' 1.15 ' , ' 1.16 ' ,
' 1.17 ' , ' 1.18 ' , ' 1.19 ' ]
# Branch where personality is set
self . driver . _connect ( self . array , vol_name , FC_CONNECTOR )