diff options
author | Yujun Zhang <zhang.yujunz@zte.com.cn> | 2017-04-20 20:58:13 +0800 |
---|---|---|
committer | Yujun Zhang <zhang.yujunz@zte.com.cn> | 2017-04-21 13:43:50 +0800 |
commit | 9222ecb462099f667d78494f4886d6c84f8a2310 (patch) | |
tree | 695f9c4448b9a6ba637f33c8feabce0efa46f5bd /resources/roles/qtip-workspace/files/copy | |
parent | 441dea324dc2442b746528e0337a539c18b85b2f (diff) |
Reorganize benchmarking tasks into ansible roles which helps to
- group task with related templates and variables
- simplify the main playbook to improve readability
See: http://docs.ansible.com/ansible/playbooks_roles.html
Change-Id: I9d3180edaac83ee9dba85ce5ac14ff574af7a905
Signed-off-by: Yujun Zhang <zhang.yujunz@zte.com.cn>
Diffstat (limited to 'resources/roles/qtip-workspace/files/copy')
9 files changed, 240 insertions, 0 deletions
diff --git a/resources/roles/qtip-workspace/files/copy/fixtures/case.json b/resources/roles/qtip-workspace/files/copy/fixtures/case.json new file mode 100644 index 00000000..22abc40f --- /dev/null +++ b/resources/roles/qtip-workspace/files/copy/fixtures/case.json @@ -0,0 +1,14 @@ +{ + "run": "", + "name": "compute", + "ci_loop": "", + "tags": "", + "url": "", + "domains": "", + "dependencies": "", + "version": "", + "criteria": "", + "tier": "", + "blocking": "", + "description": "" +}
\ No newline at end of file diff --git a/resources/roles/qtip-workspace/files/copy/fixtures/pod.json b/resources/roles/qtip-workspace/files/copy/fixtures/pod.json new file mode 100644 index 00000000..654b5828 --- /dev/null +++ b/resources/roles/qtip-workspace/files/copy/fixtures/pod.json @@ -0,0 +1,6 @@ +{ + "details": "", + "role": "", + "name": "qtip-pod", + "mode": "" +}
\ No newline at end of file diff --git a/resources/roles/qtip-workspace/files/copy/fixtures/project.json b/resources/roles/qtip-workspace/files/copy/fixtures/project.json new file mode 100644 index 00000000..ecd03e83 --- /dev/null +++ b/resources/roles/qtip-workspace/files/copy/fixtures/project.json @@ -0,0 +1,4 @@ +{ + "name": "qtip", + "description": "Platform Performance Benchmarking" +}
\ No newline at end of file diff --git a/resources/roles/qtip-workspace/files/copy/group_vars/.gitkeep b/resources/roles/qtip-workspace/files/copy/group_vars/.gitkeep new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/resources/roles/qtip-workspace/files/copy/group_vars/.gitkeep diff --git a/resources/roles/qtip-workspace/files/copy/host_vars/.gitkeep b/resources/roles/qtip-workspace/files/copy/host_vars/.gitkeep new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/resources/roles/qtip-workspace/files/copy/host_vars/.gitkeep diff --git a/resources/roles/qtip-workspace/files/copy/run.yml b/resources/roles/qtip-workspace/files/copy/run.yml new file mode 100644 index 00000000..ddac875c --- /dev/null +++ b/resources/roles/qtip-workspace/files/copy/run.yml @@ -0,0 +1,109 @@ +############################################################################## +# Copyright (c) 2017 ZTE Corporation 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 +############################################################################## + +--- +# Execute compute benchmark plan and collect data +# - system information +# - test condition +# - performance metrics + +- hosts: compute + + pre_tasks: + - name: check ssh connection + ping: + + roles: + - development-tools + + post_tasks: + - name: create dumping directories + file: + path: "{{ qtip_dump }}/{{ inventory_hostname }}" + state: directory + delegate_to: localhost + + tags: [setup] + + +- hosts: compute + + roles: + + - { role: inxi, tags: [inxi, sysinfo] } + - { role: unixbench, tags: [unixbench, float, int] } + - { role: openssl, tags: [openssl, ssl]} + - { role: nDPI, tags: [ndpi, dpi]} + - { role: ramspeed, tags: [ramspeed, mem]} + + post_tasks: + - name: calculate QPI of compute + calculate: + metrics: + ssl_rsa: "{{ openssl_rsa_metrics }}" + spec: "{{ qtip_resources }}/QPI/compute.yaml" + register: qpi_result + delegate_to: localhost + tags: [calculate] + + +- hosts: localhost + + tasks: + + - name: aggregate QPI results from all tested nodes + aggregate: + group: compute + register: pod_result + + # Generate and publish report + + - name: create report folder + file: + path: "{{ qtip_reports }}" + state: directory + + - name: create system information report + template: + src: "{{ qtip_resources }}/template/system-info.j2" + dest: "{{ qtip_reports }}/system-info" + + - name: create qpi report + template: + src: "{{ qtip_resources }}/template/qpi-report.j2" + dest: "{{ qtip_reports }}/qpi-report" + tags: [report] + + - name: create dpi metrics report + template: + src: "{{ qtip_resources }}/template/dpi-metrics.j2" + dest: "{{ qtip_reports }}/dpi-metrics" + tags: [report, dpi] + + - name: push result to testapi + uri: + url: "{{ testapi_url }}/results" + body: "{{ item|to_json }}" + method: POST + body_format: json + status_code: 200 + with_items: + - + project_name: "{{ project_name }}" + case_name: "{{ case_name }}" + pod_name: "{{ pod_name }}" + installer: "{{ installer }}" + version: "{{ version }}" + scenario: "{{ scenario }}" + start_date: "{{ ansible_date_time.date }}" + stop_date: "{{ ansible_date_time.date }}" + criteria: "" + details: "{{ pod_result }}" + + tags: [testapi] diff --git a/resources/roles/qtip-workspace/files/copy/setup.yml b/resources/roles/qtip-workspace/files/copy/setup.yml new file mode 100644 index 00000000..88cdb1d2 --- /dev/null +++ b/resources/roles/qtip-workspace/files/copy/setup.yml @@ -0,0 +1,73 @@ +############################################################################## +# Copyright (c) 2017 ZTE Corporation 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 +############################################################################## + +# Prepare connection to SUT (System Under Test) +- hosts: fuel-masters + gather_facts: no + tasks: + - name: collect facts of fuel hosts + fuel: + +- hosts: apex-underclouds + gather_facts: no + + tasks: + - name: collect overcloud baremetal info + shell: . /root/stackrc && openstack baremetal list --fields instance_uuid properties provision_state --format json + register: baremetal_info + - name: collect overcloud server info + shell: . /root/stackrc && openstack server list --format json + register: server_info + - name: generate inventory + apex_generate_inventory: + baremetal_info: "{{ baremetal_info.stdout | from_json }}" + server_info: "{{ server_info.stdout | from_json }}" + +- hosts: + - fuel-masters + - apex-underclouds + tasks: + - name: update inventory file + template: src=templates/hosts dest=./hosts + delegate_to: localhost + - name: update ssh.cfg file + template: src=templates/ssh.cfg dest=./ssh.cfg + delegate_to: localhost + +- hosts: localhost + tasks: + - name: create output directories + file: + path: "{{ item }}" + state: directory + with_items: + - "{{ qtip_cache }}" + - "{{ qtip_reports }}" + +# Initialize testapi database +- hosts: localhost + tasks: + - name: create project and pod + uri: + url: "{{ testapi_url }}/{{item}}s" + method: POST + body: "{{ lookup('file', '{}/{}.json'.format(qtip_fixtures, item)) }}" + status_code: [200, 403] + body_format: json + with_items: + - project + - pod + - name: create cases + uri: + url: "{{ testapi_url }}/projects/qtip/cases" + method: POST + body: "{{ lookup('file', '{}/case.json'.format(qtip_fixtures)) }}" + status_code: [200, 403] + body_format: json + tags: [testapi] diff --git a/resources/roles/qtip-workspace/files/copy/templates/hosts b/resources/roles/qtip-workspace/files/copy/templates/hosts new file mode 100644 index 00000000..27c8d1d6 --- /dev/null +++ b/resources/roles/qtip-workspace/files/copy/templates/hosts @@ -0,0 +1,20 @@ +localhost ansible_connection=local + +[{{ installer_master_group[installer] }}] +{{ installer_master }} + +[fuel-groups:children] +{% for group in hosts|sort %} +{{ group }} +{% endfor %} + +[fuel-groups:vars] +ansible_ssh_common_args=-F ./ssh.cfg + +{% for group in hosts|sort %} +[{{ group }}] +{% for host in hosts[group]|sort %} +{{ host }} +{% endfor %} + +{% endfor %} diff --git a/resources/roles/qtip-workspace/files/copy/templates/ssh.cfg b/resources/roles/qtip-workspace/files/copy/templates/ssh.cfg new file mode 100644 index 00000000..d6a266ba --- /dev/null +++ b/resources/roles/qtip-workspace/files/copy/templates/ssh.cfg @@ -0,0 +1,14 @@ +# Connect to target node through jump host +# +# OpenSSH 7.3: +# ProxyJump jumphost +# before OpenSSH 7.3 +# ProxyCommand ssh -o 'ForwardAgent yes' jumphost 'ssh-add && nc %h %p' + +{% for (name, host) in hosts_meta.items() %} +Host {{ name }} + HostName {{ host.ansible_ssh_host }} + User root + ProxyCommand ssh -o 'ForwardAgent yes' {{ installer_master }} 'ssh-add && nc %h %p' + +{% endfor %} |