From 9845df11434dcc268049509c83457fb7debd035c Mon Sep 17 00:00:00 2001 From: JingLu5 Date: Tue, 9 Oct 2018 14:34:45 +0800 Subject: Add initial Istio validation testcase for CI This work adds testcase for validating Istio installation Change-Id: Ie895b27eb4b3fbec23cf9519699f5fe37236153c Signed-off-by: JingLu5 --- ci/deploy.sh | 9 +++++--- ci/sdc_setup.sh | 27 ++++++++++++++++++++++++ ci/test.sh | 12 ----------- clover/functest/clover_k8s.py | 5 +++-- clover/servicemesh/validate.py | 47 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 83 insertions(+), 17 deletions(-) create mode 100755 ci/sdc_setup.sh delete mode 100755 ci/test.sh create mode 100644 clover/servicemesh/validate.py diff --git a/ci/deploy.sh b/ci/deploy.sh index 2580dbc..4bdce89 100755 --- a/ci/deploy.sh +++ b/ci/deploy.sh @@ -15,7 +15,7 @@ MASTER_NODE_NAME="master" SSH_OPTIONS="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" K8S_ISTIO_DEPLOY_TIMEOUT=3600 -FUNCTEST_IMAGE="opnfv/functest-kubernetes:latest" +FUNCTEST_IMAGE="opnfv/functest-kubernetes-features:amd64-gambia" INSTALLER_TYPE="container4nfv" DEPLOY_SCENARIO="k8-istio-clover" @@ -42,8 +42,8 @@ MASTER_NODE_KEY=$(vagrant ssh-config $MASTER_NODE_NAME | awk '/IdentityFile /{pr ssh $SSH_OPTIONS -i $MASTER_NODE_KEY ${MASTER_NODE_USER}@${MASTER_NODE_HOST} rm -rf clover scp $SSH_OPTIONS -i $MASTER_NODE_KEY -r $CLOVER_BASE_DIR ${MASTER_NODE_USER}@${MASTER_NODE_HOST}:clover -# Run test -ssh $SSH_OPTIONS -i $MASTER_NODE_KEY ${MASTER_NODE_USER}@${MASTER_NODE_HOST} ./clover/ci/test.sh +# Deploy SDC sample for Functest test +ssh $SSH_OPTIONS -i $MASTER_NODE_KEY ${MASTER_NODE_USER}@${MASTER_NODE_HOST} ./clover/ci/sdc_setup.sh echo "Clover deploy complete!" @@ -63,6 +63,9 @@ echo "export KUBE_MASTER_URL=$KUBE_MASTER_URL" >> $RC_FILE KUBE_MASTER_IP=$(echo $KUBE_MASTER_URL | awk -F'https://|:[0-9]+' '$0=$2') echo "export KUBE_MASTER_IP=$KUBE_MASTER_IP" >> $RC_FILE +# Restart docker service in case Container4NFV CI job delete docker0 bridge +systemctl restart docker + # Run functest sudo docker pull $FUNCTEST_IMAGE sudo docker run --rm \ diff --git a/ci/sdc_setup.sh b/ci/sdc_setup.sh new file mode 100755 index 0000000..f4d82f5 --- /dev/null +++ b/ci/sdc_setup.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# +# Copyright (c) Authors of Clover +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +# +set -ex + +# Deploy Clover SDC sample +kubectl apply -f <(istioctl kube-inject -f ~/clover/samples/scenarios/service_delivery_controller_opnfv.yaml) + +# Wait for SDC sample deployed +kubectl get services +kubectl get pods + +r="0" +while [ $r -ne "10" ] +do + sleep 30 + kubectl get pods + r=$(kubectl get pods | grep Running | wc -l) +done + +echo "Set up Clover SDC sample complete!" diff --git a/ci/test.sh b/ci/test.sh deleted file mode 100755 index 4e0ccc5..0000000 --- a/ci/test.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -# -# Copyright (c) Authors of Clover -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -# -set -ex - -echo "Clover test complete!" diff --git a/clover/functest/clover_k8s.py b/clover/functest/clover_k8s.py index 654c8e5..b79ac90 100644 --- a/clover/functest/clover_k8s.py +++ b/clover/functest/clover_k8s.py @@ -7,6 +7,7 @@ import functest_kubernetes.k8stest as k8stest +import clover.servicemesh.validate as istio_validate class K8sCloverTest(k8stest.K8sTesting): """Clover test suite""" @@ -18,9 +19,9 @@ class K8sCloverTest(k8stest.K8sTesting): self.check_envs() def run_kubetest(self): - success = True + success = istio_validate.validateDeploy() if success: self.result = 100 - elif failure: + else: self.result = 0 diff --git a/clover/servicemesh/validate.py b/clover/servicemesh/validate.py new file mode 100644 index 0000000..0e2e59a --- /dev/null +++ b/clover/servicemesh/validate.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python + +# Copyright (c) Authors of Clover +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 + +from kubernetes import client, config + +ISTIO_NAMESPACE = "istio-system" +ISTIO_DEPLOYMENT = "istio-pilot" + + +def validateDeploy(): + config.load_kube_config() + appsv1 = client.AppsV1Api() + corev1 = client.CoreV1Api() + find_flag = False + + # check deploytment + ret = appsv1.list_deployment_for_all_namespaces(watch=False) + for i in ret.items: + if ISTIO_DEPLOYMENT == i.metadata.name and \ + ISTIO_NAMESPACE == i.metadata.namespace: + find_flag = True + break + if find_flag == False: + print("ERROR: Deployment: {} doesn't present in {} namespace".format( + ISTIO_DEPLOYMENT, ISTIO_NAMESPACE)) + return False + + return True + + +def main(): + if validateDeploy(): + print"Istio install validation has passed" + return True + else: + print"ERROR: Istio install validation has failed" + return False + + +if __name__ == '__main__': + main() -- cgit 1.2.3-korg