summaryrefslogtreecommitdiffstats
path: root/resources/roles
diff options
context:
space:
mode:
authorYujun Zhang <zhang.yujunz@zte.com.cn>2017-04-19 22:03:52 +0800
committerYujun Zhang <zhang.yujunz@zte.com.cn>2017-04-20 11:50:52 +0800
commit7455eb762165d336e81ca901885dc9b45fa7cced (patch)
tree0e605b59fc1b5cdc48d891636602139e663747f1 /resources/roles
parent5da68bf0911e12237a3484e4160f959933f26c9a (diff)
Create workspace by ansible playbook
Change-Id: Ia79353e686240c5915e40b8202d3fdc289df2158 Signed-off-by: Yujun Zhang <zhang.yujunz@zte.com.cn>
Diffstat (limited to 'resources/roles')
-rw-r--r--resources/roles/qtip-bootstrap/defaults/main.yml14
-rw-r--r--resources/roles/qtip-bootstrap/files/fixtures/case.json14
-rw-r--r--resources/roles/qtip-bootstrap/files/fixtures/pod.json6
-rw-r--r--resources/roles/qtip-bootstrap/files/fixtures/project.json4
-rw-r--r--resources/roles/qtip-bootstrap/files/group_vars/all.yml13
-rw-r--r--resources/roles/qtip-bootstrap/files/host_vars/localhost.yml16
-rw-r--r--resources/roles/qtip-bootstrap/files/run.yml109
-rw-r--r--resources/roles/qtip-bootstrap/files/setup.yml64
-rw-r--r--resources/roles/qtip-bootstrap/tasks/main.yml25
-rw-r--r--resources/roles/qtip-bootstrap/templates/ansible.cfg.j230
-rw-r--r--resources/roles/qtip-bootstrap/templates/hosts.j23
11 files changed, 298 insertions, 0 deletions
diff --git a/resources/roles/qtip-bootstrap/defaults/main.yml b/resources/roles/qtip-bootstrap/defaults/main.yml
new file mode 100644
index 00000000..10e464e4
--- /dev/null
+++ b/resources/roles/qtip-bootstrap/defaults/main.yml
@@ -0,0 +1,14 @@
+##############################################################################
+# 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
+##############################################################################
+
+installer: fuel
+installer_master: fuel-master
+
+workspace: "./{{ installer }}-workspace"
+qtip_package: ../..
diff --git a/resources/roles/qtip-bootstrap/files/fixtures/case.json b/resources/roles/qtip-bootstrap/files/fixtures/case.json
new file mode 100644
index 00000000..22abc40f
--- /dev/null
+++ b/resources/roles/qtip-bootstrap/files/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-bootstrap/files/fixtures/pod.json b/resources/roles/qtip-bootstrap/files/fixtures/pod.json
new file mode 100644
index 00000000..654b5828
--- /dev/null
+++ b/resources/roles/qtip-bootstrap/files/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-bootstrap/files/fixtures/project.json b/resources/roles/qtip-bootstrap/files/fixtures/project.json
new file mode 100644
index 00000000..ecd03e83
--- /dev/null
+++ b/resources/roles/qtip-bootstrap/files/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-bootstrap/files/group_vars/all.yml b/resources/roles/qtip-bootstrap/files/group_vars/all.yml
new file mode 100644
index 00000000..933cffe5
--- /dev/null
+++ b/resources/roles/qtip-bootstrap/files/group_vars/all.yml
@@ -0,0 +1,13 @@
+##############################################################################
+# 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
+##############################################################################
+
+qtip_resources: ../../resources
+qtip_reports: ./reports
+qtip_fixtures: ./fixtures
+qtip_dump: ./dump
diff --git a/resources/roles/qtip-bootstrap/files/host_vars/localhost.yml b/resources/roles/qtip-bootstrap/files/host_vars/localhost.yml
new file mode 100644
index 00000000..66aa5d0e
--- /dev/null
+++ b/resources/roles/qtip-bootstrap/files/host_vars/localhost.yml
@@ -0,0 +1,16 @@
+##############################################################################
+# 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
+##############################################################################
+
+testapi_url: http://localhost:8000/api/v1
+project_name: qtip
+case_name: compute
+pod_name: qtip-pod
+installer: fuel
+version: master
+scenario: demo
diff --git a/resources/roles/qtip-bootstrap/files/run.yml b/resources/roles/qtip-bootstrap/files/run.yml
new file mode 100644
index 00000000..696235c2
--- /dev/null
+++ b/resources/roles/qtip-bootstrap/files/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
+ tasks:
+ - name: check ssh connection
+ ping:
+ tags: [setup]
+
+- hosts: compute
+ roles:
+ - development-tools
+ tags: [setup]
+
+- hosts: compute
+ roles:
+ - unixbench
+ tags: [unixbench]
+
+- hosts: compute
+ tasks:
+ - name: collect system information
+ include: "{{ qtip_resources }}/metric/inxi.yaml"
+ - name: ssl metrics
+ include: "{{ qtip_resources }}/metric/openssl.yaml"
+ tags: [ssl]
+ - name: DPI metrics
+ include: "{{ qtip_resources }}/metric/nDPI.yaml"
+ vars:
+ nDPI_cwd: "{{ ansible_env.HOME }}/qtip/nDPI"
+ nDPI_file: "dpi.pcap"
+ tags: [dpi]
+ - name: memory metrics
+ include: "{{ qtip_resources }}/metric/ramspeed.yaml"
+ vars:
+ cwd: "{{ ansible_env.HOME }}/qtip/ramspeed"
+ tags: [mem]
+- hosts: compute
+ 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
+
+- hosts: localhost
+ tasks:
+ - 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-bootstrap/files/setup.yml b/resources/roles/qtip-bootstrap/files/setup.yml
new file mode 100644
index 00000000..fed5e9d9
--- /dev/null
+++ b/resources/roles/qtip-bootstrap/files/setup.yml
@@ -0,0 +1,64 @@
+##############################################################################
+# 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-master
+ gather_facts: no
+ tasks:
+ - name: collect facts of fuel hosts
+ fuel:
+ - name: update inventory file
+ template: src={{ qtip_resources }}/template/hosts.j2 dest=./hosts
+ delegate_to: localhost
+ - name: update ssh.cfg file
+ template: src={{ qtip_resources }}/template/ssh.cfg.j2 dest=./ssh.cfg
+ delegate_to: localhost
+
+- hosts: apex-undercloud
+ 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 }}"
+ - name: update inventory file
+ template: src={{ qtip_resources }}/template/hosts.j2 dest=./hosts
+ delegate_to: localhost
+ - name: update ssh.cfg file
+ template: src={{ qtip_resources }}/template/ssh.cfg.j2 dest=./ssh.cfg
+ delegate_to: localhost
+
+# 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-bootstrap/tasks/main.yml b/resources/roles/qtip-bootstrap/tasks/main.yml
new file mode 100644
index 00000000..96d6c7d8
--- /dev/null
+++ b/resources/roles/qtip-bootstrap/tasks/main.yml
@@ -0,0 +1,25 @@
+##############################################################################
+# 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
+##############################################################################
+
+- name: copy initial files
+ synchronize:
+ src: "{{ item }}"
+ dest: "{{ workspace }}"
+ with_items:
+ - group_vars
+ - host_vars
+ - fixtures
+
+- name: generate default configuration
+ template:
+ src: "{{ item }}.j2"
+ dest: "{{ workspace }}/{{ item }}"
+ with_items:
+ - ansible.cfg
+ - hosts
diff --git a/resources/roles/qtip-bootstrap/templates/ansible.cfg.j2 b/resources/roles/qtip-bootstrap/templates/ansible.cfg.j2
new file mode 100644
index 00000000..e7d76dd0
--- /dev/null
+++ b/resources/roles/qtip-bootstrap/templates/ansible.cfg.j2
@@ -0,0 +1,30 @@
+# config file for ansible -- https://ansible.com/
+# ===============================================
+
+# nearly all parameters can be overridden in ansible-playbook
+# or with command line flags. ansible will read ANSIBLE_CONFIG,
+# ansible.cfg in the current working directory, .ansible.cfg in
+# the home directory or /etc/ansible/ansible.cfg, whichever it
+# finds first
+
+[defaults]
+
+# some basic default values...
+
+inventory = ./hosts
+library = {{ qtip_package }}/qtip/ansible_library/
+
+# set plugin path directories here, separate with colons
+action_plugins = {{ qtip_package }}/qtip/ansible_library/plugins/action
+#cache_plugins = /usr/share/ansible/plugins/cache
+#callback_plugins = /usr/share/ansible/plugins/callback
+#connection_plugins = /usr/share/ansible/plugins/connection
+#lookup_plugins = /usr/share/ansible/plugins/lookup
+#inventory_plugins = /usr/share/ansible/plugins/inventory
+#vars_plugins = /usr/share/ansible/plugins/vars
+filter_plugins = {{ qtip_package }}/qtip/ansible_library/plugins/filter
+#test_plugins = /usr/share/ansible/plugins/test
+#terminal_plugins = /usr/share/ansible/plugins/terminal
+#strategy_plugins = /usr/share/ansible/plugins/strategy
+
+callback_whitelist = profile_tasks
diff --git a/resources/roles/qtip-bootstrap/templates/hosts.j2 b/resources/roles/qtip-bootstrap/templates/hosts.j2
new file mode 100644
index 00000000..c4b985b3
--- /dev/null
+++ b/resources/roles/qtip-bootstrap/templates/hosts.j2
@@ -0,0 +1,3 @@
+localhost ansible_connection=local
+
+{{ installer_master }}