Add env variabled for k8s install

* Added env variables for change k8s parameters
before install.
* Added step for deploy contrail+k8s.
* Fixed overwrite parameters for k8s stage.

Change-Id: Ic1b256b70de7237a26b28f242eeaa61eace9be7a
diff --git a/lab-pipeline.groovy b/lab-pipeline.groovy
index 00ca703..67efea7 100644
--- a/lab-pipeline.groovy
+++ b/lab-pipeline.groovy
@@ -174,48 +174,83 @@
 
             // install k8s
             if (common.checkContains('STACK_INSTALL', 'k8s')) {
+
+                stage('Overwrite Kubernetes parameters') {
+
+                    // Overwrite Kubernetes vars if specified
+                    if (env.getEnvironment().containsKey('KUBERNETES_HYPERKUBE_IMAGE')) {
+                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', ['kubernetes_hyperkube_image', KUBERNETES_HYPERKUBE_IMAGE])
+                    }
+                    if (env.getEnvironment().containsKey('MTU')) {
+                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', ['kubernetes_mtu', MTU])
+                    }
+
+                    // Overwrite Calico vars if specified
+                    if (env.getEnvironment().containsKey('CALICO_CNI_IMAGE')) {
+                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', ['kubernetes_calico_cni_image', CALICO_CNI_IMAGE])
+                    }
+                    if (env.getEnvironment().containsKey('CALICO_NODE_IMAGE')) {
+                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', ['kubernetes_calico_image', CALICO_NODE_IMAGE])
+                    }
+                    if (env.getEnvironment().containsKey('CALICOCTL_IMAGE')) {
+                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', ['kubernetes_calicoctl_image', CALICOCTL_IMAGE])
+                    }
+                    if (env.getEnvironment().containsKey('CALICO_POLICY_IMAGE')) {
+                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', ['kubernetes_calico_policy_image', CALICO_POLICY_IMAGE])
+                    }
+
+                    // Overwrite Virtlet image if specified
+                    if (env.getEnvironment().containsKey('VIRTLET_IMAGE')) {
+                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', ['kubernetes_virtlet_image', VIRTLET_IMAGE])
+                    }
+
+                    // Overwrite netchecker vars if specified
+                    if (env.getEnvironment().containsKey('NETCHECKER_AGENT_IMAGE')) {
+                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', ['kubernetes_netchecker_agent_image', NETCHECKER_AGENT_IMAGE])
+                    }
+                    if (env.getEnvironment().containsKey('NETCHECKER_SERVER_IMAGE')) {
+                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', ['kubernetes_netchecker_server_image', NETCHECKER_SERVER_IMAGE])
+                    }
+
+                    // Overwrite docker version if specified
+                    if (env.getEnvironment().containsKey('DOCKER_ENGINE')) {
+                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', ['kubernetes_docker_package', DOCKER_ENGINE])
+                    }
+
+                    // Overwrite addons vars if specified
+                    if (env.getEnvironment().containsKey('HELM_ENABLED')) {
+                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', ['kubernetes_helm_enabled', HELM_ENABLED])
+                    }
+                    if (env.getEnvironment().containsKey('NETCHECKER_ENABLED')) {
+                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', ['kubernetes_netchecker_enabled', NETCHECKER_ENABLED])
+                    }
+                    if (env.getEnvironment().containsKey('CALICO_POLICY_ENABLED')) {
+                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', ['kubernetes_calico_policy_enabled', CALICO_POLICY_ENABLED])
+                    }
+                    if (env.getEnvironment().containsKey('VIRTLET_ENABLED')) {
+                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', ['kubernetes_virtlet_enabled', VIRTLET_ENABLED])
+                    }
+                    if (env.getEnvironment().containsKey('KUBE_NET_MANAGER_ENABLED')) {
+                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', ['kubernetes_kube_network_manager_enabled', KUBE_NET_MANAGER_ENABLED])
+                    }
+                 }
+
+                // If k8s install with contrail network manager then contrail need to be install first
+                if (common.checkContains('STACK_INSTALL', 'contrail')) {
+                    stage('Install Contrail for Kubernetes') {
+                        orchestrate.installContrailNetwork(saltMaster)
+                        orchestrate.installContrailCompute(saltMaster)
+                        orchestrate.installKubernetesContrailCompute(saltMaster)
+                    }
+                }
+
                 stage('Install Kubernetes infra') {
                     orchestrate.installKubernetesInfra(saltMaster)
                 }
 
                 stage('Install Kubernetes control') {
-
-                    // Overwrite Kubernetes vars if specified
-                    if (env.getEnvironment().containsKey('KUBERNETES_HYPERKUBE_IMAGE')) {
-                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', 'kubernetes_hyperkube_image', KUBERNETES_HYPERKUBE_IMAGE)
-                    }
-                    if (env.getEnvironment().containsKey('MTU')) {
-                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', 'kubernetes_mtu', MTU)
-                    }
-                    // Overwrite Calico vars if specified
-                    if (env.getEnvironment().containsKey('CALICO_CNI_IMAGE')) {
-                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', 'kubernetes_calico_cni_image', CALICO_CNI_IMAGE)
-                    }
-                    if (env.getEnvironment().containsKey('CALICO_NODE_IMAGE')) {
-                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', 'kubernetes_calico_image', CALICO_NODE_IMAGE)
-                    }
-                    if (env.getEnvironment().containsKey('CALICOCTL_IMAGE')) {
-                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', 'kubernetes_calicoctl_image', CALICOCTL_IMAGE)
-                    }
-
-                    // Overwrite netchecker vars if specified
-                    if (env.getEnvironment().containsKey('NETCHECKER_AGENT_IMAGE')) {
-                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', 'kubernetes_netchecker_agent_image', NETCHECKER_AGENT_IMAGE)
-                    }
-                    if (env.getEnvironment().containsKey('NETCHECKER_SERVER_IMAGE')) {
-                        salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'reclass.cluster_meta_set', 'kubernetes_netchecker_server_image', NETCHECKER_SERVER_IMAGE)
-                    }
-
                     orchestrate.installKubernetesControl(saltMaster)
                 }
-
-
-                if (common.checkContains('STACK_INSTALL', 'contrail')) {
-                    state('Install Contrail for Kubernetes') {
-                        orchestrate.installContrailNetwork(saltMaster)
-                        orchestrate.installContrailCompute(saltMaster)
-                    }
-                }
             }
 
             // install openstack