Add possibility to change k8s image

Added possibility to change hyperkube and calico
images and docker version before deploy k8s env.

Change-Id: I0de769fcfe6a6a5d4bff96f4b9dd7aeed72d87ca
Reviewed-on: https://review.gerrithub.io/362709
Reviewed-by: Tatyanka Leontovich <tleontovich@mirantis.com>
Tested-by: Tatyanka Leontovich <tleontovich@mirantis.com>
diff --git a/tcp_tests/templates/virtual-mcp11-k8s-calico/salt.yaml b/tcp_tests/templates/virtual-mcp11-k8s-calico/salt.yaml
index 69a3a41..4fda035 100644
--- a/tcp_tests/templates/virtual-mcp11-k8s-calico/salt.yaml
+++ b/tcp_tests/templates/virtual-mcp11-k8s-calico/salt.yaml
@@ -17,6 +17,10 @@
 {% set IPV4_NET_ADMIN_PREFIX = '.'.join(IPV4_NET_ADMIN.split('.')[0:3]) %}
 {% set IPV4_NET_CONTROL_PREFIX = '.'.join(IPV4_NET_CONTROL.split('.')[0:3]) %}
 
+# Set docker engine version if one exported as environment variables
+{% set DOCKER_ENGINE = os_env('DOCKER_ENGINE', "") %}
+{% set LAB_CONFIG_NAME = os_env('LAB_CONFIG_NAME', "virtual-mcp11-k8s-calico") %}
+
 # Install salt to the config node
 - description: Installing salt master on cfg01
   cmd:  apt-get install -y reclass git; apt-get install -y salt-master
@@ -236,6 +240,36 @@
   retry: {count: 1, delay: 5}
   skip_fail: false
 
+# Change environment configuration before deploy
+
+{% for image_prefix in "CALICOCTL CALICO CALICO_CNI HYPERKUBE NETCHECKER_AGENT NETCHECKER_SERVER".split() %}
+- description: Change {{ image_prefix.lower() }} image to custom if necessary
+  cmd: |
+    image_link={{ os_env('CUSTOM_IMAGE_' + image_prefix, "") }}
+    if [ -n "${image_link}" ]; then
+        echo "{{ image_prefix.lower() }} image link changed to "${image_link}""
+        salt -C 'I@salt:master' reclass.cluster_meta_set kubernetes_{{ image_prefix.lower() }}_image ${image_link}
+    else
+        echo "Custom {{ image_prefix.lower() }} image link is not set, skipped."
+    fi
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 1, delay: 5}
+  skip_fail: false
+{% endfor %}
+
+- description: Change docker engine version to custom if necessary
+  cmd: |
+     FILE="/srv/salt/reclass/classes/cluster/{{ LAB_CONFIG_NAME }}/kubernetes/compute.yml"
+     if [ -n "{{ DOCKER_ENGINE }}" ]; then
+       echo "Change docker engine version to: {{ DOCKER_ENGINE }}"
+       sed "s#docker-engine=.*#docker-engine={{ DOCKER_ENGINE }}#" -i.bak ${FILE}
+     else
+       echo "Custom docker engine version is not set, skipped."
+     fi
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 1, delay: 5}
+  skip_fail: false
+
 # Bootstrap all nodes
 
 - description: Configure linux on other nodes