@@ -46,6 +46,9 @@ def setUp(self):
4646 self .snapshots_mock = self .app .client_manager .volume .volume_snapshots
4747 self .snapshots_mock .reset_mock ()
4848
49+ self .types_mock = self .app .client_manager .volume .volume_types
50+ self .types_mock .reset_mock ()
51+
4952 self .consistencygroups_mock = (
5053 self .app .client_manager .volume .consistencygroups )
5154 self .consistencygroups_mock .reset_mock ()
@@ -1088,11 +1091,14 @@ def test_volume_migrate_without_host(self):
10881091
10891092class TestVolumeSet (TestVolume ):
10901093
1094+ volume_type = volume_fakes .FakeType .create_one_type ()
1095+
10911096 def setUp (self ):
10921097 super (TestVolumeSet , self ).setUp ()
10931098
10941099 self .new_volume = volume_fakes .FakeVolume .create_one_volume ()
10951100 self .volumes_mock .get .return_value = self .new_volume
1101+ self .types_mock .get .return_value = self .volume_type
10961102
10971103 # Get the command object to test
10981104 self .cmd = volume .SetVolume (self .app , None )
@@ -1221,6 +1227,66 @@ def test_volume_set_read_write(self):
12211227 False )
12221228 self .assertIsNone (result )
12231229
1230+ def test_volume_set_type (self ):
1231+ arglist = [
1232+ '--type' , self .volume_type .id ,
1233+ self .new_volume .id
1234+ ]
1235+ verifylist = [
1236+ ('retype_policy' , None ),
1237+ ('type' , self .volume_type .id ),
1238+ ('volume' , self .new_volume .id )
1239+ ]
1240+
1241+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
1242+
1243+ result = self .cmd .take_action (parsed_args )
1244+ self .volumes_mock .retype .assert_called_once_with (
1245+ self .new_volume .id ,
1246+ self .volume_type .id ,
1247+ 'never' )
1248+ self .assertIsNone (result )
1249+
1250+ def test_volume_set_type_with_policy (self ):
1251+ arglist = [
1252+ '--retype-policy' , 'on-demand' ,
1253+ '--type' , self .volume_type .id ,
1254+ self .new_volume .id
1255+ ]
1256+ verifylist = [
1257+ ('retype_policy' , 'on-demand' ),
1258+ ('type' , self .volume_type .id ),
1259+ ('volume' , self .new_volume .id )
1260+ ]
1261+
1262+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
1263+
1264+ result = self .cmd .take_action (parsed_args )
1265+ self .volumes_mock .retype .assert_called_once_with (
1266+ self .new_volume .id ,
1267+ self .volume_type .id ,
1268+ 'on-demand' )
1269+ self .assertIsNone (result )
1270+
1271+ @mock .patch .object (volume .LOG , 'warning' )
1272+ def test_volume_set_with_only_retype_policy (self , mock_warning ):
1273+ arglist = [
1274+ '--retype-policy' , 'on-demand' ,
1275+ self .new_volume .id
1276+ ]
1277+ verifylist = [
1278+ ('retype_policy' , 'on-demand' ),
1279+ ('volume' , self .new_volume .id )
1280+ ]
1281+
1282+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
1283+
1284+ result = self .cmd .take_action (parsed_args )
1285+ self .volumes_mock .retype .assert_not_called ()
1286+ mock_warning .assert_called_with ("'--retype-policy' option will "
1287+ "not work without '--type' option" )
1288+ self .assertIsNone (result )
1289+
12241290
12251291class TestVolumeShow (TestVolume ):
12261292
0 commit comments