the recovery action of "baremetal down" should be triggered mandatory
[yardstick.git] / yardstick / benchmark / scenarios / availability / attacker / baseattacker.py
index ca23240..7871cc9 100644 (file)
@@ -8,11 +8,11 @@
 ##############################################################################
 from __future__ import absolute_import
 import pkg_resources
-import yaml
 import logging
 import os
 
 import yardstick.common.utils as utils
+from yardstick.common.yaml_loader import yaml_load
 
 LOG = logging.getLogger(__name__)
 
@@ -25,6 +25,7 @@ class AttackerMgr(object):
 
     def __init__(self):
         self._attacker_list = []
+        self.data = {}
 
     def init_attackers(self, attacker_cfgs, context):
         LOG.debug("attackerMgr confg: %s", attacker_cfgs)
@@ -35,6 +36,8 @@ class AttackerMgr(object):
             attacker_ins.key = cfg['key']
             attacker_ins.setup()
             self._attacker_list.append(attacker_ins)
+            self.data = dict(self.data.items() + attacker_ins.data.items())
+        return self.data
 
     def __getitem__(self, item):
         for obj in self._attacker_list:
@@ -53,11 +56,14 @@ class BaseAttacker(object):
     def __init__(self, config, context):
         if not BaseAttacker.attacker_cfgs:
             with open(attacker_conf_path) as stream:
-                BaseAttacker.attacker_cfgs = yaml.load(stream)
+                BaseAttacker.attacker_cfgs = yaml_load(stream)
 
         self._config = config
         self._context = context
+        self.data = {}
         self.setup_done = False
+        self.intermediate_variables = {}
+        self.mandatory = False
 
     @staticmethod
     def get_attacker_cls(attacker_cfg):
@@ -66,7 +72,7 @@ class BaseAttacker(object):
         for attacker_cls in utils.itersubclasses(BaseAttacker):
             if attacker_type == attacker_cls.__attacker_type__:
                 return attacker_cls
-        raise RuntimeError("No such runner_type %s" % attacker_type)
+        raise RuntimeError("No such runner_type: %s" % attacker_type)
 
     def get_script_fullpath(self, path):
         base_path = os.path.dirname(attacker_conf_path)