Disable ucp metrics daemonset

Related-Prod: PRODX-3456
Change-Id: Ie824631ae2cc8c866bfc1a9e5a72a4d1db05f3cf
diff --git a/de/heat-templates/scripts/functions.sh b/de/heat-templates/scripts/functions.sh
index 79ce4d5..4def475 100644
--- a/de/heat-templates/scripts/functions.sh
+++ b/de/heat-templates/scripts/functions.sh
@@ -1109,3 +1109,26 @@
 EOF
     udevadm control --reload-rules && udevadm trigger
 }
+
+function disable_ucp_metrics {
+    function disable_ucp_metrics_retry {
+        ${_KUBECTL_CMD} -n kube-system patch daemonset ucp-metrics --type json -p \
+            '[{"op": "replace", "path": "/spec/template/spec/nodeSelector", "value":{"nonexisting-node": ""}}]'
+    }
+    function wait_ucp_metrics_disabled_retry {
+        disabled=$(${_KUBECTL_CMD} -n kube-system get daemonset ucp-metrics -o jsonpath="{.status}" \
+            | jq '[ .currentNumberScheduled, .desiredNumberScheduled, .numberReady ] | all(. == 0)')
+        if [[ $disabled != "true" ]]; then
+            /bin/false
+        fi
+    }
+    for i in {1..5}; do
+        echo "Waiting for daemonset ucp-metrics, try ${i}"
+        if ${_KUBECTL_CMD} -n kube-system get daemonset ucp-metrics; then
+            retry 10 "Disabling daemonset ucp-metrics" disable_ucp_metrics_retry
+            retry 10 "Waiting UCP metrics daemonset disbled" wait_ucp_metrics_disabled_retry
+            break
+        fi
+        sleep 30
+    done
+}
diff --git a/de/heat-templates/scripts/launch.sh b/de/heat-templates/scripts/launch.sh
index ece901d..4d2dfa6 100644
--- a/de/heat-templates/scripts/launch.sh
+++ b/de/heat-templates/scripts/launch.sh
@@ -158,6 +158,9 @@
             fi
             wait_for_node
             set_node_labels
+            if [[ "${KUBERNETES_INSTALLER}" == "ucp" ]]; then
+                disable_ucp_metrics
+            fi
             collect_ceph_metadata
             configure_contrack
             if [[ "${KUBERNETES_INSTALLER}" == "ucp" ]]; then