fix(core): Trap for AWS
[csit.git] / resources / libraries / bash / function / common.sh
index b1677c3..44a897e 100644 (file)
@@ -1,5 +1,5 @@
-# Copyright (c) 2022 Cisco and/or its affiliates.
-# Copyright (c) 2022 PANTHEON.tech and/or its affiliates.
+# Copyright (c) 2023 Cisco and/or its affiliates.
+# Copyright (c) 2023 PANTHEON.tech and/or its affiliates.
 # 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:
@@ -227,7 +227,7 @@ function common_dirs () {
     TOPOLOGIES_DIR=$(readlink -e "${CSIT_DIR}/topologies/available") || {
         die "Readlink failed."
     }
-    JOB_SPECS_DIR=$(readlink -e "${CSIT_DIR}/docs/job_specs") || {
+    JOB_SPECS_DIR=$(readlink -e "${CSIT_DIR}/resources/job_specs") || {
         die "Readlink failed."
     }
     RESOURCES_DIR=$(readlink -e "${CSIT_DIR}/resources") || {
@@ -236,9 +236,6 @@ function common_dirs () {
     TOOLS_DIR=$(readlink -e "${RESOURCES_DIR}/tools") || {
         die "Readlink failed."
     }
-    DOC_GEN_DIR=$(readlink -e "${TOOLS_DIR}/doc_gen") || {
-        die "Readlink failed."
-    }
     PYTHON_SCRIPTS_DIR=$(readlink -e "${TOOLS_DIR}/scripts") || {
         die "Readlink failed."
     }
@@ -467,17 +464,21 @@ function get_test_code () {
             NODENESS="2n"
             FLAVOR="icx"
             ;;
+        *"2n-spr"*)
+            NODENESS="2n"
+            FLAVOR="spr"
+            ;;
         *"3n-icx"*)
             NODENESS="3n"
             FLAVOR="icx"
             ;;
-        *"2n-dnv"*)
-            NODENESS="2n"
-            FLAVOR="dnv"
+        *"3na-spr"*)
+            NODENESS="3na"
+            FLAVOR="spr"
             ;;
-        *"3n-dnv"*)
-            NODENESS="3n"
-            FLAVOR="dnv"
+        *"3nb-spr"*)
+            NODENESS="3nb"
+            FLAVOR="spr"
             ;;
         *"3n-snr"*)
             NODENESS="3n"
@@ -640,6 +641,8 @@ function prepare_topology () {
     # - TEST_CODE - String affecting test selection, usually jenkins job name.
     # - NODENESS - Node multiplicity of testbed, either "2n" or "3n".
     # - FLAVOR - Node flavor string, e.g. "clx" or "skx".
+    # Variables set:
+    # - TERRAFORM_MODULE_DIR - Terraform module directory.
     # Functions called:
     # - die - Print to stderr and exit.
     # - terraform_init - Terraform init topology.
@@ -651,7 +654,11 @@ function prepare_topology () {
     case "${case_text}" in
         "1n_aws" | "2n_aws" | "3n_aws")
             export TF_VAR_testbed_name="${TEST_CODE}"
+            TERRAFORM_MODULE_DIR="terraform-aws-${NODENESS}-${FLAVOR}-c5n"
             terraform_init || die "Failed to call terraform init."
+            trap "terraform_destroy" ERR EXIT || {
+                die "Trap attempt failed, please cleanup manually. Aborting!"
+            }
             terraform_apply || die "Failed to call terraform apply."
             ;;
     esac
@@ -783,11 +790,6 @@ function select_arch_os () {
     case "${ID}" in
         "ubuntu"*)
             case "${VERSION}" in
-                *"LTS (Focal Fossa)"*)
-                    IMAGE_VER_FILE="VPP_DEVICE_IMAGE_UBUNTU"
-                    VPP_VER_FILE="VPP_STABLE_VER_UBUNTU_FOCAL"
-                    PKG_SUFFIX="deb"
-                    ;;
                 *"LTS (Jammy Jellyfish)"*)
                     IMAGE_VER_FILE="VPP_DEVICE_IMAGE_UBUNTU_JAMMY"
                     VPP_VER_FILE="VPP_STABLE_VER_UBUNTU_JAMMY"
