Add timestamp to report file names for scripts which run tests

* Added functions.sh file to store reusable bash functions
* Replaced 'latest' in generated report names by timestamps

Related-PROD: PROD-37187
Change-Id: I9e2bc7989a685b0f2f94fb909a8f2f1cc7a6d803
diff --git a/k8s/workspace/functions.sh b/k8s/workspace/functions.sh
new file mode 100644
index 0000000..e6c6a1a
--- /dev/null
+++ b/k8s/workspace/functions.sh
@@ -0,0 +1,10 @@
+get_timestamp() {
+  # "update_latest_report" depends on this pattern (it looks for '%Y' which
+  # should match "20[0-9]{2} in this century).
+  # Make changes in "update_latest_report" if you change timestamp here
+	date +%Y-%m-%dT%H-%M
+}
+
+update_latest_report_to() {
+  cp "$1" "$(echo $1|sed s/20[0-9]\\{2\\}.*/latest.html/)"
+}
\ No newline at end of file
diff --git a/k8s/workspace/run-ceph-info-mos.sh b/k8s/workspace/run-ceph-info-mos.sh
index 6139daa..462b05b 100644
--- a/k8s/workspace/run-ceph-info-mos.sh
+++ b/k8s/workspace/run-ceph-info-mos.sh
@@ -1,4 +1,9 @@
 #!/bin/bash
+
+. "$(dirname "$0")/functions.sh"
 . /opt/cfg-checker/.checkervenv/bin/activate
-mos-checker ceph info --client-name $MY_CLIENTNAME --project-name $MY_PROJNAME --html $MY_PROJFOLDER/reports/$MY_CLIENTSHORTNAME-mos-ceph-info-01.html
+
+fname="$MY_PROJFOLDER/reports/$MY_CLIENTSHORTNAME-mos-ceph-info-$(get_timestamp).html"
+mos-checker ceph info --client-name $MY_CLIENTNAME --project-name $MY_PROJNAME --html "${fname}"
+update_latest_report_to "${fname}"
 deactivate
diff --git a/k8s/workspace/run-conformance-mcc.sh b/k8s/workspace/run-conformance-mcc.sh
index c6b8be4..c49bcb7 100644
--- a/k8s/workspace/run-conformance-mcc.sh
+++ b/k8s/workspace/run-conformance-mcc.sh
@@ -1,4 +1,6 @@
 #!/bin/bash
+
+. "$(dirname "$0")/functions.sh"
 tenv=mcc
 . /opt/si-tests/.sivenv/bin/activate
 cd $MY_PROJFOLDER/tmp
