diff options
author | 2024-11-09 15:55:26 +0100 | |
---|---|---|
committer | 2024-11-09 15:55:26 +0100 | |
commit | ddc2eccb714e69cfea77e5a6abd6a7987dadb11b (patch) | |
tree | 59b78571f3e31151fd8bea389b43e2a55799fd84 /VNFs/DPPD-PROX/helper-scripts/rapid/rapid_k8s_pod.py | |
parent | 6838702b507e2e2d7b14d5bbd705d06e56da1857 (diff) |
Nodeport service and modified ssh and socket ports
We support now the use of K8s Nodeport services and non standard ssh and
prox socket ports.
In order to use Nodeport service, you need to specify the name of the
service for each prox pod in the rapid.pods file.
Signed-off-by: Luc Provoost <luc.provoost@gmail.com>
Change-Id: I2873b7e22fee042a14b575e772267a9128b7c4f2
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) |