Merge "[virtual-mcp11-k8s-contrail ] Fix incorrect params"
diff --git a/classes/cluster/k8s_aio_calico/infra/config.yml b/classes/cluster/k8s_aio_calico/infra/config.yml
index de701cf..c8f630f 100644
--- a/classes/cluster/k8s_aio_calico/infra/config.yml
+++ b/classes/cluster/k8s_aio_calico/infra/config.yml
@@ -31,7 +31,7 @@
           expression: all
           node_param:
             single_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
             linux_system_codename:
               value_template: <<node_os>>
             salt_master_host:
@@ -40,24 +40,24 @@
           expression: <<node_hostname>>__startswith__cfg
           cluster_param:
             infra_config_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
             infra_config_deploy_address:
-              value_template: <<node_ip>>
+              value_template: <<node_deploy_ip>>
         kubernetes_control01:
           expression: <<node_hostname>>__equals__ctl01
           cluster_param:
             kubernetes_control_node01_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         kubernetes_control02:
           expression: <<node_hostname>>__equals__ctl02
           cluster_param:
             kubernetes_control_node02_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         kubernetes_control03:
           expression: <<node_hostname>>__equals__ctl03
           cluster_param:
             kubernetes_control_node03_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         kubernetes_compute:
           expression: <<node_hostname>>__startswith__cmp
           node_class:
diff --git a/classes/cluster/k8s_ha_calico/infra/config.yml b/classes/cluster/k8s_ha_calico/infra/config.yml
index 4965229..a31351f 100644
--- a/classes/cluster/k8s_ha_calico/infra/config.yml
+++ b/classes/cluster/k8s_ha_calico/infra/config.yml
@@ -31,7 +31,7 @@
           expression: all
           node_param:
             single_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
             linux_system_codename:
               value_template: <<node_os>>
             salt_master_host:
@@ -40,24 +40,26 @@
           expression: <<node_hostname>>__startswith__cfg
           cluster_param:
             infra_config_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
             infra_config_deploy_address:
-              value_template: <<node_ip>>
+              value_template: <<node_deploy_ip>>
+            cluster_domain:
+              value_template: <<node_domain>>
         kubernetes_control01:
           expression: <<node_hostname>>__equals__ctl01
           cluster_param:
             kubernetes_control_node01_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         kubernetes_control02:
           expression: <<node_hostname>>__equals__ctl02
           cluster_param:
             kubernetes_control_node02_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         kubernetes_control03:
           expression: <<node_hostname>>__equals__ctl03
           cluster_param:
             kubernetes_control_node03_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         kubernetes_compute:
           expression: <<node_hostname>>__startswith__cmp
           node_class:
diff --git a/classes/cluster/k8s_ha_contrail/infra/config.yml b/classes/cluster/k8s_ha_contrail/infra/config.yml
index d93ba67..7a50368 100644
--- a/classes/cluster/k8s_ha_contrail/infra/config.yml
+++ b/classes/cluster/k8s_ha_contrail/infra/config.yml
@@ -19,27 +19,68 @@
     linux_system_codename: xenial
     salt_api_password_hash: "$6$WV0P1shnoDh2gI/Z$22/Bcd7ffMv0jDlFpT63cAU4PiXHz9pjXwngToKwqAsgoeK4HNR3PiKaushjxp3JsQ8hNoJmAC6TxzVqfV8WH/"
     salt_master_host: ${_param:infra_config_deploy_address}
+  salt:
+    master:
+      reactor:
+        reclass/minion/classify:
+        - salt://reclass/reactor/node_register.sls
   reclass:
     storage:
+      class_mapping:
+        common_node:
+          expression: all
+          node_param:
+            single_address:
+              value_template: <<node_control_ip>>
+            linux_system_codename:
+              value_template: <<node_os>>
+            salt_master_host:
+              value_template: <<node_master_ip>>
+        infra_config:
+          expression: <<node_hostname>>__startswith__cfg
+          cluster_param:
+            infra_config_address:
+              value_template: <<node_control_ip>>
+            infra_config_deploy_address:
+              value_template: <<node_deploy_ip>>
+            cluster_domain:
+              value_template: <<node_domain>>
+        kubernetes_control01:
+          expression: <<node_hostname>>__equals__ctl01
+          cluster_param:
+            kubernetes_control_node01_address:
+              value_template: <<node_control_ip>>
+        kubernetes_control02:
+          expression: <<node_hostname>>__equals__ctl02
+          cluster_param:
+            kubernetes_control_node02_address:
+              value_template: <<node_control_ip>>
+        kubernetes_control03:
+          expression: <<node_hostname>>__equals__ctl03
+          cluster_param:
+            kubernetes_control_node03_address:
+              value_template: <<node_control_ip>>
+        opencontrail_control01:
+          expression: <<node_hostname>>__equals__ntw01
+          cluster_param:
+            opencontrail_control_node01_address:
+              value_template: <<node_control_ip>>
+        opencontrail_control02:
+          expression: <<node_hostname>>__equals__ntw02
+          cluster_param:
+            opencontrail_control_node02_address:
+              value_template: <<node_control_ip>>
+        opencontrail_control03:
+          expression: <<node_hostname>>__equals__ntw03
+          cluster_param:
+            opencontrail_control_node03_address:
+              value_template: <<node_control_ip>>
+        kubernetes_compute:
+          expression: <<node_hostname>>__startswith__cmp
+          node_class:
+            value_template:
+              - cluster.<<node_cluster>>.kubernetes.compute
       node:
