aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzhihui wu <wu.zhihui1@zte.com.cn>2017-08-09 16:34:30 +0800
committerzhihui wu <wu.zhihui1@zte.com.cn>2017-08-11 16:39:03 +0800
commit3b440fba4ca0781bcf1283baaa5c44704d745017 (patch)
treeda383bb914f002eaee620406b0ad930386bc2a26
parent8c1e9c553cc6b4b8b78c31e7f5f48836c0d945e1 (diff)
refactor: run storperf scripts in qtip container
The preious storperf scripts can only be run based on the host. This patch will make them run in qtip container. JIRA: QTIP-248 README.md will tell you how to use these scripts. Change-Id: I4d2d51f859499e6e56ae8692d880cbde27297b82 Signed-off-by: zhihui wu <wu.zhihui1@zte.com.cn>
-rw-r--r--integration/storperf/README.md50
-rwxr-xr-xintegration/storperf/cleanup.sh14
-rw-r--r--integration/storperf/docker-compose.yaml (renamed from integration/storperf/storperf-docker-compose.yaml)15
-rwxr-xr-xintegration/storperf/launch_containers.sh100
-rwxr-xr-xintegration/storperf/prepare.sh (renamed from integration/storperf/openstack.sh)23
-rwxr-xr-xintegration/storperf/run_ci.sh21
-rwxr-xr-xintegration/storperf/start_job.sh39
-rwxr-xr-xintegration/storperf/storperf.sh88
-rwxr-xr-xintegration/storperf/storperf_docker.sh35
-rw-r--r--integration/storperf/storperf_requirments.txt (renamed from integration/storperf/storperf_requirements.txt)3
-rw-r--r--requirements.txt2
11 files changed, 229 insertions, 161 deletions
diff --git a/integration/storperf/README.md b/integration/storperf/README.md
index 137e15be..bdcc7e70 100644
--- a/integration/storperf/README.md
+++ b/integration/storperf/README.md
@@ -1,13 +1,45 @@
-# usage
+# Usage
Please make sure pip, docker and docker-compose are installer on your environment.
-```
-storperf.sh -t installer_type -i installer_ip -s stack_json_file -j job_json_file
+1. Launch qtip and storperf containers.
-options:
- -t : installer type. For now only supports Apex.
- -i : installer ip address.
- -s : Stack configuration json file. If not given, default_stack.json will be used.
- -j : Storperf job configuration json file. If not given, default_job.json will be used.
-``` \ No newline at end of file
+ ```
+ $ cd qtip/integration/storperf
+ $ bash launch_containers.sh -t apex -n ""
+
+ Arguments:
+
+ -t : Installer type. For now only supports Apex.
+ -n : Node name.
+ ```
+
+ Then you will get 5 containers:
+
+ ```
+ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
+ 2c079d5d88bc opnfv/qtip "/usr/bin/supervisord" 38 minutes ago Up 38 minutes 5000/tcp qtip
+ 2032a16dab17 opnfv/storperf-httpfrontend "nginx -g 'daemon ..." 38 minutes ago Up 38 minutes 80/tcp, 0.0.0.0:5000->5000/tcp storperf-httpfrontend
+ c0d3e2763d35 schickling/swagger-ui "sh run.sh" 39 minutes ago Up 38 minutes 80/tcp storperf-swaggerui
+ 0e08a1968829 opnfv/storperf-reporting "python app.py" 39 minutes ago Up 38 minutes 0.0.0.0:5080->5000/tcp storperf-reporting
+ b92967139d8e opnfv/storperf-master "/usr/bin/supervisord" 39 minutes ago Up 39 minutes 5000/tcp, 0.0.0.0:8000->8000/tcp storperf-master
+ ```
+
+2. Prepare environment.
+
+ ```
+ $ docker exec qtip bash -c "/home/opnfv/repos/qtip/integration/storperf/prepare.sh"
+ ```
+
+ This command can create a flavor and upload a Ubuntu 16.04 image on OpenStack.
+
+3. Run storperf job.
+
+ ```
+ $ docker exec qtip bash -c "/home/opnfv/repos/qtip/integration/storperf/start_job.sh -s stack.json -j job.json"
+
+ Arguments:
+
+ -s : Stack configuration json file. If not given, default_stack.json will be used.
+ -j : Storperf job configuration json file. If not given, default_job.json will be used.
+ ```
diff --git a/integration/storperf/cleanup.sh b/integration/storperf/cleanup.sh
new file mode 100755
index 00000000..1aee1658
--- /dev/null
+++ b/integration/storperf/cleanup.sh
@@ -0,0 +1,14 @@
+#! /bin/bash
+##############################################################################
+# Copyright (c) 2017 ZTE 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
+##############################################################################
+
+echo "Deleting image"
+openstack image delete "Ubuntu 16.04 x86_64"
+
+echo "Deteing flavor"
+openstack flavor delete storperf
diff --git a/integration/storperf/storperf-docker-compose.yaml b/integration/storperf/docker-compose.yaml
index ec121802..8cef5bc3 100644
--- a/integration/storperf/storperf-docker-compose.yaml
+++ b/integration/storperf/docker-compose.yaml
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2017 Dell EMC and others.
+# Copyright (c) 2017 Dell EMC, ZTE and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
@@ -10,6 +10,7 @@
version: '2'
services:
+
storperf-master:
container_name: "storperf-master"
image: opnfv/storperf-master
@@ -18,15 +19,12 @@ services:
env_file: ${ENV_FILE}
volumes:
- ${CARBON_DIR}:/opt/graphite/storage/whisper
- - ./storperf-master/:/home/opnfv/repos/storperf
storperf-reporting:
container_name: "storperf-reporting"
image: opnfv/storperf-reporting
ports:
- "5080:5000"
- volumes:
- - ./storperf-reporting/:/home/opnfv/storperf-reporting
storperf-swaggerui:
container_name: "storperf-swaggerui"
@@ -40,4 +38,11 @@ services:
links:
- storperf-master
- storperf-reporting
- - storperf-swaggerui \ No newline at end of file
+ - storperf-swaggerui
+
+ qtip:
+ container_name: qtip
+ image: opnfv/qtip
+ env_file: ${ENV_FILE}
+ links:
+ - storperf-httpfrontend
diff --git a/integration/storperf/launch_containers.sh b/integration/storperf/launch_containers.sh
new file mode 100755
index 00000000..3fcf8052
--- /dev/null
+++ b/integration/storperf/launch_containers.sh
@@ -0,0 +1,100 @@
+#! /bin/bash
+##############################################################################
+# Copyright (c) 2017 ZTE 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
+##############################################################################
+
+usage(){
+ echo "usage: $0 -t <installer_type> -n <node_name>" >&2
+}
+
+#Get options
+while getopts ":t:n:he" optchar; do
+ case "${optchar}" in
+ t) installer_type=${OPTARG} ;;
+ n) node_name=${OPTARG} ;;
+ h) usage
+ exit 0
+ ;;
+ *) echo "Non-option argument: '-${OPTARG}'" >&2
+ usage
+ exit 2
+ ;;
+ esac
+done
+
+
+#set vars from env if not provided by user as options
+installer_type=${installer_type:-$INSTALLER_TYPE}
+node_name=${node_name:-$NODE_NAME}
+
+case $installer_type in
+ apex)
+ installer_ip=`sudo virsh domifaddr undercloud | grep ipv4 | awk '{print $4}' | cut -d/ -f1`
+ ;;
+ *)
+
+ echo "Unsupported $installer_type. Cannot continue!"
+ exit 1
+esac
+
+if [[ -z $WORKSPACE ]];then
+ WORKSPACE=`pwd`
+fi
+
+git clone --depth 1 https://gerrit.opnfv.org/gerrit/releng $WORKSPACE/releng
+
+$WORKSPACE/releng/utils/fetch_os_creds.sh -i ${installer_type} -a ${installer_ip} -d $WORKSPACE/openrc
+
+grep "export" $WORKSPACE/openrc | sed "s/export //" > $WORKSPACE/admin.rc
+echo "INSTALLER_TYPE=${installer_type}" >> $WORKSPACE/admin.rc
+echo "INSTALLER_IP=${installer_ip}" >> $WORKSPACE/admin.rc
+echo "NODE_NAME=${node_name}" >> $WORKSPACE/admin.rc
+export ENV_FILE=$WORKSPACE/admin.rc
+
+export CARBON_DIR=$WORKSPACE/carbon/
+WWW_DATA_UID=33
+WWW_DATA_GID=33
+sudo install --owner=${WWW_DATA_UID} --group=${WWW_DATA_GID} -d "${CARBON_DIR}"
+
+clean_storperf_container()
+{
+ docker-compose -f docker-compose.yaml down
+
+ for name in qtip storperf-master storperf-swaggerui storperf-httpfrontend storperf-reporting
+ do
+ container=`docker ps -a -q -f name=$name`
+ if [[ ! -z $container ]];then
+ echo "Stopping any existing $name container"
+ docker rm -fv $container
+ fi
+
+ image=`docker images opnfv/$name`
+ if [[ ! -z $image ]];then
+ echo "Deleteing any existing opnfv/$name image"
+ docker rmi -f opnfv/$container_name
+ fi
+ done
+}
+
+launch_storperf_container()
+{
+ docker-compose pull
+ docker-compose -f docker-compose.yaml up -d
+
+ echo "Waiting for StorPerf to become active"
+
+ while [ $(curl -s -o /dev/null -I -w "%{http_code}" -X GET http://127.0.0.1:5000/api/v1.0/configurations) != "200" ]
+ do
+ sleep 1
+ done
+}
+
+echo "Clean existing storperf containers"
+clean_storperf_container
+
+echo "Launch new storperf containers"
+launch_storperf_container \ No newline at end of file
diff --git a/integration/storperf/openstack.sh b/integration/storperf/prepare.sh
index 99701871..345a80bc 100755
--- a/integration/storperf/openstack.sh
+++ b/integration/storperf/prepare.sh
@@ -7,6 +7,16 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+# See https://stackoverflow.com/questions/59895/getting-the-source-directory-of-a-bash-script-from-within
+script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+pip install -r $script_dir/storperf_requirements.txt
+
+if [[ -z $WORKSPACE ]];then
+ WORKSPACE=`pwd`
+fi
+
+
delete_storperf_stack()
{
echo "Checking for an existing stack"
@@ -16,6 +26,7 @@ delete_storperf_stack()
fi
}
+
load_ubuntu_image()
{
echo "Checking for Ubuntu 16.04 image in Glance"
@@ -24,8 +35,8 @@ load_ubuntu_image()
cd $WORKSPACE
if [[ ! -f ubuntu-16.04-server-cloudimg-amd64-disk1.img ]];then
echo "download Ubuntu 16.04 image"
- wget https://cloud-images.ubuntu.com/releases/16.04/release/ubuntu-16.04-server-cloudimg-amd64-disk1.img
- wget https://cloud-images.ubuntu.com/releases/16.04/release/MD5SUMS
+ wget -q https://cloud-images.ubuntu.com/releases/16.04/release/ubuntu-16.04-server-cloudimg-amd64-disk1.img
+ wget -q https://cloud-images.ubuntu.com/releases/16.04/release/MD5SUMS
checksum=$(cat ./MD5SUMS |grep ubuntu-16.04-server-cloudimg-amd64-disk1.img | md5sum -c)
if [[ $checksum =~ 'FAILED' ]];then
echo "Check image md5sum failed. Exit!"
@@ -58,8 +69,6 @@ create_storperf_flavor()
}
-nova_vm_mapping()
-{
- rm ./nova_vm.json
- openstack server list --name storperf-agent -c ID -c Host --long -f json > nova_vm.json
-} \ No newline at end of file
+delete_storperf_stack
+load_ubuntu_image
+create_storperf_flavor
diff --git a/integration/storperf/run_ci.sh b/integration/storperf/run_ci.sh
new file mode 100755
index 00000000..ca67ac62
--- /dev/null
+++ b/integration/storperf/run_ci.sh
@@ -0,0 +1,21 @@
+#! /bin/bash
+##############################################################################
+# Copyright (c) 2017 ZTE 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
+##############################################################################
+
+
+source $WORKSPACE/integration/storperf/launch_containers.sh -t $INSTALLER_TYPE -n $NODE_NAME
+
+docker exec qtip bash -c "/home/opnfv/repos/qtip/integration/storperf/prepare.sh"
+
+docker exec qtip bash -c "/home/opnfv/repos/qtip/integration/storperf/start_job.sh"
+
+docker exec qtip bash -c "/home/opnfv/repos/qtip/integration/storperf/cleanup.sh"
+
+exit 0
+
+
diff --git a/integration/storperf/start_job.sh b/integration/storperf/start_job.sh
index e94356e5..672dabef 100755
--- a/integration/storperf/start_job.sh
+++ b/integration/storperf/start_job.sh
@@ -29,11 +29,22 @@ done
# See https://stackoverflow.com/questions/59895/getting-the-source-directory-of-a-bash-script-from-within
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+stack_json=${stack_json:-"$script_dir/default_stack.json"}
+job_json=${job_json:-"$script_dir/default_job.json"}
+
if [[ -z $WORKSPACE ]];then
WORKSPACE=`pwd`
fi
-source $script_dir/openstack.sh
+nova_vm_mapping()
+{
+ rm $WORKSPACE/nova_vm.json
+ openstack server list --name storperf-agent -c ID -c Host --long -f json > $WORKSPACE/nova_vm.json
+
+ echo ==========================================================================
+ cat $WORKSPACE/nova_vm.json
+ echo ==========================================================================
+}
echo ==========================================================================
echo "Start to create storperf stack"
@@ -42,7 +53,7 @@ echo ==========================================================================
curl -X POST --header 'Content-Type: application/json' \
--header 'Accept: application/json' -d @${stack_json} \
- 'http://127.0.0.1:5000/api/v1.0/configurations'
+ 'http://storperf-httpfrontend:5000/api/v1.0/configurations'
nova_vm_mapping
@@ -54,23 +65,26 @@ echo ==========================================================================
JOB=$(curl -s -X POST --header 'Content-Type: application/json' \
--header 'Accept: application/json' \
- -d @${job_json} 'http://127.0.0.1:5000/api/v1.0/jobs' | \
+ -d @${job_json} 'http://storperf-httpfrontend:5000/api/v1.0/jobs' | \
awk '/job_id/ {print $2}' | sed 's/"//g')
echo "JOB ID: $JOB"
if [[ -z "$JOB" ]]; then
echo "Oops, JOB ID is empty!"
else
- echo "Loop: check job status"
- curl -s -X GET "http://127.0.0.1:5000/api/v1.0/jobs?id=$JOB&type=status" \
+ echo "checking job status..."
+ curl -s -X GET "http://storperf-httpfrontend:5000/api/v1.0/jobs?id=$JOB&type=status" \
-o $WORKSPACE/status.json
+ cat $WORKSPACE/status.json
+
JOB_STATUS=`cat $WORKSPACE/status.json | awk '/Status/ {print $2}' | cut -d\" -f2`
+
while [ "$JOB_STATUS" != "Completed" ]
do
- sleep 30
+ sleep 180
mv $WORKSPACE/status.json $WORKSPACE/old-status.json
- curl -s -X GET "http://127.0.0.1:5000/api/v1.0/jobs?id=$JOB&type=status" \
+ curl -s -X GET "http://storperf-httpfrontend:5000/api/v1.0/jobs?id=$JOB&type=status" \
-o $WORKSPACE/status.json
JOB_STATUS=`cat $WORKSPACE/status.json | awk '/Status/ {print $2}' | cut -d\" -f2`
diff $WORKSPACE/status.json $WORKSPACE/old-status.json >/dev/null
@@ -80,19 +94,16 @@ else
fi
done
- echo ==========================================================================
+ echo
echo "Storperf test completed!"
- echo ==========================================================================
-
- curl -s -X GET "http://127.0.0.1:5000/api/v1.0/jobs?id=$JOB&type=metadata" \
- -o $WORKSPACE/report.json
echo ==========================================================================
echo Final report
echo ==========================================================================
+ curl -s -X GET "http://storperf-httpfrontend:5000/api/v1.0/jobs?id=$JOB&type=metadata" \
+ -o $WORKSPACE/report.json
cat $WORKSPACE/report.json
fi
echo "Deleting stack for cleanup"
-curl -s -X DELETE --header 'Accept: application/json' 'http://127.0.0.1:5000/api/v1.0/configurations'
-
+curl -s -X DELETE --header 'Accept: application/json' 'http://storperf-httpfrontend:5000/api/v1.0/configurations' \ No newline at end of file
diff --git a/integration/storperf/storperf.sh b/integration/storperf/storperf.sh
deleted file mode 100755
index 31e059d7..00000000
--- a/integration/storperf/storperf.sh
+++ /dev/null
@@ -1,88 +0,0 @@
-#! /bin/bash
-##############################################################################
-# Copyright (c) 2017 ZTE 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
-##############################################################################
-
-usage(){
- echo "usage: $0 -t <installer_type> -i <installer_ip> -s <stack_json_path> -j <job_json_path> " >&2
-}
-
-#Get options
-while getopts ":t:i:s:j:he" optchar; do
- case "${optchar}" in
- t) installer_type=${OPTARG} ;;
- i) installer_ip=${OPTARG} ;;
- s) stack_json=${OPTARG} ;;
- j) job_json=${OPTARG} ;;
- h) usage
- exit 0
- ;;
- *) echo "Non-option argument: '-${OPTARG}'" >&2
- usage
- exit 2
- ;;
- esac
-done
-
-# See https://stackoverflow.com/questions/59895/getting-the-source-directory-of-a-bash-script-from-within
-script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-
-if [[ -z $WORKSPACE ]];then
- WORKSPACE=`pwd`
-fi
-
-#set vars from env if not provided by user as options
-installer_type=${installer_type:-$INSTALLER_TYPE}
-installer_ip=${installer_ip:-$INSTALLER_IP}
-stack_json=${stack_json:-"$script_dir/default_stack.json"}
-job_json=${job_json:-"$script_dir/default_job.json"}
-
-source $script_dir/openstack.sh
-source $script_dir/storperf_docker.sh
-
-git clone --depth 1 https://gerrit.opnfv.org/gerrit/storperf $WORKSPACE/storperf
-git clone --depth 1 https://gerrit.opnfv.org/gerrit/releng $WORKSPACE/releng
-
-virtualenv $WORKSPACE/storperf_venv
-source $WORKSPACE/storperf_venv/bin/activate
-
-pip install -r $script_dir/storperf_requirements.txt
-
-$WORKSPACE/releng/utils/fetch_os_creds.sh -i ${installer_type} -a ${installer_ip} -d $WORKSPACE/openrc
-source $WORKSPACE/openrc
-
-grep "export" $WORKSPACE/openrc | sed "s/export //" > $WORKSPACE/admin.rc
-echo "INSTALLER_TYPE=${installer_type}" >> $WORKSPACE/admin.rc
-export ENV_FILE=$WORKSPACE/admin.rc
-
-if [[ ! -d $WORKSPACE/carbon ]];then
- mkdir -p $WORKSPACE/carbon
- sudo chown 33:33 $WORKSPACE/carbon
-fi
-export CARBON_DIR=$WORKSPACE/carbon/
-
-delete_storperf_stack
-load_ubuntu_image
-create_storperf_flavor
-
-cd $WORKSPACE/storperf/docker
-cp $script_dir/storperf-docker-compose.yaml ./
-echo "Clean existing storperf containers"
-clean_storperf_container
-echo "Launch new storperf containers"
-launch_storperf_container
-
-$script_dir/start_job.sh -s $stack_json -j $job_json
-
-echo "Clean up environment"
-cd $WORKSPACE/storperf/docker
-clean_storperf_container
-openstack flavor delete storperf
-openstack image delete "Ubuntu 16.04 x86_64"
-
-echo "Done!"
-
diff --git a/integration/storperf/storperf_docker.sh b/integration/storperf/storperf_docker.sh
deleted file mode 100755
index 629a4edb..00000000
--- a/integration/storperf/storperf_docker.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#! /bin/bash
-##############################################################################
-# Copyright (c) 2017 ZTE 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
-##############################################################################
-
-clean_storperf_container()
-{
- docker-compose -f storperf-docker-compose.yaml down
-
- for container_name in storperf storperf-master storperf-swaggerui storperf-httpfrontend storperf-reporting
- do
- container=`docker ps -a -q -f name=$container_name`
- if [[ ! -z $container ]];then
- echo "Stopping any existing $container_name container"
- docker rm -fv $container
- fi
- done
-}
-
-
-launch_storperf_container()
-{
- docker-compose -f storperf-docker-compose.yaml up -d
-
- echo "Waiting for StorPerf to become active"
-
- while [ $(curl -s -o /dev/null -I -w "%{http_code}" -X GET http://127.0.0.1:5000/api/v1.0/configurations) != "200" ]
- do
- sleep 1
- done
-} \ No newline at end of file
diff --git a/integration/storperf/storperf_requirements.txt b/integration/storperf/storperf_requirments.txt
index 4f8b07c5..4a279ae5 100644
--- a/integration/storperf/storperf_requirements.txt
+++ b/integration/storperf/storperf_requirments.txt
@@ -1,6 +1,5 @@
-setuptools==33.1.1
functools32==3.2.3.post2
pytz==2016.10
osc_lib==1.3.0
python-openstackclient==3.7.0
-python-heatclient==1.7.0 \ No newline at end of file
+python-heatclient==1.7.0
diff --git a/requirements.txt b/requirements.txt
index 3a13361a..3b1d7498 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -11,4 +11,4 @@ six
PyYAML
humanfriendly
asq
-Django
+Django \ No newline at end of file