aboutsummaryrefslogtreecommitdiffstats
path: root/func
diff options
context:
space:
mode:
Diffstat (limited to 'func')
-rw-r--r--func/args_handler.py11
-rw-r--r--func/cli.py8
-rw-r--r--func/driver.py29
-rw-r--r--func/env_setup.py69
4 files changed, 52 insertions, 65 deletions
diff --git a/func/args_handler.py b/func/args_handler.py
index f2726eb8..57ecfcbd 100644
--- a/func/args_handler.py
+++ b/func/args_handler.py
@@ -48,12 +48,15 @@ def prepare_ansible_env(benchmark_test_case):
return benchmark, benchmark_details, proxy_info, env_setup
-def run_benchmark(benchmark, benchmark_details, proxy_info, env_setup, benchmark_test_case):
+def run_benchmark(installer_type, pwd, benchmark, benchmark_details,
+ proxy_info, env_setup, benchmark_test_case):
driver = Driver()
- driver.drive_bench(benchmark, env_setup.roles_dict.items(), _get_f_name(benchmark_test_case),
+ driver.drive_bench(installer_type, pwd, benchmark,
+ env_setup.roles_dict.items(), _get_f_name(benchmark_test_case),
benchmark_details, env_setup.ip_pw_dict.items(), proxy_info)
-def prepare_and_run_benchmark(benchmark_test_case):
+def prepare_and_run_benchmark(installer_type, pwd, benchmark_test_case):
benchmark, benchmark_details, proxy_info, env_setup = prepare_ansible_env(benchmark_test_case)
- run_benchmark(benchmark, benchmark_details, proxy_info, env_setup, benchmark_test_case)
+ run_benchmark(installer_type, pwd, benchmark, benchmark_details,
+ proxy_info, env_setup, benchmark_test_case)
diff --git a/func/cli.py b/func/cli.py
index 01694a9b..66ab2277 100644
--- a/func/cli.py
+++ b/func/cli.py
@@ -8,6 +8,7 @@
##############################################################################
import sys
+import os
import args_handler
import argparse
@@ -37,12 +38,12 @@ class cli:
args = self._parse_args(args)
if not args_handler.check_suit_in_test_list(args.file):
- print '\n\n ERROR: Test File Does not exist in test_list/ please enter correct file \n\n'
+ print('\n\n ERROR: Test File Does not exist in test_list/ please enter correct file \n\n')
sys.exit(0)
if not args_handler.check_lab_name(args.lab):
- print '\n\n You have specified a lab that is not present in test_cases/ please enter \
- correct file. If unsure how to proceed, use -l default.\n\n'
+ print('\n\n You have specified a lab that is not present in test_cases/ please enter \
+ correct file. If unsure how to proceed, use -l default.\n\n')
sys.exit(0)
suite = args.file
benchmarks = args_handler.get_files_in_test_list(suite)
@@ -50,6 +51,7 @@ class cli:
benchmarks_list = filter(lambda x: x in test_cases, benchmarks)
map(lambda x: args_handler.prepare_and_run_benchmark(
+ os.environ['INSTALLER_TYPE'], os.environ['PWD'],
args_handler.get_benchmark_path(args.lab.lower(), suite, x)), benchmarks_list)
print('{0} is not a Template in the Directory Enter a Valid file name.'
diff --git a/func/driver.py b/func/driver.py
index f26f63db..859e7f34 100644
--- a/func/driver.py
+++ b/func/driver.py
@@ -6,9 +6,8 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-import os
-import json
import logging
+from func.ansible_api import AnsibleApi
class Driver:
@@ -30,14 +29,15 @@ class Driver:
z.update(y)
return z
- def get_common_var_json(self, benchmark_fname, benchmark_detail, pip_dict, proxy_info):
+ def get_common_var_json(self, installer_type, pwd, benchmark_fname,
+ benchmark_detail, pip_dict, proxy_info):
common_json = {'Dest_dir': 'results',
'ip1': '',
'ip2': '',
- 'installer': str(os.environ['INSTALLER_TYPE']),
- 'workingdir': str(os.environ['PWD']),
+ 'installer': str(installer_type),
+ 'workingdir': str(pwd),
'fname': str(benchmark_fname),
- 'username': self.installer_username[str(os.environ['INSTALLER_TYPE'])]}
+ 'username': self.installer_username[str(installer_type)]}
common_json.update(benchmark_detail) if benchmark_detail else None
common_json.update(proxy_info) if proxy_info else None
return common_json
@@ -54,18 +54,19 @@ class Driver:
return special_json
def run_ansible_playbook(self, benchmark, extra_vars):
- extra_vars_json = json.dumps(dict(extra_vars.items()))
- logging.info(extra_vars_json)
- run_play = 'ansible-playbook ./benchmarks/playbooks/{0}.yaml' \
- '--private-key=./data/QtipKey -i ./data/hosts --extra-vars \'{1}\'' \
- .format(benchmark, extra_vars_json)
- os.system(run_play)
+ logging.info(extra_vars)
+ ansible_api = AnsibleApi()
+ ansible_api.execute_playbook('./data/hosts',
+ './benchmarks/playbooks/{0}.yaml'.format(benchmark),
+ './data/QtipKey', extra_vars)
+ return ansible_api.get_detail_playbook_stats()
- def drive_bench(self, benchmark, roles, benchmark_fname,
+ def drive_bench(self, installer_type, pwd, benchmark, roles, benchmark_fname,
benchmark_detail=None, pip_dict=None, proxy_info=None):
roles = sorted(roles)
pip_dict = sorted(pip_dict)
- var_json = self.get_common_var_json(benchmark_fname, benchmark_detail, pip_dict, proxy_info)
+ var_json = self.get_common_var_json(installer_type, pwd, benchmark_fname,
+ benchmark_detail, pip_dict, proxy_info)
map(lambda role: self.run_ansible_playbook
(benchmark, self.merge_two_dicts(var_json,
self.get_special_var_json(role, roles,
diff --git a/func/env_setup.py b/func/env_setup.py
index ea49337d..f6b1d43b 100644
--- a/func/env_setup.py
+++ b/func/env_setup.py
@@ -54,55 +54,36 @@ class Env_setup:
num = len(role[k])
for x in range(num):
f_name_2.write(role[k][x] + '\n')
+ f_name_2.write('[localhost]\n')
+ f_name_2.write('127.0.0.1\n')
f_name_2.close()
@staticmethod
- def ssh_test(lister):
- print 'list: ', lister
- for k, v in lister:
- ip_var = k
- print '\nBeginning SSH Test!\n'
- if v != '':
- print ('\nSSH->>>>> {0} {1}\n'.format(k, v))
- time.sleep(2)
-
- ssh_c = 'ssh-keyscan {0} >> ~/.ssh/known_hosts'.format(k)
- os.system(ssh_c)
- ssh_cmd = './data/qtip_creds.sh {0}'.format(ip_var)
- print ssh_cmd
- os.system(ssh_cmd)
- for infinity in range(100):
- try:
- ssh = paramiko.SSHClient()
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- ssh.connect(k, key_filename='./data/QtipKey')
- stdin, stdout, stderr = ssh.exec_command('ls')
+ def ssh_test(hosts):
+ for ip, pw in hosts:
+ print '\nBeginning SSH Test: %s \n' % ip
+ os.system('ssh-keyscan %s >> ~/.ssh/known_hosts' % ip)
+ time.sleep(2)
+
+ ssh_cmd = './data/qtip_creds.sh %s' % ip
+ print "run command: %s " % ssh_cmd
+ os.system(ssh_cmd)
+
+ ssh = paramiko.SSHClient()
+ ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
+ ssh.connect(ip, key_filename='./data/QtipKey')
+
+ for attempts in range(100):
+ try:
+ stdin, stdout, stderr = ssh.exec_command('uname')
+ if not stderr.readlines():
print('SSH successful')
- for line in stdout:
- print '... ' + line.strip('\n')
break
- except socket.error:
- print 'Retrying aSSH %s' % infinity
- time.sleep(1)
- if v == '':
- print ('SSH->>>>>', k)
- ssh_c = 'ssh-keyscan {0} >> ~/.ssh/known_hosts'.format(k)
-
- time.sleep(3)
- os.system(ssh_c)
-
- for infinity in range(10):
- try:
- ssh = paramiko.SSHClient()
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- ssh.connect(k, key_filename='./data/QtipKey')
- stdin, stdout, stderr = ssh.exec_command('ls')
- print('SSH successful')
- for line in stdout:
- print '... ' + line.strip('\n')
- break
- except socket.error:
- print 'Retrying SSH %s' % infinity
+ except socket.error:
+ print 'SSH is still unavailable, retry!'
+ time.sleep(2)
+ if attempts == 99:
+ print "Try 99 times, SSH failed: %s" % ip
@staticmethod
def ping_test(lister, attempts=30):