-        kubernetes_compute_node01:
-          name: ${_param:kubernetes_compute_node01_hostname}
-          domain: ${_param:cluster_domain}
-          classes:
-          - cluster.${_param:cluster_name}.kubernetes.compute
-          params:
-            salt_master_host: ${_param:infra_config_deploy_address}
-            linux_system_codename: xenial
-            single_address: ${_param:kubernetes_compute_node01_address}
-        kubernetes_compute_node02:
-          name: ${_param:kubernetes_compute_node02_hostname}
-          domain: ${_param:cluster_domain}
-          classes:
-          - cluster.${_param:cluster_name}.kubernetes.compute
-          params:
-            salt_master_host: ${_param:infra_config_deploy_address}
-            linux_system_codename: xenial
-            single_address: ${_param:kubernetes_compute_node02_address}
         opencontrail_control_node01:
           params:
             rabbitmq_cluster_role: master
diff --git a/classes/cluster/k8s_ha_contrail/infra/init.yml b/classes/cluster/k8s_ha_contrail/infra/init.yml
index d36c573..750d100 100644
--- a/classes/cluster/k8s_ha_contrail/infra/init.yml
+++ b/classes/cluster/k8s_ha_contrail/infra/init.yml
@@ -1,13 +1,7 @@
-alasses:
-- system.linux.system.single
+classes:
 - system.linux.system.repo.mcp.extra
 - system.linux.system.repo.mcp.salt
 - system.linux.system.repo.ubuntu
-- system.openssh.server.team.lab
-- system.openssh.server.team.tcpcloud
-- system.openssh.server.team.mcp_qa
-- system.openssh.server.team.k8s_team
-- system.rsyslog.client.single
 parameters:
   _param:
     # infra service addresses
diff --git a/classes/cluster/k8s_ha_contrail/init.yml b/classes/cluster/k8s_ha_contrail/init.yml
index 4cfdd17..7ea51c3 100644
--- a/classes/cluster/k8s_ha_contrail/init.yml
+++ b/classes/cluster/k8s_ha_contrail/init.yml
@@ -1,5 +1,10 @@
 classes:
+- system.linux.system.single
 - cluster.k8s_ha_contrail.kubernetes
 - cluster.k8s_ha_contrail.opencontrail
 - cluster.k8s_ha_contrail.infra
+- system.openssh.server.team.lab
+- system.openssh.server.team.tcpcloud
+- system.openssh.server.team.mcp_qa
+- system.openssh.server.team.k8s_team
 - cluster.overrides
diff --git a/classes/cluster/k8s_ha_contrail/kubernetes/compute.yml b/classes/cluster/k8s_ha_contrail/kubernetes/compute.yml
index b6340e5..3e082b7 100644
--- a/classes/cluster/k8s_ha_contrail/kubernetes/compute.yml
+++ b/classes/cluster/k8s_ha_contrail/kubernetes/compute.yml
@@ -3,9 +3,8 @@
 - system.kubernetes.pool.cluster
 - system.salt.minion.cert.k8s_client
 - system.salt.minion.cert.etcd_client
-- cluster.k8s_ha_contrail.infra
 - cluster.k8s_ha_contrail.opencontrail.compute
-- cluster.overrides
+- cluster.k8s_ha_contrail
 parameters:
   linux:
     network:
diff --git a/classes/cluster/k8s_ha_contrail/kubernetes/control.yml b/classes/cluster/k8s_ha_contrail/kubernetes/control.yml
index 19f9217..6b84d95 100644
--- a/classes/cluster/k8s_ha_contrail/kubernetes/control.yml
+++ b/classes/cluster/k8s_ha_contrail/kubernetes/control.yml
@@ -5,7 +5,7 @@
 - system.salt.minion.cert.etcd_server
 - system.kubernetes.master.cluster
 - cluster.k8s_ha_contrail.kubernetes.compute
-- cluster.overrides
+- cluster.k8s_ha_contrail
 parameters:
   _param:
     keepalived_vip_interface: vhost0
diff --git a/classes/cluster/k8s_ha_contrail/kubernetes/init.yml b/classes/cluster/k8s_ha_contrail/kubernetes/init.yml
index acc7e93..d999c6b 100644
--- a/classes/cluster/k8s_ha_contrail/kubernetes/init.yml
+++ b/classes/cluster/k8s_ha_contrail/kubernetes/init.yml
@@ -30,13 +30,9 @@
     kubernetes_control_node01_hostname: ctl01
     kubernetes_control_node02_hostname: ctl02
     kubernetes_control_node03_hostname: ctl03
-    kubernetes_compute_node01_hostname: cmp01
-    kubernetes_compute_node02_hostname: cmp02
     kubernetes_control_node01_address: 172.16.10.101
     kubernetes_control_node02_address: 172.16.10.102
     kubernetes_control_node03_address: 172.16.10.103
-    kubernetes_compute_node01_address: 172.16.10.105
-    kubernetes_compute_node02_address: 172.16.10.106
     kubernetes_proxy_node01_hostname: prx01
     kubernetes_proxy_node01_address: 172.16.10.121
 
@@ -81,16 +77,6 @@
           names:
           - ${_param:kubernetes_control_node03_hostname}
           - ${_param:kubernetes_control_node03_hostname}.${_param:cluster_domain}
