diff --git a/openstackclient/tests/volume/v1/fakes.py b/openstackclient/tests/volume/v1/fakes.py index d6ef0d399e..3567eca507 100644 --- a/openstackclient/tests/volume/v1/fakes.py +++ b/openstackclient/tests/volume/v1/fakes.py @@ -24,7 +24,14 @@ volume_id = 'vvvvvvvv-vvvv-vvvv-vvvvvvvv' volume_name = 'nigel' volume_description = 'Nigel Tufnel' volume_size = 120 -volume_metadata = {} +volume_type = 'to-eleven' +volume_zone = 'stonehenge' +volume_metadata = { + 'Alpha': 'a', + 'Beta': 'b', + 'Gamma': 'g', +} +volume_metadata_str = "Alpha='a', Beta='b', Gamma='g'" VOLUME = { 'id': volume_id, @@ -33,6 +40,8 @@ VOLUME = { 'size': volume_size, 'status': '', 'attach_status': 'detached', + 'availability_zone': volume_zone, + 'volume_type': volume_type, 'metadata': volume_metadata, } diff --git a/openstackclient/tests/volume/v1/test_volume.py b/openstackclient/tests/volume/v1/test_volume.py index 554e2b2a36..d881598af3 100644 --- a/openstackclient/tests/volume/v1/test_volume.py +++ b/openstackclient/tests/volume/v1/test_volume.py @@ -71,10 +71,6 @@ class TestVolumeCreate(TestVolume): # DisplayCommandBase.take_action() returns two tuples columns, data = self.cmd.take_action(parsed_args) - # Set expected values - #kwargs = { - # 'metadata': volume_fakes.volume_metadata, - #} # VolumeManager.create(size, snapshot_id=, source_volid=, # display_name=, display_description=, # volume_type=, user_id=, @@ -96,22 +92,90 @@ class TestVolumeCreate(TestVolume): collist = ( 'attach_status', + 'availability_zone', 'display_description', 'display_name', 'id', 'properties', 'size', 'status', + 'type', ) self.assertEqual(columns, collist) datalist = ( 'detached', + volume_fakes.volume_zone, volume_fakes.volume_description, volume_fakes.volume_name, volume_fakes.volume_id, - '', + volume_fakes.volume_metadata_str, volume_fakes.volume_size, '', + volume_fakes.volume_type, + ) + self.assertEqual(data, datalist) + + def test_volume_create_options(self): + arglist = [ + '--size', str(volume_fakes.volume_size), + '--description', volume_fakes.volume_description, + '--type', volume_fakes.volume_type, + '--availability-zone', volume_fakes.volume_zone, + volume_fakes.volume_name, + ] + verifylist = [ + ('size', volume_fakes.volume_size), + ('description', volume_fakes.volume_description), + ('type', volume_fakes.volume_type), + ('availability_zone', volume_fakes.volume_zone), + ('name', volume_fakes.volume_name), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + # DisplayCommandBase.take_action() returns two tuples + columns, data = self.cmd.take_action(parsed_args) + + # VolumeManager.create(size, snapshot_id=, source_volid=, + # display_name=, display_description=, + # volume_type=, user_id=, + # project_id=, availability_zone=, + # metadata=, imageRef=) + self.volumes_mock.create.assert_called_with( + volume_fakes.volume_size, + None, + None, + volume_fakes.volume_name, + volume_fakes.volume_description, + volume_fakes.volume_type, + None, + None, + volume_fakes.volume_zone, + None, + None, + ) + + collist = ( + 'attach_status', + 'availability_zone', + 'display_description', + 'display_name', + 'id', + 'properties', + 'size', + 'status', + 'type', + ) + self.assertEqual(columns, collist) + datalist = ( + 'detached', + volume_fakes.volume_zone, + volume_fakes.volume_description, + volume_fakes.volume_name, + volume_fakes.volume_id, + volume_fakes.volume_metadata_str, + volume_fakes.volume_size, + '', + volume_fakes.volume_type, ) self.assertEqual(data, datalist) @@ -146,10 +210,6 @@ class TestVolumeCreate(TestVolume): # DisplayCommandBase.take_action() returns two tuples columns, data = self.cmd.take_action(parsed_args) - # Set expected values - #kwargs = { - # 'metadata': volume_fakes.volume_metadata, - #} # VolumeManager.create(size, snapshot_id=, source_volid=, # display_name=, display_description=, # volume_type=, user_id=, @@ -172,22 +232,26 @@ class TestVolumeCreate(TestVolume): collist = ( 'attach_status', + 'availability_zone', 'display_description', 'display_name', 'id', 'properties', 'size', 'status', + 'type', ) self.assertEqual(columns, collist) datalist = ( 'detached', + volume_fakes.volume_zone, volume_fakes.volume_description, volume_fakes.volume_name, volume_fakes.volume_id, - '', + volume_fakes.volume_metadata_str, volume_fakes.volume_size, '', + volume_fakes.volume_type, ) self.assertEqual(data, datalist) @@ -222,10 +286,6 @@ class TestVolumeCreate(TestVolume): # DisplayCommandBase.take_action() returns two tuples columns, data = self.cmd.take_action(parsed_args) - # Set expected values - #kwargs = { - # 'metadata': volume_fakes.volume_metadata, - #} # VolumeManager.create(size, snapshot_id=, source_volid=, # display_name=, display_description=, # volume_type=, user_id=, @@ -248,21 +308,86 @@ class TestVolumeCreate(TestVolume): collist = ( 'attach_status', + 'availability_zone', 'display_description', 'display_name', 'id', 'properties', 'size', 'status', + 'type', ) self.assertEqual(columns, collist) datalist = ( 'detached', + volume_fakes.volume_zone, volume_fakes.volume_description, volume_fakes.volume_name, volume_fakes.volume_id, - '', + volume_fakes.volume_metadata_str, volume_fakes.volume_size, '', + volume_fakes.volume_type, + ) + self.assertEqual(data, datalist) + + def test_volume_create_properties(self): + arglist = [ + '--property', 'Alpha=a', + '--property', 'Beta=b', + '--size', str(volume_fakes.volume_size), + volume_fakes.volume_name, + ] + verifylist = [ + ('property', {'Alpha': 'a', 'Beta': 'b'}), + ('size', volume_fakes.volume_size), + ('name', volume_fakes.volume_name), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + # DisplayCommandBase.take_action() returns two tuples + columns, data = self.cmd.take_action(parsed_args) + + # VolumeManager.create(size, snapshot_id=, source_volid=, + # display_name=, display_description=, + # volume_type=, user_id=, + # project_id=, availability_zone=, + # metadata=, imageRef=) + self.volumes_mock.create.assert_called_with( + volume_fakes.volume_size, + None, + None, + volume_fakes.volume_name, + None, + None, + None, + None, + None, + {'Alpha': 'a', 'Beta': 'b'}, + None, + ) + + collist = ( + 'attach_status', + 'availability_zone', + 'display_description', + 'display_name', + 'id', + 'properties', + 'size', + 'status', + 'type', + ) + self.assertEqual(columns, collist) + datalist = ( + 'detached', + volume_fakes.volume_zone, + volume_fakes.volume_description, + volume_fakes.volume_name, + volume_fakes.volume_id, + volume_fakes.volume_metadata_str, + volume_fakes.volume_size, + '', + volume_fakes.volume_type, ) self.assertEqual(data, datalist) diff --git a/openstackclient/volume/v1/volume.py b/openstackclient/volume/v1/volume.py index 928ed76be0..cad53eb111 100644 --- a/openstackclient/volume/v1/volume.py +++ b/openstackclient/volume/v1/volume.py @@ -56,7 +56,7 @@ class CreateVolume(show.ShowOne): help='Description of the volume', ) parser.add_argument( - '--volume-type', + '--type', metavar='', help='Type of volume', ) @@ -124,7 +124,7 @@ class CreateVolume(show.ShowOne): source_volume, parsed_args.name, parsed_args.description, - parsed_args.volume_type, + parsed_args.type, user, project, parsed_args.availability_zone, @@ -133,7 +133,10 @@ class CreateVolume(show.ShowOne): ) # Map 'metadata' column to 'properties' volume._info.update( - {'properties': utils.format_dict(volume._info.pop('metadata'))} + { + 'properties': utils.format_dict(volume._info.pop('metadata')), + 'type': volume._info.pop('volume_type'), + }, ) return zip(*sorted(six.iteritems(volume._info))) @@ -331,7 +334,10 @@ class ShowVolume(show.ShowOne): volume = utils.find_resource(volume_client.volumes, parsed_args.volume) # Map 'metadata' column to 'properties' volume._info.update( - {'properties': utils.format_dict(volume._info.pop('metadata'))} + { + 'properties': utils.format_dict(volume._info.pop('metadata')), + 'type': volume._info.pop('volume_type'), + }, ) if 'os-vol-tenant-attr:tenant_id' in volume._info: volume._info.update(