summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-07-30 17:31:08 +0000
committerGerrit Code Review <review@openstack.org>2013-07-30 17:31:08 +0000
commite0e6030a09cd7589875bf681a8b621b25f8885b2 (patch)
tree2ba719fb6389f9bddd6650dc1d9b2f67d2970aa6
parente34dc38a703334edb88e18a0b838df159a79c10a (diff)
parentbb47812765414df87eb0a1481ba65127de7b3000 (diff)
downloadpython-glanceclient-e0e6030a09cd7589875bf681a8b621b25f8885b2.tar.gz
Merge "Allow v1 client to list all users' images"
-rw-r--r--glanceclient/v1/images.py2
-rw-r--r--glanceclient/v1/shell.py5
-rw-r--r--tests/v1/test_images.py23
3 files changed, 28 insertions, 2 deletions
diff --git a/glanceclient/v1/images.py b/glanceclient/v1/images.py
index abde32f..1c09cbb 100644
--- a/glanceclient/v1/images.py
+++ b/glanceclient/v1/images.py
@@ -219,6 +219,8 @@ class ImageManager(base.Manager):
if kwargs.get('owner') is not None:
params['owner'] = kwargs['owner']
params['is_public'] = None
+ if 'is_public' in kwargs:
+ params['is_public'] = kwargs['is_public']
return paginate(params)
diff --git a/glanceclient/v1/shell.py b/glanceclient/v1/shell.py
index 946bb80..41bfe49 100644
--- a/glanceclient/v1/shell.py
+++ b/glanceclient/v1/shell.py
@@ -73,6 +73,9 @@ DISK_FORMATS = ('Acceptable formats: ami, ari, aki, vhd, vmdk, raw, '
'to list images with no owner. Note: This option overrides '
'the --is-public argument if present. Note: the v2 API '
'supports more efficient server-side owner based filtering.')
+@utils.arg('--all-tenants', action='store_true', default=False,
+ help=('Allows the admin user to list all images '
+ 'irrespective of the image\'s owner or is_public value.'))
def do_image_list(gc, args):
"""List images you can access."""
filter_keys = ['name', 'status', 'container_format', 'disk_format',
@@ -91,6 +94,8 @@ def do_image_list(gc, args):
kwargs['sort_key'] = args.sort_key
kwargs['sort_dir'] = args.sort_dir
kwargs['owner'] = args.owner
+ if args.all_tenants is True:
+ kwargs['is_public'] = None
images = gc.images.list(**kwargs)
diff --git a/tests/v1/test_images.py b/tests/v1/test_images.py
index 7758f13..acfbd37 100644
--- a/tests/v1/test_images.py
+++ b/tests/v1/test_images.py
@@ -75,17 +75,20 @@ fixtures = {
{
'id': 'a',
'owner': 'A',
+ 'is_public': 'True',
'name': 'image-1',
'properties': {'arch': 'x86_64'},
},
{
'id': 'b',
'owner': 'B',
+ 'is_public': 'False',
'name': 'image-2',
'properties': {'arch': 'x86_64'},
},
{
'id': 'c',
+ 'is_public': 'False',
'name': 'image-3',
'properties': {'arch': 'x86_64'},
},
@@ -129,12 +132,14 @@ fixtures = {
{
'id': 'a',
'owner': 'A',
+ 'is_public': 'False',
'name': 'image-1',
'properties': {'arch': 'x86_64'},
},
{
'id': 'b',
- 'owner': 'B',
+ 'owner': 'A',
+ 'is_public': 'False',
'name': 'image-2',
'properties': {'arch': 'x86_64'},
},
@@ -146,6 +151,7 @@ fixtures = {
},
{
'id': 'c',
+ 'is_public': 'True',
'name': 'image-3',
'properties': {'arch': 'x86_64'},
},
@@ -608,7 +614,7 @@ class ImageManagerTest(testtools.TestCase):
image_list = list(images)
self.assertEqual(image_list[0].owner, 'A')
self.assertEqual(image_list[0].id, 'a')
- self.assertEqual(image_list[1].owner, 'B')
+ self.assertEqual(image_list[1].owner, 'A')
self.assertEqual(image_list[1].id, 'b')
self.assertEqual(image_list[2].owner, 'B')
self.assertEqual(image_list[2].id, 'b2')
@@ -623,6 +629,19 @@ class ImageManagerTest(testtools.TestCase):
self.assertEqual(image_list[0].id, 'b')
self.assertEqual(len(image_list), 1)
+ def test_image_list_all_tenants(self):
+ images = self.mgr.list(is_public=None, page_size=5)
+ image_list = list(images)
+ self.assertEqual(image_list[0].owner, 'A')
+ self.assertEqual(image_list[0].id, 'a')
+ self.assertEqual(image_list[1].owner, 'B')
+ self.assertEqual(image_list[1].id, 'b')
+ self.assertEqual(image_list[2].owner, 'B')
+ self.assertEqual(image_list[2].id, 'b2')
+ self.assertRaises(AttributeError, lambda: image_list[3].owner)
+ self.assertEqual(image_list[3].id, 'c')
+ self.assertEqual(len(image_list), 4)
+
class ImageTest(testtools.TestCase):
def setUp(self):