-        cmp01:
-          address: ${_param:kubernetes_compute_node01_address}
-          names:
-          - ${_param:kubernetes_compute_node01_hostname}
-          - ${_param:kubernetes_compute_node01_hostname}.${_param:cluster_domain}
-        cmp02:
-          address: ${_param:kubernetes_compute_node02_address}
-          names:
-          - ${_param:kubernetes_compute_node02_hostname}
-          - ${_param:kubernetes_compute_node02_hostname}.${_param:cluster_domain}
         prx01:
           address: ${_param:kubernetes_proxy_node01_address}
           names:
diff --git a/classes/cluster/k8s_ha_contrail/opencontrail/control.yml b/classes/cluster/k8s_ha_contrail/opencontrail/control.yml
index f1b01e9..aa7e12a 100644
--- a/classes/cluster/k8s_ha_contrail/opencontrail/control.yml
+++ b/classes/cluster/k8s_ha_contrail/opencontrail/control.yml
@@ -14,7 +14,7 @@
 - system.opencontrail.client.resource.database_node
 - system.opencontrail.client.resource.analytics_node
 - system.haproxy.proxy.listen.opencontrail.analytics
-- cluster.k8s_ha_contrail.infra
+- cluster.k8s_ha_contrail
 parameters:
   _param:
     keepalived_vip_interface: eth1
diff --git a/classes/cluster/os_aio_contrail/infra/init.yml b/classes/cluster/os_aio_contrail/infra/init.yml
index 5ac5070..f21606b 100755
--- a/classes/cluster/os_aio_contrail/infra/init.yml
+++ b/classes/cluster/os_aio_contrail/infra/init.yml
@@ -4,6 +4,7 @@
     cluster_name: os_aio_contrail
     infra_config_address: 172.16.10.100
     infra_config_hostname: cfg01
+    linux_system_repo_mcp_salt_version: nightly
   linux:
     network:
       host:
diff --git a/classes/cluster/os_ha_contrail/infra/config.yml b/classes/cluster/os_ha_contrail/infra/config.yml
index 98e231c..16d7f32 100755
--- a/classes/cluster/os_ha_contrail/infra/config.yml
+++ b/classes/cluster/os_ha_contrail/infra/config.yml
@@ -19,9 +19,6 @@
 - system.mysql.client.single
 - system.reclass.storage.system.openstack_control_cluster
 - system.reclass.storage.system.opencontrail_control_cluster
-- system.reclass.storage.system.openstack_compute_multi
-- system.reclass.storage.system.openstack_dashboard_single
-- system.reclass.storage.system.openstack_proxy_single
 - cluster.os_ha_contrail.openstack.proxy
 - cluster.os_ha_contrail.openstack.dashboard
 - cluster.os_ha_contrail
@@ -29,8 +26,8 @@
   _param:
     reclass_data_repository: "https://gerrit.mcp.mirantis.net/salt-models/mcp-virtual-lab"
     reclass_data_revision: master
-    reclass_config_master: 192.168.10.100
-    single_address: 172.16.10.100
+    reclass_config_master: ${_param:infra_config_deploy_address}
+    single_address: ${_param:infra_config_address}
     salt_master_host: 127.0.0.1
     salt_master_base_environment: prd
     salt_minion_ca_host: ${linux:network:fqdn}
@@ -52,8 +49,72 @@
             host: prx
         nginx_proxy_openstack_api_heat_cfn:
           enabled: false
+  salt:
+    master:
+      reactor:
+        reclass/minion/classify:
+        - salt://reclass/reactor/node_register.sls
   reclass:
     storage:
+      class_mapping:
+        common_node:
+          expression: all
+          node_param:
+            single_address:
+              value_template: <<node_control_ip>>
+            linux_system_codename:
+              value_template: <<node_os>>
+            salt_master_host:
+              value_template: <<node_master_ip>>
+        infra_config:
+          expression: <<node_hostname>>__startswith__cfg
+          cluster_param:
+            infra_config_address:
+              value_template: <<node_control_ip>>
+            infra_config_deploy_address:
+              value_template: <<node_deploy_ip>>
+            cluster_domain:
+              value_template: <<node_domain>>
+        openstack_control01:
+          expression: <<node_hostname>>__equals__ctl01
+          cluster_param:
+            openstack_control_node01_address:
+              value_template: <<node_control_ip>>
+        openstack_control02:
+          expression: <<node_hostname>>__equals__ctl02
+          cluster_param:
+            openstack_control_node02_address:
+              value_template: <<node_control_ip>>
+        openstack_control03:
+          expression: <<node_hostname>>__equals__ctl03
+          cluster_param:
+            openstack_control_node03_address:
+              value_template: <<node_control_ip>>
+        opencontrail_control01:
+          expression: <<node_hostname>>__equals__ntw01
+          cluster_param:
+            opencontrail_control_node01_address:
+              value_template: <<node_control_ip>>
+        opencontrail_control02:
+          expression: <<node_hostname>>__equals__ntw02
+          cluster_param:
+            opencontrail_control_node02_address:
+              value_template: <<node_control_ip>>
+        opencontrail_control03:
+          expression: <<node_hostname>>__equals__ntw03
+          cluster_param:
+            opencontrail_control_node03_address:
+              value_template: <<node_control_ip>>  
+        openstack_compute:
+          expression: <<node_hostname>>__startswith__cmp
+          node_class:
+            value_template:
+              - cluster.<<node_cluster>>.openstack.compute
+          node_param:
+            tenant_address:
+              value_template: <<node_tenant_ip>>
+            external_address:
+              value_template: <<node_external_ip>>
       node:
         openstack_control_node01:
           classes:
@@ -73,8 +134,3 @@
           params:
             mysql_cluster_role: slave
             linux_system_codename: xenial
