bug-fix: idenity env not defined
[bottlenecks.git] / utils / env_prepare / quota_prepare.py
index 267e70a..367f761 100644 (file)
@@ -42,18 +42,52 @@ nova_quota = {"ram": -1,
               "injected_file_path_bytes": -1}
 
 
+def check_https_enabled():
+    LOG.debug("Check if https is enabled in OpenStack")
+    os_auth_url = os.getenv('OS_AUTH_URL')
+    if os_auth_url.startswith('https'):
+        LOG.debug("https is enabled")
+        return True
+    LOG.debug("https is not enabled")
+    return False
+
+
 def quota_env_prepare():
-    tenant_name = os.getenv("OS_TENANT_NAME")
-    cmd = ("openstack project list | grep " +
-           tenant_name +
-           " | awk '{print $2}'")
+    https_enabled = check_https_enabled()
+    insecure_option = ''
+    insecure = os.getenv('OS_INSECURE',)
+    if https_enabled:
+        LOG.info("https is enabled")
+        if insecure:
+            if insecure.lower() == "true":
+                insecure_option = ' --insecure '
+            else:
+                LOG.warn("Env variable OS_INSECURE is {}: if https + no "
+                         "credential used, it should be set as True."
+                         .format(insecure))
 
-    result = commands.getstatusoutput(cmd)
-    if result[0] == 0:
-        LOG.info("Get %s project id is %s" % (tenant_name, result[1]))
+    quota_name = os.getenv("OS_PROJECT_NAME")
+    if quota_name:
+        cmd = ("openstack {} project list | grep ".format(insecure_option) +
+               quota_name +
+               " | awk '{print $2}'")
+        result = commands.getstatusoutput(cmd)
+        if result[0] == 0 and 'exception' not in result[1]:
+            LOG.info("Get %s project name is %s" % (quota_name, result[1]))
+        else:
+            LOG.error("can't get openstack project name")
+            return 1
     else:
-        LOG.error("can't get openstack project id")
-        return 1
+        quota_name = os.getenv("OS_TENANT_NAME")
+        cmd = ("openstack {} tenant list | grep ".format(insecure_option) +
+               quota_name +
+               " | awk '{print $2}'")
+        result = commands.getstatusoutput(cmd)
+        if result[0] == 0 and 'exception' not in result[1]:
+            LOG.info("Get %s tenant name is %s" % (quota_name, result[1]))
+        else:
+            LOG.error("can't get openstack tenant name")
+            return 1
 
     openstack_id = result[1]
 
@@ -62,7 +96,7 @@ def quota_env_prepare():
 
     nova_q = nova_client.quotas.get(openstack_id).to_dict()
     neutron_q = neutron_client.show_quota(openstack_id)
-    LOG.info(tenant_name + "tenant nova and neutron quota(previous) :")
+    LOG.info(quota_name + " nova and neutron quotas (previous) :")
     LOG.info(nova_q)
     LOG.info(neutron_q)
 
@@ -73,7 +107,7 @@ def quota_env_prepare():
 
     nova_q = nova_client.quotas.get(openstack_id).to_dict()
     neutron_q = neutron_client.show_quota(openstack_id)
-    LOG.info(tenant_name + "tenant nova and neutron quota(now) :")
+    LOG.info(quota_name + " nova and neutron quotas (now) :")
     LOG.info(nova_q)
     LOG.info(neutron_q)
     return 0