Automate pod cluster node ip retrieval 49/75149/1
authorYang Xu <yang.xu3@huawei.com>
Sun, 30 Dec 2018 05:32:21 +0000 (05:32 +0000)
committerYang Xu <yang.xu3@huawei.com>
Sun, 30 Dec 2018 05:54:11 +0000 (05:54 +0000)
Change-Id: I8e644798fefa180a26da4c2cb4607467810f964a
Issue-ID: INT-791
Signed-off-by: Yang Xu <yang.xu3@huawei.com>
test/vcpe/vcpe.py
test/vcpe/vcpecommon.py

index 460cb56..8a46e35 100755 (executable)
@@ -192,6 +192,10 @@ def tmp_sniro():
     # Setting up SNIRO
     config_sniro(vcpecommon, svc_instance_uuid['gmux'], svc_instance_uuid['brg'])
 
+def test(): 
+    vcpecommon = VcpeCommon()
+    print("sdnc_oam_ip: %s" % (vcpecommon.sdnc_oam_ip))
+
 if __name__ == '__main__':
     logging.basicConfig(level=logging.DEBUG, format='%(message)s')
 
@@ -228,4 +232,6 @@ if __name__ == '__main__':
         deploy_brg_only()
     elif sys.argv[1] == 'sniro':
         tmp_sniro()
+    elif sys.argv[1] == 'test':
+        test()
 
index b45f10e..e3d2641 100755 (executable)
@@ -10,7 +10,7 @@ import mysql.connector
 import requests
 import commands
 import time
-
+from kubernetes import client, config
 
 class VcpeCommon:
     #############################################################################################
@@ -70,13 +70,13 @@ class VcpeCommon:
         # CHANGEME: vgw_VfModuleModelInvariantUuid is in rescust service csar, look in service-VcpesvcRescust1118-template.yml for groups vgw module metadata. TODO: read this value automcatically
         self.vgw_VfModuleModelInvariantUuid = '26d6a718-17b2-4ba8-8691-c44343b2ecd2'
         # CHANGEME: OOM: this is the address that the brg and bng will nat for sdnc access - 10.0.0.x address of k8 host for sdnc-0 container
-        self.sdnc_oam_ip = '10.0.0.18'
+        self.sdnc_oam_ip = self.get_pod_node_oam_ip('sdnc-sdnc-0')
         # CHANGEME: OOM: this is a k8s host external IP, e.g. oom-k8s-01 IP 
-        self.oom_so_sdnc_aai_ip = '10.12.6.236'
+        self.oom_so_sdnc_aai_ip = self.get_pod_node_public_ip('sdnc-sdnc-0')
         # CHANGEME: OOM: this is a k8s host external IP, e.g. oom-k8s-01 IP
-        self.oom_dcae_ves_collector = '10.12.6.236'
+        self.oom_dcae_ves_collector = self.get_pod_node_public_ip('sdnc-sdnc-0')
         # CHANGEME: OOM: this is a k8s host external IP, e.g. oom-k8s-01 IP
-        self.mr_ip_addr = '10.12.6.236'
+        self.mr_ip_addr = self.get_pod_node_public_ip('sdnc-sdnc-0')
         self.mr_ip_port = '30227'
         self.so_nbi_port = '30277' if self.oom_mode else '8080'
         self.sdnc_preloading_port = '30202' if self.oom_mode else '8282'
@@ -321,13 +321,46 @@ class VcpeCommon:
 
     def get_pod_node_oam_ip(self, pod):
         """
-        :Assuming kubectl is available
-        :param pod: pod name as a string, e.g. 'dev-sdnc-sdnc-0'
-        :return pod's node oam ip (10.0.0.0/16)
+        :Assuming kubectl is available and configured by default config (~/.kube/config) 
+        :param pod: pod name substring, e.g. 'sdnc-sdnc-0'
+        :return pod's cluster node oam ip (10.0.0.0/16)
+        """
+        ret = None
+        config.load_kube_config()
+        api = client.CoreV1Api()
+        kslogger = logging.getLogger('kubernetes')
+        kslogger.setLevel(logging.INFO)
+        res = api.list_pod_for_all_namespaces()
+        for i in res.items:
+            if pod in i.metadata.name:
+                self.logger.debug("found %s\t%s\t%s", i.metadata.name, i.status.host_ip, i.spec.node_name)
+                ret = i.status.host_ip
+                break
+
+        if ret is None:
+            ret = raw_input("Enter sdnc-sdnc-0 pod cluster node OAM IP address(10.0.0.0/16): ")
+        return ret
+
+    def get_pod_node_public_ip(self, pod):
+        """
+        :Assuming kubectl is available and configured by default config (~/.kube/config) 
+        :param pod: pod name substring, e.g. 'sdnc-sdnc-0'
+        :return pod's cluster node public ip (i.e. 10.12.0.0/16)
         """
-        cmd = "kubectl -n onap describe pod {0} |grep Node:|cut -d'/' -f2".format(pod)
-        ret = commands.getstatusoutput(cmd)
-        self.logger.debug("cmd = %s, ret = %s", cmd, ret)
+        ret = None
+        config.load_kube_config()
+        api = client.CoreV1Api()
+        kslogger = logging.getLogger('kubernetes')
+        kslogger.setLevel(logging.INFO)
+        res = api.list_pod_for_all_namespaces()
+        for i in res.items:
+            if pod in i.metadata.name:
+                self.logger.debug("found node %s public ip: %s", i.spec.node_name, self.get_vm_ip([i.spec.node_name])[i.spec.node_name])
+                ret = self.get_vm_ip([i.spec.node_name])[i.spec.node_name]
+                break
+
+        if ret is None:
+            ret = raw_input("Enter sdnc-sdnc-0 pod cluster node public IP address(i.e. 10.12.0.0/16): ")
         return ret
 
     def get_vm_ip(self, keywords, net_addr=None, net_addr_len=None):
@@ -358,7 +391,7 @@ class VcpeCommon:
         if len(ip_dict) != len(keywords):
             self.logger.error('Cannot find all desired IP addresses for %s.', keywords)
             self.logger.error(json.dumps(ip_dict, indent=4, sort_keys=True))
-            self.logger.error('Temporarily continue.. remember to check back vcpecommon.py line: 316')
+            self.logger.error('Temporarily continue.. remember to check back vcpecommon.py line: 396')
 #            sys.exit()
         return ip_dict