-        openstack_proxy_node01:
-          classes:
-          - cluster.os_ha_contrail.openstack.proxy
-          params:
-            linux_system_codename: xenial
diff --git a/classes/cluster/os_ha_contrail/infra/init.yml b/classes/cluster/os_ha_contrail/infra/init.yml
index 635aeb2..2836e2f 100755
--- a/classes/cluster/os_ha_contrail/infra/init.yml
+++ b/classes/cluster/os_ha_contrail/infra/init.yml
@@ -4,6 +4,7 @@
     cluster_name: os_ha_contrail
     infra_config_address: 172.16.10.100
     infra_config_hostname: cfg01
+    linux_system_repo_mcp_salt_version: nightly
   linux:
     network:
       host:
diff --git a/classes/cluster/os_ha_ovs/infra/config.yml b/classes/cluster/os_ha_ovs/infra/config.yml
index d888e25..3c16c65 100644
--- a/classes/cluster/os_ha_ovs/infra/config.yml
+++ b/classes/cluster/os_ha_ovs/infra/config.yml
@@ -60,7 +60,7 @@
           expression: all
           node_param:
             single_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
             linux_system_codename:
               value_template: <<node_os>>
             salt_master_host:
@@ -69,24 +69,26 @@
           expression: <<node_hostname>>__startswith__cfg
           cluster_param:
             infra_config_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
             infra_config_deploy_address:
-              value_template: <<node_ip>>
+              value_template: <<node_deploy_ip>>
+            cluster_domain:
+              value_template: <<node_domain>>
         openstack_control01:
           expression: <<node_hostname>>__equals__ctl01
           cluster_param:
             openstack_control_node01_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         openstack_control02:
           expression: <<node_hostname>>__equals__ctl02
           cluster_param:
             openstack_control_node02_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         openstack_control03:
           expression: <<node_hostname>>__equals__ctl03
           cluster_param:
             openstack_control_node03_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         openstack_compute:
           expression: <<node_hostname>>__startswith__cmp
           node_class:
diff --git a/classes/cluster/sl_k8s_calico/infra/config.yml b/classes/cluster/sl_k8s_calico/infra/config.yml
index c957e6c..596d18f 100644
--- a/classes/cluster/sl_k8s_calico/infra/config.yml
+++ b/classes/cluster/sl_k8s_calico/infra/config.yml
@@ -32,7 +32,7 @@
           expression: all
           node_param:
             single_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
             linux_system_codename:
               value_template: <<node_os>>
             salt_master_host:
@@ -41,9 +41,11 @@
           expression: <<node_hostname>>__startswith__cfg
           cluster_param:
             infra_config_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
             infra_config_deploy_address:
-              value_template: <<node_ip>>
+              value_template: <<node_deploy_ip>>
+            cluster_domain:
+              value_template: <<node_domain>>
         infra_proxy:
           expression: <<node_hostname>>__startswith__prx
           node_class:
@@ -53,17 +55,17 @@
           expression: <<node_hostname>>__equals__ctl01
           cluster_param:
             kubernetes_control_node01_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         kubernetes_control02:
           expression: <<node_hostname>>__equals__ctl02
           cluster_param:
             kubernetes_control_node02_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         kubernetes_control03:
           expression: <<node_hostname>>__equals__ctl03
           cluster_param:
             kubernetes_control_node03_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         kubernetes_compute:
           expression: <<node_hostname>>__startswith__cmp
           node_class:
@@ -73,17 +75,17 @@
           expression: <<node_hostname>>__equals__mon01
           cluster_param:
             stacklight_node01_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         stacklight_monitor02:
           expression: <<node_hostname>>__equals__mon02
           cluster_param:
             stacklight_node02_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         stacklight_monitor03:
           expression: <<node_hostname>>__equals__mon03
           cluster_param:
             stacklight_node03_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
       node:
         prx_node:
           name: ${_param:kubernetes_proxy_node01_hostname}
diff --git a/classes/cluster/sl_k8s_contrail/infra/config.yml b/classes/cluster/sl_k8s_contrail/infra/config.yml
index a908d66..9af6915 100644
--- a/classes/cluster/sl_k8s_contrail/infra/config.yml
+++ b/classes/cluster/sl_k8s_contrail/infra/config.yml
@@ -8,7 +8,7 @@
 - system.salt.minion.cert.k8s_server
 - system.reclass.storage.system.kubernetes_control_cluster
 - system.reclass.storage.system.opencontrail_control_cluster
-- cluster.k8s_ha_contrail
+- cluster.sl_k8s_contrail
 parameters:
   _param:
     salt_master_base_environment: prd
@@ -19,27 +19,87 @@
     linux_system_codename: xenial
     salt_api_password_hash: "$6$WV0P1shnoDh2gI/Z$22/Bcd7ffMv0jDlFpT63cAU4PiXHz9pjXwngToKwqAsgoeK4HNR3PiKaushjxp3JsQ8hNoJmAC6TxzVqfV8WH/"
     salt_master_host: ${_param:infra_config_deploy_address}
+  salt:
+    master:
+      reactor:
+        reclass/minion/classify:
+        - salt://reclass/reactor/node_register.sls
   reclass:
     storage:
