Skip to content

Commit 1ac5d63

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Adds command image metadef object list"
2 parents 8aee1a2 + 4bb6efa commit 1ac5d63

5 files changed

Lines changed: 76 additions & 1 deletion

File tree

doc/source/cli/data/glance.csv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ md-namespace-tags-delete,,Delete all metadata definitions tags inside a specific
3434
md-namespace-update,,Update an existing metadata definitions namespace.
3535
md-object-create,image metadef object create,Create a new metadata definitions object inside a namespace.
3636
md-object-delete,,Delete a specific metadata definitions object inside a namespace.
37-
md-object-list,,List metadata definitions objects inside a specific namespace.
37+
md-object-list,image metadef object list,List metadata definitions objects inside a specific namespace.
3838
md-object-property-show,,Describe a specific metadata definitions property inside an object.
3939
md-object-show,image metadef object show,Describe a specific metadata definitions object inside a namespace.
4040
md-object-update,,Update metadata definitions object inside a namespace.

openstackclient/image/v2/metadef_objects.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,35 @@ def take_action(self, parsed_args):
105105
fields, value = _format_object(data)
106106

107107
return fields, value
108+
109+
110+
class ListMetadefObjects(command.Lister):
111+
_description = _("List metadef objects inside a specific namespace.")
112+
113+
def get_parser(self, prog_name):
114+
parser = super().get_parser(prog_name)
115+
parser.add_argument(
116+
"namespace",
117+
metavar="<namespace>",
118+
help=_("Namespace (name) for the namespace"),
119+
)
120+
return parser
121+
122+
def take_action(self, parsed_args):
123+
image_client = self.app.client_manager.image
124+
125+
namespace_name = parsed_args.namespace
126+
columns = ['name', 'description']
127+
128+
md_objects = list(image_client.metadef_objects(namespace_name))
129+
column_headers = columns
130+
return (
131+
column_headers,
132+
(
133+
utils.get_item_properties(
134+
md_object,
135+
columns,
136+
)
137+
for md_object in md_objects
138+
),
139+
)

openstackclient/tests/unit/image/v2/test_metadef_objects.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,38 @@ def test_object_show(self):
102102

103103
self.assertEqual(self.expected_columns, columns)
104104
self.assertEqual(self.expected_data, data)
105+
106+
107+
class TestMetadefObjectList(fakes.TestImagev2):
108+
_metadef_namespace = fakes.create_one_metadef_namespace()
109+
_metadef_objects = [fakes.create_one_metadef_object()]
110+
columns = ['name', 'description']
111+
112+
datalist = []
113+
114+
def setUp(self):
115+
super().setUp()
116+
117+
self.image_client.metadef_objects.side_effect = [
118+
self._metadef_objects,
119+
[],
120+
]
121+
122+
# Get the command object to test
123+
self.image_client.metadef_objects.return_value = iter(
124+
self._metadef_objects
125+
)
126+
self.cmd = metadef_objects.ListMetadefObjects(self.app, None)
127+
self.datalist = self._metadef_objects
128+
129+
def test_metadef_objects_list(self):
130+
arglist = [self._metadef_namespace.namespace]
131+
parsed_args = self.check_parser(self.cmd, arglist, [])
132+
133+
# In base command class Lister in cliff, abstract method take_action()
134+
# returns a tuple containing the column names and an iterable
135+
# containing the data to be listed.
136+
columns, data = self.cmd.take_action(parsed_args)
137+
138+
self.assertEqual(self.columns, columns)
139+
self.assertEqual(getattr(self.datalist[0], 'name'), next(data)[0])
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
features:
3+
- |
4+
Add ``image metadef object list`` command to list the
5+
metadata definitions objects inside a specific namespace

setup.cfg

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,8 +397,11 @@ openstack.image.v2 =
397397
image_metadef_namespace_set = openstackclient.image.v2.metadef_namespaces:SetMetadefNameSpace
398398
image_metadef_namespace_show = openstackclient.image.v2.metadef_namespaces:ShowMetadefNameSpace
399399

400+
400401
image_metadef_object_create = openstackclient.image.v2.metadef_objects:CreateMetadefObjects
401402
image_metadef_object_show = openstackclient.image.v2.metadef_objects:ShowMetadefObjects
403+
image_metadef_object_list = openstackclient.image.v2.metadef_objects:ListMetadefObjects
404+
402405

403406
image_metadef_property_create = openstackclient.image.v2.metadef_properties:CreateMetadefProperty
404407
image_metadef_property_delete = openstackclient.image.v2.metadef_properties:DeleteMetadefProperty

0 commit comments

Comments
 (0)