bug-fix: insecure option for quota setting
[bottlenecks.git] / utils / infra_setup / heat / common.py
1 ##############################################################################
2 # Copyright (c) 2016 Huawei Technologies Co.,Ltd and others.
3 #
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
9
10 import os
11 import logging
12
13 from keystoneauth1 import loading
14 from keystoneauth1 import session
15
16 log = logging.getLogger(__name__)
17
18 DEFAULT_HEAT_API_VERSION = '1'
19 DEFAULT_NOVA_API_VERSION = '2'
20 DEFAULT_GLANCE_API_VERSION = '2'
21
22
23 def get_credentials():
24     """Returns a creds dictionary filled with parsed from env"""
25     creds = {}
26
27     keystone_api_version = os.getenv('OS_IDENTITY_API_VERSION')
28
29     if keystone_api_version is None or keystone_api_version == '2':
30         keystone_v3 = False
31         tenant_env = 'OS_TENANT_NAME'
32         tenant = 'tenant_name'
33     else:
34         keystone_v3 = True
35         tenant_env = 'OS_PROJECT_NAME'
36         tenant = 'project_name'
37
38     # The most common way to pass these info to the script is to do it
39     # through environment variables.
40     creds.update({
41         "username": os.environ.get("OS_USERNAME"),
42         "password": os.environ.get("OS_PASSWORD"),
43         "auth_url": os.environ.get("OS_AUTH_URL"),
44         tenant: os.environ.get(tenant_env)
45     })
46
47     if keystone_v3:
48         if os.getenv('OS_USER_DOMAIN_NAME') is not None:
49             creds.update({
50                 "user_domain_name": os.getenv('OS_USER_DOMAIN_NAME')
51             })
52         if os.getenv('OS_PROJECT_DOMAIN_NAME') is not None:
53             creds.update({
54                 "project_domain_name": os.getenv('OS_PROJECT_DOMAIN_NAME')
55             })
56
57     return creds
58
59
60 def get_session_auth():
61     loader = loading.get_plugin_loader('password')
62     creds = get_credentials()
63     auth = loader.load_from_options(**creds)
64     return auth
65
66
67 def get_session():
68     auth = get_session_auth()
69     if os.getenv('OS_INSECURE', '').lower() == 'true':
70         cacert = False
71         return session.Session(auth=auth, verify=cacert)
72     else:
73         try:
74             cacert = os.environ['OS_CACERT']
75         except KeyError:
76             return session.Session(auth=auth)
77         else:
78             return session.Session(auth=auth, verify=cacert)
79
80
81 def get_endpoint(service_type, endpoint_type='publicURL'):
82     auth = get_session_auth()
83     return get_session().get_endpoint(auth=auth,
84                                       service_type=service_type,
85                                       endpoint_type=endpoint_type)
86
87
88 def get_heat_api_version():
89     api_version = os.getenv('HEAT_API_VERSION')
90     if api_version is not None:
91         log.info("HEAT_API_VERSION is set in env as '%s'", api_version)
92         return api_version
93     return DEFAULT_HEAT_API_VERSION
94
95
96 def get_nova_api_version():
97     api_version = os.getenv('OS_COMPUTE_API_VERSION')
98     if api_version is not None:
99         log.info("NOVA_API_VERSION is set in env as '%s'", api_version)
100         return api_version
101     return DEFAULT_NOVA_API_VERSION
102
103
104 def get_glance_api_version():
105     api_version = os.getenv('OS_IMAGE_API_VERSION')
106     if api_version is not None:
107         log.info("GLANCE_API_VERSION is set in env as '%s'", api_version)
108         return api_version
109     return DEFAULT_GLANCE_API_VERSION