diff --git a/cleanup.sh b/cleanup.sh
deleted file mode 100644
index c39774f..0000000
--- a/cleanup.sh
+++ /dev/null
@@ -1,333 +0,0 @@
-#!/bin/bash
-export OS_INTERFACE='admin'
-mask='cvp\|s_rally\|rally_\|tempest_\|tempest-|\spt-'
-stack_alt=false
-stack_regex='api-[0-9]+-[a-z]+'
-dry_run=false
-clean_projects=false
-make_servers_active=false
-serial=false
-batch_size=10
-# granularity values: days,hours,minutes,seconds
-stack_granularity=days
-stack_granularity_value=1
-
-function show_help {
-    printf "Resource cleaning script\nMask is: %s\n\t-h, -?\tShow this help\n" ${mask}
-    printf "\t-t\tDry run mode, no cleaning done\n"
-    printf "\t-P\tForce cleaning of projects\n"
-    printf "\t-s\tUse single thread of 'openstack' client for cleanup\n"
-    printf "\t-S\tSet servers to ACTIVE before deletion (bare metal reqiured)\n"
-    printf "\t-f\tForce stack cleanup with an additional mask of '%s'\n" ${stack_regex}
-    printf "\t-F\tForce purge deleted stacks. Batch size: %s, >%s %s\n" ${batch_size} ${stack_granularity_value} ${stack_granularity}
-}
-
-OPTIND=1 # Reset in case getopts has been used previously in the shell.
-while getopts "h?:tsSPfF" opt; do
-    case "$opt" in
-    h|\?)
-        show_help
-        exit 0
-        ;;
-    t)  dry_run=true
-        printf "Running in dry-run mode\n"
-        ;;
-    s)  serial=true
-        printf "Single threaded mode enabled\n"
-        ;;
-    S)  make_servers_active=true
-        printf "Servers will be set to ACTIVE before deletion\n"
-        ;;
-    P)  clean_projects=true
-        printf "Project cleanning enabled\n"
-        ;;
-    f)  stack_alt=true
-        printf "Cleaning stacks using additional mask '%s'\n" ${stack_regex}
-        ;;
-    F)  purge_deleted_stacks=true
-        printf "Purging stacks deleted >$stack_granularity_value $stack_granularity ago enabled, batch size %s\n" $stack_batch_size
-        ;;
-    esac
-done
-
-shift $((OPTIND-1))
-[ "${1:-}" = "--" ] && shift
-
-### Execute collected commands and flush the temp file
-function _clean_and_flush {
-    if [ "$dry_run" = true ] ; then
-        return 0
-    fi
-    if [ -s ${cmds} ]; then
-        if [ "${serial}" = false ] ; then
-            echo "... processing $(cat ${cmds} | wc -l) commands, worker threads ${batch_size}"
-            cat ${cmds} | tr '\n' '\0' | xargs -P ${batch_size} -n 1 -0 echo | openstack
-            #cat ${cmds} | openstack
-            truncate -s 0 ${cmds}
-        else
-            echo "... processing $(cat ${cmds} | wc -l) commands"
-            cat ${cmds} | tr '\n' '\0' | xargs -P 1 -n 1 -0 echo | openstack
-            truncate -s 0 ${cmds}
-        fi
-    fi
-}
-
-function _clean_and_flush_cinder {
-    if [ "$dry_run" = true ] ; then
-        return 0
-    fi
-    if [ -s ${cmds} ]; then
-        if [ "${serial}" = false ] ; then
-            echo "... processing $(cat ${cmds} | wc -l) commands, worker threads ${batch_size}"
-            cat ${cmds} | tr '\n' '\0' | xargs -I{} -P ${batch_size} -n 1 -0 /bin/bash -c 'cinder --os-volume-api-version 3.43 {}'
-            #cat ${cmds} | cinder --os-volume-api-version 3.43
-            truncate -s 0 ${cmds}
-        else
-            echo "... processing $(cat ${cmds} | wc -l) commands"
-            cat ${cmds} | tr '\n' '\0' | xargs -I{} -P 1 -n 1 -0 /bin/bash -c 'cinder --os-volume-api-version 3.43 {}'
-            truncate -s 0 ${cmds}
-        fi
-    fi
-}
-
-### Users
-function _clean_users {
-    users=( $(openstack user list -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) )
-    echo "-> ${#users[@]} users containing '${mask}' found"
-    printf "%s\n" ${users[@]} | xargs -I{} echo user delete {} >>${cmds}
-    _clean_and_flush
-}
-
-### Roles
-function _clean_roles {
-    roles=( $(openstack role list -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) )
-    echo "-> ${#roles[@]} roles containing '${mask}' found"
-    printf "%s\n" ${roles[@]} | xargs -I{} echo role delete {} >>${cmds}
-    _clean_and_flush
-}
-
-### Projects
-function _clean_projects {
-    projects=( $(openstack project list -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) )
-    echo "-> ${#projects[@]} projects containing '${mask}' found"
-    printf "%s\n" ${projects[@]} | xargs -I{} echo project delete {} >>${cmds}
-    _clean_and_flush
-}
-
-### Servers
-function _clean_servers {
-    servers=( $(openstack server list -c ID -c Name -f value --all | grep "${mask}" | cut -d' ' -f1) )
-    echo "-> ${#servers[@]} servers containing '${mask}' found"
-    if [ "$make_servers_active" = true ]; then
-        printf "%s\n" ${servers[@]} | xargs -I{} echo server set --state active {} >>${cmds}
-    fi
-    printf "%s\n" ${servers[@]} | xargs -I{} echo server delete {} >>${cmds}
-    _clean_and_flush
-}
-
-### Reset snapshot state and delete
-function _clean_snapshots {
-    snapshots=( $(openstack volume snapshot list --all -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) )
-    echo "-> ${#snapshots[@]} snapshots containing '${mask}' found"
-    printf "%s\n" ${snapshots[@]} | xargs -I{} echo volume snapshot set --state available {} >>${cmds}
-    printf "%s\n" ${snapshots[@]} | xargs -I{} echo volume snapshot delete {} >>${cmds}
-    _clean_and_flush
-}
-
-function _clean_volumes {
-    volumes=( $(openstack volume list --all -c ID -c Name -c Type -f value | grep ${mask} | cut -d' ' -f1) )
-    echo "-> ${#volumes[@]} volumes containing '${mask}' found"
-    printf "%s\n" ${volumes[@]} | xargs -I{} echo volume set --state available {} >>${cmds}
-    printf "%s\n" ${volumes[@]} | xargs -I{} echo volume delete {} >>${cmds}
-    _clean_and_flush
-}
-
-function _clean_volume_groups {
-    groups=( $(cinder --os-volume-api-version 3.43 group-list --all-tenants 1 | grep ${mask} | awk '{print $2}') )
-    echo "-> ${#groups[@]} groups containing '${mask}' found"
-    printf "%s\n" ${groups[@]} | xargs -I{} echo group-delete {} >>${cmds}
-    _clean_and_flush_cinder
-}
-
-function _clean_volume_group_types {
-    group_types=( $(cinder --os-volume-api-version 3.43 group-type-list | grep ${mask} | awk '{print $2}') )
-    echo "-> ${#group_types[@]} group types containing '${mask}' found"
-    printf "%s\n" ${group_types[@]} | xargs -I{} echo group-type-delete {} >>${cmds}
-    _clean_and_flush_cinder
-}
-
-### Volume types
-function _clean_volume_types {
-    vtypes=( $(openstack volume type list -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) )
-    echo "-> ${#vtypes[@]} volume types containing '${mask}' found"
-    printf "%s\n" ${vtypes[@]} | xargs -I{} echo volume type delete {} >>${cmds}
-    _clean_and_flush
-}
-
-### Images
-function _clean_images {
-    images=( $(openstack image list -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) )
-    echo "-> ${#images[@]} images containing '${mask}' found"
-    printf "%s\n" ${images[@]} | xargs -I{} echo image delete {} >>${cmds}
-    _clean_and_flush
-}
-
-### Sec groups
-function _clean_sec_groups {
-    projects=( $(openstack project list -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) )
-    sgroups=( $(printf "%s\n" ${projects[@]} | xargs -I{} /bin/bash -c "openstack security group list -c ID -c Project -f value | grep {} | cut -d' ' -f1") )
-    echo "-> ${#sgroups[@]} security groups for project containing '${mask}' found"
-    printf "%s\n" ${sgroups[@]} | xargs -I{} echo security group delete {} >>${cmds}
-    _clean_and_flush
-
-    # Additional step to cleanup 'hanged' groups
-    sgroups_raw=( $(openstack security group list -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) )
-    echo "-> ${#sgroups_raw[@]} security groups for '${mask}' found"
-    printf "%s\n" ${sgroups_raw[@]} | xargs -I{} echo security group delete {} >>${cmds}
-    _clean_and_flush
-}
-
-### Keypairs
-function _clean_keypairs {
-    keypairs=( $(openstack keypair list -c Name -f value | grep ${mask}) )
-    echo "-> ${#keypairs[@]} keypairs containing '${mask}' found"
-    printf "%s\n" ${keypairs[@]} | xargs -I{} echo keypair delete {} >>${cmds}
-    _clean_and_flush
-}
-
-### Routers and Networks
-function _clean_routers_and_networks {
-    routers=( $(openstack router list -c ID -c Name -f value | grep ${mask} | cut -d ' ' -f1) )
-    if [ ${#routers[@]} -eq 0 ]; then
-        echo "-> No routers containing '${mask}' found"
-    else
-        echo "-> ${#routers[@]} routers containing '${mask}' found"
-        echo "... unsetting gateways"
-        printf "%s\n" ${routers[@]} | xargs -I{} echo router unset --external-gateway {} >>${cmds}
-        _clean_and_flush
-
-        echo "... removing ports"
-        for router in ${routers[@]}; do
-            r_ports=( $(openstack port list --router ${router} -f value -c ID) )
-            if [ ${#r_ports[@]} -eq 0 ]; then
-                echo "... no ports to unplug for ${router}"
-            else
-                for r_port in ${r_ports[@]}; do
-                    echo "... queued removal of port '${r_port}' from router '${router}'"
-                    echo "router remove port ${router} ${r_port}" >>${cmds}
-                done
-            fi
-        done
-        _clean_and_flush
-
-        echo "... deleting routers"
-        printf "%s\n" ${routers[@]} | xargs -I{} echo router delete {} >>${cmds}
-        _clean_and_flush
-    fi
-
-    networks=( $(openstack network list | grep "${mask}" | cut -d' ' -f2) )
-    if [ ${#networks[@]} -eq 0 ]; then
-        echo "-> No networks containing '${mask}' found"
-    else
-        ports=()
-        subnets=()
-        for((idx=0;idx<${#networks[@]};idx++)) do
-            ports+=( $(openstack port list --network ${networks[idx]} -c ID -f value) )
-            subnets+=( $(openstack subnet list --network ${networks[idx]} -c ID -f value) )
-            echo "-> $((${idx}+1)) of ${#networks[@]}, total ${#ports[@]} ports, ${#subnets[@]} subnets"
-        done
-        printf "%s\n" ${ports[@]} | xargs -I{} echo port delete {} >>${cmds}
-        printf "%s\n" ${subnets[@]} | xargs -I{} echo subnet delete {} >>${cmds}
-        echo network delete ${networks[@]} >>${cmds}
-        echo "-> ${#routers[@]} routers, ${#ports[@]} ports, ${#subnets[@]} subnets, ${#networks[@]} networks"
-    fi
-    _clean_and_flush
-}
-
-### Regions
-function _clean_regions {
-    regions=( $(openstack region list -c Region -f value | grep ${mask}) )
-    echo "-> ${#regions[@]} regions containing '${mask}' found"
-    printf "%s\n" ${regions[@]} | xargs -I{} echo region delete {} >>${cmds}
-    _clean_and_flush
-}
-
-### Stacks
-function _clean_stacks {
-    # By default openstack denies use of global_index for everyone.
-    # In case you want to have handy cleanup, consider updating policy.json here:
-    # root@ctl0x:~# cat -n /etc/heat/policy.json | grep global_index
-    # 48      "stacks:global_index": "rule:deny_everybody",
-    # 73      "software_configs:global_index": "rule:deny_everybody",
-    # After this you will be able to use --all option
-
-    stacks=( $(openstack stack list --nested --hidden -c ID -c "Stack Name" -f value | grep ${mask} | cut -d' ' -f1) )
-    echo "-> ${#stacks[@]} stacks containing '${mask}' found"
-    printf "%s\n" ${stacks[@]} | xargs -I{} echo stack check {} >>${cmds}
-    printf "%s\n" ${stacks[@]} | xargs -I{} echo stack delete -y {} >>${cmds}
-    _clean_and_flush
-
-    if [ "$stack_alt" = true ]; then
-        stacks=( $(openstack stack list --nested --hidden -c ID -c "Stack Name" -f value | grep -E ${stack_regex} | cut -d' ' -f1) )
-        echo "-> ${#stacks[@]} stacks containing '${stack_regex}' found"
-        printf "%s\n" ${stacks[@]} | xargs -I{} echo stack check {} >>${cmds}
-        printf "%s\n" ${stacks[@]} | xargs -I{} echo stack delete -y {} >>${cmds}
-        _clean_and_flush
-    fi
-
-    if [ "$purge_deleted_stacks" = true ]; then
-        heat-manage purge_deleted -g ${stack_granularity} -b ${batch_size} ${stack_granularity_value} | wc -l | xargs -I{} echo "-> Purged {} stacks"
-    fi
-}
-
-### Containers
-function _clean_containers {
-    containers=( $(openstack container list --all -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) )
-    echo "-> ${#containers[@]} containers containing '${mask}' found"
-    printf "%s\n" ${containers[@]} | xargs -I{} echo container delete {} >>${cmds}
-    _clean_and_flush
-}
-
-function _clean_flavors {
-    flavors=( $(openstack flavor list --all -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) )
-    echo "-> ${#flavors[@]} flavors containing '${mask}' found"
-    printf "%s\n" ${flavors[@]} | xargs -I{} echo flavor delete {} >>${cmds}
-    _clean_and_flush
-}
-
-###################
-### Main
-###################
-# temp file for commands
-cmds=$(mktemp)
-trap "rm -f ${cmds}" EXIT
-echo "Using tempfile: '${cmds}'"
-
-# Consider cleaning contrail resources carefully
-# ...and only after that - clean projects
-
-_clean_stacks
-_clean_servers
-_clean_flavors
-_clean_users
-_clean_roles
-_clean_snapshots
-_clean_volumes
-_clean_volume_groups
-_clean_volume_group_types
-_clean_volume_types
-_clean_images
-_clean_sec_groups
-_clean_keypairs
-_clean_routers_and_networks
-_clean_regions
-_clean_containers
-
-# project cleaning disabled by default
-# Coz cleaning Contrail with no projects is a hard task
-if [ "$clean_projects" = true ]; then
-    _clean_projects
-fi
-
-# remove temp file
-rm ${cmds}
diff --git a/configure.sh b/configure.sh
index 1b7892b..322ee01 100755
--- a/configure.sh
+++ b/configure.sh
@@ -57,7 +57,7 @@
   # default tempest version is 18.0.0 now, unless
   # it is explicitly defined in pipelines
   if [ "$tempest_version" == "" ]; then
-      tempest_version='18.0.0'
+      tempest_version='master'
   fi
   if [ "$PROXY" == "offline" ]; then
     rally verify create-verifier --name tempest_verifier_$sub_name --type tempest --source $TEMPEST_REPO --system-wide --version $tempest_version
@@ -86,7 +86,9 @@
 glance_image() {
 current_path=$(pwd)
 # fetch image with exact name: testvm
-IMAGE_NAME2=testvm
+IMAGE_NAME=cvp.cirros.35
+IMAGE_NAME2=cvp.cirros.40
+IMAGE_REF=$(glance image-list | grep "\b${IMAGE_NAME}\b" | awk '{print $2}')
 IMAGE_REF2=$(glance image-list | grep "\b${IMAGE_NAME2}\b" | awk '{print $2}')
 if [ "${IMAGE_REF2}" == "" ]; then
   if [ "$PROXY" != "offline" ]; then
@@ -108,7 +110,10 @@
     IMAGE_REF2=""
   fi
 fi
+
+sed -i 's/${IMAGE_REF}/'$IMAGE_REF'/g' $current_path/cvp-configuration/tempest/tempest_ext.conf
 sed -i 's/${IMAGE_REF2}/'$IMAGE_REF2'/g' $current_path/cvp-configuration/tempest/tempest_ext.conf
+sed -i 's/${IMAGE_NAME}/'$IMAGE_NAME'/g' $current_path/cvp-configuration/tempest/tempest_ext.conf
 sed -i 's/${IMAGE_NAME2}/'$IMAGE_NAME2'/g' $current_path/cvp-configuration/tempest/tempest_ext.conf
 }
 
diff --git a/k8s/docker-mos-toolset-full b/k8s/docker-mos-toolset-full
index 5a1200d..161437d 100644
--- a/k8s/docker-mos-toolset-full
+++ b/k8s/docker-mos-toolset-full
@@ -18,7 +18,7 @@
     ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
     apt-get install -y python3-pip python3-venv vim git iperf3 mtr htop iputils-ping traceroute tcpdump wget iproute2 curl screen
 
-RUN pip3 install --no-cache-dir python-openstackclient python-neutronclient python-heatclient pyghmi python-octaviaclient tempestparser python-ironicclient aodhclient gnocchiclient
+RUN pip3 install --no-cache-dir python-openstackclient python-neutronclient python-heatclient pyghmi python-octaviaclient tempestparser python-ironicclient aodhclient gnocchiclient python-barbicanclient python-glanceclient
 
 RUN git clone https://gerrit.mcp.mirantis.com/mcp/cvp-configuration /opt/res-files && \
     git clone http://gerrit.mcp.mirantis.com/mcp/cfg-checker /opt/cfg-checker && \
diff --git a/k8s/qa-ubuntu.yaml b/k8s/qa-ubuntu.yaml
index c67b54f..d3f3541 100644
--- a/k8s/qa-ubuntu.yaml
+++ b/k8s/qa-ubuntu.yaml
@@ -65,7 +65,8 @@
           name: keystone-keystone-admin
     imagePullPolicy: IfNotPresent
     name: ubuntu
-    image: 127.0.0.1:44301/general/external/docker.io/library/ubuntu:bionic-20201119
+    #image: 127.0.0.1:44301/general/external/docker.io/library/ubuntu:bionic-20201119
+    image: savex13/toolset:latest
     volumeMounts:
     - mountPath: /artifacts
       name: qa-pv-a
diff --git a/k8s/rally-files/init-rally.sh b/k8s/rally-files/init-rally.sh
index f18349a..aef2b4f 100644
--- a/k8s/rally-files/init-rally.sh
+++ b/k8s/rally-files/init-rally.sh
@@ -21,7 +21,7 @@
 # Configure kubernetes
 # Check and prepare kubespec file
 if [ ! -f /artifacts/kubespec_generated.yaml ]; then
-    sudo bash /artifacts/rally-files/gen_kubespec.sh /artifacts/mos-kubeconf.yaml
+    sudo bash /artifacts/rally-files/gen_kubespec.sh /artifacts/mos-kubeconfig.yaml
 fi
 # Create kubernetes env
 rally env create --name kubernetes --spec /artifacts/kubespec_generated.yaml
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"
diff --git a/tempest/tempest_ext.conf b/tempest/tempest_ext.conf
index 5a73965..6d55002 100644
--- a/tempest/tempest_ext.conf
+++ b/tempest/tempest_ext.conf
@@ -1,4 +1,7 @@
 [compute]
+flavor_ref = 1
+flavor_ref_alt = 2
+image_ref = ${IMAGE_REF}
 image_ref_alt = ${IMAGE_REF2}
 min_microversion = 2.1
 max_microversion = latest
@@ -25,15 +28,15 @@
 project_domain_name = Default
 user_domain_name = Default
 endpoint_type = internal
-instance_type = m1.tiny
-minimal_instance_type = m1.tiny
+instance_type = cvp.tiny
+minimal_instance_type = cvp.tiny
 network_for_ssh = ${PUBLIC_NET}
 floating_network_name = ${PUBLIC_NET}
-fixed_subnet_name = ${FIXED_SUBNET_NAME}
+fixed_subnet_name = cvp.subnet.1
 disable_ssl_certificate_validation = True
-image_ref = ${IMAGE_NAME2}
-minimal_image_ref = ${IMAGE_NAME2}
-fixed_network_name = ${FIXED_NET}
+image_ref = cvp.tiny
+minimal_image_ref = cvp.cirros.35
+fixed_network_name = cvp.net.1
 build_timeout = 180
 ssh_timeout = 30
 boot_config_env = /home/rally/boot_config_none_env.yaml
