From aa1b7651d38ea05d758d4784fd30fc655b05c6b7 Mon Sep 17 00:00:00 2001 From: akrzos Date: Fri, 29 Sep 2017 17:16:39 -0400 Subject: [PATCH] Auto venv via path module * Add path module to handle paths * Finds the venv * Finds the overcloudrc * Clean-up/refactor imports Change-Id: I24c269f2073a28ae0bee230cb9911dc89249f79f --- .gitignore | 2 +- ansible/install/group_vars/all.yml | 11 ++- .../oooq/roles/browbeat-run/tasks/main.yml | 2 +- .../templates/browbeat-api-ci.yaml.j2 | 1 - .../templates/browbeat-basic.yaml.j2 | 3 +- .../templates/browbeat-yoda-ci.yaml.j2 | 1 - browbeat-complete.yaml | 5 -- browbeat-config.yaml | 4 -- browbeat.py | 11 ++- browbeat/elastic.py | 15 ++-- browbeat/path.py | 69 +++++++++++++++++++ browbeat/perfkit.py | 22 +++--- browbeat/rally.py | 20 +++--- browbeat/shaker.py | 21 +++--- browbeat/tools.py | 16 +++-- browbeat/validate.yaml | 12 ---- browbeat/yoda.py | 17 +++-- conf/browbeat-glance-complete.yaml | 2 - conf/browbeat-keystone-complete.yaml | 2 - conf/browbeat-keystone-minimal.yaml | 2 - conf/browbeat-workloads.yml | 1 - conf/ceilometer-minimal.yaml | 2 - conf/ceilometer-persist-response-timing.yaml | 2 - conf/gnocchi-minimal.yaml | 2 - conf/perfkit-benchmarks.yaml | 2 - ...nova-neutron-gnocchi-10k-1000-per-30m.yaml | 2 - ...y-nova-neutron-gnocchi-1k-100-per-30m.yaml | 2 - ...y-nova-neutron-gnocchi-1k-500-per-30m.yaml | 2 - ...y-nova-neutron-gnocchi-5k-500-per-30m.yaml | 2 - ...y-nova-persist-instances-with-network.yaml | 2 - conf/telemetry-nova-persist-instances.yaml | 2 - doc/source/developing.rst | 2 - doc/source/installation.rst | 6 +- doc/source/usage.rst | 24 ++----- tox.ini | 2 +- 35 files changed, 150 insertions(+), 143 deletions(-) create mode 100644 browbeat/path.py diff --git a/.gitignore b/.gitignore index a89a88919..fed58d862 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,11 @@ *.py[cod] +.tox # Virtual Environments: .browbeat-venv .perfkit-venv .rally-venv .shaker-venv -.yoda-venv # OpenStack Environment Files stackrc diff --git a/ansible/install/group_vars/all.yml b/ansible/install/group_vars/all.yml index 3439346f8..d025688d6 100644 --- a/ansible/install/group_vars/all.yml +++ b/ansible/install/group_vars/all.yml @@ -25,25 +25,22 @@ overcloudrc: "{{home_dir}}/overcloudrc" # overcloud_ca_path: /etc/pki/ca-trust/source/anchors/overcloud.crt.pem # The default Browbeat venv -browbeat_venv: "{{home_dir}}/browbeat-venv" +browbeat_venv: "{{browbeat_path}}/.browbeat-venv" # The default Rally venv -rally_venv: "{{home_dir}}/rally-venv" +rally_venv: "{{browbeat_path}}/.rally-venv" # Rally version to install rally_version: 0.8.1 # The default Shaker venv -shaker_venv: "{{home_dir}}/shaker-venv" +shaker_venv: "{{browbeat_path}}/.shaker-venv" # Shaker version to Install shaker_version: 1.1.0 -# The default YODA venv -yoda_venv: /home/stack/yoda-venv - # PerfKitBenchmarker Settings -perfkit_venv: "{{home_dir}}/perfkit-venv" +perfkit_venv: "{{browbeat_path}}/.perfkit-venv" perfkit_version: v1.12.0 # Configuration items to adjust browbeat results served through httpd diff --git a/ansible/oooq/roles/browbeat-run/tasks/main.yml b/ansible/oooq/roles/browbeat-run/tasks/main.yml index 52e410106..2b98b42d9 100644 --- a/ansible/oooq/roles/browbeat-run/tasks/main.yml +++ b/ansible/oooq/roles/browbeat-run/tasks/main.yml @@ -2,6 +2,6 @@ - name: Run Browbeat shell: - "source {{ ansible_env.HOME }}/browbeat-venv/bin/activate; \ + "source {{ ansible_env.HOME }}/browbeat/.browbeat-venv/bin/activate; \ cd {{ ansible_env.HOME }}/browbeat/; \ python browbeat.py all" diff --git a/ansible/oooq/roles/template-configs/templates/browbeat-api-ci.yaml.j2 b/ansible/oooq/roles/template-configs/templates/browbeat-api-ci.yaml.j2 index 52f8bba6a..86dd2fa25 100644 --- a/ansible/oooq/roles/template-configs/templates/browbeat-api-ci.yaml.j2 +++ b/ansible/oooq/roles/template-configs/templates/browbeat-api-ci.yaml.j2 @@ -2,7 +2,6 @@ browbeat: results : results/ rerun: 3 cloud_name: {{ browbeat_cloud_name }} - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: {{ elastic_enabled }} host: {{ elastic_host }} diff --git a/ansible/oooq/roles/template-configs/templates/browbeat-basic.yaml.j2 b/ansible/oooq/roles/template-configs/templates/browbeat-basic.yaml.j2 index 1a949364d..0ccdec76c 100644 --- a/ansible/oooq/roles/template-configs/templates/browbeat-basic.yaml.j2 +++ b/ansible/oooq/roles/template-configs/templates/browbeat-basic.yaml.j2 @@ -1,10 +1,9 @@ -# Tests to be compleated for the install-and-check.sh script minimal and short workloads are performed +# Tests to be completed for the install-and-check.sh script minimal and short workloads are performed # to confirm functionality. browbeat: results : results/ rerun: 1 cloud_name: {{ browbeat_cloud_name }} - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: {{ elastic_enabled }} host: {{ elastic_host }} diff --git a/ansible/oooq/roles/template-configs/templates/browbeat-yoda-ci.yaml.j2 b/ansible/oooq/roles/template-configs/templates/browbeat-yoda-ci.yaml.j2 index 381180d22..618d846d7 100644 --- a/ansible/oooq/roles/template-configs/templates/browbeat-yoda-ci.yaml.j2 +++ b/ansible/oooq/roles/template-configs/templates/browbeat-yoda-ci.yaml.j2 @@ -4,7 +4,6 @@ browbeat: results : results/ rerun: 1 cloud_name: {{ browbeat_cloud_name }} - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: {{ elastic_enabled }} host: {{ elastic_host }} diff --git a/browbeat-complete.yaml b/browbeat-complete.yaml index d6cc2c646..f54e7dec9 100644 --- a/browbeat-complete.yaml +++ b/browbeat-complete.yaml @@ -3,7 +3,6 @@ browbeat: results : results/ rerun: 3 cloud_name: openstack - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: false regather: false @@ -40,7 +39,6 @@ perfkit: enabled: true sleep_before: 0 sleep_after: 0 - venv: /home/stack/perfkit-venv default: image: centos7 machine_type: m1.small @@ -59,7 +57,6 @@ rally: enabled: true sleep_before: 5 sleep_after: 5 - venv: /home/stack/rally-venv plugins: - netcreate-boot: rally/rally-plugins/netcreate-boot - netcreate-boot-ping: rally/rally-plugins/netcreate-boot-ping @@ -275,7 +272,6 @@ shaker: join_timeout: 600 sleep_before: 5 sleep_after: 5 - venv: /home/stack/shaker-venv shaker_region: regionOne external_host: 2.2.2.2 scenarios: @@ -371,7 +367,6 @@ yoda: enabled: false instackenv: "/home/stack/instackenv.json" stackrc: "/home/stack/stackrc" - venv: "/home/stack/yoda-venv/bin/activate" benchmarks: - name: scale-deploy type: overcloud diff --git a/browbeat-config.yaml b/browbeat-config.yaml index 2e41e72cd..9bbc98844 100644 --- a/browbeat-config.yaml +++ b/browbeat-config.yaml @@ -3,7 +3,6 @@ browbeat: results : results/ rerun: 1 cloud_name: openstack - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: true host: 1.1.1.1 @@ -40,7 +39,6 @@ perfkit: enabled: false sleep_before: 0 sleep_after: 0 - venv: /home/stack/perfkit-venv default: image: centos7 machine_type: m1.small @@ -63,7 +61,6 @@ shaker: join_timeout: 600 sleep_before: 5 sleep_after: 5 - venv: /home/stack/shaker-venv shaker_region: regionOne external_host: 2.2.2.2 scenarios: @@ -92,7 +89,6 @@ rally: enabled: true sleep_before: 5 sleep_after: 5 - venv: /home/stack/rally-venv plugins: - netcreate-boot: rally/rally-plugins/netcreate-boot - netcreate-boot-ping: rally/rally-plugins/netcreate-boot-ping diff --git a/browbeat.py b/browbeat.py index 184a8f12e..c7ab596ad 100755 --- a/browbeat.py +++ b/browbeat.py @@ -13,18 +13,15 @@ import argparse import datetime -import browbeat.elastic -import browbeat.perfkit -import browbeat.rally -import browbeat.shaker -import browbeat.yoda -import browbeat.workloadbase -import browbeat.tools import logging import os import sys import time +import browbeat.elastic +import browbeat.tools +import browbeat.workloadbase + _workload_opts = ['perfkit', 'rally', 'shaker', 'yoda'] _config_file = 'browbeat-config.yaml' debug_log_file = 'log/debug.log' diff --git a/browbeat/elastic.py b/browbeat/elastic.py index 5b193ab8e..edba8b437 100644 --- a/browbeat/elastic.py +++ b/browbeat/elastic.py @@ -11,16 +11,17 @@ # limitations under the License. from collections import deque -import elasticsearch -from elasticsearch import helpers -import logging -import json import datetime -import uuid -import sys -import time +import json +import logging import os import re +import sys +import time +import uuid + +import elasticsearch +from elasticsearch import helpers browbeat_uuid = uuid.uuid4() diff --git a/browbeat/path.py b/browbeat/path.py new file mode 100644 index 000000000..8a5ad653a --- /dev/null +++ b/browbeat/path.py @@ -0,0 +1,69 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import logging +import os + + +_logger = logging.getLogger('browbeat.path') + +# Browbeat's project modules path, typically /home/stack/browbeat/browbeat +browbeat_project_path = os.path.dirname(os.path.realpath(__file__)) + +# Path to Browbeat, typically /home/stack/browbeat +browbeat_path = os.path.abspath(os.path.join(browbeat_project_path, os.pardir)) + +# Base Path, typically /home/stack +base_path = os.path.abspath(os.path.join(browbeat_path, os.pardir)) + +conf_path = os.path.join(browbeat_path, 'conf') + +log_path = os.path.join(browbeat_path, 'log') + +results_path = os.path.join(browbeat_path, 'results') + +def get_overcloudrc(): + """Check the several expected locations for the overcloudrc file: + * $base_path/overcloudrc + * $browbeat_path/overcloudrc + """ + paths = [ + os.path.join(base_path, 'overcloudrc'), + os.path.join(browbeat_path, 'overcloudrc') + ] + for overcloudrc_file in paths: + if os.path.exists(overcloudrc_file): + return overcloudrc_file + else: + _logger.debug("overcloudrc not found in {}".format(overcloudrc_file)) + _logger.error('overcloudrc file can not be found') + +def get_workload_venv(workload, path_activate): + """Check the several expected locations for a workload's venv and return the existing venv: + * $base_path/$workload-venv + * $base_path/.$workload-venv + * $browbeat_path/.$workload-venv + """ + paths = [ + os.path.join(base_path, '{}-venv'.format(workload)), + os.path.join(base_path, '.{}-venv'.format(workload)), + os.path.join(browbeat_path, '.{}-venv'.format(workload)) + ] + for workload_venv_path in paths: + if os.path.isdir(workload_venv_path): + if path_activate and os.path.exists(os.path.join(workload_venv_path, 'bin/activate')): + return os.path.join(workload_venv_path, 'bin/activate') + else: + return workload_venv_path + else: + _logger.debug("{} not installed in {}".format(workload, workload_venv_path)) + _logger.error('{} does not appear to be installed correctly'.format(workload)) diff --git a/browbeat/perfkit.py b/browbeat/perfkit.py index 48794dbd8..8ec8ff15c 100644 --- a/browbeat/perfkit.py +++ b/browbeat/perfkit.py @@ -11,24 +11,27 @@ # limitations under the License. import ast -import connmon import datetime -import elastic import glob -import grafana import logging import os import shutil import subprocess import time + +import connmon +import elastic +import grafana +from path import get_overcloudrc +from path import get_workload_venv import tools import workloadbase - class PerfKit(workloadbase.WorkloadBase): def __init__(self, config): self.logger = logging.getLogger('browbeat.perfkit') + self.overcloudrc = get_overcloudrc() self.config = config self.error_count = 0 self.tools = tools.Tools(self.config) @@ -125,11 +128,12 @@ class PerfKit(workloadbase.WorkloadBase): # Build command to run if 'enabled' in benchmark_config: del benchmark_config['enabled'] - cmd = ("source {0}/bin/activate; source {1} " - "/home/stack/perfkit-venv/PerfKitBenchmarker/pkb.py " - "--cloud={2} --run_uri=browbeat".format( - self.config['perfkit']['venv'], - self.config['browbeat']['overcloud_credentials'], cloud_type)) + cmd = ("source {0}; source {1}; " + "{2}/PerfKitBenchmarker/pkb.py " + "--cloud={3} --run_uri=browbeat".format( + get_workload_venv('perfkit', True), + self.overcloudrc, + get_workload_venv('perfkit', False), cloud_type)) for parameter, value in benchmark_config.iteritems(): if not parameter == 'name': self.logger.debug( diff --git a/browbeat/rally.py b/browbeat/rally.py index 24e3d050e..713f0b7a8 100644 --- a/browbeat/rally.py +++ b/browbeat/rally.py @@ -11,19 +11,21 @@ # limitations under the License. import collections -import connmon import datetime -import elastic import glob -import grafana +import json import logging import os import re import shutil import time -import tools + +import connmon +import elastic +import grafana +from path import get_workload_venv import workloadbase -import json +import tools class Rally(workloadbase.WorkloadBase): @@ -61,7 +63,7 @@ class Rally(workloadbase.WorkloadBase): plugin_string = "" if len(plugins) > 0: plugin_string = "--plugin-paths {}".format(",".join(plugins)) - cmd = "source {}/bin/activate; ".format(self.config['rally']['venv']) + cmd = "source {}; ".format(get_workload_venv('rally', True)) cmd += "rally {} task start {} --task-args \'{}\' 2>&1 | tee {}.log".format( plugin_string, task_file, task_args, test_name) from_time = time.time() @@ -104,18 +106,18 @@ class Rally(workloadbase.WorkloadBase): def gen_scenario_html(self, task_ids, test_name): all_task_ids = ' '.join(task_ids) - cmd = "source {}/bin/activate; ".format(self.config['rally']['venv']) + cmd = "source {}; ".format(get_workload_venv('rally', True)) cmd += "rally task report --task {} --out {}.html".format( all_task_ids, test_name) return self.tools.run_cmd(cmd)['stdout'] def gen_scenario_json(self, task_id): - cmd = "source {}/bin/activate; ".format(self.config['rally']['venv']) + cmd = "source {}; ".format(get_workload_venv('rally', True)) cmd += "rally task results {}".format(task_id) return self.tools.run_cmd(cmd)['stdout'] def gen_scenario_json_file(self, task_id, test_name): - cmd = "source {}/bin/activate; ".format(self.config['rally']['venv']) + cmd = "source {}; ".format(get_workload_venv('rally', True)) cmd += "rally task results {} > {}.json".format(task_id, test_name) return self.tools.run_cmd(cmd)['stdout'] diff --git a/browbeat/shaker.py b/browbeat/shaker.py index 9ba9d45f4..54acde6f9 100644 --- a/browbeat/shaker.py +++ b/browbeat/shaker.py @@ -12,22 +12,26 @@ import collections import datetime -import elastic -import grafana import json import logging import os import time -import tools import uuid -import workloadbase import yaml +import elastic +import grafana +from path import get_overcloudrc +from path import get_workload_venv +import workloadbase +import tools + class Shaker(workloadbase.WorkloadBase): def __init__(self, config): self.logger = logging.getLogger('browbeat.shaker') + self.overcloudrc = get_overcloudrc() self.config = config self.tools = tools.Tools(self.config) self.grafana = grafana.Grafana(self.config) @@ -38,7 +42,7 @@ class Shaker(workloadbase.WorkloadBase): self.scenario_count = 0 def shaker_checks(self): - cmd = "source /home/stack/overcloudrc; glance image-list | grep -w shaker-image" + cmd = "source {}; glance image-list | grep -w shaker-image".format(self.overcloudrc) if self.tools.run_cmd(cmd)['stdout'] == "": self.logger.error("Shaker Image is not built, try again") exit(1) @@ -351,14 +355,13 @@ class Shaker(workloadbase.WorkloadBase): server_endpoint = self.config['shaker']['server'] port_no = self.config['shaker']['port'] flavor = self.config['shaker']['flavor'] - venv = self.config['shaker']['venv'] + venv = get_workload_venv('shaker', True) shaker_region = self.config['shaker']['shaker_region'] timeout = self.config['shaker']['join_timeout'] self.logger.info( "The uuid for this shaker scenario is {}".format(shaker_uuid)) cmd_env = ( - "source {0}/bin/activate; source {1}").format(venv, self.config['browbeat'] - ['overcloud_credentials']) + "source {0}; source {1}").format(venv, self.overcloudrc) if 'external' in filename and 'external_host' in self.config['shaker']: external_host = self.config['shaker']['external_host'] cmd_shaker = ( @@ -408,7 +411,7 @@ class Shaker(workloadbase.WorkloadBase): time_stamp = datetime.datetime.utcnow().strftime("%Y%m%d-%H%M%S") self.logger.debug("Time Stamp (Prefix): {}".format(time_stamp)) scenarios = self.config.get('shaker')['scenarios'] - venv = self.config['shaker']['venv'] + venv = get_workload_venv('shaker') default_time = 60 self.shaker_checks() if (scenarios is not None and len(scenarios) > 0): diff --git a/browbeat/tools.py b/browbeat/tools.py index 38b4dc960..0a4808e28 100644 --- a/browbeat/tools.py +++ b/browbeat/tools.py @@ -10,17 +10,19 @@ # See the License for the specific language governing permissions and # limitations under the License. +import logging +import os +import re +import subprocess +import yaml + +from pykwalify import core as pykwalify_core +from pykwalify import errors as pykwalify_errors + import perfkit import rally import shaker import yoda -import logging -import os -import subprocess -import yaml -import re -from pykwalify import core as pykwalify_core -from pykwalify import errors as pykwalify_errors class Tools(object): diff --git a/browbeat/validate.yaml b/browbeat/validate.yaml index 1e2b15c7f..60850d1fb 100644 --- a/browbeat/validate.yaml +++ b/browbeat/validate.yaml @@ -14,9 +14,6 @@ mapping: cloud_name: type: str required: True - overcloud_credentials: - type: str - required: True elasticsearch: required: True @@ -116,9 +113,6 @@ mapping: sleep_after: type: number required: True - venv: - type: str - required: True default: type: map required: True @@ -191,9 +185,6 @@ mapping: sleep_after: type: number required: True - venv: - type: str - required: True shaker_region: type: str required: true @@ -231,9 +222,6 @@ mapping: sleep_after: type: number required: True - venv: - type: str - required: True benchmarks: type: seq required: True diff --git a/browbeat/yoda.py b/browbeat/yoda.py index 6f5188240..b346bbccd 100644 --- a/browbeat/yoda.py +++ b/browbeat/yoda.py @@ -12,23 +12,26 @@ # limitations under the License. # Yet another cloud deployment tool + +from collections import deque import datetime -import elastic -import grafana import json import logging +import os import time -import tools -import workloadbase + from openstack import connection from openstack import exceptions -import os -import requests try: from ostag import ostag except ImportError: ostag = None -from collections import deque +import requests + +import elastic +import grafana +import workloadbase +import tools class Yoda(workloadbase.WorkloadBase): diff --git a/conf/browbeat-glance-complete.yaml b/conf/browbeat-glance-complete.yaml index 8eca75a5b..9bf2fbc41 100644 --- a/conf/browbeat-glance-complete.yaml +++ b/conf/browbeat-glance-complete.yaml @@ -3,7 +3,6 @@ browbeat: results : results/ rerun: 1 cloud_name: openstack - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: false regather: false @@ -40,7 +39,6 @@ rally: enabled: true sleep_before: 5 sleep_after: 5 - venv: /home/stack/rally-venv plugins: - glance-create-boot-delete: rally/rally-plugins/glance-create-boot-delete benchmarks: diff --git a/conf/browbeat-keystone-complete.yaml b/conf/browbeat-keystone-complete.yaml index d221bae99..22cf11311 100644 --- a/conf/browbeat-keystone-complete.yaml +++ b/conf/browbeat-keystone-complete.yaml @@ -4,7 +4,6 @@ browbeat: results : results/ rerun: 3 cloud_name: openstack - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: false regather: false @@ -42,7 +41,6 @@ rally: enabled: true sleep_before: 5 sleep_after: 5 - venv: /home/stack/rally-venv benchmarks: - name: authenticate enabled: true diff --git a/conf/browbeat-keystone-minimal.yaml b/conf/browbeat-keystone-minimal.yaml index db93c4928..bde9240af 100644 --- a/conf/browbeat-keystone-minimal.yaml +++ b/conf/browbeat-keystone-minimal.yaml @@ -4,7 +4,6 @@ browbeat: results : results/ rerun: 1 cloud_name: openstack - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: false regather: false @@ -42,7 +41,6 @@ rally: enabled: true sleep_before: 5 sleep_after: 5 - venv: /home/stack/rally-venv benchmarks: - name: authenticate enabled: true diff --git a/conf/browbeat-workloads.yml b/conf/browbeat-workloads.yml index f8c51680b..6b6920d57 100644 --- a/conf/browbeat-workloads.yml +++ b/conf/browbeat-workloads.yml @@ -39,7 +39,6 @@ rally: enabled: true sleep_before: 5 sleep_after: 5 - venv: /home/stack/rally-venv/bin/activate plugins: - workloads: rally/rally-plugins/workloads benchmarks: diff --git a/conf/ceilometer-minimal.yaml b/conf/ceilometer-minimal.yaml index 3686bfaec..59aa8658b 100644 --- a/conf/ceilometer-minimal.yaml +++ b/conf/ceilometer-minimal.yaml @@ -3,7 +3,6 @@ browbeat: results : results/ rerun: 1 cloud_name: openstack - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: false regather: false @@ -40,7 +39,6 @@ rally: enabled: true sleep_before: 5 sleep_after: 5 - venv: /home/stack/rally-venv plugins: - validate-ceilometer: rally/rally-plugins/validate-ceilometer - nova-ceilometer: rally/rally-plugins/nova-ceilometer diff --git a/conf/ceilometer-persist-response-timing.yaml b/conf/ceilometer-persist-response-timing.yaml index cc6d01173..5e3e67cce 100644 --- a/conf/ceilometer-persist-response-timing.yaml +++ b/conf/ceilometer-persist-response-timing.yaml @@ -6,7 +6,6 @@ browbeat: results : results/ rerun: 1 cloud_name: openstack - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: false regather: false @@ -43,7 +42,6 @@ rally: enabled: true sleep_before: 5 sleep_after: 5 - venv: /home/stack/rally-venv plugins: - nova: rally/rally-plugins/nova benchmarks: diff --git a/conf/gnocchi-minimal.yaml b/conf/gnocchi-minimal.yaml index ad9f8ccec..ca69c67f0 100644 --- a/conf/gnocchi-minimal.yaml +++ b/conf/gnocchi-minimal.yaml @@ -4,7 +4,6 @@ browbeat: results : results/ rerun: 1 cloud_name: openstack - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: false host: 1.1.1.1 @@ -41,7 +40,6 @@ rally: enabled: true sleep_before: 0 sleep_after: 0 - venv: /home/stack/rally-venv plugins: - gnocchi: rally/rally-plugins/gnocchi benchmarks: diff --git a/conf/perfkit-benchmarks.yaml b/conf/perfkit-benchmarks.yaml index 250cc8082..382543898 100644 --- a/conf/perfkit-benchmarks.yaml +++ b/conf/perfkit-benchmarks.yaml @@ -8,7 +8,6 @@ browbeat: results : results/ rerun: 1 cloud_name: openstack - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: false regather: false @@ -45,7 +44,6 @@ perfkit: enabled: true sleep_before: 0 sleep_after: 0 - venv: /home/stack/perfkit-venv default: image: centos7 machine_type: m1.small diff --git a/conf/telemetry-nova-neutron-gnocchi-10k-1000-per-30m.yaml b/conf/telemetry-nova-neutron-gnocchi-10k-1000-per-30m.yaml index 73ea0cd62..020828dc6 100644 --- a/conf/telemetry-nova-neutron-gnocchi-10k-1000-per-30m.yaml +++ b/conf/telemetry-nova-neutron-gnocchi-10k-1000-per-30m.yaml @@ -10,7 +10,6 @@ browbeat: results : results/ rerun: 1 cloud_name: openstack - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: false host: 1.1.1.1 @@ -47,7 +46,6 @@ rally: enabled: true sleep_before: 5 sleep_after: 5 - venv: /home/stack/rally-venv plugins: - nova: rally/rally-plugins/nova - neutron: rally/rally-plugins/neutron diff --git a/conf/telemetry-nova-neutron-gnocchi-1k-100-per-30m.yaml b/conf/telemetry-nova-neutron-gnocchi-1k-100-per-30m.yaml index d26cdedfa..21f522287 100644 --- a/conf/telemetry-nova-neutron-gnocchi-1k-100-per-30m.yaml +++ b/conf/telemetry-nova-neutron-gnocchi-1k-100-per-30m.yaml @@ -10,7 +10,6 @@ browbeat: results : results/ rerun: 1 cloud_name: openstack - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: false host: 1.1.1.1 @@ -47,7 +46,6 @@ rally: enabled: true sleep_before: 5 sleep_after: 5 - venv: /home/stack/rally-venv plugins: - nova: rally/rally-plugins/nova - neutron: rally/rally-plugins/neutron diff --git a/conf/telemetry-nova-neutron-gnocchi-1k-500-per-30m.yaml b/conf/telemetry-nova-neutron-gnocchi-1k-500-per-30m.yaml index a0f9824a9..ca51098a2 100644 --- a/conf/telemetry-nova-neutron-gnocchi-1k-500-per-30m.yaml +++ b/conf/telemetry-nova-neutron-gnocchi-1k-500-per-30m.yaml @@ -10,7 +10,6 @@ browbeat: results : results/ rerun: 1 cloud_name: openstack - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: false host: 1.1.1.1 @@ -47,7 +46,6 @@ rally: enabled: true sleep_before: 5 sleep_after: 5 - venv: /home/stack/rally-venv plugins: - nova: rally/rally-plugins/nova - neutron: rally/rally-plugins/neutron diff --git a/conf/telemetry-nova-neutron-gnocchi-5k-500-per-30m.yaml b/conf/telemetry-nova-neutron-gnocchi-5k-500-per-30m.yaml index 72b8c87df..68f65948d 100644 --- a/conf/telemetry-nova-neutron-gnocchi-5k-500-per-30m.yaml +++ b/conf/telemetry-nova-neutron-gnocchi-5k-500-per-30m.yaml @@ -10,7 +10,6 @@ browbeat: results : results/ rerun: 1 cloud_name: openstack - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: false host: 1.1.1.1 @@ -47,7 +46,6 @@ rally: enabled: true sleep_before: 5 sleep_after: 5 - venv: /home/stack/rally-venv plugins: - nova: rally/rally-plugins/nova - neutron: rally/rally-plugins/neutron diff --git a/conf/telemetry-nova-persist-instances-with-network.yaml b/conf/telemetry-nova-persist-instances-with-network.yaml index 1c794989e..e774c45e1 100644 --- a/conf/telemetry-nova-persist-instances-with-network.yaml +++ b/conf/telemetry-nova-persist-instances-with-network.yaml @@ -8,7 +8,6 @@ browbeat: results : results/ rerun: 1 cloud_name: openstack - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: false host: 1.1.1.1 @@ -47,7 +46,6 @@ rally: # Sleeps 30 minutes after each iteration to allow for system resources to degrade or # display stepped degrading (If the system is hitting saturation or high utilization) sleep_after: 1800 - venv: /home/stack/rally-venv plugins: - nova: rally/rally-plugins/nova - neutron: rally/rally-plugins/neutron diff --git a/conf/telemetry-nova-persist-instances.yaml b/conf/telemetry-nova-persist-instances.yaml index b8c486186..536d944ee 100644 --- a/conf/telemetry-nova-persist-instances.yaml +++ b/conf/telemetry-nova-persist-instances.yaml @@ -7,7 +7,6 @@ browbeat: results : results/ rerun: 1 cloud_name: openstack - overcloud_credentials: /home/stack/overcloudrc elasticsearch: enabled: false regather: false @@ -47,7 +46,6 @@ rally: # Sleeps 30 minutes after each iteration to allow for system resources to degrade or # display stepped degrading (If the system is hitting saturation or high utilization) sleep_after: 1800 - venv: /home/stack/rally-venv plugins: - nova: rally/rally-plugins/nova benchmarks: diff --git a/doc/source/developing.rst b/doc/source/developing.rst index 7c60ae9e4..5e8cb2d1f 100644 --- a/doc/source/developing.rst +++ b/doc/source/developing.rst @@ -397,9 +397,7 @@ setup Browbeat with Rally against your local quickstart cloud. Edit your browbeat-config and validate the following: -* Correct overcloudrc referenced * Elastic Indexing configuration -* Rally venv is set correctly * Scenarios you want to run are setup and set to a low times/concurrency Troubleshooting diff --git a/doc/source/installation.rst b/doc/source/installation.rst index b64e8a568..9548b0a85 100644 --- a/doc/source/installation.rst +++ b/doc/source/installation.rst @@ -355,13 +355,9 @@ environment is different and thus your configuration options will vary. [browbeat1@browbeatvm ansible]$ cd .. [browbeat1@browbeatvm browbeat]$ vi browbeat-config.yaml - [browbeat1@browbeatvm browbeat]$ . ../browbeat-venv/bin/activate + [browbeat1@browbeatvm browbeat]$ . .browbeat-venv/bin/activate (browbeat-venv) [browbeat1@browbeatvm browbeat]$ python browbeat.py rally -Make sure to modify the venv settings for Rally to match the directory in which -Rally was installed in. You will have to do so for other workload providers as -well. - 11. Setup network for Shaker+PerfKitBenchmarker and build Shaker image :: diff --git a/doc/source/usage.rst b/doc/source/usage.rst index e6a7b1b5a..0fdc5af4e 100644 --- a/doc/source/usage.rst +++ b/doc/source/usage.rst @@ -11,32 +11,20 @@ Run Overcloud checks Your Overcloud check output is located in results/bug_report.log -NOTE: It is strongly advised to not run the ansible playbooks in a venv. +NOTE: It is strongly advised to not run the ansible playbooks in a virtual environment. -Run performance stress tests through Browbeat on the undercloud ---------------------------------------------------------------- +Run Browbeat performance tests from Undercloud +---------------------------------------------- :: $ ssh undercloud-root [root@ospd ~]# su - stack - [stack@ospd ~]$ screen -S browbeat - [stack@ospd ~]$ . browbeat-venv/bin/activate - (browbeat-venv)[stack@ospd ~]$ cd browbeat/ + [stack@ospd ~]$ cd browbeat/ + [stack@ospd browbeat]$ . .browbeat-venv/bin/activate (browbeat-venv)[stack@ospd browbeat]$ vi browbeat-config.yaml # Edit browbeat-config.yaml to control how many stress tests are run. (browbeat-venv)[stack@ospd browbeat]$ ./browbeat.py #perfkit, rally, shaker or "all" - -Run performance stress tests through Browbeat ---------------------------------------------- - -:: - - [stack@ospd ansible]$ . ../../browbeat-venv/bin/activate - (browbeat-venv)[stack@ospd ansible]$ cd .. - (browbeat-venv)[stack@ospd browbeat]$ vi browbeat-config.yaml # Edit browbeat.cfg to control how many stress tests are run. - (browbeat-venv)[stack@ospd browbeat]$ ./browbeat.py #perfkit, rally, shaker or "all" - Running PerfKitBenchmarker --------------------------- @@ -99,8 +87,6 @@ summarized below: :join_timeout: Timeout in seconds for agents to join :sleep_before: Time in seconds to sleep before executing a scenario :sleep_after: Time in seconds to sleep after executing a scenario - :venv: venv to execute shaker commands in, ``/home/stack/shaker-venv`` by - default :shaker_region: OpenStack region you want to use :external_host: IP of a server for external tests (should have ``browbeat/util/shaker-external.sh`` executed on it previously and have diff --git a/tox.ini b/tox.ini index 38672e560..9e2a34a9f 100644 --- a/tox.ini +++ b/tox.ini @@ -43,4 +43,4 @@ show-source = True ignore = E123,E125,E226,E302,E41,E231,E203,H233,H306,H238,H236,H404,H405 max-line-length = 100 builtins = _ -exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build,ansible/* +exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build,ansible/*,.browbeat-venv,.perfkit-venv,.rally-venv,.shaker-venv