Merge "Fix pylint errors/warnings in tempest modules"
[functest.git] / functest / energy / energy.py
index 580bc6b..c7da8f0 100644 (file)
 
 import json
 import logging
-import urllib
+import os
+import traceback
 
 from functools import wraps
 import requests
-
-import functest.utils.functest_utils as ft_utils
+from six.moves import urllib
 
 
 def finish_session(current_scenario):
@@ -25,6 +25,9 @@ def finish_session(current_scenario):
     if current_scenario is None:
         EnergyRecorder.stop()
     else:
+        EnergyRecorder.logger.debug("Restoring previous scenario (%s/%s)",
+                                    current_scenario["scenario"],
+                                    current_scenario["step"])
         EnergyRecorder.submit_scenario(
             current_scenario["scenario"],
             current_scenario["step"]
@@ -76,7 +79,7 @@ class EnergyRecorder(object):
     INITIAL_STEP = "running"
 
     # Default connection timeout
-    CONNECTION_TIMOUT = 1
+    CONNECTION_TIMEOUT = 4
 
     @staticmethod
     def load_config():
@@ -90,27 +93,20 @@ class EnergyRecorder(object):
         # Singleton pattern for energy_recorder_api static member
         # Load only if not previouly done
         if EnergyRecorder.energy_recorder_api is None:
-            environment = ft_utils.get_pod_name()
+            assert os.environ['NODE_NAME']
+            assert os.environ["ENERGY_RECORDER_API_URL"]
+            environment = os.environ['NODE_NAME']
+            energy_recorder_uri = os.environ["ENERGY_RECORDER_API_URL"]
 
-            # API URL
-            energy_recorder_uri = ft_utils.get_functest_config(
-                "energy_recorder.api_url")
-            assert energy_recorder_uri
-            assert environment
+            # Creds
+            creds_usr = os.environ.get("ENERGY_RECORDER_API_USER", "")
+            creds_pass = os.environ.get("ENERGY_RECORDER_API_PASSWORD", "")
 
             uri_comp = "/recorders/environment/"
-            uri_comp += urllib.quote_plus(environment)
-            EnergyRecorder.logger.debug(
-                "API recorder at: " + energy_recorder_uri + uri_comp)
-
-            # Creds
-            user = ft_utils.get_functest_config(
-                "energy_recorder.api_user")
-            password = ft_utils.get_functest_config(
-                "energy_recorder.api_password")
+            uri_comp += urllib.parse.quote_plus(environment)
 
-            if user != "" and password != "":
-                energy_recorder_api_auth = (user, password)
+            if creds_usr != "" and creds_pass != "":
+                energy_recorder_api_auth = (creds_usr, creds_pass)
             else:
                 energy_recorder_api_auth = None
 
@@ -120,11 +116,15 @@ class EnergyRecorder(object):
                                     headers={
                                         'content-type': 'application/json'
                                     },
-                                    timeout=EnergyRecorder.CONNECTION_TIMOUT)
+                                    timeout=EnergyRecorder.CONNECTION_TIMEOUT)
                 api_available = json.loads(resp.text)["status"] == "OK"
