Merge "Add support to list image members"
This commit is contained in:
commit
972a345014
@ -266,6 +266,22 @@ List available images
|
||||
|
||||
*Image version 2 only*
|
||||
|
||||
image member list
|
||||
-----------------
|
||||
|
||||
List projects associated with image
|
||||
|
||||
.. program:: image member list
|
||||
.. code:: bash
|
||||
|
||||
openstack image member list
|
||||
<image>
|
||||
|
||||
.. _image_member_list-image:
|
||||
.. describe:: <image>
|
||||
|
||||
Image(s) to view members for (name or ID)
|
||||
|
||||
image remove project
|
||||
--------------------
|
||||
|
||||
|
@ -104,6 +104,7 @@ referring to both Compute and Volume quotas.
|
||||
* ``hypervisor stats``: (**Compute**) hypervisor statistics over all compute nodes
|
||||
* ``identity provider``: (**Identity**) a source of users and authentication
|
||||
* ``image``: (**Image**) a disk image
|
||||
* ``image member``: (**Image**) a project that is a member of an Image
|
||||
* ``ip availability``: (**Network**) - details of IP usage of a network
|
||||
* ``ip fixed``: (**Compute**, **Network**) - an internal IP address assigned to a server
|
||||
* ``ip floating``: (**Compute**, **Network**) - a public IP address that can be mapped to a server
|
||||
|
@ -591,6 +591,39 @@ class ListImage(command.Lister):
|
||||
)
|
||||
|
||||
|
||||
class ListImageProjects(command.Lister):
|
||||
_description = _("List projects associated with image")
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = super(ListImageProjects, self).get_parser(prog_name)
|
||||
parser.add_argument(
|
||||
"image",
|
||||
metavar="<image>",
|
||||
help=_("Image (name or ID)"),
|
||||
)
|
||||
common.add_project_domain_option_to_parser(parser)
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
image_client = self.app.client_manager.image
|
||||
columns = (
|
||||
"Image ID",
|
||||
"Member ID",
|
||||
"Status"
|
||||
)
|
||||
|
||||
image_id = utils.find_resource(
|
||||
image_client.images,
|
||||
parsed_args.image).id
|
||||
|
||||
data = image_client.image_members.list(image_id)
|
||||
|
||||
return (columns,
|
||||
(utils.get_item_properties(
|
||||
s, columns,
|
||||
) for s in data))
|
||||
|
||||
|
||||
class RemoveProjectImage(command.Command):
|
||||
_description = _("Disassociate project with image")
|
||||
|
||||
|
@ -780,6 +780,52 @@ class TestImageList(TestImage):
|
||||
)
|
||||
|
||||
|
||||
class TestListImageProjects(TestImage):
|
||||
|
||||
project = identity_fakes.FakeProject.create_one_project()
|
||||
_image = image_fakes.FakeImage.create_one_image()
|
||||
member = image_fakes.FakeImage.create_one_image_member(
|
||||
attrs={'image_id': _image.id,
|
||||
'member_id': project.id}
|
||||
)
|
||||
|
||||
columns = (
|
||||
"Image ID",
|
||||
"Member ID",
|
||||
"Status"
|
||||
)
|
||||
|
||||
datalist = ((
|
||||
_image.id,
|
||||
member.member_id,
|
||||
member.status,
|
||||
))
|
||||
|
||||
def setUp(self):
|
||||
super(TestListImageProjects, self).setUp()
|
||||
|
||||
self.images_mock.get.return_value = self._image
|
||||
self.image_members_mock.list.return_value = self.datalist
|
||||
|
||||
self.cmd = image.ListImageProjects(self.app, None)
|
||||
|
||||
def test_image_member_list(self):
|
||||
arglist = [
|
||||
self._image.id
|
||||
]
|
||||
verifylist = [
|
||||
('image', self._image.id)
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.image_members_mock.list.assert_called_with(self._image.id)
|
||||
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(len(self.datalist), len(tuple(data)))
|
||||
|
||||
|
||||
class TestRemoveProjectImage(TestImage):
|
||||
|
||||
project = identity_fakes.FakeProject.create_one_project()
|
||||
|
@ -0,0 +1,4 @@
|
||||
---
|
||||
features:
|
||||
- The OpenStack client now has the ability to list all members of an image
|
||||
in order to faciliate management of member projects for images.
|
@ -353,6 +353,7 @@ openstack.image.v2 =
|
||||
image_create = openstackclient.image.v2.image:CreateImage
|
||||
image_delete = openstackclient.image.v2.image:DeleteImage
|
||||
image_list = openstackclient.image.v2.image:ListImage
|
||||
image_member_list = openstackclient.image.v2.image:ListImageProjects
|
||||
image_remove_project = openstackclient.image.v2.image:RemoveProjectImage
|
||||
image_save = openstackclient.image.v2.image:SaveImage
|
||||
image_show = openstackclient.image.v2.image:ShowImage
|
||||
|
Loading…
Reference in New Issue
Block a user