Fixed prepare.sh and other small fixes

List of fixes:
- Use -g option to set ext gw info for heat-router in prepare.sh
- Fixed -H option in prepare.sh
- Fixed default working directory in prepare.sh
- Use admin_username from env vars in prepare.sh
- Set additional quotas for cvp.project
- Use mirantis busybox image from mirantis registry
- Fixed FIXED_NET variable in rally templates

Related-PROD: PROD-37187
Change-Id: I3d3ea6a520cf1677aabfa356bc40c19ae04822b4
diff --git a/k8s/rally-files/k8s-mos-scn-i1.yaml b/k8s/rally-files/k8s-mos-scn-i1.yaml
index efe3252..1394958 100644
--- a/k8s/rally-files/k8s-mos-scn-i1.yaml
+++ b/k8s/rally-files/k8s-mos-scn-i1.yaml
@@ -1,4 +1,4 @@
-{% set image_box = "busybox" %}
+{% set image_box = "mirantis.azurecr.io/general/external/e2e-test-images/registry.k8s.io/e2e-test-images/busybox:1.29-4" %}
 {% set image_pause = "mirantis.azurecr.io/general/external/pause:3.1" %}
 {% set image_cirros = "virtlet/download.cirros-cloud.net/0.6.2/cirros-0.6.2-x86_64-disk.img" %}
 {% set concurrency = 1 %}
diff --git a/k8s/rally-files/k8s-mos-scn-i100c5.yaml b/k8s/rally-files/k8s-mos-scn-i100c5.yaml
index c4ad19c..57ac0ba 100644
--- a/k8s/rally-files/k8s-mos-scn-i100c5.yaml
+++ b/k8s/rally-files/k8s-mos-scn-i100c5.yaml
@@ -1,5 +1,4 @@
-{% set image_box ="127.0.0.1:44301/stacklight/busybox:1.30" %}
-{% set image_box = "busybox" %}
+{% set image_box ="mirantis.azurecr.io/general/external/e2e-test-images/registry.k8s.io/e2e-test-images/busybox:1.29-4" %}
 {% set image_pause = "mirantis.azurecr.io/general/external/pause:3.1" %}
 {% set image_cirros = "virtlet/download.cirros-cloud.net/0.6.2/cirros-0.6.2-x86_64-disk.img" %}
 {% set concurrency = 5 %}
diff --git a/k8s/rally-files/openstack-mos-scn-i1-static-users.json b/k8s/rally-files/openstack-mos-scn-i1-static-users.json
index 23748c1..200bcd8 100644
--- a/k8s/rally-files/openstack-mos-scn-i1-static-users.json
+++ b/k8s/rally-files/openstack-mos-scn-i1-static-users.json
@@ -8,7 +8,7 @@
 {% set tenants = 1 %}
 {% set rbd_image = "https://download.cirros-cloud.net/0.6.2/cirros-0.6.2-x86_64-disk.img" %}
 {% set heat_template = "/rally/rally-files/default.yaml.template" %}
-{% set fixed_net = "id" %}
+{% set fixed_net = "${FIXED_NET}" %}
 
 {
   "KeystoneBasic.authenticate_user_and_validate_token": [
diff --git a/k8s/rally-files/openstack-mos-scn-i100-static-users.json b/k8s/rally-files/openstack-mos-scn-i100-static-users.json
index be45eb8..e0dcadb 100644
--- a/k8s/rally-files/openstack-mos-scn-i100-static-users.json
+++ b/k8s/rally-files/openstack-mos-scn-i100-static-users.json
@@ -8,7 +8,7 @@
 {% set tenants = 4 %}
 {% set rbd_image = "https://download.cirros-cloud.net/0.6.2/cirros-0.6.2-x86_64-disk.img" %}
 {% set heat_template = "/rally/rally-files/default.yaml.template" %}
-{% set fixed_net = "id" %}
+{% set fixed_net = "${FIXED_NET}" %}
 
 {
   "KeystoneBasic.authenticate_user_and_validate_token": [
diff --git a/scripts/prepare.sh b/scripts/prepare.sh
index 1640dd3..0a04eec 100644
--- a/scripts/prepare.sh
+++ b/scripts/prepare.sh
@@ -9,7 +9,12 @@
 filename=${name_prefix}.manifest
 rcfile=${name_prefix}rc
 huge_pages=false
+set_gw_heat_router=false
 logfile=prepare.log
+working_folder=$(pwd)
+
+# Cloud admin details
+admin_username=${OS_USERNAME}
 
 # Project, User, Roles
 project=${name_prefix}.project
@@ -57,13 +62,14 @@
 volume=${name_prefix}.volume
 
 function show_help {
-    printf "CVP Pipeline: Resource creation script\n\t-h, -?\t\tShow this help\n"
+    printf "QA verification: Resources 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"
+    printf "\t-w <path>\tSets working folder (default: ${working_folder})\n"
+    printf "\t-g\t\tTo set external_gateway_info to heat-router with the external network (if not set yet)\n"
 }
 
 OPTIND=1 # Reset in case getopts has been used previously in the shell.
-while getopts "h?:Hw:" opt; do
+while getopts ":gHw:h?"  opt; do
     case "$opt" in
     h|\?)
         show_help
@@ -72,9 +78,12 @@
     w)  working_folder=${OPTARG}
         printf "# Working folder is ${working_folder}\n"
         ;;
-    h)  huge_pages=true
+    H)  huge_pages=true
         printf "# Using 'huge_pages' property in flavors\n"
         ;;
