diff options
Diffstat (limited to 'VNFs/DPPD-PROX/helper-scripts/rapid/rapid_k8s_pod.py')
-rw-r--r-- | VNFs/DPPD-PROX/helper-scripts/rapid/rapid_k8s_pod.py | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_k8s_pod.py b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_k8s_pod.py index beaedd69..1bf715aa 100644 --- a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_k8s_pod.py +++ b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_k8s_pod.py @@ -43,14 +43,18 @@ class Pod: _sriov_vf = None _sriov_vf_mac = None + _ssh_port = 22 + _socket_port = 8474 - def __init__(self, name, namespace = "default", logger_name = "k8srapid"): + def __init__(self, name, pod_nodeport = None, namespace = "default", + logger_name = "k8srapid"): self._log = logging.getLogger(logger_name) self._name = name self._namespace = namespace self._ssh_client = SSHClient(logger_name = logger_name) self.qat_vf = [] + self._pod_nodeport = pod_nodeport def __del__(self): """Destroy POD. Do a cleanup. @@ -66,6 +70,7 @@ class Pod: self.body = yaml.safe_load(yaml_file) self.body["metadata"]["name"] = self._name + self.body["metadata"]["labels"] = {'app': self._pod_nodeport} if (self._nodeSelector_hostname is not None): if ("nodeSelector" not in self.body["spec"]): @@ -98,8 +103,17 @@ class Pod: """Check for admin IP address assigned by k8s. """ try: - pod = self.k8s_CoreV1Api.read_namespaced_pod_status(name = self._name, namespace = self._namespace) - self._admin_ip = pod.status.pod_ip + if self._pod_nodeport: + service= self.k8s_CoreV1Api.read_namespaced_service_status(name = self._pod_nodeport, namespace = self._namespace) + self._admin_ip = service.spec.cluster_ip + for service_port in service.spec.ports: + if service_port.name == 'control-port': + self._ssh_port = service_port.node_port + if service_port.name == 'socket-port': + self._socket_port = service_port.node_port + else: + pod = self.k8s_CoreV1Api.read_namespaced_pod_status(name = self._name, namespace = self._namespace) + self._admin_ip = pod.status.pod_ip except client.rest.ApiException as e: self._log.error("Couldn't update POD %s admin IP!\n%s\n" % (self._name, e)) @@ -131,6 +145,12 @@ class Pod: def get_admin_ip(self): return self._admin_ip + def get_admin_port(self): + return self._ssh_port + + def get_socket_port(self): + return self._socket_port + def get_dp_ip(self): return self._dp_ip @@ -261,4 +281,5 @@ class Pod: self.update_admin_ip() self._ssh_client.set_credentials(ip = self._admin_ip, user = user, - rsa_private_key = rsa_private_key) + rsa_private_key = rsa_private_key, + ssh_port = self._ssh_port) |