-      node:
-        kubernetes_compute_node01:
-          name: ${_param:kubernetes_compute_node01_hostname}
-          domain: ${_param:cluster_domain}
-          classes:
-          - cluster.${_param:cluster_name}.kubernetes.compute
-          params:
-            salt_master_host: ${_param:infra_config_deploy_address}
-            linux_system_codename: xenial
-            single_address: ${_param:kubernetes_compute_node01_address}
-        kubernetes_compute_node02:
-          name: ${_param:kubernetes_compute_node02_hostname}
-          domain: ${_param:cluster_domain}
-          classes:
-          - cluster.${_param:cluster_name}.kubernetes.compute
-          params:
-            salt_master_host: ${_param:infra_config_deploy_address}
-            linux_system_codename: xenial
-            single_address: ${_param:kubernetes_compute_node02_address}
+      class_mapping:
+        common_node:
+          expression: all
+          node_param:
+            single_address:
+              value_template: <<node_control_ip>>
+            linux_system_codename:
+              value_template: <<node_os>>
+            salt_master_host:
+              value_template: <<node_master_ip>>
+        infra_config:
+          expression: <<node_hostname>>__startswith__cfg
+          cluster_param:
+            infra_config_address:
+              value_template: <<node_control_ip>>
+            infra_config_deploy_address:
+              value_template: <<node_deploy_ip>>
+            cluster_domain:
+              value_template: <<node_domain>>
+        kubernetes_control01:
+          expression: <<node_hostname>>__equals__ctl01
+          cluster_param:
+            kubernetes_control_node01_address:
+              value_template: <<node_control_ip>>
+        kubernetes_control02:
+          expression: <<node_hostname>>__equals__ctl02
+          cluster_param:
+            kubernetes_control_node02_address:
+              value_template: <<node_control_ip>>
+        kubernetes_control03:
+          expression: <<node_hostname>>__equals__ctl03
+          cluster_param:
+            kubernetes_control_node03_address:
+              value_template: <<node_control_ip>>
+        opencontrail_control01:
+          expression: <<node_hostname>>__equals__ntw01
+          cluster_param:
+            opencontrail_control_node01_address:
+              value_template: <<node_control_ip>>
+        opencontrail_control02:
+          expression: <<node_hostname>>__equals__ntw02
+          cluster_param:
+            opencontrail_control_node02_address:
+              value_template: <<node_control_ip>>
+        opencontrail_control03:
+          expression: <<node_hostname>>__equals__ntw03
+          cluster_param:
+            opencontrail_control_node03_address:
+              value_template: <<node_ip>
+        kubernetes_proxy:
+          expression: <<node_hostname>>__equals__prx01
+          cluster_param:
+            kubernetes_proxy_node01_address:
+              value_template: <<node_control_ip>>
+        stacklight_node01:
+          expression: <<node_hostname>>__equals__mon01
+          cluster_param:
+            stacklight_node03_address:
+              value_template: <<node_control_ip>>
+        stacklight_node02:
+          expression: <<node_hostname>>__equals__mon02
+          cluster_param:
+            stacklight_node03_address:
+              value_template: <<node_control_ip>>
+        stacklight_node03:
+          expression: <<node_hostname>>__equals__mon03
+          cluster_param:
+            stacklight_node03_address:
+              value_template: <<node_control_ip>>
+        kubernetes_compute:
+          expression: <<node_hostname>>__startswith__cmp
+          node_class:
+            value_template:
+              - cluster.<<node_cluster>>.kubernetes.compute
         prx_node:
           name: ${_param:kubernetes_proxy_node01_hostname}
           domain: ${_param:cluster_domain}
diff --git a/classes/cluster/sl_k8s_contrail/infra/init.yml b/classes/cluster/sl_k8s_contrail/infra/init.yml
index 78f83e8..92f6893 100644
--- a/classes/cluster/sl_k8s_contrail/infra/init.yml
+++ b/classes/cluster/sl_k8s_contrail/infra/init.yml
@@ -1,17 +1,11 @@
 classes:
-- system.linux.system.single
+- service.grafana.collector
 - system.linux.system.repo.mcp.extra
 - system.linux.system.repo.mcp.salt
 - system.linux.system.repo.ubuntu
-- system.openssh.server.team.lab
-- system.openssh.server.team.stacklight
-- system.openssh.server.team.tcpcloud
-- system.openssh.server.team.mcp_qa
-- system.openssh.server.team.k8s_team
 - system.rsyslog.client.single
 - system.telegraf.agent
 - system.prometheus.collector
-- service.grafana.collector
 parameters:
   _param:
     # infra service addresses
@@ -19,8 +13,8 @@
     infra_config_address: 172.16.10.100
     infra_config_deploy_address: 192.168.10.100
 
-    cluster_domain: k8s_ha_contrail.local
-    cluster_name: k8s_ha_contrail
+    cluster_domain: sl_k8s_contrail.local
+    cluster_name: sl_k8s_contrail
     apt_mk_version: nightly
   linux:
     network:
diff --git a/classes/cluster/sl_k8s_contrail/init.yml b/classes/cluster/sl_k8s_contrail/init.yml
index 650e6f1..f190b82 100644
--- a/classes/cluster/sl_k8s_contrail/init.yml
+++ b/classes/cluster/sl_k8s_contrail/init.yml
@@ -1,6 +1,12 @@
 classes:
-- cluster.k8s_ha_contrail.kubernetes
-- cluster.k8s_ha_contrail.opencontrail
-- cluster.k8s_ha_contrail.stacklight
-- cluster.k8s_ha_contrail.infra
+- system.linux.system.single
+- cluster.sl_k8s_contrail.kubernetes
+- cluster.sl_k8s_contrail.opencontrail
+- cluster.sl_k8s_contrail.stacklight
+- cluster.sl_k8s_contrail.infra
+- system.openssh.server.team.lab
+- system.openssh.server.team.stacklight
+- system.openssh.server.team.tcpcloud
+- system.openssh.server.team.mcp_qa
+- system.openssh.server.team.k8s_team
 - cluster.overrides
