-#! /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)