Kubernetes context adoption when run in CI 73/40373/1
authorchenjiankun <chenjiankun1@huawei.com>
Mon, 28 Aug 2017 09:55:05 +0000 (09:55 +0000)
committerchenjiankun <chenjiankun1@huawei.com>
Mon, 28 Aug 2017 09:55:05 +0000 (09:55 +0000)
JIRA: YARDSTICK-801

We need kubernetes test case run in CI.
We have one scenario k8-nosdb-lb-noha for kubernetes.
But for now, we need to do some adoption in CI script.

Also I move check OS_AUTH_URL in heat.py.

Change-Id: Iff86caf77fd74e70469ad2dc43f2238097ce0001
Signed-off-by: chenjiankun <chenjiankun1@huawei.com>
docker/exec_tests.sh
tests/ci/yardstick-verify
yardstick/benchmark/contexts/heat.py
yardstick/benchmark/core/task.py

index 46e5a05..93e017f 100755 (executable)
@@ -96,8 +96,10 @@ fi
 cd ${YARDSTICK_REPO_DIR}
 git_checkout ${YARDSTICK_BRANCH}
 
-# setup the environment
-source ${YARDSTICK_REPO_DIR}/tests/ci/prepare_env.sh
+if [[ "${DEPLOY_SCENARIO:0:2}" == "os" ]];then
+    # setup the environment
+    source ${YARDSTICK_REPO_DIR}/tests/ci/prepare_env.sh
+fi
 
 # execute tests
 ${YARDSTICK_REPO_DIR}/tests/ci/yardstick-verify $@
index 16598df..ca8a0b2 100755 (executable)
@@ -248,6 +248,38 @@ EOF
 
 }
 
