Add member-get command
It is observed that python-glanceclient was missing support for GET /v2/image/{image_id}/member/{member_id} API. This patch adds new command `member-get` to support this missing operation. Closes-Bug: #1938154 Change-Id: I3709f6a39535aa45bee70f468f015ac60a1375a8
This commit is contained in:
parent
158d5f4248
commit
cb084f5289
glanceclient
tests/unit/v2
v2
5
glanceclient/tests/unit/v2/releasenotes/notes/add-member-get-command-11c15e0a94ecd39a.yaml
Normal file
5
glanceclient/tests/unit/v2/releasenotes/notes/add-member-get-command-11c15e0a94ecd39a.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- |
|
||||||
|
Bug 1938154_: Added member-get command
|
||||||
|
.. _1938154: https://bugs.launchpad.net/glance/+bug/1938154
|
@ -45,6 +45,17 @@ data_fixtures = {
|
|||||||
)
|
)
|
||||||
},
|
},
|
||||||
'/v2/images/{image}/members/{mem}'.format(image=IMAGE, mem=MEMBER): {
|
'/v2/images/{image}/members/{mem}'.format(image=IMAGE, mem=MEMBER): {
|
||||||
|
'GET': (
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
'image_id': IMAGE,
|
||||||
|
'member_id': MEMBER,
|
||||||
|
'status': 'pending',
|
||||||
|
'created_at': '2013-11-26T07:21:21Z',
|
||||||
|
'updated_at': '2013-11-26T07:21:21Z',
|
||||||
|
'schema': "/v2/schemas/member"
|
||||||
|
},
|
||||||
|
),
|
||||||
'DELETE': (
|
'DELETE': (
|
||||||
{},
|
{},
|
||||||
None,
|
None,
|
||||||
@ -90,6 +101,11 @@ class TestController(testtools.TestCase):
|
|||||||
self.assertEqual(IMAGE, image_members[0].image_id)
|
self.assertEqual(IMAGE, image_members[0].image_id)
|
||||||
self.assertEqual(MEMBER, image_members[0].member_id)
|
self.assertEqual(MEMBER, image_members[0].member_id)
|
||||||
|
|
||||||
|
def test_get_image_members(self):
|
||||||
|
image_member = self.controller.get(IMAGE, MEMBER)
|
||||||
|
self.assertEqual(IMAGE, image_member.image_id)
|
||||||
|
self.assertEqual(MEMBER, image_member.member_id)
|
||||||
|
|
||||||
def test_delete_image_member(self):
|
def test_delete_image_member(self):
|
||||||
image_id = IMAGE
|
image_id = IMAGE
|
||||||
member_id = MEMBER
|
member_id = MEMBER
|
||||||
|
@ -2378,6 +2378,16 @@ class ShellV2Test(testtools.TestCase):
|
|||||||
columns = ['Image ID', 'Member ID', 'Status']
|
columns = ['Image ID', 'Member ID', 'Status']
|
||||||
utils.print_list.assert_called_once_with({}, columns)
|
utils.print_list.assert_called_once_with({}, columns)
|
||||||
|
|
||||||
|
def test_do_member_get(self):
|
||||||
|
args = self._make_args({'image_id': 'IMG-01', 'member_id': 'MEM-01'})
|
||||||
|
with mock.patch.object(self.gc.image_members, 'get') as mock_get:
|
||||||
|
mock_get.return_value = {}
|
||||||
|
|
||||||
|
test_shell.do_member_get(self.gc, args)
|
||||||
|
|
||||||
|
mock_get.assert_called_once_with('IMG-01', 'MEM-01')
|
||||||
|
utils.print_dict.assert_called_once_with({})
|
||||||
|
|
||||||
def test_do_member_create(self):
|
def test_do_member_create(self):
|
||||||
args = self._make_args({'image_id': 'IMG-01', 'member_id': 'MEM-01'})
|
args = self._make_args({'image_id': 'IMG-01', 'member_id': 'MEM-01'})
|
||||||
with mock.patch.object(self.gc.image_members, 'create') as mock_create:
|
with mock.patch.object(self.gc.image_members, 'create') as mock_create:
|
||||||
|
@ -39,6 +39,12 @@ class Controller(object):
|
|||||||
for member in body['members']:
|
for member in body['members']:
|
||||||
yield self.model(member), resp
|
yield self.model(member), resp
|
||||||
|
|
||||||
|
@utils.add_req_id_to_object()
|
||||||
|
def get(self, image_id, member_id):
|
||||||
|
url = '/v2/images/%s/members/%s' % (image_id, member_id)
|
||||||
|
resp, member = self.http_client.get(url)
|
||||||
|
return self.model(member), resp
|
||||||
|
|
||||||
@utils.add_req_id_to_object()
|
@utils.add_req_id_to_object()
|
||||||
def delete(self, image_id, member_id):
|
def delete(self, image_id, member_id):
|
||||||
resp, body = self.http_client.delete('/v2/images/%s/members/%s' %
|
resp, body = self.http_client.delete('/v2/images/%s/members/%s' %
|
||||||
|
@ -490,12 +490,20 @@ def do_image_tasks(gc, args):
|
|||||||
help=_('Image to display members of.'))
|
help=_('Image to display members of.'))
|
||||||
def do_member_list(gc, args):
|
def do_member_list(gc, args):
|
||||||
"""Describe sharing permissions by image."""
|
"""Describe sharing permissions by image."""
|
||||||
|
|
||||||
members = gc.image_members.list(args.image_id)
|
members = gc.image_members.list(args.image_id)
|
||||||
columns = ['Image ID', 'Member ID', 'Status']
|
columns = ['Image ID', 'Member ID', 'Status']
|
||||||
utils.print_list(members, columns)
|
utils.print_list(members, columns)
|
||||||
|
|
||||||
|
|
||||||
|
@utils.arg('image_id', metavar='<IMAGE_ID>',
|
||||||
|
help=_('Image from which to display member.'))
|
||||||
|
@utils.arg('member_id', metavar='<MEMBER_ID>',
|
||||||
|
help=_('Project to display.'))
|
||||||
|
def do_member_get(gc, args):
|
||||||
|
"""Show details of an image member"""
|
||||||
|
member = gc.image_members.get(args.image_id, args.member_id)
|
||||||
|
utils.print_dict(member)
|
||||||
|
|
||||||
@utils.arg('image_id', metavar='<IMAGE_ID>',
|
@utils.arg('image_id', metavar='<IMAGE_ID>',
|
||||||
help=_('Image from which to remove member.'))
|
help=_('Image from which to remove member.'))
|
||||||
@utils.arg('member_id', metavar='<MEMBER_ID>',
|
@utils.arg('member_id', metavar='<MEMBER_ID>',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user