Scripts fixes and updates
Related-PROD: PROD-34629
Change-Id: I62ff687b6edf14d54fb39a4c9da5badb6ff301c6
diff --git a/scripts/cmp_check.sh b/scripts/cmp_check.sh
index 823c0b4..9da254a 100644
--- a/scripts/cmp_check.sh
+++ b/scripts/cmp_check.sh
@@ -125,6 +125,8 @@
function vm_create() {
[ ! "$silent" = true ] && set -x
openstack server create --nic net-id=${fixed_net_left_id} --image ${cirros35_id} --flavor ${flavor_tiny_id} --key-name ${keypair_id} --security-group ${secgroup_all_id} --availability-zone ${zone}:${1} ${2} 2>${tmp_out} >/dev/null
+ #openstack server create --nic net-id=${fixed_net_left_id} --image ${ubuntu16_id} --flavor ${flavor_high_id} --key-name ${keypair_id} --security-group ${secgroup_all_id} --availability-zone ${zone}:${1} ${2} 2>${tmp_out} >/dev/null
+ #openstack server create --nic net-id=${fixed_net_right_id} --image ${ubuntu16_id} --flavor ${flavor_high_id} --key-name ${keypair_id} --security-group ${secgroup_all_id} --availability-zone ${zone}:${1} ${2} 2>${tmp_out} >/dev/null
#openstack server create --nic net-id=${fixed_net_left_id} --image ${ubuntuspt_id} --flavor ${flavor_high_id} --key-name ${keypair_id} --security-group ${secgroup_all_id} --availability-zone ${zone}:${1} ${2} 2>${tmp_out} >/dev/null
[ ! 0 -eq $? ] && errors+=("${1}/${2}: $(cat ${tmp_out})")
set +x
diff --git a/scripts/prepare.sh b/scripts/prepare.sh
deleted file mode 100644
index 2521d7e..0000000
--- a/scripts/prepare.sh
+++ /dev/null
@@ -1,394 +0,0 @@
-#!/bin/bash
-export OS_INTERFACE='admin'
-
-# local vars
-name_prefix=cvp
-filename=${name_prefix}.manifest
-rcfile=${name_prefix}rc
-huge_pages=false
-logfile=prepare.log
-
-# Project, User, Roles
-project=${name_prefix}.project
-user=${name_prefix}.user
-admin=${name_prefix}.admin
-password=mcp1234
-
-# Security group
-sg_all=${name_prefix}.sg.all
-sg_icmp=${name_prefix}.sg.icmp
-sg_ssh=${name_prefix}.sg.ssh
-sg_iperf=${name_prefix}.sg.perf
-
-# Testkey
-key=${name_prefix}_testkey
-
-# Flavors: tiny, small (cirrus and migration), medium (ubuntu and volume/stress activities)
-flavor_t=${name_prefix}.tiny
-flavor_s=${name_prefix}.small
-flavor_m=${name_prefix}.medium
-flavor_h=${name_prefix}.high
-
-# Fixed Networks (2, for testing router interconnection)
-net_left=${name_prefix}.net.1
-net_right=${name_prefix}.net.2
-subnet1=${name_prefix}.subnet.1
-subnet2=${name_prefix}.subnet.2
-
-# Router
-router=${name_prefix}.router
-
-# Images: cirros (3.5, 4.0), ubuntu (16.04)
-cirros3=${name_prefix}.cirros.35
-cirros4=${name_prefix}.cirros.40
-ubuntu16=${name_prefix}.ubuntu.1604
-ubuntuspt=${name_prefix}.ubuntu.spt
-
-cirros3_link=http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
-cirros4_link=http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-aarch64-disk.img
-ubuntu16_link=https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img
-
-# Volume (2GB)
-volume=${name_prefix}.volume
-
-function show_help {
- printf "CVP Pipeline: Resource creation script\n\t-h, -?\t\tShow this help\n"
- printf "\t-H\t\tAdds '--property hw:mem_page_size=large' to flavors, i.e. huge_pages for DPDK\n"
- printf "\t-w <path>\tSets working folder"
-}
-
-OPTIND=1 # Reset in case getopts has been used previously in the shell.
-while getopts "h?:Hw:" opt; do
- case "$opt" in
- h|\?)
- show_help
- exit 0
- ;;
- w) working_folder=${OPTARG}
- printf "# Working folder is ${working_folder}\n"
- ;;
- h) huge_pages=true
- printf "# Using 'huge_pages' property in flavors\n"
- ;;
- esac
-done
-
-shift $((OPTIND-1))
-[ "${1:-}" = "--" ] && shift
-
-function put() {
- echo "$1=$2" | tee -a ${filename}
-}
-
-# now, some hard to understand stuff...
-# f1 $(<command with output to cut>)
-function f1() { echo $1 | cut -d' ' -f1; };
-# <commands with output to cut> | p1
-function p1() { while read input; do echo ${input} | cut -d' ' -f1; done; };
-# ol1 is short for openstack list with 1 param. Also grep and cut
-# "ol1 network public" will list all networks, grep by name public and return IDs
-function ol1() { echo $(openstack $1 list -c ID -c Name -f value | grep $2 | cut -d' ' -f1); }
-# same as ol1 but with 2 initial commands before list
-function ol2() { echo $(openstack $1 $2 list -c ID -c Name -f value | grep $3 | cut -d' ' -f1); }
-
-function print_manifest() {
- touch ./${filename}
- truncate -s 0 ${filename}
- printf "\n\n# Checking and filling manifest: $(pwd)/${filename}\n"
- put project_name ${project}
- put project_id $(ol1 project ${project})
- put user_name ${user}
- put user_id $(ol1 user ${user})
- put admin_name ${admin}
- put admin_id $(ol1 user ${admin})
- # sg
- put secgroup_all_name ${sg_all}
- put secgroup_all_id $(ol2 security group ${sg_all})
- put secgroup_icmp_name ${sg_icmp}
- put secgroup_icmp_id $(ol2 security group ${sg_icmp})
- put secgroup_ssh_name ${sg_ssh}
- put secgroup_ssh_id $(ol2 security group ${sg_ssh})
- put secgroup_iperf_name ${sg_iperf}
- put secgroup_iperf_id $(ol2 security group ${sg_iperf})
-
- # keypair
- put keypair_name ${key}
- put keypair_id $(ol1 keypair ${key})
-
- # flavors
- put flavor_tiny_name ${flavor_t}
- put flavor_tiny_id $(ol1 flavor ${flavor_t})
- put flavor_small_name ${flavor_s}
- put flavor_small_id $(ol1 flavor ${flavor_s})
- put flavor_medium_name ${flavor_m}
- put flavor_medium_id $(ol1 flavor ${flavor_m})
- put flavor_high_name ${flavor_h}
- put flavor_high_id $(ol1 flavor ${flavor_h})
-
- # fixed nets
- put fixed_net_left_name ${net_left}
- put fixed_net_left_id $(ol1 network ${net_left})
- put fixed_net_right_name ${net_right}
- put fixed_net_right_id $(ol1 network ${net_right})
- put fixed_net_left_subnet_name ${subnet1}
- put fixed_net_left_subnet_id $(openstack subnet list --network ${net_left} -c ID -f value | p1)
- put fixed_net_right_subnet_name ${subnet2}
- put fixed_net_right_subnet_id $(openstack subnet list --network ${net_right} -c ID -f value | p1)
-
- # router
- put router_name ${router}
- put router_id $(ol1 router ${router})
-
- # volumes
- put volume_name ${volume}
- put volume_id $(ol1 volume ${volume})
-
- # images
- put cirros35_name ${cirros3}
- put cirros35_id $(ol1 image ${cirros3})
- put cirros40_name ${cirros4}
- put cirros40_id $(ol1 image ${cirros4})
- put ubuntu16_name ${ubuntu16}
- put ubuntu16_id $(ol1 image ${ubuntu16})
- put ubuntuspt_name ${ubuntuspt}
- put ubuntuspt_id $(ol1 image ${ubuntuspt})
-}
-
-# create rc file out of current ENV vars
-function putrc() {
- printf "# Saving ${1} file\n"
- echo "export OS_IDENTITY_API_VERSION=${OS_IDENTITY_API_VERSION:-3}" >${1}
- echo "export OS_AUTH_URL=${OS_AUTH_URL}" >>${1}
- echo "export OS_PROJECT_DOMAIN_NAME=${OS_PROJECT_DOMAIN_NAME}" >>${1}
- echo "export OS_USER_DOMAIN_NAME=${OS_USER_DOMAIN_NAME}" >>${1}
- echo "export OS_PROJECT_NAME=${OS_PROJECT_NAME}" >>${1}
- echo "export OS_TENANT_NAME=${OS_TENANT_NAME}" >>${1}
- echo "export OS_USERNAME=${OS_USERNAME}" >>${1}
- echo "export OS_PASSWORD=${OS_PASSWORD}" >>${1}
- echo "export OS_REGION_NAME=${OS_REGION_NAME}" >>${1}
- echo "export OS_INTERFACE=${OS_INTERFACE}" >>${1}
- echo "export OS_ENDPOINT_TYPE=${OS_ENDPOINT_TYPE}" >>${1}
- echo "export OS_CACERT=${OS_CACERT}" >>${1}
-}
-
-# update ENV vars to newly created project
-function updatesession() {
- export OS_PROJECT_NAME=${project}
- export OS_TENANT_NAME=${project}
- export OS_USERNAME=${admin}
- export OS_PASSWORD=${password}
-}
-
-function process_cmds() {
- if [ -s ${cmds} ]; then
- cat ${cmds} | tr '\n' '\0' | xargs -P 1 -n 1 -0 echo | tee /dev/tty | openstack -v 2>&1 >>${logfile}
- truncate -s 0 ${cmds}
- fi
-}
-
-function _project() {
- echo project create ${project} >>${cmds}
- echo role add --user admin --project ${project} admin >>${cmds}
-}
-
-function _users() {
- echo user create --project ${project} --password ${password} ${user} >>${cmds}
- echo user create --project ${project} --password ${password} ${admin} >>${cmds}
- echo role add --user ${admin} --project ${project} admin >>${cmds}
- echo role add --user ${user} --project ${project} member >>${cmds}
-}
-
-function _sg_all() {
- echo security group create --project ${project} ${sg_all} >>${cmds}
- # icmp
- echo security group rule create --protocol icmp ${sg_all} >>${cmds}
- # ssh
- echo security group rule create --protocol tcp --dst-port 22 ${sg_all} >>${cmds}
- # iperf
- echo security group rule create --protocol tcp --dst-port 5001 ${sg_all} >>${cmds}
- # iperf3
- echo security group rule create --protocol tcp --dst-port 5201 ${sg_all} >>${cmds}
- # nc connectivity
- echo security group rule create --protocol tcp --dst-port 3000 ${sg_all} >>${cmds}
- # http
- echo security group rule create --protocol tcp --dst-port 80 ${sg_all} >>${cmds}
- # https
- echo security group rule create --protocol tcp --dst-port 443 ${sg_all} >>${cmds}
-}
-
-function _sg_icmp() {
- echo security group create --project ${project} ${sg_icmp} >>${cmds}
- echo security group rule create --protocol icmp ${sg_icmp} >>${cmds}
-}
-
-function _sg_ssh() {
- echo security group create --project ${project} ${sg_ssh} >>${cmds}
- # icmp
- echo security group rule create --protocol icmp ${sg_ssh} >>${cmds}
- # ssh
- echo security group rule create --protocol tcp --dst-port 22 ${sg_ssh} >>${cmds}
-}
-
-function _sg_iperf() {
- echo security group create --project ${project} ${sg_iperf} >>${cmds}
- # icmp
- echo security group rule create --protocol icmp ${sg_iperf} >>${cmds}
- # iperf
- echo security group rule create --protocol tcp --dst-port 5001 ${sg_iperf} >>${cmds}
- # iperf3
- echo security group rule create --protocol tcp --dst-port 5201 ${sg_iperf} >>${cmds}
-}
-
-function create_keypair() {
- echo "# Creating keypair"
- openstack keypair create ${key} >${key}
- chmod 600 ${key}
- echo "-> created keyfile: $(pwd)/${key}"
-}
-
-function _flavors() {
- # huge paged flavors
- if [ "$huge_pages" = true ]; then
- echo flavor create --id 1 --ram 64 --disk 1 --vcpus 1 ${flavor_t} --property hw:mem_page_size=large >>${cmds}
- echo flavor create --id 2 --ram 256 --disk 2 --vcpus 1 ${flavor_s} --property hw:mem_page_size=large >>${cmds}
- echo flavor create --id 3 --ram 2048 --disk 10 --vcpus 2 ${flavor_m} --property hw:mem_page_size=large >>${cmds}
- echo flavor create --id 4 --ram 2048 --disk 20 --vcpus 4 ${flavor_h} --property hw:mem_page_size=large >>${cmds}
- else
- echo flavor create --id 1 --ram 64 --disk 1 --vcpus 1 ${flavor_t} >>${cmds}
- echo flavor create --id 2 --ram 256 --disk 2 --vcpus 1 ${flavor_s} >>${cmds}
- echo flavor create --id 3 --ram 2048 --disk 10 --vcpus 2 ${flavor_m} >>${cmds}
- echo flavor create --id 4 --ram 2048 --disk 20 --vcpus 4 ${flavor_h} >>${cmds}
- fi
-}
-
-function _volumes() {
- echo volume create --size 2 ${volume} >>${cmds}
-}
-
-function create_fixed_nets() {
- echo "# Creating fixed networks"
- echo network create --project ${project} ${net_left} >>${cmds}
- echo subnet create ${subnet1} --network ${net_left} --subnet-range 10.10.11.0/24 >>${cmds}
- echo network set --share ${net_left} >>${cmds}
- echo network create --project ${project} ${net_right} >>${cmds}
- echo subnet create ${subnet2} --network ${net_right} --subnet-range 10.10.12.0/24 >>${cmds}
- echo network set --share ${net_right} >>${cmds}
- process_cmds
-
- # get subnet ids
- subnet1_id=$(openstack subnet list --network ${net_left} -c ID -f value)
- subnet2_id=$(openstack subnet list --network ${net_right} -c ID -f value)
-
- echo router create --project ${project} ${router} >>${cmds}
- process_cmds
-
- router_id=$(openstack router list -c ID -c Name -f value | grep ${router} | cut -d' ' -f1)
- echo router add subnet ${router_id} ${subnet1_id} >>${cmds}
- echo router add subnet ${router_id} ${subnet2_id} >>${cmds}
- process_cmds
-
- # TODO: Search for external net
- external=public
- echo router set ${router} --external-gateway ${external} >>${cmds}
- process_cmds
-}
-
-function _get_image() {
- # build vars for name and link
- name="${1}"
- link="${1}_link"
- which wget >/dev/null
- if [ $? -ne 0 ]; then
- printf "\nERROR: 'wget' not detected. Download skipped: ${!name}\n"
- else
- # no redownloads, quet, save named and show progress
- r=$(wget --no-check-certificate -nc -q -O ./${!name} --show-progress ${!link})
- if [ $? -ne 0 ]; then
- # non-empty output on error
- echo ${r}
- fi
- fi
-}
-
-function create_image() {
- name="${1}"
- # Check if image is in the cloud
- echo "# Checking image '${!name}'"
- ids=( $(ol1 image ${!name}) )
- # if array is empty, download and upload it
- if [ ${#ids[@]} -eq 0 ]; then
- # check and download
- if [ ! -f ${!name} ]; then
- r=$(_get_image ${1})
- else
- r=""
- fi
- # check if output is not empty
- if [ ${#r} -eq 0 ]; then
- image_id=$(openstack image create --public --disk-format qcow2 --container-format bare --file ${!name} ${!name} -c id -f value)
- echo "-> created ${!name} (${image_id})"
- else
- printf "\n-> Error detected, creation skipped\n"
- fi
- else
- # image(s) already there, list them
- for id in ${ids[@]}; do
- echo "-> found ${!name} with ID of '${id}'"
- done
- fi
-}
-
-###################
-### Main
-###################
-if [[ -z ${working_folder+x} ]]; then
- # cwd into working dir
- cd ${working_folder}
-fi
-
-cmds=$(mktemp)
-trap "rm -f ${cmds}" EXIT
-echo "Using tempfile: '${cmds}'"
-
-touch ${logfile}
-echo "Using log file: '${logfile}'"
-
-# Create
-echo "# Creating project and users"
-_project
-_users
-process_cmds
-
-echo "# Creating 'rc' and switching"
-putrc "./adminrc"
-updatesession
-putrc "./${rcfile}"
-
-echo "# Creating basic resources"
-# not dependent stuff
-_sg_all
-_sg_icmp
-_sg_ssh
-_sg_iperf
-_flavors
-_volumes
-process_cmds
-
-# sophisticated, step dependent stuff
-create_keypair
-create_fixed_nets
-
-# images
-create_image cirros3
-create_image cirros4
-create_image ubuntu16
-# update image name to correct one uploaded
-ubuntuspt_file="ubuntuspt.img"
-openstack image create --public --disk-format qcow2 --container-format bare --file ${ubuntuspt_file} ${ubuntuspt} -c id -f value
-
-### Manifest and fall back to original rc
-print_manifest
-printf ="\n\nSetting quota\n"
-openstack quota set --cores -1 --ram -1 --instances -1 --volumes -1 --gigabytes -1 cvp.project
-source "./adminrc"
-printf "\n\nOriginal rc preserved and backed up in 'adminrc'\nNew rc is '${rcfile}'\n"