Make results and log directory path using browbeat-config

* if results and log path not found, create it.
* Also resolve $FOO in browbeat config paths -jkilpatr

Change-Id: Ie5ec32386ca0d6db9177d9a3a55387b5b1e88a69
This commit is contained in:
Chandan Kumar 2017-01-17 21:27:29 +05:30 committed by Justin Kilpatrick
parent fedda16669
commit 2ba6da9022
11 changed files with 46 additions and 20 deletions

View File

@ -44,3 +44,6 @@
- name: Install Ansible - name: Install Ansible
pip: name=ansible state=present pip: name=ansible state=present
become: true become: true
- name: Make results directory
file: "path={{ ansible_env.HOME }}/browbeat/results state=directory"

View File

@ -1,7 +1,8 @@
browbeat: browbeat:
results : results/ results : "$HOME/browbeat/results"
rerun: 3 rerun: 3
cloud_name: {{ browbeat_cloud_name }} cloud_name: {{ browbeat_cloud_name }}
log : "$HOME/browbeat/log"
elasticsearch: elasticsearch:
enabled: {{ elastic_enabled_template }} enabled: {{ elastic_enabled_template }}
host: {{ elastic_host_template }} host: {{ elastic_host_template }}

View File

@ -1,9 +1,10 @@
# Tests to be compleated for the install-and-check.sh script minimal and short workloads are performed # Tests to be compleated for the install-and-check.sh script minimal and short workloads are performed
# to confirm functionality. # to confirm functionality.
browbeat: browbeat:
results : results/ results : "$HOME/browbeat/results"
rerun: 1 rerun: 1
cloud_name: {{ browbeat_cloud_name }} cloud_name: {{ browbeat_cloud_name }}
log : "$HOME/browbeat/log"
elasticsearch: elasticsearch:
enabled: {{ elastic_enabled_template }} enabled: {{ elastic_enabled_template }}
host: {{ elastic_host_template }} host: {{ elastic_host_template }}

View File

@ -1,8 +1,9 @@
# Complete set of Stress Tests, this can take a long time (day(s)) # Complete set of Stress Tests, this can take a long time (day(s))
browbeat: browbeat:
results : results/ results : "$HOME/.browbeat/results/"
rerun: 3 rerun: 3
cloud_name: openstack cloud_name: openstack
log : "$HOME/.browbeat/log/"
elasticsearch: elasticsearch:
enabled: false enabled: false
host: 1.1.1.1 host: 1.1.1.1

View File

@ -1,8 +1,9 @@
# Basic set of initial stress tests to test overcloud before running complete set of benchmarks. # Basic set of initial stress tests to test overcloud before running complete set of benchmarks.
browbeat: browbeat:
results : results/ results : "$HOME/.browbeat/results"
rerun: 1 rerun: 1
cloud_name: openstack cloud_name: openstack
log: "$HOME/.browbeat/log"
elasticsearch: elasticsearch:
enabled: true enabled: true
host: 1.1.1.1 host: 1.1.1.1

View File

@ -26,10 +26,10 @@ import os
_workload_opts = ['perfkit', 'rally', 'shaker'] _workload_opts = ['perfkit', 'rally', 'shaker']
_config_file = 'browbeat-config.yaml' _config_file = 'browbeat-config.yaml'
debug_log_file = 'log/debug.log'
def main(): def main():
tools = lib.Tools.Tools() tools = lib.Tools.Tools()
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
description="Browbeat Performance and Scale testing for Openstack") description="Browbeat Performance and Scale testing for Openstack")
parser.add_argument( parser.add_argument(
@ -47,7 +47,14 @@ def main():
_logger.setLevel(logging.DEBUG) _logger.setLevel(logging.DEBUG)
_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)7s - %(message)s') _formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)7s - %(message)s')
_formatter.converter = time.gmtime _formatter.converter = time.gmtime
_dbg_file = logging.FileHandler(debug_log_file)
# Load Browbeat yaml config file:
_config = tools._load_config(_cli_args.setup)
debug_log_path = tools.sub_env_vars(_config['browbeat']['log'])
# create log dir during run time
if not os.path.exists(debug_log_path):
os.makedirs(debug_log_path)
_dbg_file = logging.FileHandler(os.path.join(debug_log_path, 'debug.log'))
_dbg_file.setLevel(logging.DEBUG) _dbg_file.setLevel(logging.DEBUG)
_dbg_file.setFormatter(_formatter) _dbg_file.setFormatter(_formatter)
_ch = logging.StreamHandler() _ch = logging.StreamHandler()
@ -61,9 +68,6 @@ def main():
_logger.debug("CLI Args: {}".format(_cli_args)) _logger.debug("CLI Args: {}".format(_cli_args))
# Load Browbeat yaml config file:
_config = tools._load_config(_cli_args.setup)
# Default to all workloads # Default to all workloads
if _cli_args.workloads == []: if _cli_args.workloads == []:
_cli_args.workloads.append('all') _cli_args.workloads.append('all')
@ -102,8 +106,10 @@ def main():
_cli_args.setup)) _cli_args.setup))
else: else:
_logger.error("{} is missing in {}".format(wkld_provider, _cli_args.setup)) _logger.error("{} is missing in {}".format(wkld_provider, _cli_args.setup))
result_dir = _config['browbeat']['results'] result_dir = tools.sub_env_vars(_config['browbeat']['results'])
lib.WorkloadBase.WorkloadBase.print_report(result_dir, time_stamp) lib.WorkloadBase.WorkloadBase.print_report(result_dir, time_stamp)
if not os.path.exists(result_dir):
os.makedirs(result_dir)
_logger.info("Saved browbeat result summary to {}".format( _logger.info("Saved browbeat result summary to {}".format(
os.path.join(result_dir,time_stamp + '.' + 'report'))) os.path.join(result_dir,time_stamp + '.' + 'report')))
lib.WorkloadBase.WorkloadBase.print_summary() lib.WorkloadBase.WorkloadBase.print_summary()

View File

@ -1,9 +1,10 @@
# Tests to be compleated for the install-and-check.sh script minimal and short workloads are performed # Tests to be compleated for the install-and-check.sh script minimal and short workloads are performed
# to confirm functionality. # to confirm functionality.
browbeat: browbeat:
results : results/ results : "$HOME/.browbeat/results"
rerun: 1 rerun: 1
cloud_name: openstack cloud_name: openstack
log: "$HOME/.browbeat/log"
elasticsearch: elasticsearch:
enabled: false enabled: false
host: 1.1.1.1 host: 1.1.1.1

View File

@ -126,3 +126,20 @@ class Tools(object):
else: else:
self.logger.info("Metadata about cloud has been gathered") self.logger.info("Metadata about cloud has been gathered")
return True return True
# Takes a string with $FOO and returns a string
# with those variables replaced with their env paths.
def sub_env_vars(self, path):
path_list = path.split('/')
new_path = []
for item in path_list:
if item.startswith('$'):
var = item.translate(None, '$')
replacement = os.environ[var]
if replacement == None:
new_path.extend(item + "/")
else:
new_path.extend(replacement + "/")
else:
new_path.extend(item + "/")
return ''.join(new_path)

View File

@ -15,6 +15,9 @@ mapping:
cloud_name: cloud_name:
type: str type: str
required: True required: True
log:
type: str
required: True
elasticsearch: elasticsearch:
required: True required: True

4
log/.gitignore vendored
View File

@ -1,4 +0,0 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore

4
results/.gitignore vendored
View File

@ -1,4 +0,0 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore