Allow user to list all volumes

One sub-command 'rsd volume list' has been added, which allow user
to list all volumes of one storage service and return the brief info.

Change-Id: Icbff783dbc738e503eca4fa7c2d68874073e89d7
This commit is contained in:
Lin Yang 2018-06-06 17:41:13 -07:00
parent 9df5bd1dcc
commit af84737f1b
4 changed files with 43 additions and 0 deletions

View File

@ -50,3 +50,25 @@ class ShowStorageServices(command.Command):
storage_detail = rsd_client.storage_service.show(
parsed_args.storageservice)
print("{0}".format(json.dumps(storage_detail, indent=2)))
class ListVolumes(command.Command):
"""List all volumes of one storage service."""
_description = "List all volumes of one storage service"
def get_parser(self, prog_name):
parser = super(ListVolumes, self).get_parser(prog_name)
parser.add_argument(
'storageservice',
metavar='<storage service>',
help='ID of the storage service.')
return parser
def take_action(self, parsed_args):
self.log.debug("take_action(%s)", parsed_args)
rsd_client = self.app.client_manager.rsd
volume_list = rsd_client.storage_service.list_volume(
parsed_args.storageservice)
print(volume_list)

View File

@ -63,3 +63,13 @@ class StorageServiceTest(testtools.TestCase):
self.assertEqual(result, expected)
self.mgr.client.get_storage_service.assert_called_once_with(
'/redfish/v1/StorageServices/1-sv-1')
def test_list_volume(self):
mock_sorage = mock.Mock()
self.client.get_storage_service.return_value = mock_sorage
mock_sorage.volumes.get_members.return_value = ()
self.mgr.list_volume('/redfish/v1/StorageServices/1-sv-1')
self.mgr.client.get_storage_service.assert_called_once_with(
'/redfish/v1/StorageServices/1-sv-1')
mock_sorage.volumes.get_members.assert_called_once()

View File

@ -51,3 +51,13 @@ class StorageServiceManager(base.Manager):
for item in storage.logical_drives.get_members()]
return storage_dict
def list_volume(self, storage_uri):
storage = self.client.get_storage_service(storage_uri)
volume_collection = storage.volumes.get_members()
storages = [utils.extract_attr(volume)
for volume in volume_collection]
volume_info_table = utils.print_dict(
storages, ["Identity", "Name", "Description"])
return volume_info_table

View File

@ -39,6 +39,7 @@ openstack.rsd.v1 =
rsd_storage_list = rsdclient.osc.v1.storage_service:ListStorageServices
rsd_storage_show = rsdclient.osc.v1.storage_service:ShowStorageServices
rsd_storage_volume_list = rsdclient.osc.v1.storage_service:ListVolumes
rsd_fabric_list = rsdclient.osc.v1.fabric:ListFabric
rsd_fabric_show = rsdclient.osc.v1.fabric:ShowFabric