X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=utils%2Fk8s_setup%2Fk8s_utils.py;h=ad2cc991d83e0b18c0f5e5fb6cfc115626089d18;hb=16bb5e7d7745aab049d1a6810cef1ee620afa9cc;hp=afcdb30792f775af7d31143ca3df05456a232008;hpb=13fd26c9dfdfbe70eba3da738cc932814b072b92;p=bottlenecks.git diff --git a/utils/k8s_setup/k8s_utils.py b/utils/k8s_setup/k8s_utils.py index afcdb307..ad2cc991 100644 --- a/utils/k8s_setup/k8s_utils.py +++ b/utils/k8s_setup/k8s_utils.py @@ -9,20 +9,87 @@ ############################################################################## import os +import commands +import json import utils.logger as log +from kubernetes import client, watch + LOG = log.Logger(__name__).getLogger() INSTALLER_TYPE = os.getenv("INSTALLER_TYPE") +K8S_UTILS = "/home/opnfv/bottlenecks/utils/k8s_setup" -def get_config_path(INSTALLER_TYPE=None, CONFIG_PATH="/tmp/k8s_config"): +def get_config_path(INSTALLER_TYPE=None, K8S_CONFIG_PATH="/tmp/k8s_config"): if INSTALLER_TYPE: - CMD = "bash k8s_config_pre.sh -i " + INSTALLER_TYPE + \ - " -c " + CONFIG_PATH + CMD = "bash " + K8S_UTILS + "/k8s_config_pre.sh -i " \ + + INSTALLER_TYPE + \ + " -c " + K8S_CONFIG_PATH LOG.info("Executing command: " + CMD) - CONFIG_PATH = os.popen(CMD) + os.popen(CMD) else: - if not os.path.exists(CONFIG_PATH): + if not os.path.exists(K8S_CONFIG_PATH): raise Exception("Must at least specify the path \ of k8s config!") - return CONFIG_PATH + return K8S_CONFIG_PATH + + +def get_core_api(version='v1'): + if version.lower() == 'v1': + API = client.CoreV1Api() + LOG.info(API) + else: + raise Exception("Must input a valid verison!") + return API + + +def get_apps_api(version='v1'): + if version.lower() == 'v1': + API = client.AppsV1Api() + LOG.info(API) + else: + raise Exception("Must input a valid verison!") + return API + + +def get_namespace_status(namespace): + CMD = ("kubectl get ns | grep %s" % namespace) + namespace_existed = commands.getstatusoutput(CMD) + return namespace_existed + + +def get_deployment_status(name, namespace): + CMD = ("kubectl get deployment --namespace={} | grep {}".format( + namespace, name)) + deployment_existed = commands.getstatusoutput(CMD) + return deployment_existed + + +def get_available_pods(name, namespace): + CMD = ("kubectl get deployment --namespace={} | grep {}".format( + namespace, name) + " | awk '{print $4}'") + available_pods = commands.getstatusoutput(CMD) + return int(available_pods[1]) + + +def watch_namespace(namespace, count=3, stop=None, request_timeout=0): + w = watch.Watch() + LOG.debug("Watch object generated: {}".format(w)) + LOG.info("Watch stream generated: {}".format( + w.stream(namespace, _request_timeout=request_timeout))) + for event in w.stream(namespace, _request_timeout=request_timeout): + LOG.info("Event: %s %s" % + (event['type'], event['object'].metadata.name)) + if event['object'].metadata.name == stop: + LOG.info("Namesapce successfully added.\n") + w.stop() + count -= 1 + if not count: + LOG.info("Ended.\n") + w.stop() + + +def write_json(data, file_name): + with open(file_name, "a") as f: + f.write(json.dumps(data, f)) + f.write("\n")