bugfix: tc038 ssh default wait 3600s
[yardstick.git] / yardstick / benchmark / scenarios / networking / ping.py
index d208146..6a7927d 100644 (file)
@@ -15,6 +15,7 @@ import pkg_resources
 import logging
 
 import yardstick.ssh as ssh
+from yardstick.common import utils
 from yardstick.benchmark.scenarios import base
 
 LOG = logging.getLogger(__name__)
@@ -40,22 +41,8 @@ class Ping(base.Scenario):
         self.target_script = pkg_resources.resource_filename(
             'yardstick.benchmark.scenarios.networking', Ping.TARGET_SCRIPT)
         host = self.context_cfg['host']
-        user = host.get('user', 'ubuntu')
-        ssh_port = host.get("ssh_port", ssh.DEFAULT_PORT)
-        ip = host.get('ip', None)
-        key_filename = host.get('key_filename', '/root/.ssh/id_rsa')
-        password = host.get('password', None)
-
-        if password is not None:
-            LOG.info("Log in via pw, user:%s, host:%s, pw:%s",
-                     user, ip, password)
-            self.connection = ssh.SSH(user, ip, password=password,
-                                      port=ssh_port)
-        else:
-            LOG.info("Log in via key, user:%s, host:%s, key_filename:%s",
-                     user, ip, key_filename)
-            self.connection = ssh.SSH(user, ip, key_filename=key_filename,
-                                      port=ssh_port)
+
+        self.connection = ssh.SSH.from_node(host, defaults={"user": "ubuntu"})
 
         self.connection.wait(timeout=600)
 
@@ -71,8 +58,8 @@ class Ping(base.Scenario):
         destination = self.context_cfg['target'].get('ipaddr', '127.0.0.1')
         dest_list = [s.strip() for s in destination.split(',')]
 
-        result["rtt"] = {}
-        rtt_result = result["rtt"]
+        rtt_result = {}
+        ping_result = {"rtt": rtt_result}
 
         for pos, dest in enumerate(dest_list):
             if 'targets' in self.scenario_cfg:
@@ -90,7 +77,10 @@ class Ping(base.Scenario):
                 raise RuntimeError(stderr)
 
             if stdout:
-                target_vm_name = target_vm.split('.')[0]
+                if isinstance(target_vm, dict):
+                    target_vm_name = target_vm.get("name")
+                else:
+                    target_vm_name = target_vm.split('.')[0]
                 rtt_result[target_vm_name] = float(stdout)
                 if "sla" in self.scenario_cfg:
                     sla_max_rtt = int(self.scenario_cfg["sla"]["max_rtt"])
@@ -99,6 +89,7 @@ class Ping(base.Scenario):
                         (rtt_result[target_vm_name], sla_max_rtt)
             else:
                 LOG.error("ping '%s' '%s' timeout", options, target_vm)
+        result.update(utils.flatten_dict_key(ping_result))
 
 
 def _test():    # pragma: no cover