summaryrefslogtreecommitdiff
path: root/libs/keystone.py
blob: 05c4d8cee589650c52a3069500c5697dbf9baa75 (plain)
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
39
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)