@@ -858,9 +860,6 @@ function select_tags () {
 
     # Select default NIC tag.
     case "${TEST_CODE}" in
-        *"3n-dnv"* | *"2n-dnv"*)
-            default_nic="nic_intel-x553"
-            ;;
         *"3n-snr"*)
             default_nic="nic_intel-e822cq"
             ;;
@@ -870,10 +869,19 @@ function select_tags () {
         *"3n-icx"* | *"2n-icx"*)
             default_nic="nic_intel-xxv710"
             ;;
+        *"3na-spr"*)
+            default_nic="nic_mellanox-cx7veat"
+            ;;
+        *"3nb-spr"*)
+            default_nic="nic_intel-e810cq"
+            ;;
+        *"2n-spr"*)
+            default_nic="nic_intel-e810cq"
+            ;;
         *"2n-clx"* | *"2n-zn2"*)
             default_nic="nic_intel-xxv710"
             ;;
-        *"2n-tx2"* | *"3n-alt"* | *"mrr-daily-master")
+        *"2n-tx2"* | *"3n-alt"*)
             default_nic="nic_intel-xl710"
             ;;
         *"1n-aws"* | *"2n-aws"* | *"3n-aws"*)
@@ -890,14 +898,15 @@ function select_tags () {
     awk_nics_sub_cmd+='gsub("x710","10ge2p1x710");'
     awk_nics_sub_cmd+='gsub("xl710","40ge2p1xl710");'
     awk_nics_sub_cmd+='gsub("x520-da2","10ge2p1x520");'
-    awk_nics_sub_cmd+='gsub("x553","10ge2p1x553");'
     awk_nics_sub_cmd+='gsub("cx556a","100ge2p1cx556a");'
+    awk_nics_sub_cmd+='gsub("cx7veat","200ge2p1cx7veat");'
     awk_nics_sub_cmd+='gsub("e810cq","100ge2p1e810cq");'
     awk_nics_sub_cmd+='gsub("vic1227","10ge2p1vic1227");'
     awk_nics_sub_cmd+='gsub("vic1385","40ge2p1vic1385");'
     awk_nics_sub_cmd+='gsub("nitro-50g","50ge1p1ENA");'
     awk_nics_sub_cmd+='if ($9 =="drv_avf") drv="avf-";'
     awk_nics_sub_cmd+='else if ($9 =="drv_rdma_core") drv ="rdma-";'
+    awk_nics_sub_cmd+='else if ($9 =="drv_mlx5_core") drv ="mlx5-";'
     awk_nics_sub_cmd+='else if ($9 =="drv_af_xdp") drv ="af-xdp-";'
     awk_nics_sub_cmd+='else drv="";'
     awk_nics_sub_cmd+='if ($1 =="-") cores="";'
@@ -914,9 +923,15 @@ function select_tags () {
                 awk {"$awk_nics_sub_cmd"} || echo "devicetest") || die
             SELECTION_MODE="--test"
             ;;
+        *"hoststack-daily"* )
+            readarray -t test_tag_array <<< $(grep -v "#" \
+                ${tfd}/hoststack_daily/${DUT}-${NODENESS}-${FLAVOR}.md |
+                awk {"$awk_nics_sub_cmd"} || echo "perftest") || die
+            SELECTION_MODE="--test"
+            ;;
         *"ndrpdr-weekly"* )
             readarray -t test_tag_array <<< $(grep -v "#" \
-                ${tfd}/mlr_weekly/${DUT}-${NODENESS}-${FLAVOR}.md |
+                ${tfd}/ndrpdr_weekly/${DUT}-${NODENESS}-${FLAVOR}.md |
                 awk {"$awk_nics_sub_cmd"} || echo "perftest") || die
             SELECTION_MODE="--test"
             ;;
@@ -986,35 +1001,31 @@ function select_tags () {
         *"2n-icx"*)
             test_tag_array+=("!ipsechw")
             ;;
-        *"3n-icx"*)
+        *"2n-spr"*)
             test_tag_array+=("!ipsechw")
-            # Not enough nic_intel-xxv710 to support double link tests.
-            test_tag_array+=("!3_node_double_link_topoANDnic_intel-xxv710")
             ;;
-        *"2n-zn2"*)
+        *"2n-tx2"*)
             test_tag_array+=("!ipsechw")
             ;;
