standardize ssh auth
[yardstick.git] / yardstick / benchmark / scenarios / availability / monitor / basemonitor.py
index 25990ac..3062037 100644 (file)
@@ -6,24 +6,68 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
+from __future__ import absolute_import
 import pkg_resources
 import logging
 import multiprocessing
 import time
 import os
 import yardstick.common.utils as utils
+import yaml
 
 LOG = logging.getLogger(__name__)
 
 monitor_conf_path = pkg_resources.resource_filename(
-    "yardstick.benchmark.scenarios.availability.monitor",
+    "yardstick.benchmark.scenarios.availability",
     "monitor_conf.yaml")
 
 
+class MonitorMgr(object):
+    """docstring for MonitorMgr"""
+
+    def __init__(self):
+        self._monitor_list = []
+
+    def init_monitors(self, monitor_cfgs, context):
+        LOG.debug("monitorMgr config: %s", monitor_cfgs)
+
+        for monitor_cfg in monitor_cfgs:
+            monitor_type = monitor_cfg["monitor_type"]
+            monitor_cls = BaseMonitor.get_monitor_cls(monitor_type)
+            monitor_ins = monitor_cls(monitor_cfg, context)
+            if "key" in monitor_cfg:
+                monitor_ins.key = monitor_cfg["key"]
+            self._monitor_list.append(monitor_ins)
+
+    def __getitem__(self, item):
+        for obj in self._monitor_list:
+            if obj.key == item:
+                return obj
+        raise KeyError("No such monitor instance of key - %s" % item)
+
+    def start_monitors(self):
+        for _monotor_instace in self._monitor_list:
+            _monotor_instace.start_monitor()
+
+    def wait_monitors(self):
+        for monitor in self._monitor_list:
+            monitor.wait_monitor()
+
+    def verify_SLA(self):
+        sla_pass = True
+        for monitor in self._monitor_list:
+            sla_pass = sla_pass & monitor.verify_SLA()
+        return sla_pass
+
+
 class BaseMonitor(multiprocessing.Process):
     """docstring for BaseMonitor"""
+    monitor_cfgs = {}
 
     def __init__(self, config, context):
+        if not BaseMonitor.monitor_cfgs:
+            with open(monitor_conf_path) as stream:
+                BaseMonitor.monitor_cfgs = yaml.load(stream)
         multiprocessing.Process.__init__(self)
         self._config = config
         self._context = context
@@ -33,7 +77,7 @@ class BaseMonitor(multiprocessing.Process):
 
     @staticmethod
     def get_monitor_cls(monitor_type):
-        '''return monitor class of specified type'''
+        """return monitor class of specified type"""
 
         for monitor in utils.itersubclasses(BaseMonitor):
             if monitor_type == monitor.__monitor_type__:
@@ -45,7 +89,7 @@ class BaseMonitor(multiprocessing.Process):
         return os.path.join(base_path, path)
 
     def run(self):
-        LOG.debug("config:%s context:%s" % (self._config, self._context))
+        LOG.debug("config:%s context:%s", self._config, self._context)
 
         self.setup()
         monitor_time = self._config.get("monitor_time", 0)
@@ -88,7 +132,7 @@ class BaseMonitor(multiprocessing.Process):
         total_time = end_time - begin_time
 
         self._queue.put({"total_time": total_time,
-                         "outage_time": last_outage-first_outage,
+                         "outage_time": last_outage - first_outage,
                          "total_count": total_count,
                          "outage_count": outage_count})
 
@@ -98,7 +142,7 @@ class BaseMonitor(multiprocessing.Process):
     def wait_monitor(self):
         self.join()
         self._result = self._queue.get()
-        LOG.debug("the monitor result:%s" % self._result)
+        LOG.debug("the monitor result:%s", self._result)
 
     def setup(self):  # pragma: no cover
         pass
@@ -108,33 +152,3 @@ class BaseMonitor(multiprocessing.Process):
 
     def verify_SLA(self):
         pass
-
-
-class MonitorMgr(object):
-    """docstring for MonitorMgr"""
-    def __init__(self):
-        self._monitor_list = []
-
-    def init_monitors(self, monitor_cfgs, context):
-        LOG.debug("monitorMgr config: %s" % monitor_cfgs)
-
-        for monitor_cfg in monitor_cfgs:
-            monitor_type = monitor_cfg["monitor_type"]
-            monitor_cls = BaseMonitor.get_monitor_cls(monitor_type)
-            monitor_ins = monitor_cls(monitor_cfg, context)
-
-            self._monitor_list.append(monitor_ins)
-
-    def start_monitors(self):
-        for _monotor_instace in self._monitor_list:
-            _monotor_instace.start_monitor()
-
-    def wait_monitors(self):
-        for monitor in self._monitor_list:
-            monitor.wait_monitor()
-
-    def verify_SLA(self):
-        sla_pass = True
-        for monitor in self._monitor_list:
-            sla_pass = sla_pass & monitor.verify_SLA()
-        return sla_pass