aboutsummaryrefslogtreecommitdiffstats
path: root/resources/roles/qtip-workspace/files/copy
diff options
context:
space:
mode:
authorYujun Zhang <zhang.yujunz@zte.com.cn>2017-04-20 20:58:13 +0800
committerYujun Zhang <zhang.yujunz@zte.com.cn>2017-04-21 13:43:50 +0800
commit9222ecb462099f667d78494f4886d6c84f8a2310 (patch)
tree695f9c4448b9a6ba637f33c8feabce0efa46f5bd /resources/roles/qtip-workspace/files/copy
parent441dea324dc2442b746528e0337a539c18b85b2f (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')
-rw-r--r--resources/roles/qtip-workspace/files/copy/fixtures/case.json14
-rw-r--r--resources/roles/qtip-workspace/files/copy/fixtures/pod.json6
-rw-r--r--resources/roles/qtip-workspace/files/copy/fixtures/project.json4
-rw-r--r--resources/roles/qtip-workspace/files/copy/group_vars/.gitkeep0
-rw-r--r--resources/roles/qtip-workspace/files/copy/host_vars/.gitkeep0
-rw-r--r--resources/roles/qtip-workspace/files/copy/run.yml109
-rw-r--r--resources/roles/qtip-workspace/files/copy/setup.yml73
-rw-r--r--resources/roles/qtip-workspace/files/copy/templates/hosts20
-rw-r--r--resources/roles/qtip-workspace/files/copy/templates/ssh.cfg14
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 %}