Fix publish_exists_event authentication exception

The nova client created by create_nova_admin_client was throwing
an Authentication exception. In order to properly create this client,
novaclient needs tenant_id set to a tenant-id. Note: novaclient
documents that project-id is specifically a tenant-name and from
what I can tell it isn't required for Trove use-cases.

Added a unit test to check that create_nova_admin_client causes
a nova client to get instantiated with the correct params.

(cherry picked from commit e1538ae75e)
Change-Id: I34d7d9dd36117bff796db22b851656ba78988558
Closes-bug: 1473550
This commit is contained in:
Doug Shelley 2015-09-29 02:41:30 +00:00 committed by Nikhil Manchanda
parent f6a6a7a0e2
commit 37aea11d77
2 changed files with 16 additions and 3 deletions

View File

@ -98,7 +98,7 @@ def nova_client(context):
endpoint_type=CONF.nova_compute_endpoint_type)
client = Client(context.user, context.auth_token,
bypass_url=url, project_id=context.tenant,
bypass_url=url, tenant_id=context.tenant,
auth_url=PROXY_AUTH_URL)
client.client.auth_token = context.auth_token
client.client.management_url = url
@ -112,8 +112,6 @@ def create_admin_nova_client(context):
"""
client = create_nova_client(context)
client.client.auth_token = None
client.client.management_url = ("%s/%s" %
(CONF.nova_compute_url, context.tenant))
return client

View File

@ -401,6 +401,21 @@ class TestCreateNovaClient(trove_testtools.TestCase):
self.assertEqual(self.computev3_public_url_region_two,
client.client.management_url)
def test_create_admin_client(self):
nova_url_from_conf = 'http://adminexample.com/'
cfg.CONF.set_override('nova_compute_url', nova_url_from_conf)
admin_user = 'admin1'
admin_pass = 'adminpwd'
admin_tenant_id = uuid.uuid4().hex
admin_client = remote.create_admin_nova_client(
TroveContext(user=admin_user,
auth_token=admin_pass,
tenant=admin_tenant_id))
self.assertEqual(admin_user, admin_client.client.user)
self.assertEqual(admin_pass, admin_client.client.password)
self.assertEqual('%s%s' % (nova_url_from_conf, admin_tenant_id),
admin_client.client.management_url)
class TestCreateHeatClient(trove_testtools.TestCase):
def setUp(self):