aboutsummaryrefslogtreecommitdiffstats
path: root/qtip
diff options
context:
space:
mode:
Diffstat (limited to 'qtip')
-rw-r--r--qtip/cli/commands/cmd_report.py27
-rw-r--r--qtip/driver/ansible.py (renamed from qtip/driver/ansible/ansible.py)0
-rw-r--r--qtip/driver/ansible/__init__.py0
-rw-r--r--qtip/driver/playbook/bwn_ng.yaml (renamed from qtip/driver/ansible/playbook/bwn_ng.yaml)0
-rw-r--r--qtip/driver/playbook/dhrystone/clean.yaml27
-rw-r--r--qtip/driver/playbook/dhrystone/run.yaml63
-rw-r--r--qtip/driver/playbook/dhrystone/setup.yaml66
-rw-r--r--qtip/driver/playbook/inxi.yaml (renamed from qtip/driver/ansible/playbook/inxi.yaml)0
-rw-r--r--qtip/driver/playbook/prepare_env.yaml (renamed from qtip/driver/ansible/playbook/prepare_env.yaml)14
-rw-r--r--qtip/driver/playbook/top.yaml (renamed from qtip/driver/ansible/playbook/top.yaml)0
-rw-r--r--qtip/reporter/console.py15
-rw-r--r--qtip/reporter/templates/report.j222
-rw-r--r--qtip/reporter/templates/timeline.j22
-rwxr-xr-xqtip/scripts/generate_host_file.sh37
-rwxr-xr-xqtip/scripts/qtip_creds.sh2
15 files changed, 248 insertions, 27 deletions
diff --git a/qtip/cli/commands/cmd_report.py b/qtip/cli/commands/cmd_report.py
new file mode 100644
index 00000000..c780e847
--- /dev/null
+++ b/qtip/cli/commands/cmd_report.py
@@ -0,0 +1,27 @@
+##############################################################################
+# Copyright (c) 2017 taseer94@gmail.com 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
+##############################################################################
+
+import click
+
+from qtip.cli.entry import Context
+
+pass_context = click.make_pass_decorator(Context, ensure=False)
+
+
+@click.group()
+@pass_context
+def cli(ctx):
+ """ View Qtip results"""
+ pass
+
+
+@cli.command('show')
+@pass_context
+def show(ctx):
+ pass
diff --git a/qtip/driver/ansible/ansible.py b/qtip/driver/ansible.py
index cd17625d..cd17625d 100644
--- a/qtip/driver/ansible/ansible.py
+++ b/qtip/driver/ansible.py
diff --git a/qtip/driver/ansible/__init__.py b/qtip/driver/ansible/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/qtip/driver/ansible/__init__.py
+++ /dev/null
diff --git a/qtip/driver/ansible/playbook/bwn_ng.yaml b/qtip/driver/playbook/bwn_ng.yaml
index 99477856..99477856 100644
--- a/qtip/driver/ansible/playbook/bwn_ng.yaml
+++ b/qtip/driver/playbook/bwn_ng.yaml
diff --git a/qtip/driver/playbook/dhrystone/clean.yaml b/qtip/driver/playbook/dhrystone/clean.yaml
new file mode 100644
index 00000000..72bfab7e
--- /dev/null
+++ b/qtip/driver/playbook/dhrystone/clean.yaml
@@ -0,0 +1,27 @@
+##############################################################################
+# 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
+##############################################################################
+
+- hosts: hosts
+ become: yes
+ remote_user: root
+
+ tasks:
+ - name: Checking home directory
+ shell: echo $HOME
+ register: home_dir
+
+ - name: Cleaning tempT
+ file:
+ path: '{{ home_dir.stdout }}/tempT'
+ state: absent
+
+ - name: Cleaning qtip_result
+ file:
+ path: '{{ home_dir.stdout }}/qtip_result'
+ state: absent
diff --git a/qtip/driver/playbook/dhrystone/run.yaml b/qtip/driver/playbook/dhrystone/run.yaml
new file mode 100644
index 00000000..55de6597
--- /dev/null
+++ b/qtip/driver/playbook/dhrystone/run.yaml
@@ -0,0 +1,63 @@
+##############################################################################
+# 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
+##############################################################################
+
+- hosts: hosts
+ become: yes
+ remote_user: root
+
+ tasks:
+ - name: Get current timestamp
+ set_fact:
+ timestamp: "{{ lookup('pipe', 'date +%Y-%m-%d-%H-%M') }}"
+
+ - name: Checking home directory
+ shell: echo $HOME
+ register: home_dir
+
+ - name: Fetch hostname
+ shell: hostname
+ register: host_name
+
+ - name: Make UnixBench
+ shell: make --directory $HOME/tempT/UnixBench/
+
+ - name: Make some directories needed
+ file:
+ path: '{{ home_dir.stdout }}/qtip_result/{{ timestamp }}/{{ host_name.stdout }}'
+ state: directory
+
+ - include: ../inxi.yaml
+
+ - include: ../top.yaml
+
+ - name: Run dhrystone
+ shell: ./Run -v dhrystone
+ args:
+ chdir: '{{ home_dir.stdout }}/tempT/UnixBench/'
+
+ - name: Copying result to qtip result directory
+ shell: cp -r $HOME/tempT/UnixBench/results/* ./
+ args:
+ chdir: '{{ home_dir.stdout }}/qtip_result/{{ timestamp }}/{{ host_name.stdout }}'
+
+ - name: Copy top log to qtip result directory
+ shell: mv $HOME/qtip_result/top.log ./
+ args:
+ chdir: '{{ home_dir.stdout }}/qtip_result/{{ timestamp }}/{{ host_name.stdout }}'
+
+ - name: Copy inxi log to qtip result directory
+ shell: mv $HOME/qtip_result/inxi.log ./
+ args:
+ chdir: '{{ home_dir.stdout }}/qtip_result/{{ timestamp }}/{{ host_name.stdout }}'
+
+ - name: Fetch result files to local manchine
+ synchronize:
+ mode: pull
+ src: '{{ home_dir.stdout }}/qtip_result/'
+ dest: '{{ result_dir }}/dhrystone/logs/'
diff --git a/qtip/driver/playbook/dhrystone/setup.yaml b/qtip/driver/playbook/dhrystone/setup.yaml
new file mode 100644
index 00000000..430670c1
--- /dev/null
+++ b/qtip/driver/playbook/dhrystone/setup.yaml
@@ -0,0 +1,66 @@
+##############################################################################
+# 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
+##############################################################################
+
+- hosts: localhost
+ connection: local
+ gather_facts: no
+
+ tasks:
+ - name: Making dhrystone directory
+ file:
+ path: '{{ result_dir }}/dhrystone/logs/'
+ state: directory
+
+- hosts: hosts
+ become: yes
+ remote_user: root
+
+ tasks:
+ - name: Checking home directory
+ shell: echo $HOME
+ register: home_dir
+
+ - name: Cleaning tempT directory
+ file:
+ path: '{{ home_dir.stdout }}/tempT'
+ state: absent
+
+ - name: Cleaning qtip_result directory
+ file:
+ path: '{{ home_dir.stdout }}/qtip_result'
+ state: absent
+
+ - include: ../prepare_env.yaml
+
+ - name: Installing UnixBench dependencies if CentOS
+ yum:
+ name: '{{ item }}'
+ state: present
+ when: ansible_os_family == "RedHat"
+ with_items:
+ - git
+ - gcc
+ - patch
+ - perl-Time-HiRes
+
+ - name: Installing UnixBench dependencies if Ubuntu
+ apt:
+ name: '{{ item }}'
+ state: present
+ when: ansible_os_family == "Debian"
+ with_items:
+ - git
+ - gcc
+ - patch
+ - perl
+
+ - name: Clone unixbench
+ git:
+ repo: https://github.com/kdlucas/byte-unixbench.git
+ dest: '{{ home_dir.stdout }}/tempT'
diff --git a/qtip/driver/ansible/playbook/inxi.yaml b/qtip/driver/playbook/inxi.yaml
index f6a0311d..f6a0311d 100644
--- a/qtip/driver/ansible/playbook/inxi.yaml
+++ b/qtip/driver/playbook/inxi.yaml
diff --git a/qtip/driver/ansible/playbook/prepare_env.yaml b/qtip/driver/playbook/prepare_env.yaml
index 0595d988..1ec71520 100644
--- a/qtip/driver/ansible/playbook/prepare_env.yaml
+++ b/qtip/driver/playbook/prepare_env.yaml
@@ -10,7 +10,7 @@
yum:
name: epel-release
state: present
- when: ansible_os_family == "RedHat"
+ when: ansible_os_family == "RedHat"
- name: Software Properties Common
apt:
@@ -40,3 +40,15 @@
name: python-selinux
state: present
when: ansible_os_family == "Debian"
+
+- name: Install rsync when CentOS
+ yum:
+ name: rsync
+ state: present
+ when: ansible_os_family == "RedHat"
+
+- name: Install rsync when Ubuntu
+ apt:
+ name: rsync
+ state: present
+ when: ansible_os_family == "Debian"
diff --git a/qtip/driver/ansible/playbook/top.yaml b/qtip/driver/playbook/top.yaml
index 8de7e3d6..8de7e3d6 100644
--- a/qtip/driver/ansible/playbook/top.yaml
+++ b/qtip/driver/playbook/top.yaml
diff --git a/qtip/reporter/console.py b/qtip/reporter/console.py
index 24c98e74..2b5130a6 100644
--- a/qtip/reporter/console.py
+++ b/qtip/reporter/console.py
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2016 ZTE Corp and others.
+# Copyright (c) 2017 taseer94@gmail.com and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
@@ -7,6 +7,9 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+from jinja2 import Environment
+from jinja2 import FileSystemLoader
+from os import path
from qtip.base import BaseActor
@@ -16,8 +19,12 @@ class ConsoleReporter(BaseActor):
"""
def __init__(self, config, parent=None):
super(ConsoleReporter, self).__init__(config, parent=parent)
- # TODO(yujunz) remove PoC code
- self._fmt = "{title}: {description}"
+
+ # TODO (taseer) load template from config
+ tpl_loader = FileSystemLoader(path.join(path.dirname(__file__), 'templates'))
+ env = Environment(loader=tpl_loader)
+ self._template = env.get_template('timeline.j2')
def render(self, var_dict):
- return self._fmt.format(**var_dict)
+ out = self._template.render(var_dict)
+ return out
diff --git a/qtip/reporter/templates/report.j2 b/qtip/reporter/templates/report.j2
new file mode 100644
index 00000000..766e6dde
--- /dev/null
+++ b/qtip/reporter/templates/report.j2
@@ -0,0 +1,22 @@
+{{ title }}
+
+Plan: {{ plan.name }}
+
+{{ qpi.name }}: {{ qpi.score }}
+Sections:
+{% for section in sections %}
+ {{ section.name }}: {{ section.score }}
+
+ Formula: {{ section.formula }}
+ Metrics:
+ {% for metric in section.metrics %}
+ {{ metric.name }}: {{ metric.score }}
+ Formula: {{ metric.formula }}
+ Workloads:
+ {% for workload in workloads %}
+ {{ workload.name }}: {{ workload.score }}
+ {% endfor %}
+ {% endfor %}
+{% endfor %}
+
+{{ signature }}
diff --git a/qtip/reporter/templates/timeline.j2 b/qtip/reporter/templates/timeline.j2
index 9c18a996..d4c95c46 100644
--- a/qtip/reporter/templates/timeline.j2
+++ b/qtip/reporter/templates/timeline.j2
@@ -1,4 +1,4 @@
-{% title %}
+{{ title }}
{% for phase in phases %}
{{ phase.name|upper }}{{ "TIME" }}
{% for cp in phase.checkpoints %}
diff --git a/qtip/scripts/generate_host_file.sh b/qtip/scripts/generate_host_file.sh
index 1353cacd..ecc4d55f 100755
--- a/qtip/scripts/generate_host_file.sh
+++ b/qtip/scripts/generate_host_file.sh
@@ -10,15 +10,13 @@
usage(){
- echo "usage: $0 [-v] -i <installer_type> -a <installer_ip> -d <host_file>" >&2
- echo "[-v] Virtualized deployment" >&2
+ echo "usage: $0 -t <installer_type> -i <installer_ipaddr> -d <dest_hostfile>" >&2
}
info() {
logger -s -t "generate_host_file.info" "$*"
}
-
error() {
logger -s -t "generate_host_file.error" "$*"
exit 1
@@ -40,12 +38,11 @@ verify_connectivity(){
:${DEPLOY_TYPE:=''}
#Getoptions
-while getopts ":i:a:h:v" optchar; do
+while getopts ":t:i:d:" optchar; do
case "${optchar}" in
- i) installer_type=${OPTARG} ;;
- a) installer_ip=${OPTARG} ;;
- d) host_file=${OPTARG} ;;
- v) DEPLOY_TYPE="virt" ;;
+ t) installer_type=${OPTARG} ;;
+ i) installer_ipaddr=${OPTARG} ;;
+ d) dest_hostfile=${OPTARG} ;;
*) echo "Non-option argument: '-${OPTARG}'" >&2
usage
exit 2
@@ -55,9 +52,9 @@ done
#set vars from env if not provided by user as options
installer_type=${installer_type:-$INSTALLER_TYPE}
-installer_ip=${installer_ip:-$INSTALLER_IP}
+installer_ipaddr=${installer_ipaddr:-$INSTALLER_IP}
-if [ -z $installer_type ] || [ -z $installer_ip ]; then
+if [ -z $installer_type ] || [ -z $installer_ipaddr ]; then
usage
exit 2
fi
@@ -66,9 +63,9 @@ ssh_options="-oUserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
#Start fetching compute ip
if [ "$installer_type" == "fuel" ]; then
- verify_connectivity $installer_ip
+ verify_connectivity $installer_ipaddr
- env=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ip} \
+ env=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ipaddr} \
'fuel env'|grep operational|head -1|awk '{print $1}') &> /dev/null
if [ -z $env ]; then
error "No operational environment detected in Fuel"
@@ -76,7 +73,7 @@ if [ "$installer_type" == "fuel" ]; then
env_id="${FUEL_ENV:-$env}"
# Check if compute is alive (online='True')
- IPS=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ip} \
+ IPS=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ipaddr} \
"fuel node --env ${env_id} | grep compute | grep 'True\| 1' | awk -F\| '{print \$5}' " | \
sed 's/ //g') &> /dev/null
@@ -87,8 +84,8 @@ elif [ "$installer_type" == "apex" ]; then
elif [ "$installer_type" == "compass" ]; then
# need test
- verify_connectivity $installer_ip
- IPS=$(sshpass -p'root' ssh 2>/dev/null $ssh_options root@${installer_ip} \
+ verify_connectivity $installer_ipaddr
+ IPS=$(sshpass -p'root' ssh 2>/dev/null $ssh_options root@${installer_ipaddr} \
'mysql -ucompass -pcompass -Dcompass -e"select * from cluster;"' \
| awk -F"," '{for(i=1;i<NF;i++)if($i~/\"host[4-5]\"/) {print $(i+1);}}' \
| grep -oP "\d+.\d+.\d+.\d+")
@@ -109,11 +106,11 @@ if [ -z "$IPS" ]; then
error "The compute node $IPS are not up. Please check that the POD is correctly deployed."
else
echo "-------- all compute node ips: --------"
- rm $host_file
- touch $host_file
- echo "[hosts]" >> $host_file
- echo "$IPS" >> $host_file
- cat $host_file
+ rm $dest_hostfile
+ touch $dest_hostfile
+ echo "[hosts]" >> $dest_hostfile
+ echo "$IPS" >> $dest_hostfile
+ cat $dest_hostfile
fi
exit 0
diff --git a/qtip/scripts/qtip_creds.sh b/qtip/scripts/qtip_creds.sh
index d338115f..239c60c1 100755
--- a/qtip/scripts/qtip_creds.sh
+++ b/qtip/scripts/qtip_creds.sh
@@ -3,7 +3,7 @@
DEST_IP=$1
PRIVATE_KEY=$2
PUBLIC_KEY=$2.pub
-KEYNAME=$(basename PRIVATE_KEY)
+KEYNAME=$(basename $PRIVATE_KEY)
echo $INSTALLER_TYPE
echo $INSTALLER_IP