add k8s capacity test case
[bottlenecks.git] / utils / k8s_setup / k8s_utils.py
index 7195bf2..a89889f 100644 (file)
@@ -9,25 +9,29 @@
 ##############################################################################
 
 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'):
@@ -35,10 +39,39 @@ def get_core_api(version='v1'):
         API = client.CoreV1Api()
         LOG.info(API)
     else:
-        raise Exception("Must input a validate verison!")
+        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 $5}'")
+    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))
@@ -54,3 +87,9 @@ def watch_namespace(namespace, count=3, stop=None, request_timeout=0):
         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")