-        *"2n-dnv"*)
-            test_tag_array+=("!memif")
-            test_tag_array+=("!srv6_proxy")
-            test_tag_array+=("!vhost")
-            test_tag_array+=("!vts")
-            test_tag_array+=("!drv_avf")
+        *"2n-zn2"*)
+            test_tag_array+=("!ipsechw")
             ;;
-        *"2n-tx2"* | *"3n-alt"*)
+        *"3n-alt"*)
             test_tag_array+=("!ipsechw")
             ;;
-        *"3n-dnv"*)
-            test_tag_array+=("!memif")
-            test_tag_array+=("!srv6_proxy")
-            test_tag_array+=("!vhost")
-            test_tag_array+=("!vts")
-            test_tag_array+=("!drv_avf")
+        *"3n-icx"*)
+            test_tag_array+=("!ipsechw")
+            test_tag_array+=("!3_node_double_link_topoANDnic_intel-xxv710")
             ;;
         *"3n-snr"*)
             ;;
+        *"3na-spr"*)
+            test_tag_array+=("!ipsechw")
+            ;;
+        *"3nb-spr"*)
+            test_tag_array+=("!ipsechw")
+            ;;
         *"3n-tsh"*)
-            # 3n-tsh only has x520 NICs which don't work with AVF
             test_tag_array+=("!drv_avf")
             test_tag_array+=("!ipsechw")
             ;;
@@ -1109,6 +1120,14 @@ function select_topology () {
             TOPOLOGIES=( "${TOPOLOGIES_DIR}"/*3n_icx*.yaml )
             TOPOLOGIES_TAGS="3_node_*_link_topo"
             ;;
+        "3na_spr")
+            TOPOLOGIES=( "${TOPOLOGIES_DIR}"/*3na_spr*.yaml )
+            TOPOLOGIES_TAGS="3_node_*_link_topo"
+            ;;
+        "3nb_spr")
+            TOPOLOGIES=( "${TOPOLOGIES_DIR}"/*3nb_spr*.yaml )
+            TOPOLOGIES_TAGS="3_node_*_link_topo"
+            ;;
         "2n_clx")
             TOPOLOGIES=( "${TOPOLOGIES_DIR}"/*2n_clx*.yaml )
             TOPOLOGIES_TAGS="2_node_*_link_topo"
@@ -1117,13 +1136,9 @@ function select_topology () {
             TOPOLOGIES=( "${TOPOLOGIES_DIR}"/*2n_icx*.yaml )
             TOPOLOGIES_TAGS="2_node_*_link_topo"
             ;;
-        "2n_dnv")
-            TOPOLOGIES=( "${TOPOLOGIES_DIR}"/*2n_dnv*.yaml )
-            TOPOLOGIES_TAGS="2_node_single_link_topo"
-            ;;
-        "3n_dnv")
-            TOPOLOGIES=( "${TOPOLOGIES_DIR}"/*3n_dnv*.yaml )
-            TOPOLOGIES_TAGS="3_node_single_link_topo"
+        "2n_spr")
+            TOPOLOGIES=( "${TOPOLOGIES_DIR}"/*2n_spr*.yaml )
+            TOPOLOGIES_TAGS="2_node_*_link_topo"
             ;;
         "3n_snr")
             TOPOLOGIES=( "${TOPOLOGIES_DIR}"/*3n_snr*.yaml )
@@ -1207,7 +1222,8 @@ function untrap_and_unreserve_testbed () {
     # Variables read (by inner function):
     # - WORKING_TOPOLOGY - Path to topology yaml file of the reserved testbed.
     # - PYTHON_SCRIPTS_DIR - Path to directory holding Python scripts.
-    # Variables written:
+    # Variables set:
+    # - TERRAFORM_MODULE_DIR - Terraform module directory.
     # - WORKING_TOPOLOGY - Set to empty string on successful unreservation.
     # Trap unregistered:
     # - EXIT - Failure to untrap is reported, but ignored otherwise.
@@ -1229,6 +1245,7 @@ function untrap_and_unreserve_testbed () {
         }
         case "${TEST_CODE}" in
             *"1n-aws"* | *"2n-aws"* | *"3n-aws"*)
+                TERRAFORM_MODULE_DIR="terraform-aws-${NODENESS}-${FLAVOR}-c5n"
                 terraform_destroy || die "Failed to call terraform destroy."
                 ;;
             *)