Fix transient clusters termination

The problem started to appear in our CI jobs on March 26.
See the bug description for details.

Closes-Bug: #1298391

Change-Id: I4b4102f12efd27be13255e7b0ca120d66a078673
This commit is contained in:
Dmitry Mescheryakov 2014-03-27 17:34:35 +04:00
parent ccd286f9b3
commit e15ff0498e
2 changed files with 17 additions and 17 deletions

View File

@ -29,11 +29,10 @@ CONF = cfg.CONF
def create_trust(cluster):
client = keystone.client()
trustee_id = keystone.client_for_trusts(
CONF.os_admin_username,
CONF.os_admin_password,
None).user_id
ctx = context.current()
trustee_id = keystone.client_for_admin(ctx.tenant_id).user_id
trust = client.trusts.create(trustor_user=client.user_id,
trustee_user=trustee_id,
impersonation=True,
@ -49,10 +48,7 @@ def use_os_admin_auth_token(cluster):
ctx = context.current()
ctx.username = CONF.os_admin_username
ctx.tenant_id = cluster.tenant_id
client = keystone.client_for_trusts(
CONF.os_admin_username,
CONF.os_admin_password,
cluster.trust_id)
client = keystone.client_for_trusts(cluster.trust_id)
ctx.token = client.auth_token
ctx.service_catalog = json.dumps(
client.service_catalog.catalog['catalog'])
@ -60,8 +56,5 @@ def use_os_admin_auth_token(cluster):
def delete_trust(cluster):
if cluster.trust_id:
keystone_client = keystone.client_for_trusts(
CONF.os_admin_username,
CONF.os_admin_password,
cluster.trust_id)
keystone_client = keystone.client_for_trusts(cluster.trust_id)
keystone_client.trusts.delete(cluster.trust_id)

View File

@ -52,17 +52,24 @@ def client():
return keystone
def client_for_trusts(username, password, trust_id):
def _admin_client(tenant_id=None, trust_id=None):
if not CONF.use_identity_api_v3:
raise Exception('Trusts aren\'t implemented in keystone api'
' less than v3')
ctx = context.current()
auth_url = base.retrieve_auth_url()
keystone = keystone_client_v3.Client(username=username,
password=password,
tenant_id=ctx.tenant_id,
keystone = keystone_client_v3.Client(username=CONF.os_admin_username,
password=CONF.os_admin_password,
tenant_id=tenant_id,
auth_url=auth_url,
trust_id=trust_id)
keystone.management_url = auth_url
return keystone
def client_for_admin(tenant_id):
return _admin_client(tenant_id=tenant_id)
def client_for_trusts(trust_id):
return _admin_client(trust_id=trust_id)