Skip to content

Commit 2eea916

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Adds CLI support for glance md-object-update"
2 parents c128ae1 + 3cd5ad2 commit 2eea916

6 files changed

Lines changed: 85 additions & 1 deletion

File tree

doc/source/cli/command-objects/image-metadef.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ Image v2
3434
.. autoprogram-cliff:: openstack.image.v2
3535
:command: image metadef object delete
3636

37+
.. autoprogram-cliff:: openstack.image.v2
38+
:command: image metadef object update
39+
3740
.. autoprogram-cliff:: openstack.image.v2
3841
:command: image metadef property create
3942

doc/source/cli/data/glance.csv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ md-object-show,image metadef object show,Describe a specific metadata definition
3737
md-object-list,image metadef object list,List metadata definitions objects inside a specific namespace.
3838
md-object-delete,image metadef object delete,Delete a specific metadata definitions object inside a namespace.
3939
md-object-property-show,,Describe a specific metadata definitions property inside an object.
40-
md-object-update,,Update metadata definitions object inside a namespace.
40+
md-object-update,image metadef object update,Update metadata definitions object inside a namespace.
4141
md-property-create,image metadef property create,Create a new metadata definitions property inside a namespace.
4242
md-property-delete,image metadef property delete,Delete a specific metadata definitions property inside a namespace.
4343
md-property-list,image metadef property list,List metadata definitions properties inside a specific namespace.

openstackclient/image/v2/metadef_objects.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,3 +187,39 @@ def take_action(self, parsed_args):
187187
for md_object in md_objects
188188
),
189189
)
190+
191+
192+
class SetMetadefObject(command.Command):
193+
_description = _("Update a metadef object")
194+
195+
def get_parser(self, prog_name):
196+
parser = super().get_parser(prog_name)
197+
parser.add_argument(
198+
"namespace",
199+
metavar="<namespace>",
200+
help=_("Metadef namespace name"),
201+
)
202+
parser.add_argument(
203+
"object",
204+
metavar="<object>",
205+
help=_('Metadef object to be updated'),
206+
)
207+
parser.add_argument(
208+
"--name",
209+
help=_("New name of the object"),
210+
)
211+
return parser
212+
213+
def take_action(self, parsed_args):
214+
image_client = self.app.client_manager.image
215+
216+
object = image_client.get_metadef_object(
217+
parsed_args.object, parsed_args.namespace
218+
)
219+
kwargs = {}
220+
if parsed_args.name:
221+
kwargs['name'] = parsed_args.name
222+
223+
image_client.update_metadef_object(
224+
object, parsed_args.namespace, **kwargs
225+
)

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

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,3 +160,41 @@ def test_metadef_objects_list(self):
160160

161161
self.assertEqual(self.columns, columns)
162162
self.assertEqual(getattr(self.datalist[0], 'name'), next(data)[0])
163+
164+
165+
class TestMetadefObjectSet(fakes.TestImagev2):
166+
_metadef_namespace = fakes.create_one_metadef_namespace()
167+
_metadef_objects = fakes.create_one_metadef_object()
168+
new_metadef_object = fakes.create_one_metadef_object(
169+
attrs={'name': 'new_object_name'}
170+
)
171+
172+
def setUp(self):
173+
super().setUp()
174+
175+
self.image_client.update_metadef_object.return_value = None
176+
self.cmd = metadef_objects.SetMetadefObject(self.app, None)
177+
178+
def test_object_set_no_options(self):
179+
arglist = [
180+
self._metadef_namespace.namespace,
181+
self._metadef_objects.name,
182+
]
183+
verifylist = []
184+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
185+
result = self.cmd.take_action(parsed_args)
186+
187+
self.assertIsNone(result)
188+
189+
def test_object_set(self):
190+
arglist = [
191+
self._metadef_namespace.namespace,
192+
self._metadef_objects.name,
193+
'--name',
194+
'new_object_name',
195+
]
196+
verifylist = []
197+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
198+
result = self.cmd.take_action(parsed_args)
199+
200+
self.assertIsNone(result)
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 update`` command which
5+
updates the attributes of an object.

setup.cfg

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,8 @@ openstack.image.v2 =
403403
image_metadef_object_show = openstackclient.image.v2.metadef_objects:ShowMetadefObjects
404404
image_metadef_object_list = openstackclient.image.v2.metadef_objects:ListMetadefObjects
405405
image_metadef_object_delete = openstackclient.image.v2.metadef_objects:DeleteMetadefObject
406+
image_metadef_object_update = openstackclient.image.v2.metadef_objects:SetMetadefObject
407+
406408

407409
image_metadef_property_create = openstackclient.image.v2.metadef_properties:CreateMetadefProperty
408410
image_metadef_property_delete = openstackclient.image.v2.metadef_properties:DeleteMetadefProperty

0 commit comments

Comments
 (0)