diff --git a/ansible/install/group_vars/all.yml b/ansible/install/group_vars/all.yml index 5b24bc1cc..9d70febf6 100644 --- a/ansible/install/group_vars/all.yml +++ b/ansible/install/group_vars/all.yml @@ -18,6 +18,12 @@ tripleo: true home_dir: "/home/{{browbeat_user}}" browbeat_path: "{{home_dir}}/browbeat" +# Creates rally deployment Undercloud +rally_undercloud_enabled: true + +# The Undercloud RC file +stackrc: "{{home_dir}}/stackrc" + # The Overcloud RC file overcloudrc: "{{home_dir}}/overcloudrc" diff --git a/ansible/install/roles/rally/tasks/main.yml b/ansible/install/roles/rally/tasks/main.yml index 83e2b5eb3..1befab4a3 100644 --- a/ansible/install/roles/rally/tasks/main.yml +++ b/ansible/install/roles/rally/tasks/main.yml @@ -39,14 +39,45 @@ - name: Setup rally database shell: . {{ rally_venv }}/bin/activate; rally db recreate -- name: Setup rally deployment +- block: + - name: copy of stackrc + copy: + src: "{{ stackrc }}" + dest: "{{home_dir}}/undercloudrc" + + - name: Get the OS_AUTH_URL value in stackrc + shell: cat undercloudrc | grep OS_AUTH_URL= + register: os_auth_url + + - name: Add v3 to OS_AUTH_URL in stackrc + replace: + path: "{{home_dir}}/undercloudrc" + regexp: "{{ os_auth_url.stdout }}" + replace: '{{ os_auth_url.stdout }}/v3' + + - name: Setup rally deployment for undercloud + shell: . {{ rally_venv }}/bin/activate; . "{{home_dir}}/undercloudrc"; rally deployment create --fromenv --name undercloud + + - name: Check Rally deployment for undercloud + shell: . {{ rally_venv }}/bin/activate; . "{{home_dir}}/undercloudrc"; rally deployment check + register: rally_deployment_check_undercloud + + - name: Fail if Rally deployment cannot be verfied on undercloud + fail: + msg: "Failed to verify that your deployment is ready to benchmark" + when: rally_deployment_check_undercloud.rc != 0 + + when: rally_undercloud_enabled + +- name: Setup rally deployment for overcloud shell: . {{ rally_venv }}/bin/activate; . {{ overcloudrc }}; rally deployment create --fromenv --name overcloud -- name: Check Rally deployment +- name: Check Rally deployment for overcloud shell: . {{ rally_venv }}/bin/activate; . {{ overcloudrc }}; rally deployment check - register: rally_deployment_check + register: rally_deployment_check_overcloud -- name: Fail if Rally deployment cannot be verfied +- name: Fail if Rally deployment cannot be verfied for overcloud fail: msg: "Failed to verify that your deployment is ready to benchmark" - when: rally_deployment_check.rc != 0 + when: rally_deployment_check_overcloud.rc != 0 + diff --git a/browbeat-complete.yaml b/browbeat-complete.yaml index 3076009f0..740064344 100644 --- a/browbeat-complete.yaml +++ b/browbeat-complete.yaml @@ -51,6 +51,7 @@ workloads: - name: authenticate enabled: true type: rally + rally_deployment: overcloud concurrency: - 64 - 128 @@ -83,6 +84,7 @@ workloads: - name: cinder enabled: true type: rally + rally_deployment: overcloud concurrency: - 16 - 32 @@ -105,6 +107,7 @@ workloads: - name: keystonebasic enabled: true type: rally + rally_deployment: overcloud concurrency: - 256 times: 5000 @@ -122,6 +125,7 @@ workloads: - name: neutron enabled: true type: rally + rally_deployment: overcloud concurrency: - 16 - 32 @@ -157,6 +161,7 @@ workloads: - name: nova enabled: true type: rally + rally_deployment: overcloud concurrency: - 16 - 32 @@ -200,6 +205,7 @@ workloads: - name: glance enabled: true type: rally + rally_deployment: overcloud concurrency: - 8 times: 10 @@ -225,6 +231,7 @@ workloads: - name: plugins enabled: true type: rally + rally_deployment: overcloud concurrency: - 16 - 32 diff --git a/browbeat-config.yaml b/browbeat-config.yaml index 129aa515c..32297c259 100644 --- a/browbeat-config.yaml +++ b/browbeat-config.yaml @@ -81,6 +81,7 @@ workloads: - name: authenticate enabled: true type: rally + rally_deployment: overcloud concurrency: - 8 times: 100 @@ -98,6 +99,7 @@ workloads: - name: cinder enabled: true type: rally + rally_deployment: overcloud concurrency: - 2 times: 10 @@ -111,6 +113,7 @@ workloads: - name: keystonebasic enabled: true type: rally + rally_deployment: overcloud concurrency: - 8 times: 100 @@ -125,6 +128,7 @@ workloads: - name: neutron enabled: true type: rally + rally_deployment: overcloud concurrency: - 2 times: 10 @@ -171,6 +175,7 @@ workloads: - name: nova enabled: true type: rally + rally_deployment: overcloud concurrency: - 2 times: 10 @@ -210,6 +215,7 @@ workloads: - name: glance enabled: true type: rally + rally_deployment: overcloud concurrency: - 2 times: 10 @@ -224,6 +230,7 @@ workloads: - name: octavia enabled: false type: rally + rally_deployment: overcloud concurrency: - 2 times: 10 @@ -268,6 +275,7 @@ workloads: - name: simple-plugins enabled: true type: rally + rally_deployment: overcloud concurrency: - 8 times: 10 @@ -313,6 +321,7 @@ workloads: - name: plugin-workloads enabled: false type: rally + rally_deployment: overcloud concurrency: - 1 times: 1 diff --git a/browbeat/schema/rally.yml b/browbeat/schema/rally.yml index 25c23e938..1992e6d6c 100644 --- a/browbeat/schema/rally.yml +++ b/browbeat/schema/rally.yml @@ -21,6 +21,9 @@ mapping: type: str required: True enum: ["rally"] + rally_deployment: + type: str + required: False scenarios: type: seq sequence: diff --git a/browbeat/workloads/rally.py b/browbeat/workloads/rally.py index b7d56ffa5..b641d7f86 100644 --- a/browbeat/workloads/rally.py +++ b/browbeat/workloads/rally.py @@ -216,6 +216,7 @@ class Rally(base.WorkloadBase): self.update_total_scenarios() scenario_name = scenario["name"] scenario_file = scenario["file"] + del scenario["enabled"] del scenario["file"] del scenario["name"] @@ -237,9 +238,31 @@ class Rally(base.WorkloadBase): del scenario["concurrency"] else: concurrencies = def_concurrencies + if "times" not in scenario: scenario["times"] = def_times + if "rally_deployment" in scenario: + _rally_deployment = scenario["rally_deployment"] + elif "rally_deployment" in workload: + scenario["rally_deployment"] = workload["rally_deployment"] + _rally_deployment = scenario["rally_deployment"] + else: + _rally_deployment = 'overcloud' + self.logger.info("Default rally deployment {} in use.".format(_rally_deployment)) + + rally_deployments = ['undercloud', 'overcloud'] + if _rally_deployment in rally_deployments: + cmd = "source {}; ".format(get_workload_venv('rally', True)) + cmd += "rally deployment use {}".format(_rally_deployment) + cmd_stdout = self.tools.run_cmd(cmd)['stdout'] + if cmd_stdout == "Deployment {} is not found.".format(_rally_deployment): + self.logger.error("Rally deployment {} is not found.".format(_rally_deployment)) + exit(1) + else: + self.logger.error("Wrong rally benchmark name specified.") + continue + concurrency_count_dict = collections.Counter() for concurrency in concurrencies: scenario["concurrency"] = concurrency diff --git a/tests/data/invalid_browbeat.yml b/tests/data/invalid_browbeat.yml index b9a4c01d1..5d3c2479f 100644 --- a/tests/data/invalid_browbeat.yml +++ b/tests/data/invalid_browbeat.yml @@ -45,6 +45,7 @@ workloads: - name: browbeat-test-authenticate enabled: false type: rally + rally_deployment: underclouud concurrency: - 1 times: 1 diff --git a/tests/data/invalid_browbeat_workload.yml b/tests/data/invalid_browbeat_workload.yml index b03d63f79..ca2f2a3f0 100644 --- a/tests/data/invalid_browbeat_workload.yml +++ b/tests/data/invalid_browbeat_workload.yml @@ -41,7 +41,7 @@ shaker: external_host: 2.2.2.2 workloads: - # Missing name + # Missing name for workload - enabled: false type: rally concurrency: diff --git a/tests/data/workloads.yml b/tests/data/workloads.yml index e6496c0d9..65da4fe6d 100644 --- a/tests/data/workloads.yml +++ b/tests/data/workloads.yml @@ -5,6 +5,25 @@ rally: name: valid-test-authenticate-01 enabled: true type: rally + rally_deployment: overcloud + concurrency: + - 1 + times: 1 + scenarios: + - name: valid-test-authentic-keystone + enabled: true + file: rally/authenticate/keystone-cc.yml + - name: valid-test-authentic-neutron + enabled: false + file: rally/authenticate/validate_neutron-cc.yml + - name: valid-test-authentic-octavia + enabled: true + file: rally/authenticate/validate_octavia-cc.yml + - valid: true + data: + name: valid-test-authenticate-02 + enabled: true + type: rally concurrency: - 1 times: 1 @@ -23,6 +42,7 @@ rally: name: invalid-test-authenticate-01 enabled: true type: rally-incorrect + rally_deployment: 1 concurrency: - 1 times: 1