diff --git a/classes/cluster/sl_k8s_contrail/kubernetes/compute.yml b/classes/cluster/sl_k8s_contrail/kubernetes/compute.yml
index b6340e5..fb174a5 100644
--- a/classes/cluster/sl_k8s_contrail/kubernetes/compute.yml
+++ b/classes/cluster/sl_k8s_contrail/kubernetes/compute.yml
@@ -3,9 +3,8 @@
 - system.kubernetes.pool.cluster
 - system.salt.minion.cert.k8s_client
 - system.salt.minion.cert.etcd_client
-- cluster.k8s_ha_contrail.infra
-- cluster.k8s_ha_contrail.opencontrail.compute
-- cluster.overrides
+- cluster.sl_k8s_contrail.opencontrail.compute
+- cluster.sl_k8s_contrail
 parameters:
   linux:
     network:
diff --git a/classes/cluster/sl_k8s_contrail/kubernetes/control.yml b/classes/cluster/sl_k8s_contrail/kubernetes/control.yml
index 19f9217..71d1948 100644
--- a/classes/cluster/sl_k8s_contrail/kubernetes/control.yml
+++ b/classes/cluster/sl_k8s_contrail/kubernetes/control.yml
@@ -4,8 +4,8 @@
 - system.linux.system.repo.docker
 - system.salt.minion.cert.etcd_server
 - system.kubernetes.master.cluster
-- cluster.k8s_ha_contrail.kubernetes.compute
-- cluster.overrides
+- cluster.sl_k8s_contrail.kubernetes.compute
+- cluster.sl_k8s_contrail
 parameters:
   _param:
     keepalived_vip_interface: vhost0
diff --git a/classes/cluster/sl_k8s_contrail/kubernetes/init.yml b/classes/cluster/sl_k8s_contrail/kubernetes/init.yml
index acc7e93..d999c6b 100644
--- a/classes/cluster/sl_k8s_contrail/kubernetes/init.yml
+++ b/classes/cluster/sl_k8s_contrail/kubernetes/init.yml
@@ -30,13 +30,9 @@
     kubernetes_control_node01_hostname: ctl01
     kubernetes_control_node02_hostname: ctl02
     kubernetes_control_node03_hostname: ctl03
-    kubernetes_compute_node01_hostname: cmp01
-    kubernetes_compute_node02_hostname: cmp02
     kubernetes_control_node01_address: 172.16.10.101
     kubernetes_control_node02_address: 172.16.10.102
     kubernetes_control_node03_address: 172.16.10.103
-    kubernetes_compute_node01_address: 172.16.10.105
-    kubernetes_compute_node02_address: 172.16.10.106
     kubernetes_proxy_node01_hostname: prx01
     kubernetes_proxy_node01_address: 172.16.10.121
 
@@ -81,16 +77,6 @@
           names:
           - ${_param:kubernetes_control_node03_hostname}
           - ${_param:kubernetes_control_node03_hostname}.${_param:cluster_domain}
-        cmp01:
-          address: ${_param:kubernetes_compute_node01_address}
-          names:
-          - ${_param:kubernetes_compute_node01_hostname}
-          - ${_param:kubernetes_compute_node01_hostname}.${_param:cluster_domain}
-        cmp02:
-          address: ${_param:kubernetes_compute_node02_address}
-          names:
-          - ${_param:kubernetes_compute_node02_hostname}
-          - ${_param:kubernetes_compute_node02_hostname}.${_param:cluster_domain}
         prx01:
           address: ${_param:kubernetes_proxy_node01_address}
           names:
diff --git a/classes/cluster/sl_k8s_contrail/opencontrail/control.yml b/classes/cluster/sl_k8s_contrail/opencontrail/control.yml
index f1b01e9..a06f089 100644
--- a/classes/cluster/sl_k8s_contrail/opencontrail/control.yml
+++ b/classes/cluster/sl_k8s_contrail/opencontrail/control.yml
@@ -14,7 +14,7 @@
 - system.opencontrail.client.resource.database_node
 - system.opencontrail.client.resource.analytics_node
 - system.haproxy.proxy.listen.opencontrail.analytics
-- cluster.k8s_ha_contrail.infra
+- cluster.sl_k8s_contrail
 parameters:
   _param:
     keepalived_vip_interface: eth1
diff --git a/classes/cluster/sl_k8s_contrail/stacklight/proxy.yml b/classes/cluster/sl_k8s_contrail/stacklight/proxy.yml
index 20e5229..aea6b39 100644
--- a/classes/cluster/sl_k8s_contrail/stacklight/proxy.yml
+++ b/classes/cluster/sl_k8s_contrail/stacklight/proxy.yml
@@ -4,7 +4,7 @@
 - system.nginx.server.proxy.monitoring.prometheus_server
 - system.nginx.server.proxy.monitoring.prometheus_alertmanager
 - system.salt.minion.cert.proxy
-- cluster.k8s_ha_contrail.infra
+- cluster.sl_k8s_contrail.infra
 parameters:
   _param:
     nginx_proxy_grafana_port: 15013
