Optimization of "list_metrics" function
[osm/MON.git] / osm_mon / plugins / OpenStack / common.py
index 0c5e7c6..e5a70f9 100644 (file)
 # contact: helena.mcgough@intel.com or adrian.hoban@intel.com
 ##
 """Common methods for the OpenStack plugins."""
-
+import json
 import logging
 
 import requests
+import yaml
 from keystoneclient.v3 import client
 
 from osm_mon.core.auth import AuthManager
@@ -60,10 +61,22 @@ class Common(object):
                            username=creds.user,
                            password=creds.password,
                            tenant_name=creds.tenant_name)
+        endpoint_type = 'publicURL'
+        region_name = 'RegionOne'
+        if creds.config is not None:
+            try:
+                config = json.loads(creds.config)
+            except ValueError:
+                config = yaml.safe_load(creds.config)
+            if 'endpoint_type' in config:
+                endpoint_type = config['endpoint_type']
+            if 'region_name' in config:
+                region_name = config['region_name']
+
         return ks.service_catalog.url_for(
             service_type=service_type,
-            endpoint_type='publicURL',
-            region_name='RegionOne')
+            endpoint_type=endpoint_type,
+            region_name=region_name)
 
     @staticmethod
     def perform_request(url, auth_token,
@@ -76,17 +89,17 @@ class Common(object):
         if req_type == "put":
             response = requests.put(
                 url, data=payload, headers=headers,
-                timeout=1)
+                timeout=10)
         elif req_type == "get":
             response = requests.get(
-                url, params=params, headers=headers, timeout=1)
+                url, params=params, headers=headers, timeout=10)
         elif req_type == "delete":
             response = requests.delete(
-                url, headers=headers, timeout=1)
+                url, headers=headers, timeout=10)
         else:
             response = requests.post(
                 url, data=payload, headers=headers,
-                timeout=1)
+                timeout=10)
 
         # Raises exception if there was an error
         try: