diff options
author | xudan <xudan16@huawei.com> | 2017-04-27 14:16:12 +0000 |
---|---|---|
committer | xudan <xudan16@huawei.com> | 2017-04-27 14:36:34 +0000 |
commit | 434cfad3103b8871f5eb22ceb3a2c7526b312383 (patch) | |
tree | 657d5241a16cb1456d64e1be39a2ba753bc444db | |
parent | b8722fae5e61ca71a43f3d69d1d093906b140bbe (diff) |
support HA test cases to run with key
JIRA: DOVETAIL-409
1. HA test cases need a file pod.yaml, in this file it can use the password or the key.
2. If use key, Dovetail need to pass the key file $DOVETAIL_HOME/dovetail/userconfig/id_rsa
to yardstick Container.
3. Add a directory $DOVETAIL_HOME/dovetail/userconfig and a sample_pod.yaml
4. ha.tc001 tc003 tc005 tc006 tc009 are ready.
Change-Id: I391cc211dba2cf0740dd0dcaee8a5c2d712eaee1
Signed-off-by: xudan <xudan16@huawei.com>
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | dovetail/compliance/proposed_tests.yml | 10 | ||||
-rw-r--r-- | dovetail/conf/yardstick_config.yml | 1 | ||||
-rw-r--r-- | dovetail/container.py | 17 | ||||
-rw-r--r-- | userconfig/sample_pod.yaml | 50 |
5 files changed, 68 insertions, 11 deletions
@@ -34,4 +34,3 @@ unittest_results.log docs_build/ docs_output/ results/ -userconfig/ diff --git a/dovetail/compliance/proposed_tests.yml b/dovetail/compliance/proposed_tests.yml index 173a9f2b..fa9c5b8a 100644 --- a/dovetail/compliance/proposed_tests.yml +++ b/dovetail/compliance/proposed_tests.yml @@ -35,13 +35,13 @@ proposed_tests: - dovetail.nfvi.tc001 - dovetail.nfvi.tc002 # HA, ha.tc002, ha.tc012, will kill the host and can't restart, not ready yet, skip. - # - dovetail.ha.tc001 - # - dovetail.ha.tc003 + - dovetail.ha.tc001 + - dovetail.ha.tc003 # - dovetail.ha.tc004 - # - dovetail.ha.tc005 - # - dovetail.ha.tc006 + - dovetail.ha.tc005 + - dovetail.ha.tc006 # - dovetail.ha.tc007 # - dovetail.ha.tc008 - # - dovetail.ha.tc009 + - dovetail.ha.tc009 # - dovetail.ha.tc010 # - dovetail.ha.tc011 diff --git a/dovetail/conf/yardstick_config.yml b/dovetail/conf/yardstick_config.yml index ac128fb8..ae59a9ec 100644 --- a/dovetail/conf/yardstick_config.yml +++ b/dovetail/conf/yardstick_config.yml @@ -23,4 +23,5 @@ yardstick: dir: '/home/opnfv/yardstick/results' log: '/tmp/yardstick' file_path: 'yardstick.log' + key_path: '/root/.ssh/id_rsa' openrc: '/etc/yardstick/openstack.creds' diff --git a/dovetail/container.py b/dovetail/container.py index 8e032c75..5c128c0b 100644 --- a/dovetail/container.py +++ b/dovetail/container.py @@ -76,7 +76,8 @@ class Container(object): file_path = os.path.join(func_res_conf['dir'], func_res_conf['file_path']) report = " -e TEST_DB_URL=file://%s " % file_path - return "%s %s" % (envs, report) + key_vol = " -v /root/.ssh/id_rsa:/root/.ssh/id_rsa " + return "%s %s %s" % (envs, report, key_vol) # set yardstick external network name and log volume for its container. # external network is necessary for yardstick. @@ -97,11 +98,13 @@ class Container(object): log_vol = '-v %s:%s ' % (dovetail_config['result_dir'], dovetail_config["yardstick"]['result']['log']) - return "%s %s" % (envs, log_vol) + key_path = os.path.join(dovetail_config['userconfig_dir'], 'id_rsa') + key_con_path = dovetail_config["yardstick"]['result']['key_path'] + key_vol = '-v %s:%s ' % (key_path, key_con_path) + return "%s %s %s" % (envs, log_vol, key_vol) @classmethod def create(cls, type, testcase_name): - sshkey = "-v /root/.ssh/id_rsa:/root/.ssh/id_rsa " dovetail_config = dt_cfg.dovetail_config docker_image = cls.get_docker_image(type) opts = dovetail_config[type]['opts'] @@ -131,14 +134,18 @@ class Container(object): if type.lower() == "yardstick" and not os.path.exists(pod_file): cls.logger.error("File %s doesn't exist.", pod_file) return None + key_file = os.path.join(dovetail_config['userconfig_dir'], 'id_rsa') + if type.lower() == "yardstick" and not os.path.exists(key_file): + cls.logger.debug("File %s doesn't exist.", key_file) + cls.logger.debug("Can just use password in %s.", pod_file) config_volume = \ ' -v %s:%s ' % (dovetail_config['userconfig_dir'], dovetail_config["functest"]['config']['dir']) result_volume = ' -v %s:%s ' % (dovetail_config['result_dir'], dovetail_config[type]['result']['dir']) - cmd = 'sudo docker run %s %s %s %s %s %s %s %s /bin/bash' % \ - (opts, envs, config, sshkey, openrc, config_volume, + cmd = 'sudo docker run %s %s %s %s %s %s %s /bin/bash' % \ + (opts, envs, config, openrc, config_volume, result_volume, docker_image) dt_utils.exec_cmd(cmd, cls.logger) ret, container_id = \ diff --git a/userconfig/sample_pod.yaml b/userconfig/sample_pod.yaml new file mode 100644 index 00000000..26636a6b --- /dev/null +++ b/userconfig/sample_pod.yaml @@ -0,0 +1,50 @@ +############################################################################## +# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others. +# +# 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 +############################################################################## +--- +# sample config file about the POD information, including the +# name/IP/user/ssh key and Controllers/Computes +# +# The options of this config file include: +# name: the name of this node +# role: node's role, support role: Master/Controller/Comupte/BareMetal +# ip: the node's IP address +# user: the username for login +# key_filename:the path of the private key file for login + +nodes: +- + name: node1 + role: Controller + ip: 10.1.0.50 + user: root + key_filename: /root/.ssh/id_rsa +- + name: node2 + role: Controller + ip: 10.1.0.51 + user: root + key_filename: /root/.ssh/id_rsa +- + name: node3 + role: Controller + ip: 10.1.0.52 + user: root + key_filename: /root/.ssh/id_rsa +- + name: node4 + role: Compute + ip: 10.1.0.53 + user: root + key_filename: /root/.ssh/id_rsa +- + name: node5 + role: Compute + ip: 10.1.0.54 + user: root + key_filename: /root/.ssh/id_rsa |