From 731a5bcfacc17c9189837d2af2d5dc1f0a95ccff Mon Sep 17 00:00:00 2001 From: chenjiankun Date: Mon, 28 Aug 2017 09:55:05 +0000 Subject: Kubernetes context adoption when run in CI 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 --- docker/exec_tests.sh | 6 ++-- tests/ci/yardstick-verify | 68 ++++++++++++++++++++---------------- yardstick/benchmark/contexts/heat.py | 20 +++++++++-- yardstick/benchmark/core/task.py | 15 -------- 4 files changed, 59 insertions(+), 50 deletions(-) diff --git a/docker/exec_tests.sh b/docker/exec_tests.sh index 46e5a05bd..93e017f49 100755 --- a/docker/exec_tests.sh +++ b/docker/exec_tests.sh @@ -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 $@ diff --git a/tests/ci/yardstick-verify b/tests/ci/yardstick-verify index 16598df7b..ca8a0b27a 100755 --- a/tests/ci/yardstick-verify +++ b/tests/ci/yardstick-verify @@ -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 diff --git a/yardstick/benchmark/contexts/heat.py b/yardstick/benchmark/contexts/heat.py index e52c1076c..deed4af93 100644 --- a/yardstick/benchmark/contexts/heat.py +++ b/yardstick/benchmark/contexts/heat.py @@ -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""" diff --git a/yardstick/benchmark/core/task.py b/yardstick/benchmark/core/task.py index 2c67e736c..a49a2cb71 100644 --- a/yardstick/benchmark/core/task.py +++ b/yardstick/benchmark/core/task.py @@ -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'] -- cgit 1.2.3-korg