Merge "Fixing functional tests that require keystone"
This commit is contained in:
commit
e76456532c
@ -205,14 +205,14 @@ class Controller(object):
|
||||
try:
|
||||
session = db_api.get_session()
|
||||
membership = db_api.image_member_find(req.context,
|
||||
image_id, member,
|
||||
image_id, id,
|
||||
session=session)
|
||||
if can_share is not None:
|
||||
values = dict(can_share=can_share)
|
||||
db_api.image_member_update(req.context, membership, values,
|
||||
session=session)
|
||||
except exception.NotFound:
|
||||
values = dict(image_id=image['id'], member=member,
|
||||
values = dict(image_id=image['id'], member=id,
|
||||
can_share=bool(can_share))
|
||||
db_api.image_member_create(req.context, values, session=session)
|
||||
|
||||
|
@ -46,6 +46,33 @@ DEFAULT_FIXTURE = [
|
||||
'2015-02-05T00:00'),
|
||||
('token', 'add', '999888777666', 'admin', 'openstack',
|
||||
'2015-02-05T00:00'),
|
||||
#Services
|
||||
#2 Service Name:swift Type:object-store
|
||||
('service', 'add', 'swift',
|
||||
'object-store', 'Swift-compatible service'),
|
||||
('service', 'add', 'object_store',
|
||||
'object-store', 'Swift-compatible service'),
|
||||
#3 Service Name:cdn Type:object-store
|
||||
('service', 'add', 'cdn',
|
||||
'object-store', 'Swift-compatible service'),
|
||||
#4 Service Name:nova Type:compute
|
||||
('service', 'add', 'nova',
|
||||
'compute', 'OpenStack Compute Service'),
|
||||
('service', 'add', 'compute',
|
||||
'compute', 'OpenStack Compute Service'),
|
||||
('service', 'add', 'compute_v1',
|
||||
'compute', 'OpenStack Compute Service'),
|
||||
#5 Service Name:nova_compat Type:Compute
|
||||
('service', 'add', 'nova_compat',
|
||||
'compute', 'OpenStack Compute Service'),
|
||||
#6 Service Name:glance Type:image
|
||||
('service', 'add', 'glance',
|
||||
'image', 'OpenStack Image Service'),
|
||||
('service', 'add', 'image',
|
||||
'image', 'OpenStack Image Service'),
|
||||
#7 Service Name:keystone Type:identity
|
||||
('service', 'add', 'identity',
|
||||
'identity', 'OpenStack Identity Service'),
|
||||
# Keeping for compatibility for a while till dashboard catches up
|
||||
('endpointTemplates', 'add', 'RegionOne', 'swift',
|
||||
'http://swift.publicinternets.com/v1/AUTH_%tenant_id%',
|
||||
|
@ -28,9 +28,12 @@ from glance.tests.utils import execute, find_executable
|
||||
|
||||
|
||||
pattieblack_token = '887665443383'
|
||||
pattieblack_id = '2'
|
||||
froggy_token = '383344566788'
|
||||
froggy_id = '3'
|
||||
admin_token = '999888777666'
|
||||
bacon_token = '111111111111'
|
||||
bacon_id = '4'
|
||||
prosciutto_token = '222222222222'
|
||||
|
||||
|
||||
|
@ -58,7 +58,7 @@ class TestPrivateImagesApi(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(data['image']['size'], FIVE_KB)
|
||||
self.assertEqual(data['image']['name'], "Image1")
|
||||
self.assertEqual(data['image']['is_public'], False)
|
||||
self.assertEqual(data['image']['owner'], 'pattieblack')
|
||||
self.assertEqual(data['image']['owner'], keystone_utils.pattieblack_id)
|
||||
|
||||
# Next, make sure froggy can't list the image
|
||||
headers = {'X-Auth-Token': keystone_utils.froggy_token}
|
||||
@ -135,11 +135,11 @@ class TestPrivateImagesApi(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(response.status, 200)
|
||||
data = json.loads(content)
|
||||
self.assertEqual(len(data['images']), 1)
|
||||
self.assertEqual(data['images'][0]['id'], 1)
|
||||
self.assertEqual(data['images'][0]['size'], FIVE_KB)
|
||||
self.assertEqual(data['images'][0]['name'], "Image1")
|
||||
self.assertEqual(data['images'][0]['is_public'], False)
|
||||
self.assertEqual(data['images'][0]['owner'], 'pattieblack')
|
||||
self.assertEqual(data['images'][0]['owner'],
|
||||
keystone_utils.pattieblack_id)
|
||||
|
||||
# Pattieblack should be able to get the image metadata
|
||||
headers = {'X-Auth-Token': keystone_utils.pattieblack_token}
|
||||
@ -149,7 +149,8 @@ class TestPrivateImagesApi(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(response.status, 200)
|
||||
self.assertEqual(response['x-image-meta-name'], "Image1")
|
||||
self.assertEqual(response['x-image-meta-is_public'], "False")
|
||||
self.assertEqual(response['x-image-meta-owner'], "pattieblack")
|
||||
self.assertEqual(response['x-image-meta-owner'],
|
||||
keystone_utils.pattieblack_id)
|
||||
|
||||
# And of course the image itself
|
||||
headers = {'X-Auth-Token': keystone_utils.pattieblack_token}
|
||||
@ -160,7 +161,8 @@ class TestPrivateImagesApi(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(content, "*" * FIVE_KB)
|
||||
self.assertEqual(response['x-image-meta-name'], "Image1")
|
||||
self.assertEqual(response['x-image-meta-is_public'], "False")
|
||||
self.assertEqual(response['x-image-meta-owner'], "pattieblack")
|
||||
self.assertEqual(response['x-image-meta-owner'],
|
||||
keystone_utils.pattieblack_id)
|
||||
|
||||
# Pattieblack should be able to manipulate is_public
|
||||
headers = {'X-Auth-Token': keystone_utils.pattieblack_token,
|
||||
@ -172,7 +174,7 @@ class TestPrivateImagesApi(keystone_utils.KeystoneTests):
|
||||
data = json.loads(content)
|
||||
self.assertEqual(data['image']['name'], "Image1")
|
||||
self.assertEqual(data['image']['is_public'], True)
|
||||
self.assertEqual(data['image']['owner'], 'pattieblack')
|
||||
self.assertEqual(data['image']['owner'], keystone_utils.pattieblack_id)
|
||||
|
||||
# Pattieblack can't give the image away, however
|
||||
headers = {'X-Auth-Token': keystone_utils.pattieblack_token,
|
||||
@ -184,7 +186,7 @@ class TestPrivateImagesApi(keystone_utils.KeystoneTests):
|
||||
data = json.loads(content)
|
||||
self.assertEqual(data['image']['name'], "Image1")
|
||||
self.assertEqual(data['image']['is_public'], True)
|
||||
self.assertEqual(data['image']['owner'], 'pattieblack')
|
||||
self.assertEqual(data['image']['owner'], keystone_utils.pattieblack_id)
|
||||
|
||||
# Now that the image is public, froggy can see it
|
||||
headers = {'X-Auth-Token': keystone_utils.froggy_token}
|
||||
@ -210,7 +212,8 @@ class TestPrivateImagesApi(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(data['images'][0]['size'], FIVE_KB)
|
||||
self.assertEqual(data['images'][0]['name'], "Image1")
|
||||
self.assertEqual(data['images'][0]['is_public'], True)
|
||||
self.assertEqual(data['images'][0]['owner'], 'pattieblack')
|
||||
self.assertEqual(data['images'][0]['owner'],
|
||||
keystone_utils.pattieblack_id)
|
||||
|
||||
# Froggy can get the image metadata now...
|
||||
headers = {'X-Auth-Token': keystone_utils.froggy_token}
|
||||
@ -220,7 +223,8 @@ class TestPrivateImagesApi(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(response.status, 200)
|
||||
self.assertEqual(response['x-image-meta-name'], "Image1")
|
||||
self.assertEqual(response['x-image-meta-is_public'], "True")
|
||||
self.assertEqual(response['x-image-meta-owner'], "pattieblack")
|
||||
self.assertEqual(response['x-image-meta-owner'],
|
||||
keystone_utils.pattieblack_id)
|
||||
|
||||
# And of course the image itself
|
||||
headers = {'X-Auth-Token': keystone_utils.froggy_token}
|
||||
@ -231,7 +235,8 @@ class TestPrivateImagesApi(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(content, "*" * FIVE_KB)
|
||||
self.assertEqual(response['x-image-meta-name'], "Image1")
|
||||
self.assertEqual(response['x-image-meta-is_public'], "True")
|
||||
self.assertEqual(response['x-image-meta-owner'], "pattieblack")
|
||||
self.assertEqual(response['x-image-meta-owner'],
|
||||
keystone_utils.pattieblack_id)
|
||||
|
||||
# Froggy still can't change is-public
|
||||
headers = {'X-Auth-Token': keystone_utils.froggy_token,
|
||||
@ -289,7 +294,7 @@ class TestPrivateImagesApi(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(data['image']['size'], FIVE_KB)
|
||||
self.assertEqual(data['image']['name'], "Image1")
|
||||
self.assertEqual(data['image']['is_public'], False)
|
||||
self.assertEqual(data['image']['owner'], 'pattieblack')
|
||||
self.assertEqual(data['image']['owner'], keystone_utils.pattieblack_id)
|
||||
|
||||
# Make sure admin does not see image by default
|
||||
headers = {'X-Auth-Token': keystone_utils.admin_token}
|
||||
@ -334,7 +339,8 @@ class TestPrivateImagesApi(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(data['images'][0]['size'], FIVE_KB)
|
||||
self.assertEqual(data['images'][0]['name'], "Image1")
|
||||
self.assertEqual(data['images'][0]['is_public'], False)
|
||||
self.assertEqual(data['images'][0]['owner'], 'pattieblack')
|
||||
self.assertEqual(data['images'][0]['owner'],
|
||||
keystone_utils.pattieblack_id)
|
||||
|
||||
# Admin should be able to get the image metadata
|
||||
headers = {'X-Auth-Token': keystone_utils.admin_token}
|
||||
@ -344,7 +350,8 @@ class TestPrivateImagesApi(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(response.status, 200)
|
||||
self.assertEqual(response['x-image-meta-name'], "Image1")
|
||||
self.assertEqual(response['x-image-meta-is_public'], "False")
|
||||
self.assertEqual(response['x-image-meta-owner'], "pattieblack")
|
||||
self.assertEqual(response['x-image-meta-owner'],
|
||||
keystone_utils.pattieblack_id)
|
||||
|
||||
# And of course the image itself
|
||||
headers = {'X-Auth-Token': keystone_utils.admin_token}
|
||||
@ -355,7 +362,8 @@ class TestPrivateImagesApi(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(content, "*" * FIVE_KB)
|
||||
self.assertEqual(response['x-image-meta-name'], "Image1")
|
||||
self.assertEqual(response['x-image-meta-is_public'], "False")
|
||||
self.assertEqual(response['x-image-meta-owner'], "pattieblack")
|
||||
self.assertEqual(response['x-image-meta-owner'],
|
||||
keystone_utils.pattieblack_id)
|
||||
|
||||
# Admin should be able to manipulate is_public
|
||||
headers = {'X-Auth-Token': keystone_utils.admin_token,
|
||||
@ -367,7 +375,8 @@ class TestPrivateImagesApi(keystone_utils.KeystoneTests):
|
||||
data = json.loads(content)
|
||||
self.assertEqual(data['image']['name'], "Image1")
|
||||
self.assertEqual(data['image']['is_public'], True)
|
||||
self.assertEqual(data['image']['owner'], 'pattieblack')
|
||||
self.assertEqual(data['image']['owner'],
|
||||
keystone_utils.pattieblack_id)
|
||||
|
||||
# Admin should also be able to change the ownership of the
|
||||
# image
|
||||
@ -466,7 +475,7 @@ class TestPrivateImagesApi(keystone_utils.KeystoneTests):
|
||||
|
||||
# Or give themselves ownership
|
||||
headers = {'X-Auth-Token': keystone_utils.pattieblack_token,
|
||||
'X-Image-Meta-Owner': 'pattieblack'}
|
||||
'X-Image-Meta-Owner': keystone_utils.pattieblack_id}
|
||||
path = "http://%s:%d/v1/images/1" % ("0.0.0.0", self.api_port)
|
||||
http = httplib2.Http()
|
||||
response, content = http.request(path, 'PUT', headers=headers)
|
||||
@ -515,7 +524,7 @@ class TestPrivateImagesApi(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(data['image']['size'], FIVE_KB)
|
||||
self.assertEqual(data['image']['name'], "Image1")
|
||||
self.assertEqual(data['image']['is_public'], False)
|
||||
self.assertEqual(data['image']['owner'], 'pattieblack')
|
||||
self.assertEqual(data['image']['owner'], keystone_utils.pattieblack_id)
|
||||
|
||||
# Make sure anonymous user can't list the image
|
||||
path = "http://%s:%d/v1/images" % ("0.0.0.0", self.api_port)
|
||||
@ -715,7 +724,8 @@ class TestPrivateImagesCli(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(response.status, 200)
|
||||
self.assertEqual(response['x-image-meta-name'], "MyImage")
|
||||
self.assertEqual(response['x-image-meta-is_public'], "False")
|
||||
self.assertEqual(response['x-image-meta-owner'], "pattieblack")
|
||||
self.assertEqual(response['x-image-meta-owner'],
|
||||
keystone_utils.pattieblack_id)
|
||||
|
||||
# Test that we can update is_public through the CLI
|
||||
cmd = ("bin/glance --port=%d --auth_token=%s update 1 is_public=True" %
|
||||
@ -733,7 +743,8 @@ class TestPrivateImagesCli(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(response.status, 200)
|
||||
self.assertEqual(response['x-image-meta-name'], "MyImage")
|
||||
self.assertEqual(response['x-image-meta-is_public'], "True")
|
||||
self.assertEqual(response['x-image-meta-owner'], "pattieblack")
|
||||
self.assertEqual(response['x-image-meta-owner'],
|
||||
keystone_utils.pattieblack_id)
|
||||
|
||||
# Test that admin can change the owner
|
||||
cmd = ("bin/glance --port=%d --auth_token=%s update 1 owner=froggy" %
|
||||
|
@ -45,7 +45,7 @@ class TestSharedImagesApi(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(data['image']['size'], FIVE_KB)
|
||||
self.assertEqual(data['image']['name'], "Image1")
|
||||
self.assertEqual(data['image']['is_public'], False)
|
||||
self.assertEqual(data['image']['owner'], 'pattieblack')
|
||||
self.assertEqual(data['image']['owner'], keystone_utils.pattieblack_id)
|
||||
return content
|
||||
|
||||
def _request(self, path, method, auth_token, headers=None, body=None):
|
||||
@ -66,8 +66,9 @@ class TestSharedImagesApi(keystone_utils.KeystoneTests):
|
||||
data = json.loads(self._push_image())
|
||||
|
||||
# Now add froggy as a shared image member
|
||||
path = "http://%s:%d/v1/images/%s/members/%s" % \
|
||||
("0.0.0.0", self.api_port, data['image']['id'], 'froggy')
|
||||
args = ("0.0.0.0", self.api_port, data['image']['id'],
|
||||
keystone_utils.froggy_id)
|
||||
path = "http://%s:%d/v1/images/%s/members/%s" % args
|
||||
|
||||
response, _ = self._request(path, 'PUT',
|
||||
keystone_utils.pattieblack_token)
|
||||
@ -112,8 +113,9 @@ class TestSharedImagesApi(keystone_utils.KeystoneTests):
|
||||
|
||||
image = data['image']
|
||||
# Now add froggy as a shared image member
|
||||
path = "http://%s:%d/v1/images/%s/members/%s" % \
|
||||
("0.0.0.0", self.api_port, data['image']['id'], 'froggy')
|
||||
args = ("0.0.0.0", self.api_port, data['image']['id'],
|
||||
keystone_utils.froggy_id)
|
||||
path = "http://%s:%d/v1/images/%s/members/%s" % args
|
||||
|
||||
response, _ = self._request(path, 'PUT',
|
||||
keystone_utils.pattieblack_token)
|
||||
@ -148,14 +150,20 @@ class TestSharedImagesApi(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(content, '{"images": []}')
|
||||
|
||||
# Replace froggy with bacon
|
||||
body = json.dumps({'memberships': [{'member_id': 'bacon',
|
||||
'can_share': False}]})
|
||||
body = {
|
||||
'memberships': [
|
||||
{
|
||||
'member_id': keystone_utils.bacon_id,
|
||||
'can_share': False,
|
||||
},
|
||||
],
|
||||
}
|
||||
path = "http://%s:%d/v1/images/%s/members" % \
|
||||
("0.0.0.0", self.api_port, image['id'])
|
||||
|
||||
response, content = self._request(path, 'PUT',
|
||||
keystone_utils.pattieblack_token,
|
||||
body=body)
|
||||
body=json.dumps(body))
|
||||
self.assertEqual(response.status, 204)
|
||||
|
||||
# Ensure bacon can see the image
|
||||
@ -186,8 +194,9 @@ class TestSharedImagesApi(keystone_utils.KeystoneTests):
|
||||
data = json.loads(self._push_image())
|
||||
|
||||
# Now add froggy as a shared image member
|
||||
path = "http://%s:%d/v1/images/%s/members/%s" % \
|
||||
("0.0.0.0", self.api_port, data['image']['id'], 'froggy')
|
||||
args = ("0.0.0.0", self.api_port, data['image']['id'],
|
||||
keystone_utils.froggy_id)
|
||||
path = "http://%s:%d/v1/images/%s/members/%s" % args
|
||||
|
||||
response, _ = self._request(path, 'PUT',
|
||||
keystone_utils.pattieblack_token)
|
||||
@ -223,8 +232,9 @@ class TestSharedImagesApi(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(content, '{"images": []}')
|
||||
|
||||
# Now remove froggy as a shared image member
|
||||
path = "http://%s:%d/v1/images/%s/members/%s" % \
|
||||
("0.0.0.0", self.api_port, image['id'], 'froggy')
|
||||
args = ("0.0.0.0", self.api_port, image['id'],
|
||||
keystone_utils.froggy_id)
|
||||
path = "http://%s:%d/v1/images/%s/members/%s" % args
|
||||
|
||||
response, content = self._request(path, 'DELETE',
|
||||
keystone_utils.pattieblack_token)
|
||||
@ -266,8 +276,9 @@ class TestSharedImagesApi(keystone_utils.KeystoneTests):
|
||||
|
||||
# Now add froggy as a shared image member
|
||||
body = json.dumps({'member': {'can_share': True}})
|
||||
path = "http://%s:%d/v1/images/%s/members/%s" % \
|
||||
("0.0.0.0", self.api_port, data['image']['id'], 'froggy')
|
||||
args = ("0.0.0.0", self.api_port, data['image']['id'],
|
||||
keystone_utils.froggy_id)
|
||||
path = "http://%s:%d/v1/images/%s/members/%s" % args
|
||||
|
||||
response, content = self._request(path, 'PUT',
|
||||
keystone_utils.pattieblack_token,
|
||||
@ -288,8 +299,8 @@ class TestSharedImagesApi(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(data['images'][0]['name'], "Image1")
|
||||
|
||||
# Froggy is going to share with bacon
|
||||
path = "http://%s:%d/v1/images/%s/members/%s" % \
|
||||
("0.0.0.0", self.api_port, image['id'], 'bacon')
|
||||
args = ("0.0.0.0", self.api_port, image['id'], keystone_utils.bacon_id)
|
||||
path = "http://%s:%d/v1/images/%s/members/%s" % args
|
||||
|
||||
response, _ = self._request(path, 'PUT',
|
||||
keystone_utils.froggy_token)
|
||||
@ -329,11 +340,12 @@ class TestSharedImagesApi(keystone_utils.KeystoneTests):
|
||||
data = json.loads(self._push_image())
|
||||
|
||||
# Now add froggy as a shared image member
|
||||
path = "http://%s:%d/v1/images/%s/members/%s" % \
|
||||
("0.0.0.0", self.api_port, data['image']['id'], 'froggy')
|
||||
args = ("0.0.0.0", self.api_port, data['image']['id'],
|
||||
keystone_utils.froggy_id)
|
||||
path = "http://%s:%d/v1/images/%s/members/%s" % args
|
||||
|
||||
response, content = self._request(path, 'PUT',
|
||||
keystone_utils.pattieblack_token)
|
||||
keystone_utils.pattieblack_token)
|
||||
self.assertEqual(response.status, 204)
|
||||
|
||||
path = "http://%s:%d/v1/images/%s/members" % \
|
||||
@ -344,7 +356,8 @@ class TestSharedImagesApi(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(response.status, 200)
|
||||
body = json.loads(content)
|
||||
self.assertEqual(body['members'][0]['can_share'], False)
|
||||
self.assertEqual(body['members'][0]['member_id'], 'froggy')
|
||||
self.assertEqual(body['members'][0]['member_id'],
|
||||
keystone_utils.froggy_id)
|
||||
|
||||
self.stop_servers()
|
||||
|
||||
@ -365,7 +378,7 @@ class TestSharedImagesCli(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(data['image']['size'], FIVE_KB)
|
||||
self.assertEqual(data['image']['name'], str(name))
|
||||
self.assertEqual(data['image']['is_public'], False)
|
||||
self.assertEqual(data['image']['owner'], 'pattieblack')
|
||||
self.assertEqual(data['image']['owner'], keystone_utils.pattieblack_id)
|
||||
return content
|
||||
|
||||
def _request(self, path, method, auth_token, headers=None, body=None):
|
||||
@ -392,9 +405,9 @@ class TestSharedImagesCli(keystone_utils.KeystoneTests):
|
||||
image_id = data['image']['id']
|
||||
|
||||
# Test that we can add froggy as a shared image member
|
||||
cmd = ("bin/glance --port=%d --auth_token=%s member-add %s %s" %
|
||||
(self.api_port, keystone_utils.pattieblack_token,
|
||||
image_id, 'froggy'))
|
||||
args = (self.api_port, keystone_utils.pattieblack_token,
|
||||
image_id, keystone_utils.froggy_id)
|
||||
cmd = "bin/glance --port=%d --auth_token=%s member-add %s %s" % args
|
||||
exitcode, out, err = execute(cmd)
|
||||
|
||||
self.assertEqual(0, exitcode)
|
||||
@ -407,14 +420,15 @@ class TestSharedImagesCli(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(response.status, 200)
|
||||
data = json.loads(content)
|
||||
self.assertEqual(len(data['members']), 1)
|
||||
self.assertEqual(data['members'][0]['member_id'], 'froggy')
|
||||
self.assertEqual(data['members'][0]['member_id'],
|
||||
keystone_utils.froggy_id)
|
||||
self.assertEqual(data['members'][0]['can_share'], False)
|
||||
|
||||
# Test that we can replace a shared image membership list
|
||||
cmd = ("bin/glance --port=%d --auth_token=%s members-replace %s %s "
|
||||
"--can-share" %
|
||||
(self.api_port, keystone_utils.pattieblack_token,
|
||||
image_id, 'bacon'))
|
||||
image_id, keystone_utils.bacon_id))
|
||||
exitcode, out, err = execute(cmd)
|
||||
|
||||
self.assertEqual(0, exitcode)
|
||||
@ -427,13 +441,14 @@ class TestSharedImagesCli(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(response.status, 200)
|
||||
data = json.loads(content)
|
||||
self.assertEqual(len(data['members']), 1)
|
||||
self.assertEqual(data['members'][0]['member_id'], 'bacon')
|
||||
self.assertEqual(data['members'][0]['member_id'],
|
||||
keystone_utils.bacon_id)
|
||||
self.assertEqual(data['members'][0]['can_share'], True)
|
||||
|
||||
# Test that we can delete an image membership
|
||||
cmd = ("bin/glance --port=%d --auth_token=%s member-delete %s %s" %
|
||||
(self.api_port, keystone_utils.pattieblack_token,
|
||||
image_id, 'bacon'))
|
||||
image_id, keystone_utils.bacon_id))
|
||||
exitcode, out, err = execute(cmd)
|
||||
|
||||
self.assertEqual(0, exitcode)
|
||||
@ -467,24 +482,24 @@ class TestSharedImagesCli(keystone_utils.KeystoneTests):
|
||||
# Share images with froggy and bacon
|
||||
cmd = ("bin/glance --port=%d --auth_token=%s member-add %s %s" %
|
||||
(self.api_port, keystone_utils.pattieblack_token,
|
||||
image1_id, 'froggy'))
|
||||
image1_id, keystone_utils.froggy_id))
|
||||
exitcode, out, err = execute(cmd)
|
||||
self.assertEqual(0, exitcode)
|
||||
cmd = ("bin/glance --port=%d --auth_token=%s member-add %s %s" %
|
||||
(self.api_port, keystone_utils.pattieblack_token,
|
||||
image1_id, 'bacon'))
|
||||
image1_id, keystone_utils.bacon_id))
|
||||
exitcode, out, err = execute(cmd)
|
||||
self.assertEqual(0, exitcode)
|
||||
cmd = ("bin/glance --port=%d --auth_token=%s member-add %s %s "
|
||||
"--can-share" %
|
||||
(self.api_port, keystone_utils.pattieblack_token,
|
||||
image2_id, 'froggy'))
|
||||
image2_id, keystone_utils.froggy_id))
|
||||
exitcode, out, err = execute(cmd)
|
||||
self.assertEqual(0, exitcode)
|
||||
cmd = ("bin/glance --port=%d --auth_token=%s member-add %s %s "
|
||||
"--can-share" %
|
||||
(self.api_port, keystone_utils.pattieblack_token,
|
||||
image2_id, 'bacon'))
|
||||
image2_id, keystone_utils.bacon_id))
|
||||
exitcode, out, err = execute(cmd)
|
||||
self.assertEqual(0, exitcode)
|
||||
|
||||
@ -495,8 +510,8 @@ class TestSharedImagesCli(keystone_utils.KeystoneTests):
|
||||
self.assertEqual(0, exitcode)
|
||||
|
||||
result = self._outsplit(out)
|
||||
self.assertTrue('froggy' in result)
|
||||
self.assertTrue('bacon' in result)
|
||||
self.assertTrue(keystone_utils.froggy_id in result)
|
||||
self.assertTrue(keystone_utils.bacon_id in result)
|
||||
|
||||
# Try again for can_share
|
||||
cmd = ("bin/glance --port=%d --auth_token=%s image-members %s" %
|
||||
@ -506,12 +521,13 @@ class TestSharedImagesCli(keystone_utils.KeystoneTests):
|
||||
|
||||
result = self._outsplit(out)
|
||||
self.assertEqual(result[-1], '(*: Can share image)')
|
||||
self.assertTrue('froggy *' in result[:-2])
|
||||
self.assertTrue('bacon *' in result[:-2])
|
||||
self.assertTrue(keystone_utils.froggy_id + ' *' in result[:-2])
|
||||
self.assertTrue(keystone_utils.bacon_id + ' *' in result[:-2])
|
||||
|
||||
# Get the list of member images
|
||||
cmd = ("bin/glance --port=%d --auth_token=%s member-images %s" %
|
||||
(self.api_port, keystone_utils.pattieblack_token, 'froggy'))
|
||||
(self.api_port, keystone_utils.pattieblack_token,
|
||||
keystone_utils.froggy_id))
|
||||
exitcode, out, err = execute(cmd)
|
||||
self.assertEqual(0, exitcode)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user