From 8da1feb7267f4b04e543b2e2e6590e2de8c31237 Mon Sep 17 00:00:00 2001 From: John O Loughlin Date: Wed, 11 Jul 2018 11:22:39 +0100 Subject: Improve "get_server" function in Kubernetes context When a kubernetes context is returning the node info it is assumed that the first port defined is the ssh port which may not be the case. This patch will address this issue by looking for a defined port 22. JIRA: YARDSTICK-1301 Change-Id: I65dee1bcf62f21ebcaefeaa2666bb0ad53f3876c Signed-off-by: John O Loughlin --- yardstick/benchmark/contexts/kubernetes.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'yardstick/benchmark/contexts') diff --git a/yardstick/benchmark/contexts/kubernetes.py b/yardstick/benchmark/contexts/kubernetes.py index 4ba9eee36..9feb00602 100644 --- a/yardstick/benchmark/contexts/kubernetes.py +++ b/yardstick/benchmark/contexts/kubernetes.py @@ -16,6 +16,8 @@ import paramiko from yardstick.benchmark.contexts.base import Context from yardstick.orchestrator import kubernetes +from yardstick.common import constants +from yardstick.common import exceptions from yardstick.common import kubernetes_utils as k8s_utils from yardstick.common import utils @@ -156,19 +158,26 @@ class KubernetesContext(Context): def _get_server(self, name): service_name = '{}-service'.format(name) - service = k8s_utils.get_service_by_name(service_name).ports[0] - - host = { - 'name': service.name, + service = k8s_utils.get_service_by_name(service_name) + if not service: + raise exceptions.KubernetesServiceObjectNotDefined() + + for sn_port in (sn_port for sn_port in service.ports + if sn_port.port == constants.SSH_PORT): + node_port = sn_port.node_port + break + else: + raise exceptions.KubernetesSSHPortNotDefined() + + return { + 'name': name, 'ip': self._get_node_ip(), 'private_ip': k8s_utils.get_pod_by_name(name).status.pod_ip, - 'ssh_port': service.node_port, + 'ssh_port': node_port, 'user': 'root', - 'key_filename': self.key_path, + 'key_filename': self.key_path } - return host - def _get_node_ip(self): return k8s_utils.get_node_list().items[0].status.addresses[0].address -- cgit 1.2.3-korg