Merge lp:~fnordahl/charm-helpers/bug-1651989 into lp:charm-helpers

Proposed by Frode Nordahl
Status: Merged
Merged at revision: 682
Proposed branch: lp:~fnordahl/charm-helpers/bug-1651989
Merge into: lp:charm-helpers
Diff against target: 96 lines (+48/-18)
1 file modified
charmhelpers/contrib/openstack/amulet/utils.py (+48/-18)
To merge this branch: bzr merge lp:~fnordahl/charm-helpers/bug-1651989
Reviewer Review Type Date Requested Status
Liam Young (community) Approve
Review via email: mp+316489@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Liam Young (gnuoy) wrote :

LGTM, thanks

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'charmhelpers/contrib/openstack/amulet/utils.py'
2--- charmhelpers/contrib/openstack/amulet/utils.py 2016-12-12 13:14:06 +0000
3+++ charmhelpers/contrib/openstack/amulet/utils.py 2017-02-06 18:12:08 +0000
4@@ -20,6 +20,7 @@
5 import six
6 import time
7 import urllib
8+import urlparse
9
10 import cinderclient.v1.client as cinder_client
11 import glanceclient.v1.client as glance_client
12@@ -311,6 +312,37 @@
13 ept = "http://{}:5000/v2.0".format(keystone_ip.strip().decode('utf-8'))
14 return cinder_client.Client(username, password, tenant, ept)
15
16+ def authenticate_keystone(self, keystone_ip, username, password,
17+ api_version=False, admin_port=False,
18+ user_domain_name=None, domain_name=None,
19+ project_domain_name=None, project_name=None):
20+ """Authenticate with Keystone"""
21+ self.log.debug('Authenticating with keystone...')
22+ port = 5000
23+ if admin_port:
24+ port = 35357
25+ base_ep = "http://{}:{}".format(keystone_ip.strip().decode('utf-8'),
26+ port)
27+ if not api_version or api_version == 2:
28+ ep = base_ep + "/v2.0"
29+ return keystone_client.Client(username=username, password=password,
30+ tenant_name=project_name,
31+ auth_url=ep)
32+ else:
33+ ep = base_ep + "/v3"
34+ auth = keystone_id_v3.Password(
35+ user_domain_name=user_domain_name,
36+ username=username,
37+ password=password,
38+ domain_name=domain_name,
39+ project_domain_name=project_domain_name,
40+ project_name=project_name,
41+ auth_url=ep
42+ )
43+ return keystone_client_v3.Client(
44+ session=keystone_session.Session(auth=auth)
45+ )
46+
47 def authenticate_keystone_admin(self, keystone_sentry, user, password,
48 tenant=None, api_version=None,
49 keystone_ip=None):
50@@ -319,30 +351,28 @@
51 if not keystone_ip:
52 keystone_ip = keystone_sentry.info['public-address']
53
54- base_ep = "http://{}:35357".format(keystone_ip.strip().decode('utf-8'))
55- if not api_version or api_version == 2:
56- ep = base_ep + "/v2.0"
57- return keystone_client.Client(username=user, password=password,
58- tenant_name=tenant, auth_url=ep)
59- else:
60- ep = base_ep + "/v3"
61- auth = keystone_id_v3.Password(
62- user_domain_name='admin_domain',
63- username=user,
64- password=password,
65- domain_name='admin_domain',
66- auth_url=ep,
67- )
68- sess = keystone_session.Session(auth=auth)
69- return keystone_client_v3.Client(session=sess)
70+ user_domain_name = None
71+ domain_name = None
72+ if api_version == 3:
73+ user_domain_name = 'admin_domain'
74+ domain_name = user_domain_name
75+
76+ return self.authenticate_keystone(keystone_ip, user, password,
77+ project_name=tenant,
78+ api_version=api_version,
79+ user_domain_name=user_domain_name,
80+ domain_name=domain_name,
81+ admin_port=True)
82
83 def authenticate_keystone_user(self, keystone, user, password, tenant):
84 """Authenticates a regular user with the keystone public endpoint."""
85 self.log.debug('Authenticating keystone user ({})...'.format(user))
86 ep = keystone.service_catalog.url_for(service_type='identity',
87 endpoint_type='publicURL')
88- return keystone_client.Client(username=user, password=password,
89- tenant_name=tenant, auth_url=ep)
90+ keystone_ip = urlparse.urlparse(ep).hostname
91+
92+ return self.authenticate_keystone(keystone_ip, user, password,
93+ project_name=tenant)
94
95 def authenticate_glance_admin(self, keystone):
96 """Authenticates admin user with glance."""

Subscribers

People subscribed via source and target branches