1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
from keystoneauth1.identity import v3
from keystoneauth1 import session
from keystoneclient.v3 import client as keystoneclient
class Project(object):
def __init__(self, name, uuid):
self.name = name
self.uuid = uuid
class Keystone(object):
def __init__(self, env):
if env.os_identity_api_version != "3":
raise Exception("Keystone v3 is required. You are using version %s" % env.os_identity_api_version)
self.os_identity_api_version = env.os_identity_api_version
self.os_image_api_version = env.os_image_api_version
self.os_auth_url = env.os_auth_url.replace("v2.0", "v3")
auth = v3.Password(username=env.os_username,
password=env.os_password,
project_domain_name=env.os_project_domain_name,
user_domain_name=env.os_user_domain_name,
project_name=env.os_project_name,
auth_url=self.os_auth_url)
self.session = session.Session(auth=auth)
self.client = keystoneclient.Client(session=self.session,
region_name=env.os_region)
def get_projects(self):
return map(lambda x: Project(x.name, x.id),
[p for p in self.client.projects.list() if p.enabled])
def get_catalog_url(self, service_type=None, endpoint_type="publicURL"):
return self.session.get_endpoint(service_type=service_type,
endpoint_type=endpoint_type)
def get_glance_url(self, endpoint_type="publicURL"):
return self.get_catalog_url(service_type="image", endpoint_type=endpoint_type)
|