From eacf878ec5372a6db4596c9cbc78ef96bf2453b9 Mon Sep 17 00:00:00 2001 From: "Yang (Gabriel) Yu" Date: Wed, 15 Aug 2018 12:39:33 +0800 Subject: add k8s capacity test case JIRA: BOTTLENECK-243 Change-Id: I0f36aac10cf0e05560051c785ada397e0c97e112 Signed-off-by: Yang (Gabriel) Yu --- utils/k8s_setup/k8s_config_pre.sh | 2 +- utils/k8s_setup/k8s_utils.py | 53 +++++++++++++++++++++++++++++++++------ 2 files changed, 47 insertions(+), 8 deletions(-) (limited to 'utils') diff --git a/utils/k8s_setup/k8s_config_pre.sh b/utils/k8s_setup/k8s_config_pre.sh index f41ba78d..05c3f1c3 100644 --- a/utils/k8s_setup/k8s_config_pre.sh +++ b/utils/k8s_setup/k8s_config_pre.sh @@ -7,7 +7,7 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -K8S_CONFIG="/tmp/k8s_conig" +K8S_CONFIG="/tmp/k8s_config" usage="Script to prepare kubenetes test configurations. diff --git a/utils/k8s_setup/k8s_utils.py b/utils/k8s_setup/k8s_utils.py index 7195bf23..a89889f3 100644 --- a/utils/k8s_setup/k8s_utils.py +++ b/utils/k8s_setup/k8s_utils.py @@ -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") -- cgit 1.2.3-korg