27
27
import glanceclient.v1.client as glance_client
28
28
import heatclient.v1.client as heat_client
29
29
import keystoneclient.v2_0 as keystone_client
30
from keystoneclient.auth.identity import v3 as keystone_id_v3
31
from keystoneclient import session as keystone_session
32
from keystoneclient.v3 import client as keystone_client_v3
30
34
import novaclient.v1_1.client as nova_client
139
143
return "role {} does not exist".format(e['name'])
142
def validate_user_data(self, expected, actual):
146
def validate_user_data(self, expected, actual, api_version=None):
143
147
"""Validate user data.
145
149
Validate a list of actual user data vs a list of expected user
150
154
for e in expected:
152
156
for act in actual:
153
a = {'enabled': act.enabled, 'name': act.name,
154
'email': act.email, 'tenantId': act.tenantId,
156
if e['name'] == a['name']:
157
if e['name'] == act.name:
158
a = {'enabled': act.enabled, 'name': act.name,
159
'email': act.email, 'id': act.id}
161
a['default_project_id'] = getattr(act,
162
'default_project_id',
165
a['tenantId'] = act.tenantId
158
167
ret = self._validate_dict_data(e, a)
188
197
return cinder_client.Client(username, password, tenant, ept)
190
199
def authenticate_keystone_admin(self, keystone_sentry, user, password,
200
tenant=None, api_version=None,
192
202
"""Authenticates admin user with the keystone admin endpoint."""
193
203
self.log.debug('Authenticating keystone admin...')
194
204
unit = keystone_sentry
195
service_ip = unit.relation('shared-db',
196
'mysql:shared-db')['private-address']
197
ep = "http://{}:35357/v2.0".format(service_ip.strip().decode('utf-8'))
198
return keystone_client.Client(username=user, password=password,
199
tenant_name=tenant, auth_url=ep)
206
keystone_ip = unit.relation('shared-db',
207
'mysql:shared-db')['private-address']
208
base_ep = "http://{}:35357".format(keystone_ip.strip().decode('utf-8'))
209
if not api_version or api_version == 2:
210
ep = base_ep + "/v2.0"
211
return keystone_client.Client(username=user, password=password,
212
tenant_name=tenant, auth_url=ep)
215
auth = keystone_id_v3.Password(
216
user_domain_name='admin_domain',
219
domain_name='admin_domain',
222
sess = keystone_session.Session(auth=auth)
223
return keystone_client_v3.Client(session=sess)
201
225
def authenticate_keystone_user(self, keystone, user, password, tenant):
202
226
"""Authenticates a regular user with the keystone public endpoint."""