diff --git a/classes/cluster/sl_k8s_contrail/stacklight/server.yml b/classes/cluster/sl_k8s_contrail/stacklight/server.yml
index be7150d..9980f3c 100644
--- a/classes/cluster/sl_k8s_contrail/stacklight/server.yml
+++ b/classes/cluster/sl_k8s_contrail/stacklight/server.yml
@@ -29,7 +29,7 @@
 - system.prometheus.server.target.dns
 - system.docker.swarm.stack.monitoring
 - system.docker.swarm.stack.dashboard
-- cluster.k8s_ha_contrail.infra
+- cluster.sl_k8s_contrail.infra
 parameters:
   _param:
     cluster_public_host: mon
diff --git a/classes/cluster/sl_os_contrail/infra/config.yml b/classes/cluster/sl_os_contrail/infra/config.yml
index 391ecbd..c421baa 100755
--- a/classes/cluster/sl_os_contrail/infra/config.yml
+++ b/classes/cluster/sl_os_contrail/infra/config.yml
@@ -19,9 +19,6 @@
 - system.mysql.client.single
 - system.reclass.storage.system.openstack_control_cluster
 - system.reclass.storage.system.opencontrail_control_cluster
-- system.reclass.storage.system.openstack_compute_multi
-- system.reclass.storage.system.openstack_dashboard_single
-- system.reclass.storage.system.openstack_proxy_single
 - system.reclass.storage.system.stacklightv2_server_cluster
 - cluster.sl_os_contrail.openstack.proxy
 - cluster.sl_os_contrail.stacklight.proxy
@@ -54,8 +51,87 @@
             host: prx
         nginx_proxy_openstack_api_heat_cfn:
           enabled: false
+  salt:
+    master:
+      reactor:
+        reclass/minion/classify:
+        - salt://reclass/reactor/node_register.sls
   reclass:
     storage:
+      class_mapping:
+        common_node:
+          expression: all
+          node_param:
+            single_address:
+              value_template: <<node_control_ip>>
+            linux_system_codename:
+              value_template: <<node_os>>
+            salt_master_host:
+              value_template: <<node_master_ip>>
+        infra_config:
+          expression: <<node_hostname>>__startswith__cfg
+          cluster_param:
+            infra_config_address:
+              value_template: <<node_control_ip>>
+            infra_config_deploy_address:
+              value_template: <<node_deploy_ip>>
+            cluster_domain:
+              value_template: <<node_domain>>
+        openstack_control01:
+          expression: <<node_hostname>>__equals__ctl01
+          cluster_param:
+            openstack_control_node01_address:
+              value_template: <<node_control_ip>>
+        openstack_control02:
+          expression: <<node_hostname>>__equals__ctl02
+          cluster_param:
+            openstack_control_node02_address:
+              value_template: <<node_control_ip>>
+        openstack_control03:
+          expression: <<node_hostname>>__equals__ctl03
+          cluster_param:
+            openstack_control_node03_address:
+              value_template: <<node_control_ip>>
+        opencontrail_control01:
+          expression: <<node_hostname>>__equals__ntw01
+          cluster_param:
+            opencontrail_control_node01_address:
+              value_template: <<node_control_ip>>
+        opencontrail_control02:
+          expression: <<node_hostname>>__equals__ntw02
+          cluster_param:
+            opencontrail_control_node02_address:
+              value_template: <<node_control_ip>>
+        opencontrail_control03:
+          expression: <<node_hostname>>__equals__ntw03
+          cluster_param:
+            opencontrail_control_node03_address:
+              value_template: <<node_control_ip>>  
+        openstack_compute:
+          expression: <<node_hostname>>__startswith__cmp
+          node_class:
+            value_template:
+              - cluster.<<node_cluster>>.openstack.compute
+          node_param:
+            tenant_address:
+              value_template: <<node_tenant_ip>>
+            external_address:
+              value_template: <<node_external_ip>>
+        stacklight_monitor01:
+          expression: <<node_hostname>>__equals__mon01
+          cluster_param:
+            stacklight_node01_address:
+              value_template: <<node_control_ip>>
+        stacklight_monitor02:
+          expression: <<node_hostname>>__equals__mon02
+          cluster_param:
+            stacklight_node02_address:
+              value_template: <<node_control_ip>>
+        stacklight_monitor03:
+          expression: <<node_hostname>>__equals__mon03
+          cluster_param:
+            stacklight_node03_address:
+              value_template: <<node_control_ip>>
       node:
         openstack_control_node01:
           classes:
@@ -75,8 +151,3 @@
           params:
             mysql_cluster_role: slave
             linux_system_codename: xenial
-        openstack_proxy_node01:
-          classes:
-          - cluster.sl_os_contrail.openstack.proxy
-          params:
-            linux_system_codename: xenial
diff --git a/classes/cluster/sl_os_contrail/infra/init.yml b/classes/cluster/sl_os_contrail/infra/init.yml
index 886c2d1..deb537e 100755
--- a/classes/cluster/sl_os_contrail/infra/init.yml
+++ b/classes/cluster/sl_os_contrail/infra/init.yml
@@ -4,6 +4,7 @@
     cluster_name: sl_os_contrail
     infra_config_address: 172.16.10.100
     infra_config_hostname: cfg01
+    linux_system_repo_mcp_salt_version: nightly
   linux:
     network:
       host:
diff --git a/classes/cluster/sl_os_ovs/infra/config.yml b/classes/cluster/sl_os_ovs/infra/config.yml
index 3632de7..0d5da93 100644
--- a/classes/cluster/sl_os_ovs/infra/config.yml
+++ b/classes/cluster/sl_os_ovs/infra/config.yml
@@ -62,7 +62,7 @@
           expression: all
           node_param:
             single_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
             linux_system_codename:
               value_template: <<node_os>>
             salt_master_host:
