summaryrefslogtreecommitdiffstats
path: root/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_k8s_pod.py
diff options
context:
space:
mode:
authorLuc Provoost <luc.provoost@gmail.com>2024-11-09 15:55:26 +0100
committerLuc Provoost <luc.provoost@gmail.com>2024-11-09 15:55:26 +0100
commitddc2eccb714e69cfea77e5a6abd6a7987dadb11b (patch)
tree59b78571f3e31151fd8bea389b43e2a55799fd84 /VNFs/DPPD-PROX/helper-scripts/rapid/rapid_k8s_pod.py
parent6838702b507e2e2d7b14d5bbd705d06e56da1857 (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.py29
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)