Adding CLI command for `glance member-get
`
This patch adds a command ``image member get`` which displays a particular member associated to the image. Change-Id: I48d3151f8e204e1eb5cfff67ce1e333d1cfb9322
This commit is contained in:
parent
d09aec3459
commit
93b2e66d2d
@ -54,7 +54,7 @@ md-tag-show,,Describe a specific metadata definitions tag inside a namespace.
|
|||||||
md-tag-update,,Rename a metadata definitions tag inside a namespace.
|
md-tag-update,,Rename a metadata definitions tag inside a namespace.
|
||||||
member-create,image add project,Create member for a given image.
|
member-create,image add project,Create member for a given image.
|
||||||
member-delete,image remove project,Delete image member.
|
member-delete,image remove project,Delete image member.
|
||||||
member-get,,Show details of an image member
|
member-get,image member get,Show details of an image member
|
||||||
member-list,image member list,Describe sharing permissions by image.
|
member-list,image member list,Describe sharing permissions by image.
|
||||||
member-update,image set --accept --reject --status,Update the status of a member for a given image.
|
member-update,image set --accept --reject --status,Update the status of a member for a given image.
|
||||||
stores-delete,image delete --store,Delete image from specific store.
|
stores-delete,image delete --store,Delete image from specific store.
|
||||||
|
|
@ -992,6 +992,43 @@ class RemoveProjectImage(command.Command):
|
|||||||
image_client.remove_member(member=project_id, image=image.id)
|
image_client.remove_member(member=project_id, image=image.id)
|
||||||
|
|
||||||
|
|
||||||
|
class ShowProjectImage(command.ShowOne):
|
||||||
|
_description = _("Show a particular project associated with image")
|
||||||
|
|
||||||
|
def get_parser(self, prog_name):
|
||||||
|
parser = super().get_parser(prog_name)
|
||||||
|
parser.add_argument(
|
||||||
|
"image",
|
||||||
|
metavar="<image>",
|
||||||
|
help=_("Image (name or ID)"),
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"member",
|
||||||
|
metavar="<project>",
|
||||||
|
help=_("Project to show (name or ID)"),
|
||||||
|
)
|
||||||
|
identity_common.add_project_domain_option_to_parser(parser)
|
||||||
|
return parser
|
||||||
|
|
||||||
|
def take_action(self, parsed_args):
|
||||||
|
image_client = self.app.client_manager.image
|
||||||
|
|
||||||
|
image = image_client.find_image(
|
||||||
|
parsed_args.image,
|
||||||
|
ignore_missing=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
obj = image_client.get_member(
|
||||||
|
image=image.id,
|
||||||
|
member=parsed_args.member,
|
||||||
|
)
|
||||||
|
|
||||||
|
display_columns, columns = _get_member_columns(obj)
|
||||||
|
data = utils.get_item_properties(obj, columns, formatters={})
|
||||||
|
|
||||||
|
return (display_columns, data)
|
||||||
|
|
||||||
|
|
||||||
class SaveImage(command.Command):
|
class SaveImage(command.Command):
|
||||||
_description = _("Save an image locally")
|
_description = _("Save an image locally")
|
||||||
|
|
||||||
|
@ -1093,6 +1093,66 @@ class TestRemoveProjectImage(TestImage):
|
|||||||
self.assertIsNone(result)
|
self.assertIsNone(result)
|
||||||
|
|
||||||
|
|
||||||
|
class TestShowProjectImage(TestImage):
|
||||||
|
_image = image_fakes.create_one_image()
|
||||||
|
new_member = image_fakes.create_one_image_member(
|
||||||
|
attrs={'image_id': _image.id, 'member_id': 'member1'}
|
||||||
|
)
|
||||||
|
|
||||||
|
columns = (
|
||||||
|
'created_at',
|
||||||
|
'image_id',
|
||||||
|
'member_id',
|
||||||
|
'schema',
|
||||||
|
'status',
|
||||||
|
'updated_at',
|
||||||
|
)
|
||||||
|
|
||||||
|
datalist = (
|
||||||
|
new_member.created_at,
|
||||||
|
_image.id,
|
||||||
|
new_member.member_id,
|
||||||
|
new_member.schema,
|
||||||
|
new_member.status,
|
||||||
|
new_member.updated_at,
|
||||||
|
)
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super().setUp()
|
||||||
|
|
||||||
|
# This is the return value for utils.find_resource()
|
||||||
|
self.image_client.find_image.return_value = self._image
|
||||||
|
|
||||||
|
self.image_client.get_member.return_value = self.new_member
|
||||||
|
# Get the command object to test
|
||||||
|
self.cmd = _image.ShowProjectImage(self.app, None)
|
||||||
|
|
||||||
|
def test_show_project_image(self):
|
||||||
|
arglist = [
|
||||||
|
self._image.id,
|
||||||
|
'member1',
|
||||||
|
]
|
||||||
|
verifylist = [
|
||||||
|
('image', self._image.id),
|
||||||
|
('member', 'member1'),
|
||||||
|
]
|
||||||
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
|
columns, data = self.cmd.take_action(parsed_args)
|
||||||
|
|
||||||
|
self.image_client.find_image.assert_called_with(
|
||||||
|
self._image.id, ignore_missing=False
|
||||||
|
)
|
||||||
|
|
||||||
|
self.image_client.get_member.assert_called_with(
|
||||||
|
member='member1',
|
||||||
|
image=self._image.id,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(self.columns, columns)
|
||||||
|
self.assertEqual(self.datalist, data)
|
||||||
|
|
||||||
|
|
||||||
class TestImageSet(TestImage):
|
class TestImageSet(TestImage):
|
||||||
project = identity_fakes.FakeProject.create_one_project()
|
project = identity_fakes.FakeProject.create_one_project()
|
||||||
domain = identity_fakes.FakeDomain.create_one_domain()
|
domain = identity_fakes.FakeDomain.create_one_domain()
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Add ``image member get`` command which accepts an
|
||||||
|
image_id and member_id and displays the detail of
|
||||||
|
the particular meber associated to the image.
|
@ -379,6 +379,7 @@ openstack.image.v2 =
|
|||||||
image_list = openstackclient.image.v2.image:ListImage
|
image_list = openstackclient.image.v2.image:ListImage
|
||||||
image_member_list = openstackclient.image.v2.image:ListImageProjects
|
image_member_list = openstackclient.image.v2.image:ListImageProjects
|
||||||
image_remove_project = openstackclient.image.v2.image:RemoveProjectImage
|
image_remove_project = openstackclient.image.v2.image:RemoveProjectImage
|
||||||
|
image_member_get = openstackclient.image.v2.image:ShowProjectImage
|
||||||
image_save = openstackclient.image.v2.image:SaveImage
|
image_save = openstackclient.image.v2.image:SaveImage
|
||||||
image_show = openstackclient.image.v2.image:ShowImage
|
image_show = openstackclient.image.v2.image:ShowImage
|
||||||
image_set = openstackclient.image.v2.image:SetImage
|
image_set = openstackclient.image.v2.image:SetImage
|
||||||
|
Loading…
x
Reference in New Issue
Block a user