aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Mikus <pmikus@cisco.com>2017-10-17 08:13:14 +0200
committerPeter Mikus <pmikus@cisco.com>2017-10-17 06:57:19 +0000
commitb015ecf08aba9659d0261dfa6eb0da9ab4950b92 (patch)
tree8f5f9555973bda2b876aecc42242b4a5b0a3ef63
parent4d2e646f21659a6540312779190b03aed91395d5 (diff)
CSIT-841 Optimize cheking k8s POD state
Change-Id: Ie1725c0017b78945e431f493743f9a01a66e83c2 Signed-off-by: Peter Mikus <pmikus@cisco.com>
-rw-r--r--resources/libraries/python/KubernetesUtils.py40
-rw-r--r--resources/libraries/python/VppConfigGenerator.py5
2 files changed, 30 insertions, 15 deletions
diff --git a/resources/libraries/python/KubernetesUtils.py b/resources/libraries/python/KubernetesUtils.py
index 77628b64d8..69e7e832b4 100644
--- a/resources/libraries/python/KubernetesUtils.py
+++ b/resources/libraries/python/KubernetesUtils.py
@@ -50,6 +50,9 @@ class KubernetesUtils(object):
raise RuntimeError('Failed to setup Kubernetes on {node}.'
.format(node=node['host']))
+ KubernetesUtils.wait_for_kubernetes_pods_on_node(node,
+ nspace='kube-system')
+
@staticmethod
def setup_kubernetes_on_all_duts(nodes):
"""Set up Kubernetes on all DUTs.
@@ -244,34 +247,34 @@ class KubernetesUtils(object):
rtype)
@staticmethod
- def get_kubernetes_logs_on_node(node, namespace='csit'):
+ def get_kubernetes_logs_on_node(node, nspace='csit'):
"""Get Kubernetes logs on node.
:param node: DUT node.
- :param namespace: Kubernetes namespace.
+ :param nspace: Kubernetes namespace.
:type node: dict
- :type namespace: str
+ :type nspace: str
"""
ssh = SSH()
ssh.connect(node)
cmd = "for p in $(kubectl get pods -n {namespace} --no-headers"\
" | cut -f 1 -d ' '); do echo $p; kubectl logs -n {namespace} $p; "\
- "done".format(namespace=namespace)
+ "done".format(namespace=nspace)
ssh.exec_command(cmd, timeout=120)
@staticmethod
- def get_kubernetes_logs_on_all_duts(nodes, namespace='csit'):
+ def get_kubernetes_logs_on_all_duts(nodes, nspace='csit'):
"""Get Kubernetes logs on all DUTs.
:param nodes: Topology nodes.
- :param namespace: Kubernetes namespace.
+ :param nspace: Kubernetes namespace.
:type nodes: dict
- :type namespace: str
+ :type nspace: str
"""
for node in nodes.values():
if node['type'] == NodeType.DUT:
- KubernetesUtils.get_kubernetes_logs_on_node(node, namespace)
+ KubernetesUtils.get_kubernetes_logs_on_node(node, nspace)
@staticmethod
def reset_kubernetes_on_node(node):
@@ -302,25 +305,30 @@ class KubernetesUtils(object):
KubernetesUtils.reset_kubernetes_on_node(node)
@staticmethod
- def wait_for_kubernetes_pods_on_node(node):
+ def wait_for_kubernetes_pods_on_node(node, nspace='csit'):
"""Wait for Kubernetes PODs to become in 'Running' state on node.
:param node: DUT node.
+ :param nspace: Kubernetes namespace.
:type node: dict
+ :type nspace: str
:raises RuntimeError: If Kubernetes PODs are not ready.
"""
ssh = SSH()
ssh.connect(node)
- cmd = 'kubectl get -n csit pods --no-headers'
+ cmd = 'kubectl get -n {namespace} pods --no-headers'\
+ .format(namespace=nspace)
for _ in range(48):
(ret_code, stdout, _) = ssh.exec_command_sudo(cmd, timeout=120)
if int(ret_code) == 0:
ready = True
for line in stdout.splitlines():
- if 'Running' in line and '1/1' in line:
- ready = True
- else:
+ try:
+ state = line.split()[1].split('/')
+ ready = True if 'Running' in line and\
+ state == state[::-1] else False
+ except ValueError, IndexError:
ready = False
if ready:
break
@@ -330,15 +338,17 @@ class KubernetesUtils(object):
.format(node=node['host']))
@staticmethod
- def wait_for_kubernetes_pods_on_all_duts(nodes):
+ def wait_for_kubernetes_pods_on_all_duts(nodes, nspace='csit'):
"""Wait for Kubernetes PODs to become in Running state on all DUTs.
:param nodes: Topology nodes.
+ :param nspace: Kubernetes namespace.
:type nodes: dict
+ :type nspace: str
"""
for node in nodes.values():
if node['type'] == NodeType.DUT:
- KubernetesUtils.wait_for_kubernetes_pods_on_node(node)
+ KubernetesUtils.wait_for_kubernetes_pods_on_node(node, nspace)
@staticmethod
def create_kubernetes_vswitch_startup_config(**kwargs):
diff --git a/resources/libraries/python/VppConfigGenerator.py b/resources/libraries/python/VppConfigGenerator.py
index 69096491a2..25862025e1 100644
--- a/resources/libraries/python/VppConfigGenerator.py
+++ b/resources/libraries/python/VppConfigGenerator.py
@@ -128,6 +128,11 @@ class VppConfigGenerator(object):
path = ['unix', 'nodaemon']
self.add_config_item(self._nodeconfig, '', path)
+ def add_unix_coredump(self):
+ """Add UNIX full-coredump configuration."""
+ path = ['unix', 'full-coredump']
+ self.add_config_item(self._nodeconfig, '', path)
+
def add_unix_exec(self, value):
"""Add UNIX exec configuration."""
path = ['unix', 'exec']