X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=yardstick%2Fbenchmark%2Fscenarios%2Favailability%2Fdirector.py;h=71690c1357e81510b9e6f8d71702cb1cc8548d05;hb=b6c7cfb4ffe0c472f2f4a9efc32df59a831b3cc0;hp=104c683807dd3e31a75bcef405535f4e171cc288;hpb=74479a22c461cc2c08f9525879481c0a86d3af84;p=yardstick.git diff --git a/yardstick/benchmark/scenarios/availability/director.py b/yardstick/benchmark/scenarios/availability/director.py index 104c68380..71690c135 100644 --- a/yardstick/benchmark/scenarios/availability/director.py +++ b/yardstick/benchmark/scenarios/availability/director.py @@ -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 logging from yardstick.benchmark.scenarios.availability.monitor import basemonitor @@ -23,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. """ @@ -32,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 @@ -41,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"]: @@ -61,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): @@ -104,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)