Update tls-init-container
[integration.git] / test / vcpe / healthcheck-k8s.py
old mode 100644 (file)
new mode 100755 (executable)
index 0aea3fb..2d58cc9
@@ -1,36 +1,68 @@
-#! /usr/bin/python
+#!/usr/bin/env python
 
-import logging
+import argparse
 import json
-from vcpecommon import *
-import commands
+from subprocess import Popen,PIPE,STDOUT,check_output,CalledProcessError
 import sys
 
-if len(sys.argv) <2:
-   print('namespace not provided')
-   print('Usage: healthcheck-k8s.py onap')
-   sys.exit()
+def parse_args():
+    """
+    Parse command line arguments
+    :return: arguments
+    """
+    parser = argparse.ArgumentParser(description='Processing arguments for vCPE healthcheck',formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+    parser.add_argument('--namespace', default="onap",
+                             metavar=('<namespace_name>'),
+                             help='Namespace name for existing ONAP deployment')
+    parser.add_argument('--environment', default="dev",
+                             metavar=('<environment_name>'),
+                             help='Environment name for existing ONAP deployment visible in <environment_name>-sdnc-sdnc-0 pod name')
+    args = parser.parse_args()
+    return args
 
-namespace=sys.argv[1]
 
-logging.basicConfig(level=logging.INFO, format='%(message)s')
-common = VcpeCommon()
+args = parse_args()
 
-print('Checking vGMUX REST API from SDNC')
-cmd = 'curl -u admin:admin -X GET http://10.0.101.21:8183/restconf/config/ietf-interfaces:interfaces'
-ret = commands.getstatusoutput("kubectl -n {0} exec dev-sdnc-sdnc-0 -- bash -c '{1}'".format(namespace,cmd))
-sz = ret[-1].split('\n')[-1]
-print('\n')
-print(sz)
+namespace = args.namespace
+environment = args.environment
 
-print('Checking vBRG REST API from SDNC')
-cmd = 'curl -u admin:admin -X GET http://10.3.0.2:8183/restconf/config/ietf-interfaces:interfaces'
-ret = commands.getstatusoutput("kubectl -n {0} exec dev-sdnc-sdnc-0 -- bash -c '{1}'".format(namespace,cmd))
-sz = ret[-1].split('\n')[-1]
-print('\n')
-print(sz)
+# config section
+kube_cmd = 'kubectl -n {0} exec {1}-sdnc-sdnc-0 -c sdnc -- bash -c '.format(namespace, environment)
+curl_check_cmd = 'apk info -e curl'
+curl_install_cmd = 'sudo apk add curl'
+curl_cmd = 'curl -s -u admin:admin -X GET http://{0}:8183/restconf/config/ietf-interfaces:interfaces'
+endpoints = {
+    "vGMUX": '10.0.101.21',
+    "vBRG": '10.3.0.2'
+}
+# end of config section
 
-print('Checking SDNC DB for vBRG MAC address')
-mac = common.get_brg_mac_from_sdnc()
-print(mac)
+# Install curl command in SDNC container
+try:
+    check_output(kube_cmd.split() + [curl_check_cmd], stderr=STDOUT)
+except CalledProcessError:
+    try:
+        check_output(kube_cmd.split() + [curl_install_cmd], stderr=STDOUT)
+    except CalledProcessError:
+        print('Curl package installation failed, exiting.')
+        sys.exit(1)
+    else:
+        print("Curl package was installed in SDNC container")
+
+for ename,eip in endpoints.items():
+    print('Checking {0} REST API from SDNC'.format(ename))
+    p = Popen(kube_cmd.split() + [curl_cmd.format(eip)], stdout=PIPE, stderr=PIPE)
+    (output, error) = p.communicate()
+    if p.returncode:
+        print(error)
+        sys.exit(p.returncode)
+    else:
+        print(json.dumps(json.loads(output), indent=4))
+    print('\n')
 
+print('Checking SDNC DB for vBRG MAC address')
+kube_db_cmd = 'kubectl -n {0} exec {1}-mariadb-galera-mariadb-galera-0 -- bash -c'
+db_cmd = "mysql -uroot -psecretpassword sdnctl -e 'select * from DHCP_MAP'"
+p = Popen(kube_db_cmd.format(namespace, environment).split() + [db_cmd], stdout=PIPE)
+(output, error) = p.communicate()
+print(output)