Add intermediate variables for attacker,monitor,result_checker
[yardstick.git] / yardstick / benchmark / scenarios / availability / director.py
index 76fcc0e..71690c1 100644 (file)
@@ -24,7 +24,7 @@ LOG = logging.getLogger(__name__)
 class Director(object):
     """
     Director is used to direct a test scenaio
-    including the creation of  action players, test result verification
+    including the creation of action players, test result verification
     and rollback of actions.
     """
 
@@ -33,6 +33,7 @@ class Director(object):
         # A stack store Rollbacker that will be called after
         # all actionplayers finish.
         self.executionSteps = []
+        self.data = {}
 
         self.scenario_cfg = scenario_cfg
         self.context_cfg = context_cfg
@@ -42,12 +43,14 @@ class Director(object):
             LOG.debug("start init attackers...")
             attacker_cfgs = self.scenario_cfg["options"]["attackers"]
             self.attackerMgr = baseattacker.AttackerMgr()
-            self.attackerMgr.init_attackers(attacker_cfgs, nodes)
+            self.data = self.attackerMgr.init_attackers(attacker_cfgs,
+                                                        nodes)
+
         # setup monitors
         if "monitors" in self.scenario_cfg["options"]:
             LOG.debug("start init monitors...")
             monitor_cfgs = self.scenario_cfg["options"]["monitors"]
-            self.monitorMgr = basemonitor.MonitorMgr()
+            self.monitorMgr = basemonitor.MonitorMgr(self.data)
             self.monitorMgr.init_monitors(monitor_cfgs, nodes)
         # setup operations
         if "operations" in self.scenario_cfg["options"]:
@@ -62,18 +65,21 @@ class Director(object):
             self.resultCheckerMgr = baseresultchecker.ResultCheckerMgr()
             self.resultCheckerMgr.init_ResultChecker(result_check_cfgs, nodes)
 
-    def createActionPlayer(self, type, key):
+    def createActionPlayer(self, type, key, intermediate_variables=None):
+        if intermediate_variables is None:
+            intermediate_variables = {}
         LOG.debug(
             "the type of current action is %s, the key is %s", type, key)
         if type == ActionType.ATTACKER:
-            return actionplayers.AttackerPlayer(self.attackerMgr[key])
+            return actionplayers.AttackerPlayer(self.attackerMgr[key], intermediate_variables)
         if type == ActionType.MONITOR:
-            return actionplayers.MonitorPlayer(self.monitorMgr[key])
+            return actionplayers.MonitorPlayer(self.monitorMgr[key], intermediate_variables)
         if type == ActionType.RESULTCHECKER:
             return actionplayers.ResultCheckerPlayer(
-                self.resultCheckerMgr[key])
+                self.resultCheckerMgr[key], intermediate_variables)
         if type == ActionType.OPERATION:
-            return actionplayers.OperationPlayer(self.operationMgr[key])
+            return actionplayers.OperationPlayer(self.operationMgr[key],
+                                                 intermediate_variables)
         LOG.debug("something run when creatactionplayer")
 
     def createActionRollbacker(self, type, key):
@@ -105,3 +111,8 @@ class Director(object):
         while self.executionSteps:
             singleStep = self.executionSteps.pop()
             singleStep.rollback()
+
+    def store_result(self, result):
+        LOG.debug("store result ....")
+        if hasattr(self, 'monitorMgr'):
+            self.monitorMgr.store_result(result)