diff options
author | Yang Xu <yang.xu3@huawei.com> | 2018-12-30 05:32:21 +0000 |
---|---|---|
committer | Yang Xu <yang.xu3@huawei.com> | 2018-12-30 05:54:11 +0000 |
commit | 64339a8e5386bad2a871fa082889df1c4e649857 (patch) | |
tree | dc884fa2049594874d39c96204e9a84fff52d280 | |
parent | 27e1624422a4ed07b349719522e4eaa375ad694f (diff) |
Automate pod cluster node ip retrieval
Change-Id: I8e644798fefa180a26da4c2cb4607467810f964a
Issue-ID: INT-791
Signed-off-by: Yang Xu <yang.xu3@huawei.com>
-rwxr-xr-x | test/vcpe/vcpe.py | 6 | ||||
-rwxr-xr-x | test/vcpe/vcpecommon.py | 57 |
2 files changed, 51 insertions, 12 deletions
diff --git a/test/vcpe/vcpe.py b/test/vcpe/vcpe.py index 460cb56de..8a46e359f 100755 --- a/test/vcpe/vcpe.py +++ b/test/vcpe/vcpe.py @@ -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() diff --git a/test/vcpe/vcpecommon.py b/test/vcpe/vcpecommon.py index b45f10e91..e3d2641c1 100755 --- a/test/vcpe/vcpecommon.py +++ b/test/vcpe/vcpecommon.py @@ -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 |