diff options
Diffstat (limited to 'libs/keystone.py')
| -rw-r--r-- | libs/keystone.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/libs/keystone.py b/libs/keystone.py new file mode 100644 index 0000000..05c4d8c --- /dev/null +++ b/libs/keystone.py @@ -0,0 +1,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) |
