Adding CLI command for ``glance member-get`` · openstack/python-openstackclient@93b2e66 · GitHub
Skip to content

Commit 93b2e66

Browse files
author
Mridula Joshi
committed
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
1 parent d09aec3 commit 93b2e66

5 files changed

Lines changed: 105 additions & 1 deletion

File tree

doc/source/cli/data/glance.csv

Lines changed: 1 addition & 1 deletion

openstackclient/image/v2/image.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -992,6 +992,43 @@ def take_action(self, parsed_args):
992992
image_client.remove_member(member=project_id, image=image.id)
993993

994994

995+
class ShowProjectImage(command.ShowOne):
996+
_description = _("Show a particular project associated with image")
997+
998+
def get_parser(self, prog_name):
999+
parser = super().get_parser(prog_name)
1000+
parser.add_argument(
1001+
"image",
1002+
metavar="<image>",
1003+
help=_("Image (name or ID)"),
1004+
)
1005+
parser.add_argument(
1006+
"member",
1007+
metavar="<project>",
1008+
help=_("Project to show (name or ID)"),
1009+
)
1010+
identity_common.add_project_domain_option_to_parser(parser)
1011+
return parser
1012+
1013+
def take_action(self, parsed_args):
1014+
image_client = self.app.client_manager.image
1015+
1016+
image = image_client.find_image(
1017+
parsed_args.image,
1018+
ignore_missing=False,
1019+
)
1020+
1021+
obj = image_client.get_member(
1022+
image=image.id,
1023+
member=parsed_args.member,
1024+
)
1025+
1026+
display_columns, columns = _get_member_columns(obj)
1027+
data = utils.get_item_properties(obj, columns, formatters={})
1028+
1029+
return (display_columns, data)
1030+
1031+
9951032
class SaveImage(command.Command):
9961033
_description = _("Save an image locally")
9971034

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

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1093,6 +1093,66 @@ def test_remove_project_image_with_options(self):
10931093
self.assertIsNone(result)
10941094

10951095

1096+
class TestShowProjectImage(TestImage):
1097+
_image = image_fakes.create_one_image()
1098+
new_member = image_fakes.create_one_image_member(
1099+
attrs={'image_id': _image.id, 'member_id': 'member1'}
1100+
)
1101+
1102+
columns = (
1103+
'created_at',
1104+
'image_id',
1105+
'member_id',
1106+
'schema',
1107+
'status',
1108+
'updated_at',
1109+
)
1110+
1111+
datalist = (
1112+
new_member.created_at,
1113+
_image.id,
1114+
new_member.member_id,
1115+
new_member.schema,
1116+
new_member.status,
1117+
new_member.updated_at,
1118+
)
1119+
1120+
def setUp(self):
1121+
super().setUp()
1122+
1123+
# This is the return value for utils.find_resource()
1124+
self.image_client.find_image.return_value = self._image
1125+
1126+
self.image_client.get_member.return_value = self.new_member
1127+
# Get the command object to test
1128+
self.cmd = _image.ShowProjectImage(self.app, None)
1129+
1130+
def test_show_project_image(self):
1131+
arglist = [
1132+
self._image.id,
1133+
'member1',
1134+
]
1135+
verifylist = [
1136+
('image', self._image.id),
1137+
('member', 'member1'),
1138+
]
1139+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1140+
1141+
columns, data = self.cmd.take_action(parsed_args)
1142+
1143+
self.image_client.find_image.assert_called_with(
1144+
self._image.id, ignore_missing=False
1145+
)
1146+
1147+
self.image_client.get_member.assert_called_with(
1148+
member='member1',
1149+
image=self._image.id,
1150+
)
1151+
1152+
self.assertEqual(self.columns, columns)
1153+
self.assertEqual(self.datalist, data)
1154+
1155+
10961156
class TestImageSet(TestImage):
10971157
project = identity_fakes.FakeProject.create_one_project()
10981158
domain = identity_fakes.FakeDomain.create_one_domain()
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
features:
3+
- |
4+
Add ``image member get`` command which accepts an
5+
image_id and member_id and displays the detail of
6+
the particular meber associated to the image.

setup.cfg

Lines changed: 1 addition & 0 deletions

0 commit comments

Comments
 (0)