Merge "set log file to store debug info"
[yardstick.git] / yardstick / benchmark / scenarios / availability / attacker / baseattacker.py
index ddaf099..ca23240 100644 (file)
@@ -6,6 +6,7 @@
 # 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 yaml
 import logging
@@ -16,10 +17,35 @@ import yardstick.common.utils as utils
 LOG = logging.getLogger(__name__)
 
 attacker_conf_path = pkg_resources.resource_filename(
-    "yardstick.benchmark.scenarios.availability.attacker",
+    "yardstick.benchmark.scenarios.availability",
     "attacker_conf.yaml")
 
 
+class AttackerMgr(object):
+
+    def __init__(self):
+        self._attacker_list = []
+
+    def init_attackers(self, attacker_cfgs, context):
+        LOG.debug("attackerMgr confg: %s", attacker_cfgs)
+
+        for cfg in attacker_cfgs:
+            attacker_cls = BaseAttacker.get_attacker_cls(cfg)
+            attacker_ins = attacker_cls(cfg, context)
+            attacker_ins.key = cfg['key']
+            attacker_ins.setup()
+            self._attacker_list.append(attacker_ins)
+
+    def __getitem__(self, item):
+        for obj in self._attacker_list:
+            if(obj.key == item):
+                return obj
+
+    def recover(self):
+        for _instance in self._attacker_list:
+            _instance.recover()
+
+
 class BaseAttacker(object):
 
     attacker_cfgs = {}
@@ -35,7 +61,7 @@ class BaseAttacker(object):
 
     @staticmethod
     def get_attacker_cls(attacker_cfg):
-        '''return attacker instance of specified type'''
+        """return attacker instance of specified type"""
         attacker_type = attacker_cfg['fault_type']
         for attacker_cls in utils.itersubclasses(BaseAttacker):
             if attacker_type == attacker_cls.__attacker_type__:
@@ -45,3 +71,6 @@ class BaseAttacker(object):
     def get_script_fullpath(self, path):
         base_path = os.path.dirname(attacker_conf_path)
         return os.path.join(base_path, path)
+
+    def recover(self):
+        pass