+    g)  set_gw_heat_router=true
+        printf "# Setting external_gateway_info to heat-router with the external network (if not set yet)\n\n"
+        ;;
     esac
 done
 
@@ -193,7 +202,8 @@
 
 function _project() {
     echo project create ${project} >>${cmds}
-    admin_username=$(openstack user list --project admin --domain ${domain} -c Name -f value | grep admin)
+    # admin_username=$(openstack user list --project admin --domain ${domain} -c Name -f value | grep admin)
+    # user admin_username from the initial env vars of the pod
     echo role add --user ${admin_username} --project ${project} admin >>${cmds}
 }
 
@@ -320,20 +330,25 @@
       process_cmds
     fi
 
-    # set external gateway info for the Heat router if it is not set (required for Heat Tempest tests)
-    external_gateway_info=$(openstack router show heat-router -f json -c external_gateway_info | jq -r '.external_gateway_info')
-    if [[ "$external_gateway_info" == "null" ]]; then
-      echo "# Setting external gw info for heat-router using ${TEST_PUBLIC_NET}"
-      openstack router set --external-gateway ${TEST_PUBLIC_NET} heat-router
-      if [[ $? -eq 0 ]]; then
-        echo "# External gateway set successfully for heat-router"
-        openstack router show heat-router -c external_gateway_info
+    if [ "$set_gw_heat_router" = true ]; then
+      echo "# Variable 'set_gw_heat_router' is true; setting the external gateway info for heat-router (if not set yet)..."
+      # set external gateway info for the Heat router if it is not set (required for Heat Tempest tests)
+      external_gateway_info=$(openstack router show heat-router -f json -c external_gateway_info | jq -r '.external_gateway_info')
+      if [[ "$external_gateway_info" == "null" ]]; then
+        echo "# Setting external gw info for heat-router using ${TEST_PUBLIC_NET}"
+        openstack router set --external-gateway ${TEST_PUBLIC_NET} heat-router
+        if [[ $? -eq 0 ]]; then
+          echo "# External gateway set successfully for heat-router"
+          openstack router show heat-router -c external_gateway_info
+        else
+          echo "# Failed to set external gateway for heat-router"
+        fi
       else
-        echo "# Failed to set external gateway for heat-router"
+        echo "# Router heat-router already has an external gateway"
+        openstack router show heat-router -c external_gateway_info
       fi
     else
-      echo "# Router heat-router already has an external gateway"
-      openstack router show heat-router -c external_gateway_info
+      echo "# Variable 'set_gw_heat_router' is not true, skipping setting external_gateway_info for heat-router..."
     fi
 }
 
@@ -385,6 +400,7 @@
 ###################
 ### Main
 ###################
+echo "Using working folder: ${working_folder}"
 if [[ -z ${working_folder+x} ]]; then
     # cwd into working dir
     cd ${working_folder}
@@ -431,6 +447,6 @@
 ### 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
+openstack quota set --cores -1 --ram -1 --instances -1 --volumes -1 --gigabytes -1 --server-groups -1 --server-group-members -1 cvp.project
 source "./adminrc"
 printf "\n\nOriginal rc preserved and backed up in 'adminrc'\nNew rc is '${rcfile}'\n"