+check_openstack(){
+    # check if some necessary variables is set
+    if [ -z "$OS_AUTH_URL" ]; then
+        echo "OS_AUTH_URL is unset or empty"
+        exit 1
+    fi
+
+    echo "OS_AUTH_URL is $OS_AUTH_URL"
+    echo
+
+    # check OpenStack services
+    if [[ $OS_INSECURE ]] && [[ "$(echo $OS_INSECURE | tr '[:upper:]' '[:lower:]')" = "true" ]]; then
+        SECURE="--insecure"
+    else
+        SECURE=""
+    fi
+    echo "Checking OpenStack services:"
+    for cmd in "openstack ${SECURE} image list" "openstack ${SECURE} server list" "openstack ${SECURE} stack list"; do
+        echo "  checking ${cmd} ..."
+        if ! $cmd >/dev/null; then
+            echo "error: command \"$cmd\" failed"
+            exit 1
+        fi
+    done
+
+    echo
+    echo "Checking for External network:"
+    for net in $(openstack network list --external -c Name -f value); do
+        echo "  external network: $net"
+    done
+}
+
 main()
 {
     GITROOT=$(cd $(dirname $0) && git rev-parse --show-toplevel)
@@ -283,41 +315,15 @@ main()
     done
     echo
 
-    # check if some necessary variables is set
-    if [ -z "$OS_AUTH_URL" ]; then
-        echo "OS_AUTH_URL is unset or empty"
-        exit 1
-    fi
+    trap "error_exit" EXIT SIGTERM
 
-    echo "OS_AUTH_URL is $OS_AUTH_URL"
-    echo
+    if [[ "${DEPLOY_SCENARIO:0:2}" == "os" ]];then
+        check_openstack
 
-    # check OpenStack services
-    if [[ $OS_INSECURE ]] && [[ "$(echo $OS_INSECURE | tr '[:upper:]' '[:lower:]')" = "true" ]]; then
-        SECURE="--insecure"
-    else
-        SECURE=""
+        source $YARDSTICK_REPO_DIR/tests/ci/clean_images.sh
+        source $YARDSTICK_REPO_DIR/tests/ci/load_images.sh
     fi
-    echo "Checking OpenStack services:"
-    for cmd in "openstack ${SECURE} image list" "openstack ${SECURE} server list" "openstack ${SECURE} stack list"; do
-        echo "  checking ${cmd} ..."
-        if ! $cmd >/dev/null; then
-            echo "error: command \"$cmd\" failed"
-            exit 1
-        fi
-    done
-
-    echo
-    echo "Checking for External network:"
-    for net in $(openstack network list --external -c Name -f value); do
-        echo "  external network: $net"
-    done
-
-    source $YARDSTICK_REPO_DIR/tests/ci/clean_images.sh
-
-    trap "error_exit" EXIT SIGTERM
 
-    source $YARDSTICK_REPO_DIR/tests/ci/load_images.sh
     install_storperf
     run_test
     remove_storperf
index e52c107..deed4af 100644 (file)
@@ -14,6 +14,7 @@ import collections
 import logging
 import os
 import uuid
+import errno
 from collections import OrderedDict
 
 import ipaddress
@@ -26,7 +27,8 @@ from yardstick.benchmark.contexts.model import Server
 from yardstick.benchmark.contexts.model import update_scheduler_hints
 from yardstick.common.openstack_utils import get_neutron_client
 from yardstick.orchestrator.heat import HeatTemplate, get_short_key_uuid
-from yardstick.common.constants import YARDSTICK_ROOT_PATH
+from yardstick.common import constants as consts
+from yardstick.common.utils import source_env
 from yardstick.ssh import SSH
 
 LOG = logging.getLogger(__name__)
@@ -71,7 +73,7 @@ class HeatContext(Context):
         self.key_uuid = uuid.uuid4()
         self.heat_timeout = None
         self.key_filename = ''.join(
-            [YARDSTICK_ROOT_PATH, 'yardstick/resources/files/yardstick_key-',
+            [consts.YARDSTICK_ROOT_PATH, 'yardstick/resources/files/yardstick_key-',
              get_short_key_uuid(self.key_uuid)])
         super(HeatContext, self).__init__()
 
@@ -88,6 +90,7 @@ class HeatContext(Context):
         return sorted_networks
 
     def init(self, attrs):
+        self.check_environment()
         """initializes itself from the supplied arguments"""
         self.name = attrs["name"]
 
@@ -131,6 +134,19 @@ class HeatContext(Context):
         self.attrs = attrs
         SSH.gen_keys(self.key_filename)
 
+    def check_environment(self):
+        try:
+            os.environ['OS_AUTH_URL']
+        except KeyError:
+            try:
+                source_env(consts.OPENRC)
+            except IOError as e:
+                if e.errno != errno.EEXIST:
+                    LOG.error('OPENRC file not found')
+                    raise
+                else:
+                    LOG.error('OS_AUTH_URL not found')
+
     @property
     def image(self):
         """returns application's default image name"""
index 2c67e73..a49a2cb 100644 (file)
@@ -21,7 +21,6 @@ import ipaddress
 import time
 import logging
 import uuid
-import errno
 import collections
 
 from six.moves import filter
@@ -32,7 +31,6 @@ from yardstick.benchmark.runners import base as base_runner
 from yardstick.common.yaml_loader import yaml_load
 from yardstick.dispatcher.base import Base as DispatcherBase
 from yardstick.common.task_template import TaskTemplate
-from yardstick.common.utils import source_env
 from yardstick.common import utils
 from yardstick.common import constants
 from yardstick.common.html_template import report_template
@@ -70,8 +68,6 @@ class Task(object):     # pragma: no cover
 
         self._set_log()
 
-        check_environment()
-
         try:
             output_config = utils.parse_ini_file(config_file)
         except Exception:
@@ -675,17 +671,6 @@ def parse_task_args(src_name, args):
     return kw
 
 
-def check_environment():
-    auth_url = os.environ.get('OS_AUTH_URL', None)
-    if not auth_url:
-        try:
-            source_env(constants.OPENRC)
-        except IOError as e:
-            if e.errno != errno.EEXIST:
-                raise
-            LOG.debug('OPENRC file not found')
-
-
 def change_server_name(scenario, suffix):
     try:
         host = scenario['host']