Add metadata as a filter condition when listing volumes

When listing volumes, the API provides metadata as a query parameter, but this feature is not implemented in the client code. So add parameter.

story: 2011487
task: 52446
Change-Id: I4bf66d4e073c86296fa96ee29c2b33d771e18293
Signed-off-by: ohjiwoo <jiwooo.oh@samsung.com>
This commit is contained in:
ohjiwoo
2025-07-02 10:15:29 +09:00
committed by Stephen Finucane
parent 88b59d8975
commit 572eeb6d38
3 changed files with 25 additions and 0 deletions

View File

@@ -1239,6 +1239,7 @@ class TestVolumeList(volume_fakes.TestVolume):
'user_id': None,
'name': None,
'status': None,
'metadata': None,
}
self.volumes_mock.list.assert_called_once_with(
search_opts=search_opts,
@@ -1282,6 +1283,7 @@ class TestVolumeList(volume_fakes.TestVolume):
'user_id': None,
'name': None,
'status': None,
'metadata': None,
}
self.volumes_mock.list.assert_called_once_with(
search_opts=search_opts,
@@ -1328,6 +1330,7 @@ class TestVolumeList(volume_fakes.TestVolume):
'user_id': None,
'name': None,
'status': None,
'metadata': None,
}
self.volumes_mock.list.assert_called_once_with(
search_opts=search_opts,
@@ -1371,6 +1374,7 @@ class TestVolumeList(volume_fakes.TestVolume):
'user_id': self.user.id,
'name': None,
'status': None,
'metadata': None,
}
self.volumes_mock.list.assert_called_once_with(
search_opts=search_opts,
@@ -1416,6 +1420,7 @@ class TestVolumeList(volume_fakes.TestVolume):
'user_id': self.user.id,
'name': None,
'status': None,
'metadata': None,
}
self.volumes_mock.list.assert_called_once_with(
search_opts=search_opts,
@@ -1459,6 +1464,7 @@ class TestVolumeList(volume_fakes.TestVolume):
'user_id': None,
'name': self.mock_volume.name,
'status': None,
'metadata': None,
}
self.volumes_mock.list.assert_called_once_with(
search_opts=search_opts,
@@ -1502,6 +1508,7 @@ class TestVolumeList(volume_fakes.TestVolume):
'user_id': None,
'name': None,
'status': self.mock_volume.status,
'metadata': None,
}
self.volumes_mock.list.assert_called_once_with(
search_opts=search_opts,
@@ -1544,6 +1551,7 @@ class TestVolumeList(volume_fakes.TestVolume):
'user_id': None,
'name': None,
'status': None,
'metadata': None,
}
self.volumes_mock.list.assert_called_once_with(
search_opts=search_opts,
@@ -1587,6 +1595,7 @@ class TestVolumeList(volume_fakes.TestVolume):
'user_id': None,
'name': None,
'status': None,
'metadata': None,
}
self.volumes_mock.list.assert_called_once_with(
search_opts=search_opts,
@@ -1660,6 +1669,7 @@ class TestVolumeList(volume_fakes.TestVolume):
'user_id': None,
'name': None,
'all_tenants': False,
'metadata': None,
},
)
self.assertCountEqual(datalist, tuple(data))
@@ -1704,6 +1714,7 @@ class TestVolumeList(volume_fakes.TestVolume):
'user_id': None,
'name': None,
'status': None,
'metadata': None,
}
self.volumes_mock.list.assert_called_once_with(
search_opts=search_opts,

View File

@@ -574,6 +574,16 @@ class ListVolume(command.Lister):
metavar='<status>',
help=_('Filter results by status'),
)
parser.add_argument(
'--property',
metavar='<key=value>',
action=parseractions.KeyValueAction,
dest='properties',
help=_(
'Filter by a property on the volume list '
'(repeat option to filter by multiple properties) '
),
)
parser.add_argument(
'--all-projects',
action='store_true',
@@ -642,6 +652,7 @@ class ListVolume(command.Lister):
'user_id': user_id,
'name': parsed_args.name,
'status': parsed_args.status,
'metadata': parsed_args.properties,
}
data = volume_client.volumes.list(

View File

@@ -0,0 +1,3 @@
---
features:
- Add ``--property`` option to ``volume list`` command to filter volumes.