Simple Script for Generating Resources

This is a quick script to generate real resources for
testing. Input uses the standard resource types. Options are
purposely very limited.

This generates data using the openstack cli that works for
doing quick demos and verifying cross resource searching
using real resources from real services.

Change-Id: I58f2ed86d8a3cc215b4e35076f67cd6ec31e7c69
This commit is contained in:
Travis Tripp 2015-10-02 17:43:01 -06:00 committed by Travis Tripp
parent e55c7ff907
commit 31f58bf00e
3 changed files with 237 additions and 1 deletions

View File

@ -57,7 +57,7 @@ PIP_UPGRADE=False
### ADD SOME IMAGES TO GLANCE ###
#
# latest cirros qcow2 image instead of UEC ones
IMAGE_URLS+=",http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img"
IMAGE_URLS+=",http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img"
# latest Ubuntu Trusty amd64 cloud image
IMAGE_URLS+=",https://cloud-images.ubuntu.com/releases/trusty/release/ubuntu-14.04-server-cloudimg-amd64-disk1.img"

22
test-scripts/README.rst Normal file
View File

@ -0,0 +1,22 @@
..
c) Copyright 2016 Hewlett-Packard Development Company, L.P.
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
=================
Sample Demo Data
=================
This directory provide scripts that can be used for generating sample
and demo data by interacting with the actual services and creating resources
in those services.

214
test-scripts/resources.sh Executable file
View File

@ -0,0 +1,214 @@
#!/bin/bash
# Copyright 2015, Hewlett-Packard Development Company, L.P.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# This script is just intended to facilitate manual testing
set -e
# A POSIX variable
OPTIND=1 # Reset in case getopts has been used previously in the shell.
SERVER="OS::Nova::Server"
IMAGE="OS::Glance::Image"
VOLUME="OS::Cinder::Volume"
ZONE="OS::Designate::Zone"
RECORDSET="OS::Designate::RecordSet"
base_name="demo"
types="$SERVER $IMAGE $VOLUME $METADEF $ZONE $RECORDSET"
number=1
devstack_home="$HOME"/devstack
server_flavor="m1.tinier"
server_image="cirros-0.3.4-x86_64-disk"
image_file=$( cd "$(dirname "$0")" ; pwd -P )"/"$(basename "$0")
network=public
#TODO Add Neutron resources.
function print_help {
echo
echo "Usage:"
echo ""
echo " You must pre-set all your OS_* environment variables. For example:"
echo " $source <devstack_home>/openrc admin demo"
echo " -n the base name to use for all resources. default: $base_name"
echo " -t the resource types to generate. default: $types"
echo " -x the number of each type of resource to create. default: $number"
echo
}
while getopts "h?:d:n:u:p:t:x:" opt; do
case "$opt" in
h|\?)
print_help;
exit 2
;;
n) base_name=$OPTARG
;;
t) types=$OPTARG
;;
x) number=$OPTARG
;;
esac
done
shift $((OPTIND-1))
[ "$1" = "--" ] && shift
function echo_opts {
echo
echo "base_name=$base_name, types='$types', number='$number'"
echo
}
echo_opts
# End of file
function info {
echo
echo "$1"
echo
}
sample_properties[0]="--property tag=python,fedora --property sw_runtime_python_version=2.7"
sample_tags[0]="--tag python --tag fedora"
sample_properties[1]="--property tag=python,fedora,dev --property sw_runtime_python_version=3.4"
sample_tags[1]="--tag python --tag fedora --tag dev"
sample_properties[2]="--property tag=python,debian,dev --property sw_runtime_python_version=3.4"
sample_tags[2]="--tag python --tag debian --tag dev"
sample_properties[3]="--property tag=apache,python,fedora,prod,web --property sw_webserver_apache_version=2.2.31"
sample_tags[3]="--tag apache --tag debian --python --tag prod --tag web"
sample_properties[4]="--property tag=apache,web,fedora --property sw_webserver_apache_version=2.4.18"
sample_tags[4]="--tag apache --tag fedora --tag web"
sample_properties[5]="--property tag=python,apache,web,debian --property sw_runtime_python_version=3.4 --property sw_webserver_apache_version=2.4.18"
sample_tags[5]="--tag python --tag apache --tag web"
sample_properties[6]="--property tag=python,apache,web,debian --property sw_webserver_apache_version=2.2.31"
sample_tags[6]="--tag python --tag apache --tag web"
sample_metadata_idx=-1
function incr_metadata_samples () {
((sample_metadata_idx++))
if [ $sample_metadata_idx -eq 7 ]
then
sample_metadata_idx=0
fi
export properties=${sample_properties[$sample_metadata_idx]}
export tags=${sample_tags[$sample_metadata_idx]}
}
function initialize_flavor {
if [[ "$types" != *"$SERVER"* ]]
then
echo "Skipping flavor initialization"
return 0
fi
(set -x; openstack flavor create --ram 64 --disk 1 --ephemeral 0 --public --vcpus 1 "$server_flavor" || true)
}
function create_server () {
if [[ "$types" != *"$SERVER"* ]]
then
echo "Skipping servers"
return 0
fi
info "$SERVER"
export server_name="$base_name"
# TODO Configurable network id
export net_id=$(openstack network show $network -c id -f value)
(set -x; openstack server create --image "$server_image" --flavor "$server_flavor" --nic net-id=$net_id $properties "$server_name")
while : ; do
server_status=$(openstack server show "$server_name" --column status -f value)
echo "Server status $server_status"
if [ "$server_status" == "ACTIVE" ]; then
break
fi
sleep 1
done
nova stop "$server_name"
}
function create_image () {
if [[ "$types" != *"$IMAGE"* ]]
then
echo "Skipping images"
return 0
fi
info "$IMAGE"
export image_name="$base_name"
(set -x; openstack image create --container-format bare --disk-format raw --file "$image_file" $tags "$image_name")
}
function create_volume () {
if [[ "$types" != *"$VOLUME"* ]]
then
echo "Skipping volumes and volume snapshots"
return 0
fi
info "$VOLUME"
export volume_name="$base_name"
(set -x; openstack volume create --size 1 $properties "$volume_name")
# TODO volume snapshots -openstack client doesn't seem to support yet
}
function create_designate_resources {
if [[ "$types" != *"OS::Designate"* ]]
then
echo "Skipping designate:"
return 0
fi
info "OS::Designate::*"
export zone_name="$base_name"."$base_name".
(set -x; openstack zone create "$zone_name" --email travis@dnstest.net)
while : ; do
zone_status=$(openstack zone show "$zone_name" --column status -f value)
echo "Zone status $zone_status"
if [ "$zone_status" == "ACTIVE" ]; then
break
fi
sleep 1
done
export zone_id=$(openstack zone show "$zone_name" --column id -f value)
(set -x; designate record-create "$zone_id" --name www."$zone_name" --type A --data 192.0.2.1)
}
counter=1
orig_base_name="$base_name"
initialize_flavor
while [ "$counter" -le "$number" ]; do
if [ "$number" -gt 1 ]
then
base_name="$orig_base_name"_"$counter"
echo "Executing run $counter. Using Base Name: $base_name"
fi
incr_metadata_samples
create_server
create_image
create_volume
create_designate_resources
let counter=counter+1
done
echo_opts
echo "Complete"