@@ -42,5 +44,7 @@
 fi
 cp ./artifacts/*.xml $MY_PROJFOLDER/reports/${tenv}-conformance/
 cd $MY_PROJFOLDER/reports/
-tparser -f r_xml --omit-status SKIP --force-single -d -r $MY_CLIENTSHORTNAME-${tenv}-conformance-latest.html $MY_PROJFOLDER/reports/${tenv}-conformance/
+fname="$MY_CLIENTSHORTNAME-${tenv}-conformance-$(get_timestamp).html"
+tparser -f r_xml --omit-status SKIP --force-single -d -r "${fname}" $MY_PROJFOLDER/reports/${tenv}-conformance/
+update_latest_report_to "${fname}"
 cd $MY_PROJFOLDER
diff --git a/k8s/workspace/run-conformance-mos.sh b/k8s/workspace/run-conformance-mos.sh
index 737c4ff..05e0bcc 100644
--- a/k8s/workspace/run-conformance-mos.sh
+++ b/k8s/workspace/run-conformance-mos.sh
@@ -1,4 +1,6 @@
 #!/bin/bash
+
+. "$(dirname "$0")/functions.sh"
 tenv=mos
 . /opt/si-tests/.sivenv/bin/activate
 cd $MY_PROJFOLDER/tmp
@@ -41,5 +43,7 @@
 fi
 cp ./artifacts/*.xml $MY_PROJFOLDER/reports/${tenv}-conformance/
 cd $MY_PROJFOLDER/reports/
-tparser -f r_xml --omit-status SKIP --force-single -d -r $MY_CLIENTSHORTNAME-${tenv}-conformance-latest.html $MY_PROJFOLDER/reports/${tenv}-conformance/
+fname="$MY_CLIENTSHORTNAME-${tenv}-conformance-$(get_timestamp).html"
+tparser -f r_xml --omit-status SKIP --force-single -d -r "${fname}" $MY_PROJFOLDER/reports/${tenv}-conformance/
+update_latest_report_to "${fname}"
 cd $MY_PROJFOLDER
diff --git a/k8s/workspace/run-k8s-perf.sh b/k8s/workspace/run-k8s-perf.sh
index c3cae14..549428d 100644
--- a/k8s/workspace/run-k8s-perf.sh
+++ b/k8s/workspace/run-k8s-perf.sh
@@ -1,4 +1,6 @@
 #!/bin/bash
+
+. "$(dirname "$0")/functions.sh"
 ##
 echo "### Checking rally environments"
 status=$(kubectl -n qa-space get pod | grep rally | tr -s " " | cut -d' ' -f3)
@@ -18,7 +20,8 @@
         kubectl exec -n qa-space --stdin rally -- rally task start /rally/rally-files/k8s-mos-scn-i100c5.yaml
 	# generate report
 	echo "# Generating report"
-	fname=$MY_CLIENTSHORTNAME-mos-k8s-perf-latest.html
+	fname="$MY_CLIENTSHORTNAME-mos-k8s-perf-$(get_timestamp).html"
 	kubectl exec -n qa-space --stdin rally -- rally task report $(kubectl exec -n qa-space --stdin rally -- rally task list | grep kubernetes | cut -d' ' -f2 | tail -1) --html-static --out ${fname}
-	kubectl cp qa-space/rally:/rally/${fname} $MY_PROJFOLDER/reports/${fname}
+	kubectl cp qa-space/rally:/rally/${fname} "${MY_PROJFOLDER}/reports/${fname}"
+	update_latest_report_to "${MY_PROJFOLDER}/reports/${fname}"
 fi
diff --git a/k8s/workspace/run-networks-mcc.sh b/k8s/workspace/run-networks-mcc.sh
index 5684078..d3aadc1 100644
--- a/k8s/workspace/run-networks-mcc.sh
+++ b/k8s/workspace/run-networks-mcc.sh
@@ -1,10 +1,12 @@
 #!/bin/bash
+
+. "$(dirname "$0")/functions.sh"
 cd /artifacts
 . env.sh
 . /opt/cfg-checker/.checkervenv/bin/activate
-
+fname="/artifacts/reports/$MY_CLIENTSHORTNAME-mcc-networks-$(get_timestamp).html"
 mos-checker --env-name $MY_CLIENTSHORTNAME-mcc --env-config /artifacts/envs/mcc-checker.env --kube-config /artifacts/envs/mcc-kubeconfig.yaml network check
-mos-checker --env-name $MY_CLIENTSHORTNAME-mcc --env-config /artifacts/envs/mcc-checker.env --kube-config /artifacts/envs/mcc-kubeconfig.yaml network report --html /artifacts/reports/$MY_CLIENTSHORTNAME-mcc-networks-01.html
-
+mos-checker --env-name $MY_CLIENTSHORTNAME-mcc --env-config /artifacts/envs/mcc-checker.env --kube-config /artifacts/envs/mcc-kubeconfig.yaml network report --html "${fname}"
+update_latest_report_to "${fname}"
 
 deactivate
diff --git a/k8s/workspace/run-networks-mos.sh b/k8s/workspace/run-networks-mos.sh
index 8355768..d538ae0 100644
--- a/k8s/workspace/run-networks-mos.sh
+++ b/k8s/workspace/run-networks-mos.sh
@@ -1,9 +1,12 @@
 #!/bin/bash
+
+. "$(dirname "$0")/functions.sh"
 cd /artifacts
 . env.sh
 . /opt/cfg-checker/.checkervenv/bin/activate
 
+fname="/artifacts/reports/$MY_CLIENTSHORTNAME-mos-networks-$(get_timestamp).html"
 mos-checker --env-name $MY_CLIENTSHORTNAME-mos --env-config /artifacts/envs/mos-checker.env --kube-config /artifacts/envs/mos-kubeconfig.yaml network check
-mos-checker --env-name $MY_CLIENTSHORTNAME-mos --env-config /artifacts/envs/mos-checker.env --kube-config /artifacts/envs/mos-kubeconfig.yaml network report --html /artifacts/reports/$MY_CLIENTSHORTNAME-mos-networks-01.html
-
+mos-checker --env-name $MY_CLIENTSHORTNAME-mos --env-config /artifacts/envs/mos-checker.env --kube-config /artifacts/envs/mos-kubeconfig.yaml network report --html "${fname}"
+update_latest_report_to "${fname}"
 deactivate
diff --git a/k8s/workspace/run-openstack-func-full.sh b/k8s/workspace/run-openstack-func-full.sh
index df02d60..52bec02 100644
--- a/k8s/workspace/run-openstack-func-full.sh
+++ b/k8s/workspace/run-openstack-func-full.sh
@@ -1,4 +1,6 @@
 #!/bin/bash
+
+. "$(dirname "$0")/functions.sh"
 tenv=mos
 . /opt/si-tests/.sivenv/bin/activate
 cd $MY_PROJFOLDER/tmp
@@ -63,5 +65,7 @@
 fi
 cp ./artifacts/*.xml $MY_PROJFOLDER/reports/${tenv}-func/
 cd $MY_PROJFOLDER/reports/
-tparser -f r_xml -d -r $MY_CLIENTSHORTNAME-${tenv}-openstack-func-full-latest.html $MY_PROJFOLDER/reports/${tenv}-func/
+fname="$MY_CLIENTSHORTNAME-${tenv}-openstack-func-full-$(get_timestamp).html"
+tparser -f r_xml -d -r "${fname}" $MY_PROJFOLDER/reports/${tenv}-func/
+update_latest_report_to "${fname}"
 cd $MY_PROJFOLDER
diff --git a/k8s/workspace/run-openstack-func-smoke.sh b/k8s/workspace/run-openstack-func-smoke.sh
index 165902f..1119b28 100644
--- a/k8s/workspace/run-openstack-func-smoke.sh
+++ b/k8s/workspace/run-openstack-func-smoke.sh
@@ -1,4 +1,6 @@
 #!/bin/bash
+
+. "$(dirname "$0")/functions.sh"
 tenv=mos
 . /opt/si-tests/.sivenv/bin/activate
 cd $MY_PROJFOLDER/tmp
@@ -63,5 +65,7 @@
 fi
 cp ./artifacts/*.xml $MY_PROJFOLDER/reports/${tenv}-func/
 cd $MY_PROJFOLDER/reports/
-tparser -f r_xml -d -r $MY_CLIENTSHORTNAME-${tenv}-openstack-func-smoke-latest.html $MY_PROJFOLDER/reports/${tenv}-func/
+fname="$MY_CLIENTSHORTNAME-${tenv}-openstack-func-smoke-$(get_timestamp).html"
+tparser -f r_xml -d -r "${fname}" $MY_PROJFOLDER/reports/${tenv}-func/
+update_latest_report_to "${fname}"
 cd $MY_PROJFOLDER
diff --git a/k8s/workspace/run-openstack-perf.sh b/k8s/workspace/run-openstack-perf.sh
index c66b5a0..ddc8798 100644
--- a/k8s/workspace/run-openstack-perf.sh
+++ b/k8s/workspace/run-openstack-perf.sh
@@ -1,4 +1,6 @@
 #!/bin/bash
+
+. "$(dirname "$0")/functions.sh"
 function kexec() {
 	kubectl exec -n qa-space --tty --stdin rally -- bash -c "${1}"
 }
@@ -57,7 +59,8 @@
 	kexec "rally env use ${uuid}; rally task start ${task_scn}"
 	# generate report
 	echo "# Generating report"
-	fname=$MY_CLIENTSHORTNAME-mos-openstack-perf-latest.html
+	fname="$MY_CLIENTSHORTNAME-mos-openstack-perf-$(get_timestamp).html"
 	kubectl exec -n qa-space --stdin rally -- rally task report $(kubectl exec -n qa-space --stdin rally -- rally task list | grep openstack | cut -d' ' -f2 | tail -1) --html-static --out ${fname}
 	kubectl cp qa-space/rally:/rally/${fname} $MY_PROJFOLDER/reports/${fname}
+	update_latest_report_to "$MY_PROJFOLDER/reports/${fname}"
 fi
diff --git a/k8s/workspace/run-packages-mcc.sh b/k8s/workspace/run-packages-mcc.sh
index 179d161..c3b16fc 100644
--- a/k8s/workspace/run-packages-mcc.sh
+++ b/k8s/workspace/run-packages-mcc.sh
@@ -1,6 +1,10 @@
 #!/bin/bash
+
+. "$(dirname "$0")/functions.sh"
 cd /artifacts
 . env.sh
 . /opt/cfg-checker/.checkervenv/bin/activate
-mos-checker --ssh-direct --kube-config /artifacts/envs/mcc-kubeconfig.yaml --env-name $MY_CLIENTSHORTNAME-mcc --env-config /artifacts/envs/mcc-checker.env packages report --html /artifacts/reports/$MY_CLIENTSHORTNAME-mcc-packages-01.html
+fname="/artifacts/reports/$MY_CLIENTSHORTNAME-mcc-packages-$(get_timestamp).html"
+mos-checker --ssh-direct --kube-config /artifacts/envs/mcc-kubeconfig.yaml --env-name $MY_CLIENTSHORTNAME-mcc --env-config /artifacts/envs/mcc-checker.env packages report --html "${fname}"
+update_latest_report_to "${fname}"
 deactivate
diff --git a/k8s/workspace/run-packages-mos.sh b/k8s/workspace/run-packages-mos.sh
index 2740652..a2fa3a2 100644
--- a/k8s/workspace/run-packages-mos.sh
+++ b/k8s/workspace/run-packages-mos.sh
@@ -1,6 +1,10 @@
 #!/bin/bash
+
+. "$(dirname "$0")/functions.sh"
 cd /artifacts
 . env.sh
 . /opt/cfg-checker/.checkervenv/bin/activate
-mos-checker --ssh-direct --kube-config /artifacts/envs/mos-kubeconfig.yaml --env-name $MY_CLIENTSHORTNAME-mos --env-config /artifacts/envs/mos-checker.env packages report --html /artifacts/reports/$MY_CLIENTSHORTNAME-mos-packages-01.html
+fname="/artifacts/reports/$MY_CLIENTSHORTNAME-mos-packages-$(get_timestamp).html"
+mos-checker --ssh-direct --kube-config /artifacts/envs/mos-kubeconfig.yaml --env-name $MY_CLIENTSHORTNAME-mos --env-config /artifacts/envs/mos-checker.env packages report --html "${fname}"
+update_latest_report_to "${fname}"
 deactivate
diff --git a/k8s/workspace/run-stacklight-mcc.sh b/k8s/workspace/run-stacklight-mcc.sh
index 058a3d5..a235370 100644
--- a/k8s/workspace/run-stacklight-mcc.sh
+++ b/k8s/workspace/run-stacklight-mcc.sh
@@ -1,5 +1,6 @@
 #!/bin/bash
 
+. "$(dirname "$0")/functions.sh"
 tenv=mcc
 . /opt/si-tests/.sivenv/bin/activate
 cd $MY_PROJFOLDER/tmp
@@ -75,5 +76,7 @@
 fi
 cp ./artifacts/*.xml $MY_PROJFOLDER/reports/${tenv}-stacklight/
 cd $MY_PROJFOLDER/reports/
-tparser -f r_xml -d -r $MY_CLIENTSHORTNAME-${tenv}-stacklight-latest.html $MY_PROJFOLDER/reports/${tenv}-stacklight/
+fname="$MY_CLIENTSHORTNAME-${tenv}-stacklight-$(get_timestamp).html"
+tparser -f r_xml -d -r "${fname}" $MY_PROJFOLDER/reports/${tenv}-stacklight/
+update_latest_report_to "$MY_PROJFOLDER/reports/${fname}"
 cd $MY_PROJFOLDER
diff --git a/k8s/workspace/run-stacklight-mos.sh b/k8s/workspace/run-stacklight-mos.sh
index 6b73693..8a1cc71 100644
--- a/k8s/workspace/run-stacklight-mos.sh
+++ b/k8s/workspace/run-stacklight-mos.sh
@@ -1,5 +1,6 @@
 #!/bin/bash
 
+. "$(dirname "$0")/functions.sh"
 tenv=mos
 . /opt/si-tests/.sivenv/bin/activate
 cd $MY_PROJFOLDER/tmp
@@ -83,5 +84,7 @@
 fi
 cp ./artifacts/*.xml $MY_PROJFOLDER/reports/${tenv}-stacklight/
 cd $MY_PROJFOLDER/reports/
-tparser -f r_xml -d -r $MY_CLIENTSHORTNAME-${tenv}-stacklight-latest.html $MY_PROJFOLDER/reports/${tenv}-stacklight/
+fname="$MY_CLIENTSHORTNAME-${tenv}-stacklight-$(get_timestamp).html"
+tparser -f r_xml -d -r "${fname}" $MY_PROJFOLDER/reports/${tenv}-stacklight/
+update_latest_report_to "$MY_PROJFOLDER/reports/${fname}"
 cd $MY_PROJFOLDER