X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=yardstick%2Fbenchmark%2Fscenarios%2Favailability%2Fattacker%2Fbaseattacker.py;h=ca2324055e4d5dcb4935009ed56fed6b885951c1;hb=0c5e1909e7752422a3964d3ce47559dea60fe61c;hp=ddaf099693d1c79398871d5ec5dc48348f8b5497;hpb=53a96f499680587dc2f6172a964af35f9ce1c74b;p=yardstick.git diff --git a/yardstick/benchmark/scenarios/availability/attacker/baseattacker.py b/yardstick/benchmark/scenarios/availability/attacker/baseattacker.py index ddaf09969..ca2324055 100644 --- a/yardstick/benchmark/scenarios/availability/attacker/baseattacker.py +++ b/yardstick/benchmark/scenarios/availability/attacker/baseattacker.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 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