# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+from __future__ import absolute_import
import logging
-from baseattacker import BaseAttacker
import yardstick.ssh as ssh
from yardstick.benchmark.scenarios.availability import util
+from yardstick.benchmark.scenarios.availability.attacker.baseattacker import \
+ BaseAttacker
LOG = logging.getLogger(__name__)
__attacker_type__ = 'general-attacker'
def setup(self):
- LOG.debug("config:%s context:%s" % (self._config, self._context))
+ LOG.debug("config:%s context:%s", self._config, self._context)
host = self._context.get(self._config['host'], None)
- ip = host.get("ip", None)
- user = host.get("user", "root")
- ssh_port = host.get("ssh_port", ssh.DEFAULT_PORT)
- key_filename = host.get("key_filename", "~/.ssh/id_rsa")
- self.connection = ssh.SSH(user, ip, key_filename=key_filename,
- port=ssh_port)
+ self.connection = ssh.SSH.from_node(host, defaults={"user": "root"})
self.connection.wait(timeout=600)
LOG.debug("ssh host success!")
if "action_parameter" in self._config:
actionParameter = self._config['action_parameter']
str = util.buildshellparams(actionParameter)
- LOG.debug("inject parameter is: {0}".format(actionParameter))
- LOG.debug("inject parameter values are: {0}"
- .format(actionParameter.values()))
- l = list(item for item in actionParameter.values())
+ LOG.debug("inject parameter is: %s", actionParameter)
+ LOG.debug("inject parameter values are: %s",
+ list(actionParameter.values()))
+ l = list(actionParameter.values())
self.action_param = str.format(*l)
if "rollback_parameter" in self._config:
rollbackParameter = self._config['rollback_parameter']
str = util.buildshellparams(rollbackParameter)
- LOG.debug("recover parameter is: {0}".format(rollbackParameter))
- LOG.debug("recover parameter values are: {0}".
- format(rollbackParameter.values()))
- l = list(item for item in rollbackParameter.values())
+ LOG.debug("recover parameter is: %s", rollbackParameter)
+ LOG.debug("recover parameter values are: %s",
+ list(rollbackParameter.values()))
+ l = list(rollbackParameter.values())
self.rollback_param = str.format(*l)
self.fault_cfg = BaseAttacker.attacker_cfgs.get(self.attack_key)
self.fault_cfg['recovery_script'])
def inject_fault(self):
- LOG.debug("{0} starting inject!".format(self.key))
- LOG.debug("the inject_script path:{0}".format(self.inject_script))
+ LOG.debug("%s starting inject!", self.key)
+ LOG.debug("the inject_script path:%s", self.inject_script)
if "action_parameter" in self._config:
- LOG.debug("the shell command is: {0}".format(self.action_param))
- exit_status, stdout, stderr = self.connection.execute(
- self.action_param,
- stdin=open(self.inject_script, "r"))
+ LOG.debug("the shell command is: %s", self.action_param)
+ with open(self.inject_script, "r") as stdin_file:
+ exit_status, stdout, stderr = self.connection.execute(
+ "sudo {}".format(self.action_param),
+ stdin=stdin_file)
else:
- exit_status, stdout, stderr = self.connection.execute(
- "/bin/bash -s ",
- stdin=open(self.inject_script, "r"))
+ with open(self.inject_script, "r") as stdin_file:
+ exit_status, stdout, stderr = self.connection.execute(
+ "sudo /bin/bash -s ",
+ stdin=stdin_file)
- LOG.debug("the inject_fault's exit status is: {0}".format(exit_status))
+ LOG.debug("the inject_fault's exit status is: %s", exit_status)
if exit_status == 0:
- LOG.debug("success,the inject_fault's output is: {0}"
- .format(stdout))
+ LOG.debug("success,the inject_fault's output is: %s", stdout)
else:
LOG.error(
- "the inject_fault's error, stdout:%s, stderr:%s" %
- (stdout, stderr))
+ "the inject_fault's error, stdout:%s, stderr:%s",
+ stdout, stderr)
def recover(self):
if "rollback_parameter" in self._config:
- LOG.debug("the shell command is: {0}".format(self.rollback_param))
- exit_status, stdout, stderr = self.connection.execute(
- self.rollback_param,
- stdin=open(self.recovery_script, "r"))
+ LOG.debug("the shell command is: %s", self.rollback_param)
+ with open(self.recovery_script, "r") as stdin_file:
+ exit_status, stdout, stderr = self.connection.execute(
+ "sudo {}".format(self.rollback_param),
+ stdin=stdin_file)
else:
- exit_status, stdout, stderr = self.connection.execute(
- "/bin/bash -s ",
- stdin=open(self.recovery_script, "r"))
+ with open(self.recovery_script, "r") as stdin_file:
+ exit_status, stdout, stderr = self.connection.execute(
+ "sudo /bin/bash -s ",
+ stdin=stdin_file)