#!/bin/bash
##############################################################################
# Copyright (c) 2015 Ericsson AB 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
##############################################################################
# yardstick-img-modify - download and modify a Ubuntu cloud image
#
# The actual customization is done by a script passed with an absolute path as
# the only single argument. The command needs to be invoked as sudo
#
# Example invocation:
# yardstick-img-modify /home/yardstick/tools/ubuntu-server-cloudimg-modify.sh
#
# Warning: the script will create files by default in:
# /tmp/workspace/yardstick
# the files will be owned by root!
#
# TODO: image resize is needed if the base image is too small
#
set -e
set -x
die() {
echo "error: $1" >&2
exit 1
}
test $# -eq 1 -o $# -eq 2 || die "no image specific script as argument"
test $(id -u) -eq 0 || die "should invoke using sudo"
cmd=$1
RELEASE=$2
test -x $cmd
mountdir="/mnt/yardstick"
workspace=${WORKSPACE:-"/tmp/workspace/yardstick"}
host=${HOST:-"cloud-images.ubuntu.com"}
release=${RELEASE:-"xenial"}
boot_mode="disk1"
if [[ "${YARD_IMG_ARCH}" = "arm64" ]]; then
boot_mode="uefi1"
fi
image_path="${release}/current/${release}-server-cloudimg-${YARD_IMG_ARCH}-${boot_mode}.img"
image_url=${IMAGE_URL:-"https://${host}/${image_path}"}
sha256sums_path="${release}/current/SHA256SUMS"
sha256sums_url=${SHA256SUMS_URL:-"https://${host}/${sha256sums_path}"}
imgfile="${workspace}/yardstick-image.img"
raw_imgfile_basename="yardstick-${release}-server.raw"
raw_imgfile="${workspace}/${raw_imgfile_basename}"
filename=$(basename $image_url)
apt-get install -y parted
# download and checksum base image, conditionally if local copy is outdated
download() {
test -d $workspace || mkdir -p $workspace
cd $workspace
rm -f SHA256SUMS # always download the checksum file to a detect stale image
wget $sha256sums_url
test -e $filename || wget -nc --progress=dot:giga $image_url
grep $filename SHA256SUMS | sha256sum -c ||
if [ $? -ne 0 ]; then
rm $filename
wget -nc --progress=dot:giga $image_url
grep $filename SHA256SUMS | sha256sum -c
fi
for i in $(seq 0 9); do
[ -a /dev/loop$i ] || mknod -m 660 /dev/loop$i b 7 $i
done
qemu-img convert $filename $raw_imgfile
cd -
}
# mount image
setup() {
# qemu-img resize $raw_imgfile +5GB
mkdir -p $mountdir
loopdevice=$(kpartx -l $raw_imgfile | head -1 | cut -f1 -d ' ')
kpartx -av $raw_imgfile
# for trouble shooting
sleep 2
dmsetup ls
parted -l /dev/${loopdevice:0:5} || true
mount /dev/mapper/$loopdevice $mountdir
mount -t proc n{
"id": 38,
"title": "Yardstick-TC046",
"originalTitle": "Yardstick-TC046",
"tags": [
"yardstick-tc"
],
"style": "dark",
"timezone": "browser",
"editable": true,
"hideControls": false,
"sharedCrosshair": false,
"rows": [
{
"collapse": false,
"editable": true,
"height": "",
"panels": [
{
"content": "<h5 style=\"font-family:Verdana\"> <a style=\"color:#31A7D3\"><center>OPNFV_Yardstick_TC046 - Control Node Openstack Service High Availability - Keystone </center> </a></h5>\n<center>\n<p>This test case will verify the high availability of the user service provided by OpenStack (keystone) on control node. For more information see <a style=\"color:#31A7D3\"; href=\"http://artifacts.opnfv.org/yardstick/colorado/docs/userguide/opnfv_yardstick_tc046.html\">TC046</a></p>\n</center>\n\n\n",
"editable": true,
"error": false,
"id": 6,
"isNew": true,
"links": [],
"mode": "html",
"span": 12,
"style": {},
"title": "",
"type": "text"
}
],
"title": "New row"
},
{
"collapse": false,
"editable": true,
"height": "",
"panels": [
{
"content": "",
"editable": true,
"error": false,
"id": 9,
"isNew": true,
"links": [],
"mode": "markdown",
"span": 12,
"style": {},
"title": "Test Case Execution",
"type": "text"
}
],
"title": "New row"
},
{
"collapse": false,
"editable": true,
"height": "300px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": "yardstick-vtc",
"decimals": 2,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": null,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"hideTimeOverride": false,
"id": 1,
"interval": "",
"isNew": true,
"leftYAxisLabel": "sla_pass",
"legend": {
"alignAsTable": true,
"avg": true,
"current": false,
"hideEmpty": false,
"hideZero": false,
"max": true,
"min": true,
"rightSide": false,
"show": true,
"sort": "avg",
"sortDesc": false,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"rightYAxisLabel": "",
"seriesOverrides": [],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "$tag_pod_name - $tag_deploy_scenario",
"dsType": "influxdb",
"groupBy": [
{
"params": [
"pod_name"
],
"type": "tag"
},
{
"params": [
"task_id"
],
"type": "tag"
},
{
"params": [
"deploy_scenario"
],
"type": "tag"
}
],
"hide": false,
"measurement": "opnfv_yardstick_tc046",
"query": "SELECT \"sla_pass\" FROM \"opnfv_yardstick_tc046\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"pod_name\", \"task_id\", \"deploy_scenario\"",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"sla_pass"
],
"type": "field"
}
]
],
"tags": [
{
"key": "pod_name",
"operator": "=~",
"value": "/$POD$/"
},
{
"condition": "AND",
"key": "deploy_scenario",
"operator": "=~",
"value": "/$SCENARIO$/"
}
]
}
],
"timeFrom": "7d",
"timeShift": null,
"title": "SLA PASS",
"tooltip": {
"shared": true,
"value_type": "cumulative"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"none",
"short"
]
}
],
"showTitle": false,
"title": "Row"
},
{
"collapse": false,
"editable": true,
"height": "",
"panels": [
{
"content": "",
"editable": true,
"error": false,
"id": 10,
"isNew": true,
"links": [],
"mode": "markdown",
"span": 12,
"style": {},
"title": "Daily Averages",
"type": "text"
}
],
"title": "New row"
},
{
"collapse": false,
"editable": true,
"height": "",
"panels": [
{
"columns": [],
"datasource": "yardstick-vtc",
"editable": true,
"error": false,
"fontSize": "90%",
"height": "",
"id": 2,
"isNew": true,
"links": [],
"minSpan": 2,
"pageSize": 100,
"repeat": "POD",
"scopedVars": {
"POD": {
"selected": true,
"text": "lf-pod2",
"value": "lf\\-pod2"
}
},
"scroll": true,
"showHeader": true,
"sort": {
"col": 2,
"desc": false
},
"span": 12,
"styles": [
{
"dateFormat": "YYYY-MM-DD HH:mm:ss",
"pattern": "Time",
"type": "date"
},
{
"colorMode": null,
"colors": [
"rgba(245, 54, 54, 0.9)",
"rgba(237, 129, 40, 0.89)",
"rgba(50, 172, 45, 0.97)"
],
"decimals": 2,
"pattern": "deploy_scenario",
"thresholds": [],
"type": "string",
"unit": "short"
},
{
"colorMode": null,
"colors": [
"rgba(245, 54, 54, 0.9)",
"rgba(237, 129, 40, 0.89)",
"rgba(50, 172, 45, 0.97)"
],
"dateFormat": "YYYY-MM-DD HH:mm:ss",
"decimals": 2,
"pattern": "/.*/",
"thresholds": [],
"type": "number",
"unit": "ms"
}
],
"targets": [
{
"alias": "",
"dsType": "influxdb",
"groupBy": [
{
"params": [
"deploy_scenario"
],
"type": "tag"
}
],
"measurement": "opnfv_yardstick_tc046",
"query": "SELECT mean(\"rtt.ares\") FROM \"opnfv_yardstick_tc046\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\"",
"rawQuery": false,
"refId": "A",
"resultFormat": "table",
"select": [
[
{
"params": [
"rtt.ares"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "pod_name",
"operator": "=~",
"value": "/$POD$/"
},
{
"condition": "AND",
"key": "deploy_scenario",
"operator": "=~",
"value": "/$SCENARIO$/"
}
]
}
],
"timeFrom": "7d",
"title": "$POD",
"transform": "table",
"transparent": false,
"type": "table"
}
],
"showTitle": false,
"title": "New row"
},
{
"collapse": false,
"editable": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": "yardstick-vtc",
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": 0,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"height": "",
"id": 3,
"interval": "",
"isNew": true,
"leftYAxisLabel": "<sla_pass>",
"legend": {
"alignAsTable": false,
"avg": false,
"current": false,
"hideEmpty": false,
"hideZero": false,
"max": false,
"min": false,
"rightSide": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"links": [],
"minSpan": 2,
"nullPointMode": "connected",
"percentage": false,
"pointradius": 1,
"points": true,
"renderer": "flot",
"repeat": "POD",
"scopedVars": {
"POD": {
"selected": true,
"text": "lf-pod2",
"value": "lf\\-pod2"
}
},
"seriesOverrides": [
{
"alias": "os-odl_l2-nofeature-ha",
"color": "#7EB26D"
},
{
"alias": "os-nosdn-nofeature-ha",
"color": "#E24D42"
},
{
"alias": "os-onos-nofeature-ha",
"color": "#6ED0E0"
},
{
"alias": "os-nosdn-ovs-ha",
"color": "#EAB839"
},
{
"alias": "os-odl_l3-nofeature-ha",
"color": "#E5A8E2"
},
{
"alias": "os-odl_l2-bgpvpn-ha",
"color": "#E0752D"
},
{
"alias": "os-odl_l2-sfc-ha",
"color": "#508642"
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "$tag_deploy_scenario",
"dsType": "influxdb",
"groupBy": [
{
"params": [
"24h"
],
"type": "time"
},
{
"params": [
"deploy_scenario"
],
"type": "tag"
},
{
"params": [
"pod_name"
],
"type": "tag"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "opnfv_yardstick_tc046",
"query": "SELECT mean(\"sla_pass\") FROM \"opnfv_yardstick_tc046\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY time(24h), \"deploy_scenario\", \"pod_name\" fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"sla_pass"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "pod_name",
"operator": "=~",
"value": "/$POD$/"
},
{
"condition": "AND",
"key": "deploy_scenario",
"operator": "=~",
"value": "/$SCENARIO$/"
}
]
}
],
"timeFrom": "7d",
"timeShift": null,
"title": "$POD",
"tooltip": {
"shared": true,
"value_type": "individual"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"none",
"short"
]
}
],
"showTitle": false,
"title": ""
}
],
"time": {
"from": "now-7d",
"to": "now"
},
"timepicker": {
"now": true,
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"templating": {
"list": [
{
"allFormat": "regex values",
"current": {
"tags": [],
"text": "lf-pod2",
"value": "lf\\-pod2"
},
"datasource": "yardstick-vtc",
"hideLabel": false,
"includeAll": true,
"label": "",
"multi": true,
"multiFormat": "regex values",
"name": "POD",
"options": [
{
"selected": false,
"text": "All",
"value": "(elxg482ls42|ericsson\\-pod1|ericsson\\-pod2|huawei\\-pod1|huawei\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod5|intel\\-pod6|lf\\-pod1|lf\\-pod2|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|unknown|zte\\-pod1)"
},
{
"selected": false,
"text": "elxg482ls42",
"value": "elxg482ls42"
},
{
"selected": false,
"text": "ericsson-pod1",
"value": "ericsson\\-pod1"
},
{
"selected": false,
"text": "ericsson-pod2",
"value": "ericsson\\-pod2"
},
{
"selected": false,
"text": "huawei-pod1",
"value": "huawei\\-pod1"
},
{
"selected": false,
"text": "huawei-pod2",
"value": "huawei\\-pod2"
},
{
"selected": false,
"text": "huawei-us-deploy-bare-1",
"value": "huawei\\-us\\-deploy\\-bare\\-1"
},
{
"selected": false,
"text": "intel-pod5",
"value": "intel\\-pod5"
},
{
"selected": false,
"text": "intel-pod6",
"value": "intel\\-pod6"
},
{
"selected": false,
"text": "lf-pod1",
"value": "lf\\-pod1"
},
{
"selected": true,
"text": "lf-pod2",
"value": "lf\\-pod2"
},
{
"selected": false,
"text": "opnfv-jump-1",
"value": "opnfv\\-jump\\-1"
},
{
"selected": false,
"text": "opnfv-jump-2",
"value": "opnfv\\-jump\\-2"
},
{
"selected": false,
"text": "orange-fr-pod2",
"value": "orange\\-fr\\-pod2"
},
{
"selected": false,
"text": "unknown",
"value": "unknown"
},
{
"selected": false,
"text": "zte-pod1",
"value": "zte\\-pod1"
}
],
"query": "SHOW TAG VALUES WITH KEY = \"pod_name\"",
"refresh": false,
"regex": "",
"type": "query",
"useTags": false
},
{
"allFormat": "regex values",
"current": {
"tags": [],
"text": "All",
"value": "(os\\-nosdn\\-nofeature\\-ha|os\\-nosdn\\-ovs\\-ha|os\\-odl_l2\\-bgpvpn\\-ha|os\\-odl_l2\\-nofeature\\-ha|os\\-odl_l2\\-nofeature\\-noha|os\\-odl_l2\\-sfc\\-ha|os\\-odl_l3\\-nofeature\\-ha|os\\-onos\\-nofeature\\-ha)"
},
"datasource": "yardstick-vtc",
"hideLabel": false,
"includeAll": true,
"label": "",
"multi": true,
"multiFormat": "regex values",
"name": "SCENARIO",
"options": [
{
"selected": true,
"text": "All",
"value": "(os\\-nosdn\\-nofeature\\-ha|os\\-nosdn\\-ovs\\-ha|os\\-odl_l2\\-bgpvpn\\-ha|os\\-odl_l2\\-nofeature\\-ha|os\\-odl_l2\\-nofeature\\-noha|os\\-odl_l2\\-sfc\\-ha|os\\-odl_l3\\-nofeature\\-ha|os\\-onos\\-nofeature\\-ha)"
},
{
"selected": false,
"text": "os-nosdn-nofeature-ha",
"value": "os\\-nosdn\\-nofeature\\-ha"
},
{
"selected": false,
"text": "os-nosdn-ovs-ha",
"value": "os\\-nosdn\\-ovs\\-ha"
},
{
"selected": false,
"text": "os-odl_l2-bgpvpn-ha",
"value": "os\\-odl_l2\\-bgpvpn\\-ha"
},
{
"selected": false,
"text": "os-odl_l2-nofeature-ha",
"value": "os\\-odl_l2\\-nofeature\\-ha"
},
{
"selected": false,
"text": "os-odl_l2-nofeature-noha",
"value": "os\\-odl_l2\\-nofeature\\-noha"
},
{
"selected": false,
"text": "os-odl_l2-sfc-ha",
"value": "os\\-odl_l2\\-sfc\\-ha"
},
{
"selected": false,
"text": "os-odl_l3-nofeature-ha",
"value": "os\\-odl_l3\\-nofeature\\-ha"
},
{
"selected": false,
"text": "os-onos-nofeature-ha",
"value": "os\\-onos\\-nofeature\\-ha"
}
],
"query": "SHOW TAG VALUES WITH KEY = \"deploy_scenario\"",
"refresh": false,
"regex": "",
"type": "query",
"useTags": false
}
]
},
"annotations": {
"list": []
},
"refresh": "15m",
"schemaVersion": 8,
"version": 9,
"links": []
}