summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorxudan <xudan16@huawei.com>2017-04-27 14:16:12 +0000
committerxudan <xudan16@huawei.com>2017-04-27 14:36:34 +0000
commit434cfad3103b8871f5eb22ceb3a2c7526b312383 (patch)
tree657d5241a16cb1456d64e1be39a2ba753bc444db
parentb8722fae5e61ca71a43f3d69d1d093906b140bbe (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--.gitignore1
-rw-r--r--dovetail/compliance/proposed_tests.yml10
-rw-r--r--dovetail/conf/yardstick_config.yml1
-rw-r--r--dovetail/container.py17
-rw-r--r--userconfig/sample_pod.yaml50
5 files changed, 68 insertions, 11 deletions
diff --git a/.gitignore b/.gitignore
index a8b4a9fd..82b83ef8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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