@@ -71,24 +71,26 @@
           expression: <<node_hostname>>__startswith__cfg
           cluster_param:
             infra_config_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
             infra_config_deploy_address:
-              value_template: <<node_ip>>
+              value_template: <<node_deploy_ip>>
+            cluster_domain:
+              value_template: <<node_domain>>
         openstack_control01:
           expression: <<node_hostname>>__equals__ctl01
           cluster_param:
             openstack_control_node01_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         openstack_control02:
           expression: <<node_hostname>>__equals__ctl02
           cluster_param:
             openstack_control_node02_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         openstack_control03:
           expression: <<node_hostname>>__equals__ctl03
           cluster_param:
             openstack_control_node03_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         openstack_compute:
           expression: <<node_hostname>>__startswith__cmp
           node_class:
@@ -103,17 +105,17 @@
           expression: <<node_hostname>>__equals__mon01
           cluster_param:
             stacklight_node01_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         stacklight_monitor02:
           expression: <<node_hostname>>__equals__mon02
           cluster_param:
             stacklight_node02_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         stacklight_monitor03:
           expression: <<node_hostname>>__equals__mon03
           cluster_param:
             stacklight_node03_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
       node:
         openstack_control_node01:
           classes:
diff --git a/classes/cluster/virtual-mcp11-k8s-calico-dyn/infra/config.yml b/classes/cluster/virtual-mcp11-k8s-calico-dyn/infra/config.yml
index 88bbc73..b840d0a 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico-dyn/infra/config.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico-dyn/infra/config.yml
@@ -32,7 +32,7 @@
           expression: all
           node_param:
             single_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
             linux_system_codename:
               value_template: <<node_os>>
             salt_master_host:
@@ -41,9 +41,9 @@
           expression: <<node_hostname>>__equals__cfg01
           cluster_param:
             infra_config_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
             infra_config_deploy_address:
-              value_template: <<node_ip>>
+              value_template: <<node_deploy_ip>>
         infra_proxy:
           expression: <<node_hostname>>__startswith__prx
           node_class:
@@ -53,17 +53,17 @@
           expression: <<node_hostname>>__equals__ctl01
           cluster_param:
             kubernetes_control_node01_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         kubernetes_control02:
           expression: <<node_hostname>>__equals__ctl02
           cluster_param:
             kubernetes_control_node02_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         kubernetes_control03:
           expression: <<node_hostname>>__equals__ctl03
           cluster_param:
             kubernetes_control_node03_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         kubernetes_compute:
           expression: <<node_hostname>>__startswith__cmp
           node_class:
@@ -73,17 +73,17 @@
           expression: <<node_hostname>>__equals__mon01
           cluster_param:
             stacklight_node01_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         stacklight_monitor02:
           expression: <<node_hostname>>__equals__mon02
           cluster_param:
             stacklight_node02_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         stacklight_monitor03:
           expression: <<node_hostname>>__equals__mon03
           cluster_param:
             stacklight_node03_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
       node:
         prx_node:
           name: ${_param:kubernetes_proxy_node01_hostname}
diff --git a/classes/cluster/virtual-mcp11-k8s-calico-minimal/infra/config.yml b/classes/cluster/virtual-mcp11-k8s-calico-minimal/infra/config.yml
index 1afe68f..c229379 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico-minimal/infra/config.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico-minimal/infra/config.yml
@@ -30,7 +30,7 @@
           expression: all
           node_param:
             single_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
             linux_system_codename:
               value_template: <<node_os>>
             salt_master_host:
@@ -39,24 +39,24 @@
           expression: <<node_hostname>>__equals__cfg01
           cluster_param:
             infra_config_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
             infra_config_deploy_address:
-              value_template: <<node_ip>>
+              value_template: <<node_deploy_ip>>
         kubernetes_control01:
           expression: <<node_hostname>>__equals__ctl01
           cluster_param:
             kubernetes_control_node01_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         kubernetes_control02:
           expression: <<node_hostname>>__equals__ctl02
           cluster_param:
             kubernetes_control_node02_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         kubernetes_control03:
           expression: <<node_hostname>>__equals__ctl03
           cluster_param:
             kubernetes_control_node03_address:
-              value_template: <<node_ip>>
+              value_template: <<node_control_ip>>
         kubernetes_compute:
           expression: <<node_hostname>>__startswith__cmp
           node_class:
diff --git a/classes/cluster/virtual-mcp11-k8s-contrail/opencontrail/compute.yml b/classes/cluster/virtual-mcp11-k8s-contrail/opencontrail/compute.yml
index 0eec1b0..c928baa 100644
--- a/classes/cluster/virtual-mcp11-k8s-contrail/opencontrail/compute.yml
+++ b/classes/cluster/virtual-mcp11-k8s-contrail/opencontrail/compute.yml
@@ -3,6 +3,7 @@
 - system.opencontrail.compute.cluster
 - system.opencontrail.client.cluster
 - system.opencontrail.client.resource.virtual_router
+- system.opencontrail.client.resource.k8s_api
 parameters:
   _param:
     opencontrail_compute_address: ${_param:single_address}
diff --git a/classes/system b/classes/system
index deebb6d..947500a 160000
--- a/classes/system
+++ b/classes/system
@@ -1 +1 @@
-Subproject commit deebb6debf38c2a2df15581dbd364e5c827d1c76
+Subproject commit 947500aa320e5d6ba26fa5fe18f4bd260015fd9d