Skip to content

Commit 5fb922e

Browse files
Add "image metadef property list" command.
Depends-On: https://review.opendev.org/c/openstack/openstacksdk/+/857727 Change-Id: I8f6692e779c4721225052d348b4b947a545bd6c0
1 parent 53e7d71 commit 5fb922e

6 files changed

Lines changed: 111 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
@@ -40,7 +40,7 @@ md-object-show,,Describe a specific metadata definitions object inside a namespa
4040
md-object-update,,Update metadata definitions object inside a namespace.
4141
md-property-create,,Create a new metadata definitions property inside a namespace.
4242
md-property-delete,,Delete a specific metadata definitions property inside a namespace.
43-
md-property-list,,List metadata definitions properties inside a specific namespace.
43+
md-property-list,image metadef property list,List metadata definitions properties inside a specific namespace.
4444
md-property-show,,Describe a specific metadata definitions property inside a namespace.
4545
md-property-update,,Update metadata definitions property inside a namespace.
4646
md-resource-type-associate,,Associate resource type with a metadata definitions namespace.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Copyright 2023 Red Hat, Inc.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License"); you may
4+
# not use this file except in compliance with the License. You may obtain
5+
# a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12+
# License for the specific language governing permissions and limitations
13+
# under the License.
14+
15+
from osc_lib.command import command
16+
from osc_lib import utils
17+
18+
from openstackclient.i18n import _
19+
20+
21+
class ListMetadefProperties(command.Lister):
22+
_description = _("List metadef properties")
23+
24+
def get_parser(self, prog_name):
25+
parser = super().get_parser(prog_name)
26+
parser.add_argument(
27+
"namespace_name",
28+
metavar="<namespace_name>",
29+
help=_("An identifier (a name) for the namespace"),
30+
)
31+
return parser
32+
33+
def take_action(self, parsed_args):
34+
image_client = self.app.client_manager.image
35+
props = image_client.metadef_properties(parsed_args.namespace_name)
36+
columns = ['name', 'title', 'type']
37+
return (
38+
columns,
39+
(
40+
utils.get_item_properties(
41+
prop,
42+
columns,
43+
)
44+
for prop in props
45+
),
46+
)

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from openstack.image.v2 import image
2121
from openstack.image.v2 import member
2222
from openstack.image.v2 import metadef_namespace
23+
from openstack.image.v2 import metadef_property
2324
from openstack.image.v2 import metadef_resource_type
2425
from openstack.image.v2 import service_info as _service_info
2526
from openstack.image.v2 import task
@@ -263,6 +264,20 @@ def create_one_metadef_namespace(attrs=None):
263264
return metadef_namespace.MetadefNamespace(**metadef_namespace_list)
264265

265266

267+
def create_one_metadef_property(attrs=None):
268+
attrs = attrs or {}
269+
270+
metadef_property_list = {
271+
'name': 'cpu_cores',
272+
'title': 'vCPU Cores',
273+
'type': 'integer',
274+
}
275+
276+
# Overwrite default attributes if there are some attributes set
277+
metadef_property_list.update(attrs)
278+
return metadef_property.MetadefProperty(**metadef_property_list)
279+
280+
266281
def create_one_resource_type(attrs=None):
267282
"""Create a fake MetadefResourceType member.
268283
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Copyright 2023 Red Hat, Inc.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License"); you may
4+
# not use this file except in compliance with the License. You may obtain
5+
# a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12+
# License for the specific language governing permissions and limitations
13+
# under the License.
14+
15+
from openstackclient.image.v2 import metadef_properties
16+
from openstackclient.tests.unit.image.v2 import fakes as image_fakes
17+
18+
19+
class TestMetadefPropertyList(image_fakes.TestImagev2):
20+
_metadef_property = [image_fakes.create_one_metadef_property()]
21+
22+
columns = ['name', 'title', 'type']
23+
24+
def setUp(self):
25+
super().setUp()
26+
27+
self.image_client.metadef_properties.side_effect = [
28+
self._metadef_property,
29+
[],
30+
]
31+
32+
self.cmd = metadef_properties.ListMetadefProperties(self.app, None)
33+
self.datalist = self._metadef_property
34+
35+
def test_metadef_property_list(self):
36+
arglist = ['my-namespace']
37+
parsed_args = self.check_parser(self.cmd, arglist, [])
38+
39+
columns, data = self.cmd.take_action(parsed_args)
40+
41+
self.assertEqual(self.columns, columns)
42+
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 property list`` command to list the
5+
metadata definitions properties inside a specific namespace.

setup.cfg

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,8 @@ 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+
image_metadef_property_list = openstackclient.image.v2.metadef_properties:ListMetadefProperties
401+
400402
image_metadef_resource_type_list = openstackclient.image.v2.metadef_resource_types:ListMetadefResourceTypes
401403

402404
openstack.network.v2 =

0 commit comments

Comments
 (0)