-            except Exception:  # pylint: disable=broad-except
-                EnergyRecorder.logger.error(
-                    "Energy recorder API is not available")
+                EnergyRecorder.logger.info(
+                    "API recorder available at : %s",
+                    energy_recorder_uri + uri_comp)
+            except Exception as exc:  # pylint: disable=broad-except
+                EnergyRecorder.logger.info(
+                    "Energy recorder API is not available, cause=%s",
+                    str(exc))
                 api_available = False
             # Final config
             EnergyRecorder.energy_recorder_api = {
@@ -148,7 +148,8 @@ class EnergyRecorder(object):
             return_status = True
             # Ensure that connectyvity settings are loaded
             if EnergyRecorder.load_config():
-                EnergyRecorder.logger.debug("Submitting scenario")
+                EnergyRecorder.logger.debug("Submitting scenario (%s/%s)",
+                                            scenario, step)
 
                 # Create API payload
                 payload = {
@@ -163,7 +164,7 @@ class EnergyRecorder(object):
                     headers={
                         'content-type': 'application/json'
                     },
-                    timeout=EnergyRecorder.CONNECTION_TIMOUT
+                    timeout=EnergyRecorder.CONNECTION_TIMEOUT
                 )
                 if response.status_code != 200:
                     EnergyRecorder.logger.error(
@@ -177,8 +178,9 @@ class EnergyRecorder(object):
         except Exception:  # pylint: disable=broad-except
             # Default exception handler to ensure that method
             # is safe for caller
-            EnergyRecorder.logger.exception(
-                "Error while submitting scenarion to energy recorder API"
+            EnergyRecorder.logger.info(
+                "Error while submitting scenarion to energy recorder API\n%s",
+                traceback.format_exc()
             )
             return_status = False
         return return_status
@@ -203,8 +205,9 @@ class EnergyRecorder(object):
         except Exception:  # pylint: disable=broad-except
             # Default exception handler to ensure that method
             # is safe for caller
-            EnergyRecorder.logger.exception(
-                "Error while starting energy recorder API"
+            EnergyRecorder.logger.info(
+                "Error while starting energy recorder API\n%s",
+                traceback.format_exc()
             )
             return_status = False
         return return_status
@@ -225,7 +228,7 @@ class EnergyRecorder(object):
                     headers={
                         'content-type': 'application/json'
                     },
-                    timeout=EnergyRecorder.CONNECTION_TIMOUT
+                    timeout=EnergyRecorder.CONNECTION_TIMEOUT
                 )
                 if response.status_code != 200:
                     EnergyRecorder.logger.error(
@@ -239,8 +242,9 @@ class EnergyRecorder(object):
         except Exception:  # pylint: disable=broad-except
             # Default exception handler to ensure that method
             # is safe for caller
-            EnergyRecorder.logger.exception(
-                "Error while stoping energy recorder API"
+            EnergyRecorder.logger.info(
+                "Error while stoping energy recorder API\n%s",
+                traceback.format_exc()
             )
             return_status = False
         return return_status
@@ -267,7 +271,7 @@ class EnergyRecorder(object):
                     headers={
                         'content-type': 'application/json'
                     },
-                    timeout=EnergyRecorder.CONNECTION_TIMOUT
+                    timeout=EnergyRecorder.CONNECTION_TIMEOUT
                 )
                 if response.status_code != 200:
                     EnergyRecorder.logger.error(
@@ -281,8 +285,9 @@ class EnergyRecorder(object):
         except Exception:  # pylint: disable=broad-except
             # Default exception handler to ensure that method
             # is safe for caller
-            EnergyRecorder.logger.exception(
-                "Error while setting step on energy recorder API"
+            EnergyRecorder.logger.info(
+                "Error while setting step on energy recorder API\n%s",
+                traceback.format_exc()
             )
             return_status = False
         return return_status
@@ -300,7 +305,7 @@ class EnergyRecorder(object):
                 response = requests.get(
                     EnergyRecorder.energy_recorder_api["uri"],
                     auth=EnergyRecorder.energy_recorder_api["auth"],
-                    timeout=EnergyRecorder.CONNECTION_TIMOUT
+                    timeout=EnergyRecorder.CONNECTION_TIMEOUT
                 )
                 if response.status_code == 200:
                     return_value = json.loads(response.text)
@@ -321,8 +326,9 @@ class EnergyRecorder(object):
         except Exception:  # pylint: disable=broad-except
             # Default exception handler to ensure that method
             # is safe for caller
-            EnergyRecorder.logger.exception(
+            EnergyRecorder.logger.info(
                 "Error while getting current scenario from energy recorder API"
+                "\n%s", traceback.format_exc()
             )
             return_value = None
         return return_value