Use ubuntu for containers
[samplevnf.git] / VNFs / DPPD-PROX / helper-scripts / rapid / rapid_k8s_deployment.py
index 822ead5..74f3a04 100644 (file)
@@ -32,7 +32,7 @@ class K8sDeployment:
     """
     LOG_FILE_NAME = "createrapidk8s.log"
     SSH_PRIVATE_KEY = "./rapid_rsa_key"
-    SSH_USER = "centos"
+    SSH_USER = "rapid"
 
     POD_YAML_TEMPLATE_FILE_NAME = "pod-rapid.yaml"
 
@@ -40,6 +40,7 @@ class K8sDeployment:
     _create_config = None
     _runtime_config = None
     _total_number_of_pods = 0
+    _namespace = "rapid-testing"
     _pods = []
 
     def __init__(self):
@@ -64,7 +65,11 @@ class K8sDeployment:
         self._log.addHandler(console_handler)
 
         # Initialize k8s plugin
-        config.load_kube_config()
+        try:
+            config.load_kube_config()
+        except:
+            config.load_incluster_config()
+
         Pod.k8s_CoreV1Api = client.CoreV1Api()
 
     def load_create_config(self, config_file_name):
@@ -89,6 +94,15 @@ class K8sDeployment:
 
         self._log.debug("Total number of pods %d" % self._total_number_of_pods)
 
+        if self._create_config.has_option("DEFAULT", "namespace"):
+            self._namespace = self._create_config.get(
+                "DEFAULT", "namespace")
+        else:
+            self._log.error("No option namespace in DEFAULT section")
+            return -1
+
+        self._log.debug("Using namespace %s" % self._total_number_of_pods)
+
         # Parse [PODx] sections
         for i in range(1, int(self._total_number_of_pods) + 1):
             # Search for POD name
@@ -97,7 +111,7 @@ class K8sDeployment:
                 pod_name = self._create_config.get(
                     "POD%d" % i, "name")
             else:
-                pod_name = "pod-rapid-%d" % i
+                pod_name = "prox-pod-%d" % i
 
             # Search for POD hostname
             if self._create_config.has_option("POD%d" % i,
@@ -107,6 +121,14 @@ class K8sDeployment:
             else:
                 pod_nodeselector_hostname = None
 
+            # Search for POD spec
+            if self._create_config.has_option("POD%d" % i,
+                                              "spec_file_name"):
+                pod_spec_file_name = self._create_config.get(
+                    "POD%d" % i, "spec_file_name")
+            else:
+                pod_spec_file_name = K8sDeployment.POD_YAML_TEMPLATE_FILE_NAME
+
             # Search for POD dataplane static IP
             if self._create_config.has_option("POD%d" % i,
                                               "dp_ip"):
@@ -115,9 +137,19 @@ class K8sDeployment:
             else:
                 pod_dp_ip = None
 
-            pod = Pod(pod_name)
+            # Search for POD dataplane subnet
+            if self._create_config.has_option("POD%d" % i,
+                                              "dp_subnet"):
+                pod_dp_subnet = self._create_config.get(
+                    "POD%d" % i, "dp_subnet")
+            else:
+                pod_dp_subnet = "24"
+
+            pod = Pod(pod_name, self._namespace)
             pod.set_nodeselector(pod_nodeselector_hostname)
+            pod.set_spec_file_name(pod_spec_file_name)
             pod.set_dp_ip(pod_dp_ip)
+            pod.set_dp_subnet(pod_dp_subnet)
             pod.set_id(i)
 
             # Add POD to the list of PODs which need to be created
@@ -134,7 +166,7 @@ class K8sDeployment:
         # Create PODs using template from yaml file
         for pod in self._pods:
             self._log.info("Creating POD %s...", pod.get_name())
-            pod.create_from_yaml(K8sDeployment.POD_YAML_TEMPLATE_FILE_NAME)
+            pod.create_from_yaml()
 
         # Wait for PODs to start
         for pod in self._pods:
@@ -181,7 +213,8 @@ class K8sDeployment:
             self._runtime_config.set("M%d" % pod.get_id(),
                                      "dp_pci_dev", pod.get_dp_pci_dev())
             self._runtime_config.set("M%d" % pod.get_id(),
-                                     "dp_ip1", pod.get_dp_ip())
+                                     "dp_ip1", pod.get_dp_ip() + "/" +
+                                     pod.get_dp_subnet())
 
         # Section [Varia]
         self._runtime_config.add_section("Varia")