Merge "Add NS server entries to the model and deploy pdns on backend"
diff --git a/README.rst b/README.rst
index 3257e23..cc8cc13 100755
--- a/README.rst
+++ b/README.rst
@@ -2,36 +2,165 @@
 MCP Virtual Labs Models
 =======================
 
-OpenStack Reclass models for Mk-based cloud deployments for QA.
+Virtual reclass models for MCP based deployments for Dev & QA purposes.
+
+Features implemented are expected to be backported to:
+- cookiecutter repository
+- system level reclass
+- formula default metadata
 
 
 Available deployments
 =====================
 
+AAA/Identity
+--------------------
 
-MCP 0.5 DVR (Openstack Mitaka)
-------------------------------
+Model to develop and verify AAA/Identity integrations as separate product
 
+Deployment:
 * 1 config node
-* 3 control nodes
-* 1 compute node
+* 3 identity node (idm/idp)
+* 2 proxy node
 
+Clusters:
+* aaa-ha-freeipa
 
-MCP 0.5 OVS (Openstack Mitaka)
-------------------------------
+Contacts: Petr Michalec, Adam Hecko, Florian S.
 
-* 1 config node
-* 3 control nodes
-* 1 compute node
-* 1 monitor node
-
-
-MCP 1.0 OpenContrail (Openstack Mitaka)
+MCP DriveTrain
 ---------------------------------------
 
+Clusters:
+* model-manager
+* drivetrain-ha
+* drivetrain-ha-clusters
+
+MCP OpenContrail (Openstack Mitaka)
+---------------------------------------
+
+Deployment:
 * 1 config node
 * 3 control nodes
 * 2 compute nodes
 * 1 monitor node
 * 1 meter node
 * 1 log node
+
+Clusters:
+* os-aio-contrail
+* os-aio-ovs
+* os-ha-contrail
+* os-ha-contrail-40
+* os-ha-ovs
+* os-ha-ovs-syndic
+* virtual-mcp05-dvr
+* virtual-mcp05-ovs
+* virtual-mcp10-contrail
+* virtual-mcp10-dvr
+* virtual-mcp10-ovs
+* virtual-mcp11-aio
+* virtual-mcp11-contrail
+* virtual-mcp11-contrail-nfv
+* virtual-mcp11-dvr
+* virtual-mcp11-k8s-calico
+* virtual-mcp11-k8s-calico-dyn
+* virtual-mcp11-k8s-calico-minimal
+* virtual-mcp11-k8s-contrail
+* virtual-mcp11-ovs
+* virtual-mcp11-ovs-dpdk
+* virtual-mcp11-ovs-ironic
+* virtual-mcp-ocata-cicd
+* virtual-mcp-ocata-dvr
+* virtual-mcp-ocata-ovs
+
+MCP Kunbernetes
+---------------
+
+Deployment:
+* 1 config node
+* 3 control nodes
+* 2 compute nodes
+
+Clusters:
+* k8s-aio-calico
+* k8s-aio-contrail
+* k8s-ha-calico
+* k8s-ha-calico-syndic
+* k8s-ha-contrail
+
+Stacklight
+----------
+
+Clusters:
+* sl-k8s-calico
+* sl-k8s-contrail
+* sl-os-contrail
+* sl-os-ovs
+
+Ceph
+--------
+
+Clusters:
+* ceph-ha
+
+
+Model validation
+================
+
+Models are validated on each commit with latest system-level reclass.
+
+Models can be validated locally in docker instance with test-kitchen. Resources:
+* https://github.com/salt-formulas/salt-formulas/tree/master/deploy/model
+* https://salt-formulas.readthedocs.io/en/latest/develop/testing-formulas.html#requirements
+
+Examples:
+.. code-block:: shell
+
+  ➜  mcp-virtual-lab git:(master) ✗ kitchen list
+  Instance                                  Driver  Provisioner  Verifier  Transport  Last Action    Last Error
+  cluster-aaa-ha-freeipa                    Docker  Shell        Busser    Ssh        Converged      <None>
+  cluster-ceph-ha                           Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-drivetrain-ha                     Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-drivetrain-ha-clusters            Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-k8s-aio-calico                    Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-k8s-aio-contrail                  Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-k8s-ha-calico                     Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-k8s-ha-calico-syndic              Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-k8s-ha-contrail                   Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-model-manager                     Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-os-aio-contrail                   Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-os-aio-ovs                        Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-os-ha-contrail                    Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-os-ha-contrail-40                 Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-os-ha-ovs                         Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-os-ha-ovs-syndic                  Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-sl-k8s-calico                     Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-sl-k8s-contrail                   Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-sl-os-contrail                    Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-sl-os-ovs                         Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp05-dvr                 Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp05-ovs                 Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp10-contrail            Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp10-dvr                 Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp10-ovs                 Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp11-aio                 Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp11-contrail            Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp11-contrail-nfv        Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp11-dvr                 Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp11-k8s-calico          Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp11-k8s-calico-dyn      Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp11-k8s-calico-minimal  Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp11-k8s-contrail        Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp11-ovs                 Docker  Shell        Busser    Ssh        Converged      <None>
+  cluster-virtual-mcp11-ovs-dpdk            Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp11-ovs-ironic          Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp-ocata-cicd            Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp-ocata-dvr             Docker  Shell        Busser    Ssh        <Not Created>  <None>
+  cluster-virtual-mcp-ocata-ovs             Docker  Shell        Busser    Ssh        <Not Created>  <None>
+
+.. code-block:: shell
+
+  ➜  kitchen converge aaa-ha-freeipa
+
+
diff --git a/classes/cluster/aaa-ha-freeipa/infra/init.yml b/classes/cluster/aaa-ha-freeipa/infra/init.yml
index 783c19f..fbe95d7 100644
--- a/classes/cluster/aaa-ha-freeipa/infra/init.yml
+++ b/classes/cluster/aaa-ha-freeipa/infra/init.yml
@@ -13,7 +13,7 @@
     # infra service addresses
     infra_config_hostname: cfg01
     infra_config_address: 172.16.10.100
-    infra_config_deploy_address: 192.168.10.100
+    infra_config_deploy_address: 192.168.10.90
 
     cluster_domain: virtual-aaa-freeipa.local
     cluster_name: virtual-aaa-freeipa
diff --git a/classes/cluster/aaa-ha-freeipa/init.yml b/classes/cluster/aaa-ha-freeipa/init.yml
index 5c821d9..5dfab8e 100644
--- a/classes/cluster/aaa-ha-freeipa/init.yml
+++ b/classes/cluster/aaa-ha-freeipa/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - cluster.aaa-ha-freeipa.aaa.freeipa_server
 - cluster.aaa-ha-freeipa.infra
 - cluster.overrides
diff --git a/classes/cluster/ceph-ha/infra/init.yml b/classes/cluster/ceph-ha/infra/init.yml
index c9183ed..41a4387 100644
--- a/classes/cluster/ceph-ha/infra/init.yml
+++ b/classes/cluster/ceph-ha/infra/init.yml
@@ -14,10 +14,10 @@
     # infra service addresses
     infra_config_hostname: cfg01
 #    infra_config_address: 172.16.10.100
-#    infra_config_deploy_address: 192.168.10.100
+#    infra_config_deploy_address: 192.168.10.90
 
     cluster_domain: ceph-ha.local
-    cluster_name: ceph_ha
+    cluster_name: ceph-ha
     apt_mk_version: nightly
     primary_interface: ens3
   linux:
diff --git a/classes/cluster/drivetrain-ha-clusters/cicd/control/master.yml b/classes/cluster/drivetrain-ha-clusters/cicd/control/master.yml
index 13f8c2f..dadabbb 100644
--- a/classes/cluster/drivetrain-ha-clusters/cicd/control/master.yml
+++ b/classes/cluster/drivetrain-ha-clusters/cicd/control/master.yml
@@ -16,7 +16,7 @@
   # ..jobs
   - system.jenkins.client.job.aptly
   - system.jenkins.client.job.git-mirrors.downstream.pipelines
-  - system.jenkins.client.job.deploy.lab.mk.physical
+  - system.jenkins.client.job.deploy.lab.release.mcp10
   - system.jenkins.client.job.deploy.update.package
   - system.jenkins.client.job.deploy.update.config
   # Gerrit
diff --git a/classes/cluster/drivetrain-ha-clusters/infra/init.yml b/classes/cluster/drivetrain-ha-clusters/infra/init.yml
index 3f5db90..c5a0164 100644
--- a/classes/cluster/drivetrain-ha-clusters/infra/init.yml
+++ b/classes/cluster/drivetrain-ha-clusters/infra/init.yml
@@ -11,12 +11,12 @@
 parameters:
   _param:
     cluster_domain: drivetrain-ha-clusters.local
-    cluster_name: drivetrain_ha_clusters
+    cluster_name: drivetrain-ha-clusters
     apt_mk_version: nightly
     admin_email: root@localhosti
     infra_config_hostname: cfg01
     infra_config_address: 172.16.10.100
-    infra_config_deploy_address: 192.168.10.100
+    infra_config_deploy_address: 192.168.10.90
     salt_minion_ca_host: ci01.${_param:cluster_domain}
     salt_minion_ca_authority: salt_master_ca
     salt_api_password: hovno12345!
diff --git a/classes/cluster/drivetrain-ha-clusters/init.yml b/classes/cluster/drivetrain-ha-clusters/init.yml
index e3a898b..634ecc6 100644
--- a/classes/cluster/drivetrain-ha-clusters/init.yml
+++ b/classes/cluster/drivetrain-ha-clusters/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - cluster.drivetrain-ha-clusters.infra
 - cluster.drivetrain-ha-clusters.cicd
 - cluster.overrides
diff --git a/classes/cluster/drivetrain-ha/cicd/control/master.yml b/classes/cluster/drivetrain-ha/cicd/control/master.yml
index 2968ea9..3a84699 100644
--- a/classes/cluster/drivetrain-ha/cicd/control/master.yml
+++ b/classes/cluster/drivetrain-ha/cicd/control/master.yml
@@ -16,7 +16,7 @@
   # ..jobs
   - system.jenkins.client.job.aptly
   - system.jenkins.client.job.git-mirrors.downstream.pipelines
-  - system.jenkins.client.job.deploy.lab.mk.physical
+  - system.jenkins.client.job.deploy.lab.release.mcp10
   - system.jenkins.client.job.deploy.update.package
   - system.jenkins.client.job.deploy.update.config
   # Gerrit
diff --git a/classes/cluster/drivetrain-ha/infra/init.yml b/classes/cluster/drivetrain-ha/infra/init.yml
index 31e590a..f3fe176 100644
--- a/classes/cluster/drivetrain-ha/infra/init.yml
+++ b/classes/cluster/drivetrain-ha/infra/init.yml
@@ -11,11 +11,11 @@
 parameters:
   _param:
     cluster_domain: drivetrain-ha.local
-    cluster_name: drivetrain_ha
+    cluster_name: drivetrain-ha
     apt_mk_version: nightly
     infra_config_hostname: cid01
     infra_config_address: 172.16.10.100
-    infra_config_deploy_address: 192.168.10.100
+    infra_config_deploy_address: 192.168.10.90
     salt_minion_ca_host: cid01.${_param:cluster_domain}
     salt_minion_ca_authority: salt_master_ca
   linux:
diff --git a/classes/cluster/drivetrain-ha/init.yml b/classes/cluster/drivetrain-ha/init.yml
index dcf60af..fa0c93c 100644
--- a/classes/cluster/drivetrain-ha/init.yml
+++ b/classes/cluster/drivetrain-ha/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - cluster.drivetrain-ha.cicd.control
 - cluster.drivetrain-ha.infra
 #- cluster.drivetrain-ha.cicd
diff --git a/classes/cluster/k8s-aio-calico/infra/init.yml b/classes/cluster/k8s-aio-calico/infra/init.yml
index d6bda6d..763d163 100644
--- a/classes/cluster/k8s-aio-calico/infra/init.yml
+++ b/classes/cluster/k8s-aio-calico/infra/init.yml
@@ -13,7 +13,7 @@
     # infra service addresses
     infra_config_hostname: cfg01
     infra_config_address: 172.16.10.100
-    infra_config_deploy_address: 192.168.10.100
+    infra_config_deploy_address: 192.168.10.90
 
     cluster_domain: virtual-mcp11-k8s-calico.local
     cluster_name: virtual-mcp11-k8s-calico
diff --git a/classes/cluster/k8s-aio-calico/init.yml b/classes/cluster/k8s-aio-calico/init.yml
index e0b6c40..190a1db 100644
--- a/classes/cluster/k8s-aio-calico/init.yml
+++ b/classes/cluster/k8s-aio-calico/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - cluster.k8s-aio-calico.kubernetes
 - cluster.k8s-aio-calico.infra
 - cluster.overrides
diff --git a/classes/cluster/k8s-aio-contrail/infra/init.yml b/classes/cluster/k8s-aio-contrail/infra/init.yml
index 8fccc4f..ec7c359 100644
--- a/classes/cluster/k8s-aio-contrail/infra/init.yml
+++ b/classes/cluster/k8s-aio-contrail/infra/init.yml
@@ -13,10 +13,10 @@
     # infra service addresses
     infra_config_hostname: cfg01
     infra_config_address: 172.16.10.100
-    infra_config_deploy_address: 192.168.10.100
+    infra_config_deploy_address: 192.168.10.90
 
     cluster_domain: k8s-aio-contrail.local
-    cluster_name: k8s_aio_contrail
+    cluster_name: k8s-aio-contrail
     apt_mk_version: nightly
   linux:
     network:
diff --git a/classes/cluster/k8s-aio-contrail/init.yml b/classes/cluster/k8s-aio-contrail/init.yml
index 2022387..49eadbc 100644
--- a/classes/cluster/k8s-aio-contrail/init.yml
+++ b/classes/cluster/k8s-aio-contrail/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - cluster.k8s-aio-contrail.kubernetes
 - cluster.k8s-aio-contrail.opencontrail
 - cluster.k8s-aio-contrail.infra
diff --git a/classes/cluster/k8s-ha-calico-cloudprovider/MAINTAINERS b/classes/cluster/k8s-ha-calico-cloudprovider/MAINTAINERS
new file mode 100644
index 0000000..b2f6555
--- /dev/null
+++ b/classes/cluster/k8s-ha-calico-cloudprovider/MAINTAINERS
@@ -0,0 +1,2 @@
+Tomáš Kukrál <tkukral@mirantis.com>
+Matthew Mosesohn <mmosesohn@mirantis.com>
diff --git a/classes/cluster/k8s-ha-calico-cloudprovider/infra/config.yml b/classes/cluster/k8s-ha-calico-cloudprovider/infra/config.yml
new file mode 100644
index 0000000..2cc72db
--- /dev/null
+++ b/classes/cluster/k8s-ha-calico-cloudprovider/infra/config.yml
@@ -0,0 +1,78 @@
+classes:
+- system.linux.system.repo.ubuntu
+- system.openssh.client.lab
+- system.salt.master.pkg
+- system.salt.minion.ca.salt_master
+- system.salt.master.api
+- system.salt.minion.cert.k8s_server
+- system.reclass.storage.salt
+- system.reclass.storage.system.kubernetes_control_cluster
+- cluster.k8s-ha-calico-cloudprovider
+parameters:
+  _param:
+    salt_master_base_environment: prd
+    reclass_data_repository: "https://gerrit.mcp.mirantis.net/salt-models/mcp-virtual-lab.git"
+    reclass_data_revision: master
+    reclass_config_master: ${_param:infra_config_deploy_address}
+    single_address: ${_param:infra_config_address}
+    linux_system_codename: xenial
+    salt_api_password_hash: "$6$WV0P1shnoDh2gI/Z$22/Bcd7ffMv0jDlFpT63cAU4PiXHz9pjXwngToKwqAsgoeK4HNR3PiKaushjxp3JsQ8hNoJmAC6TxzVqfV8WH/"
+    salt_master_host: 127.0.0.1
+    salt_master_environment_revision: master
+    salt_master_environment_repository: 'https://github.com/salt-formulas'
+  salt:
+    master:
+      reactor:
+        reclass/minion/classify:
+        - salt://reclass/reactor/node_register.sls
+      environment:
+      # TODO: remove formulas in development once they are stable and part of shared the system-level reclass
+        prd:
+          formula:
+            helm:
+              source: pkg
+              name: salt-formula-helm
+              #source: git
+              #address: '${_param:salt_master_environment_repository}/salt-formula-helm.git'
+              #revision: ${_param:salt_master_environment_revision}
+  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>>
+        kubernetes_compute:
+          expression: <<node_hostname>>__startswith__cmp
+          node_class:
+            value_template:
+              - cluster.<<node_cluster>>.kubernetes.compute
diff --git a/classes/cluster/k8s-ha-calico-cloudprovider/infra/init.yml b/classes/cluster/k8s-ha-calico-cloudprovider/infra/init.yml
new file mode 100644
index 0000000..e637c3f
--- /dev/null
+++ b/classes/cluster/k8s-ha-calico-cloudprovider/infra/init.yml
@@ -0,0 +1,74 @@
+classes:
+- system.linux.system.single
+- system.linux.system.repo.mcp.extra
+- system.linux.system.repo.mcp.salt
+- system.linux.system.repo.ubuntu
+- system.openssh.server.team.all
+parameters:
+  _param:
+    # infra service addresses
+    infra_config_hostname: cfg01
+    infra_config_address: 172.16.10.100
+    infra_config_deploy_address: 192.168.10.100
+
+    cluster_domain: virtual-mcp11-k8s-calico.local
+    cluster_name: virtual-mcp11-k8s-calico
+    apt_mk_version: nightly
+    primary_interface: ens3
+  linux:
+    network:
+      host:
+        cfg01:
+          address: ${_param:infra_config_address}
+          names:
+          - ${_param:infra_config_hostname}
+          - ${_param:infra_config_hostname}.${_param:cluster_domain}
+      interface:
+        primary_interface:
+          enabled: true
+          type: eth
+          proto: dhcp
+          #proto: static
+          #name: ${_param:primary_interface}
+          #address: ${_param:single_address}
+          #netmask: 255.255.255.0
+    system:
+      name: ${_param:infra_config_hostname}
+      domain: ${_param:cluster_domain}
+      ca_certificates:
+        devcloud: |
+           -----BEGIN CERTIFICATE-----
+           MIIGKjCCBBKgAwIBAgIICbpi+BPXABQwDQYJKoZIhvcNAQELBQAwSjELMAkGA1UE
+           BhMCY3oxFzAVBgNVBAMMDlNhbHQgTWFzdGVyIENBMQ8wDQYDVQQHDAZQcmFndWUx
+           ETAPBgNVBAoMCE1pcmFudGlzMB4XDTE3MDYyMTExMzQxNVoXDTE4MDYyMTExMzQx
+           NVowQTELMAkGA1UEBhMCY3oxDjAMBgNVBAMMBXByb3h5MQ8wDQYDVQQHDAZQcmFn
+           dWUxETAPBgNVBAoMCE1pcmFudGlzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
+           CgKCAgEAxaQbBmjV5aQKSli1xiUDwUEXy1+TPnLVu8DkN8mrhSA4V9f5xrFxomH2
+           OCUMpI/HLjxCwEVS8JBK1aZFEW01GKfSC8hQ0cfXLU3vzg+16olOiB3Ft4fXpPWJ
+           SBKmO4ZGZCtdI/jWOZdblJhYkK3fG5jaji+QahVgK0uGgFceov5twd/p8ohus6i3
+           XB3k7yHZs5hEfqZmt7Y71EoTzTgE8tJy1/dqiS2TWsbrSj2Y/yPgrO1AVzY9TfXz
+           UZmcoI7Oe9h+sc33UdxgExizZAOl1ZO7Pq111ODUxK+PvqwIEEi0+Y41ZKMdN5EI
+           rBLzNibTUEOxni+K5v4ahpfZgji4S9t4c082QVMoQEcEHjFFV41oIhf/qtzQC1G1
+           6Oi2op8WjDU2na6hBDXbFQmCHMcho+iwrKBuQdgVG/Szji0i6BSmpw1xVIpHLAkH
+           sObOPi1dTGUyjfYvXA8DOUD1buiN0UWJ2NKO3Sp+YbUFl6CGy7pokRGyICXRvzTd
+           ws9tvgp5m8X288sKfQSGND50AaHxZYvX+Ff1UZsdxPawsJeOaNtkICRnoglAslsJ
+           hxZmO78rV6PYnG+p8sKOPLZmwl9HzgB/jjwk/ndHt5hWgnhYKX73zyxDZ6Jq2f4E
+           +T5wIDqWwUoz3e5IsUWr3SH7q5+TZTEUznBqPhZbwB9Vny8BJTMCAwEAAaOCARsw
+           ggEXMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgXgMBMGA1UdJQQMMAoGCCsGAQUF
+           BwMBMB0GA1UdDgQWBBR6Q8QNLY1rotmzqtjBZ777QeScWDB6BgNVHSMEczBxgBQy
+           KqQXU4DK0VOUkD3A8Hw/bLOC4qFOpEwwSjELMAkGA1UEBhMCY3oxFzAVBgNVBAMM
+           DlNhbHQgTWFzdGVyIENBMQ8wDQYDVQQHDAZQcmFndWUxETAPBgNVBAoMCE1pcmFu
+           dGlzggkAzjIatJ+/akwwSgYDVR0RBEMwQYcEfwAAAYIZY2xvdWQtY3ouYnVkLm1p
+           cmFudGlzLm5ldIcErBEtUIIYaG9yaXpvbi5idWQubWlyYW50aXMubmV0MA0GCSqG
+           SIb3DQEBCwUAA4ICAQB6ptOZlNI1xE4v5axKIYq5GGYGxCygozeDu94Bl2zWB+ly
+           Q4iuzELyRCF+fEtHTr4r3xR0T69AvQc0cbMBeF/euKic/nwqzKxFAMR5dcksuSzF
+           qiLubsWie9iOjSJFUpjwdv/2Em9Msdho0vAFUm6Ew6HcLiIWULGDKwkZczmN/yY7
+           Ex1/IFIjtbb/YOd7Aezg2eeGs83i42y1T2EBxZflBtFEBcChHqrHBznO+j+5dG1t
+           ezwa+TNBDgkaQUd8ZcHdmlgdaDxqXc1GGFv2WRL43KILmbiq1ZRZ2L+/izi68BZ9
+           3+k8fAf1Jf4MSXfS4bRYxzVSUObYeUMPKBNkERaFepYktVpsbuGRY2aikF70Wsj9
+           1tDNXqzU1GWdiAxDzQ/JJ5t4OKwqQdjILJzXZ4v7byOs0AxqSZNNy6Fk6xFLGYlB
+           ofdurnst4LYNiV52ubW0zgEi49ar+crb5/x2Iw9CriFUhxAhQs9RS0anZRjKUQmL
+           dOgS5tLfxbr8BLUEWeqWTcfwGaIkVGCe/2ya49I8pl9uueTSurCbB7U4urFeUQ6I
+           GkGh17M7S4E6Uz02Qdxtah6FxWyluFEVi7XPyAT2HkQ5voTflN0ID1opRlZ1yb/5
+           B354vA5N0n1xLKPFDqKvZBVxPP6Ea4Kl0hONCGQvl1dsAu0aB49HWF0KwVGjZw==
+           -----END CERTIFICATE-----
diff --git a/classes/cluster/k8s-ha-calico-cloudprovider/init.yml b/classes/cluster/k8s-ha-calico-cloudprovider/init.yml
new file mode 100644
index 0000000..f353ea4
--- /dev/null
+++ b/classes/cluster/k8s-ha-calico-cloudprovider/init.yml
@@ -0,0 +1,4 @@
+classes:
+- cluster.k8s-ha-calico-cloudprovider.kubernetes
+- cluster.k8s-ha-calico-cloudprovider.infra
+- cluster.overrides
diff --git a/classes/cluster/k8s-ha-calico-cloudprovider/kubernetes/compute.yml b/classes/cluster/k8s-ha-calico-cloudprovider/kubernetes/compute.yml
new file mode 100644
index 0000000..c32f2c5
--- /dev/null
+++ b/classes/cluster/k8s-ha-calico-cloudprovider/kubernetes/compute.yml
@@ -0,0 +1,59 @@
+classes:
+- system.linux.system.repo.docker
+- system.kubernetes.pool.cluster
+- system.linux.network.hosts
+- system.salt.minion.cert.k8s_client
+- system.salt.minion.cert.etcd_client
+- cluster.k8s-ha-calico-cloudprovider
+parameters:
+  _param:
+    kubernetes_calicoctl_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/ctl:latest
+    kubernetes_calico_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/node:latest
+    kubernetes_calico_cni_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/cni:latest
+    kubernetes_hyperkube_image: docker-prod-virtual.docker.mirantis.net/mirantis/kubernetes/hyperkube-amd64:v1.7.3-1
+  docker:
+    host:
+      pkgs:
+        - docker-engine=1.12.6-0~ubuntu-xenial
+        - python-docker
+      options:
+        bip: 172.31.255.1/24
+  kubernetes:
+    pool:
+      network:
+        etcd:
+          ssl:
+            enabled: true
+        image: ${_param:kubernetes_calico_image}
+        calicoctl:
+          image: ${_param:kubernetes_calicoctl_image}
+        cni:
+          image: ${_param:kubernetes_calico_cni_image}
+    common:
+      hyperkube:
+        image: ${_param:kubernetes_hyperkube_image}
+      cloudprovider:
+        enabled: true
+        provider: openstack
+        params:
+          auth_url: ${_param:openstack_auth_url}
+          region_name: ${_param:openstack_region_name}
+          tenant_name: ${_param:openstack_tenant_name}
+          username: ${_param:openstack_username}
+          password: ${_param:openstack_password}
+          subnet_id: ${_param:openstack_subnet_id}
+          floating_network_id: ${_param:openstack_floating_network_id}
+  linux:
+    network:
+      resolv:
+        dns:
+          - 10.254.0.10
+          - 172.18.176.4
+          - 172.18.176.7
+      interface:
+        primary_interface:
+          route:
+            kubernetes_services:
+              address: 10.254.0.0
+              netmask: 255.255.0.0
+              gateway: ${_param:single_address}
diff --git a/classes/cluster/k8s-ha-calico-cloudprovider/kubernetes/control.yml b/classes/cluster/k8s-ha-calico-cloudprovider/kubernetes/control.yml
new file mode 100644
index 0000000..a4fe26c
--- /dev/null
+++ b/classes/cluster/k8s-ha-calico-cloudprovider/kubernetes/control.yml
@@ -0,0 +1,65 @@
+classes:
+- service.etcd.server.cluster
+- system.haproxy.proxy.listen.kubernetes.apiserver
+- system.linux.system.repo.docker
+- system.salt.minion.cert.etcd_server
+- system.kubernetes.master.cluster
+- cluster.k8s-ha-calico-cloudprovider.kubernetes.compute
+- cluster.k8s-ha-calico-cloudprovider
+# FIXME: replace service.helm to system.helm (once properly in reclass)
+- service.helm.client
+parameters:
+  _param:
+    keepalived_vip_interface: ${_param:primary_interface}
+    keepalived_vip_virtual_router_id: 60
+  helm:
+    client:
+      repos:
+        mirantisworkloads: https://mirantisworkloads.storage.googleapis.com/
+      #releases:
+      # TODO: configure custom application stacks below
+      #  grafana:
+      #    chart: mirantisworkloads/grafana
+      #    version: 0.4.1
+      #    values:
+      #      replicas: 1
+      #      logLevel: INFO
+  etcd:
+    server:
+      source:
+        engine: docker_hybrid
+      ssl:
+        enabled: true
+      setup:
+        calico:
+          key: /calico/v1/ipam/v4/pool/${_param:calico_private_network}-${_param:calico_private_netmask}
+          value: '{"masquerade":true,"cidr":"${_param:calico_private_network}/${_param:calico_private_netmask}"}'
+  kubernetes:
+    common:
+      addons:
+        netchecker:
+          enabled: true
+        helm:
+          enabled: false
+      cloudprovider:
+        enabled: true
+        provider: openstack
+        params:
+          auth_url: ${_param:openstack_auth_url}
+          region_name: ${_param:openstack_region_name}
+          tenant_name: ${_param:openstack_tenant_name}
+          username: ${_param:openstack_username}
+          password: ${_param:openstack_password}
+          subnet_id: ${_param:openstack_subnet_id}
+          floating_network_id: ${_param:openstack_floating_network_id}
+    master:
+      etcd:
+        ssl:
+          enabled: true
+      network:
+        etcd:
+          ssl:
+            enabled: true
+      namespace:
+        netchecker:
+          enabled: true
diff --git a/classes/cluster/k8s-ha-calico-cloudprovider/kubernetes/init.yml b/classes/cluster/k8s-ha-calico-cloudprovider/kubernetes/init.yml
new file mode 100644
index 0000000..8baf8b1
--- /dev/null
+++ b/classes/cluster/k8s-ha-calico-cloudprovider/kubernetes/init.yml
@@ -0,0 +1,108 @@
+parameters:
+  _param:
+    salt_minion_ca_host: ${_param:infra_config_hostname}.${_param:cluster_domain}
+    salt_minion_ca_authority: salt_master_ca
+
+    # kubernetes settings
+    kubernetes_admin_user: admin
+    kubernetes_admin_password: sbPfel23ZigJF3Bm
+    kubernetes_admin_token: PpP6Mm3pAoPVqcKOKUu0x1dh7b1959Fi
+    kubernetes_kubelet_token: JJ2PKHxjiU6EYvIt18BqwdSK1HvWh8pt
+    kubernetes_kube-proxy_token: jT0hJk9L6cIw5UpYDNhsRwcj3Z2n62B6
+    kubernetes_scheduler_token: VgkUHfrW07zNxrb0ucFyX7NBnSJN9Xp6
+    kubernetes_controller-manager_token: uXrdZ1YKF6qlYm3sHje2iEXMGAGDWOIU
+    kubernetes_dns_token: 0S1I4iJeFjq5fopPwwCwTp3xFpEZfeUl
+    etcd_initial_token: IN7KaRMSo3xkGxkjAAPtkRkAgqN4ZNRq
+
+    # addresses and hostnames
+    kubernetes_internal_api_address: 10.254.0.1
+    kubernetes_control_hostname: ctl
+    kubernetes_control_address: 192.168.10.253
+    kubernetes_control_node01_hostname: ctl01
+    kubernetes_control_node02_hostname: ctl02
+    kubernetes_control_node03_hostname: ctl03
+    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_proxy_node01_hostname: prx01
+    kubernetes_proxy_node01_address: 172.16.10.121
+
+    cluster_vip_address: ${_param:kubernetes_control_address}
+    cluster_local_address: ${_param:single_address}
+
+    # etcd stuff
+    cluster_node01_hostname: ${_param:kubernetes_control_node01_hostname}
+    cluster_node01_address: ${_param:kubernetes_control_node01_address}
+    cluster_node01_port: 4001
+    cluster_node02_hostname: ${_param:kubernetes_control_node02_hostname}
+    cluster_node02_address: ${_param:kubernetes_control_node02_address}
+    cluster_node02_port: 4001
+    cluster_node03_hostname: ${_param:kubernetes_control_node03_hostname}
+    cluster_node03_address: ${_param:kubernetes_control_node03_address}
+    cluster_node03_port: 4001
+
+    # calico
+    calico_private_network: 192.168.0.0
+    calico_private_netmask: 16
+
+    # OpenStack cloud provider
+    openstack_auth_url: https://cloud-cz.bud.mirantis.net:5000/v3
+    openstack_region_name: RegionOne
+    openstack_tenant_name: k8s-openstack-provider
+    openstack_username: k8s-openstack-provider
+    openstack_password: hjk5ers794wep
+    # Set this with heat template or overrides.yml
+    openstack_subnet_id: null
+    openstack_floating_network_id: 3e868882-d59e-416a-90a1-48cc04cab723
+
+  linux:
+    network:
+      host:
+        ctl:
+          address: ${_param:kubernetes_control_address}
+          names:
+          - ${_param:kubernetes_control_hostname}
+          - ${_param:kubernetes_control_hostname}.${_param:cluster_domain}
+        ctl01:
+          address: ${_param:kubernetes_control_node01_address}
+          names:
+          - ${_param:kubernetes_control_node01_hostname}
+          - ${_param:kubernetes_control_node01_hostname}.${_param:cluster_domain}
+        ctl02:
+          address: ${_param:kubernetes_control_node02_address}
+          names:
+          - ${_param:kubernetes_control_node02_hostname}
+          - ${_param:kubernetes_control_node02_hostname}.${_param:cluster_domain}
+        ctl03:
+          address: ${_param:kubernetes_control_node03_address}
+          names:
+          - ${_param:kubernetes_control_node03_hostname}
+          - ${_param:kubernetes_control_node03_hostname}.${_param:cluster_domain}
+        prx01:
+          address: ${_param:kubernetes_proxy_node01_address}
+          names:
+          - ${_param:kubernetes_proxy_node01_hostname}
+          - ${_param:kubernetes_proxy_node01_hostname}.${_param:cluster_domain}
+    linux:
+      network:
+        interface:
+          primary_interface:
+            route:
+              # TODO: Remove comment.
+              # Will work once CI has this in linux formula (packaged): https://gerrit.mcp.mirantis.net/#/c/8952
+              kubernetes_internal:
+                address: 10.254.0.0
+                netmask: 255.255.0.0
+    system:
+      rc:
+        local: |
+          #!/bin/sh -e
+          #
+          # rc.local
+          #
+          ######### This file is managed by Salt! ##########
+          # This script is executed at the end of each multiuser runlevel.
+          # Make sure that the script will "exit 0" on success or any other
+          # value on error.
+          #
+          exit 0
diff --git a/classes/cluster/k8s-ha-calico-syndic/init.yml b/classes/cluster/k8s-ha-calico-syndic/init.yml
index bf509c9..11a3633 100644
--- a/classes/cluster/k8s-ha-calico-syndic/init.yml
+++ b/classes/cluster/k8s-ha-calico-syndic/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - cluster.k8s-ha-calico-syndic.kubernetes
 - cluster.k8s-ha-calico-syndic.infra
 - cluster.overrides
diff --git a/classes/cluster/k8s-ha-calico/infra/init.yml b/classes/cluster/k8s-ha-calico/infra/init.yml
index 62922ee..253e3f6 100644
--- a/classes/cluster/k8s-ha-calico/infra/init.yml
+++ b/classes/cluster/k8s-ha-calico/infra/init.yml
@@ -9,7 +9,7 @@
     # infra service addresses
     infra_config_hostname: cfg01
     infra_config_address: 172.16.10.100
-    infra_config_deploy_address: 192.168.10.100
+    infra_config_deploy_address: 192.168.10.90
 
     cluster_domain: virtual-mcp11-k8s-calico.local
     cluster_name: virtual-mcp11-k8s-calico
diff --git a/classes/cluster/k8s-ha-calico/init.yml b/classes/cluster/k8s-ha-calico/init.yml
index 9bab6cd..f98b325 100644
--- a/classes/cluster/k8s-ha-calico/init.yml
+++ b/classes/cluster/k8s-ha-calico/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - cluster.k8s-ha-calico.kubernetes
 - cluster.k8s-ha-calico.infra
 - cluster.overrides
diff --git a/classes/cluster/k8s-ha-contrail/infra/init.yml b/classes/cluster/k8s-ha-contrail/infra/init.yml
index fad2edc..5fbbbea 100644
--- a/classes/cluster/k8s-ha-contrail/infra/init.yml
+++ b/classes/cluster/k8s-ha-contrail/infra/init.yml
@@ -7,10 +7,10 @@
     # infra service addresses
     infra_config_hostname: cfg01
     infra_config_address: 172.16.10.100
-    infra_config_deploy_address: 192.168.10.100
+    infra_config_deploy_address: 192.168.10.90
 
     cluster_domain: k8s-ha-contrail.local
-    cluster_name: k8s_ha_contrail
+    cluster_name: k8s-ha-contrail
     apt_mk_version: nightly
   linux:
     network:
diff --git a/classes/cluster/k8s-ha-contrail/init.yml b/classes/cluster/k8s-ha-contrail/init.yml
index d36ddde..ee4126e 100644
--- a/classes/cluster/k8s-ha-contrail/init.yml
+++ b/classes/cluster/k8s-ha-contrail/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.single
 - cluster.k8s-ha-contrail.kubernetes
 - cluster.k8s-ha-contrail.opencontrail
diff --git a/classes/cluster/k8s-ha-contrail/kubernetes/compute.yml b/classes/cluster/k8s-ha-contrail/kubernetes/compute.yml
index 1006f1b..f57d1ab 100644
--- a/classes/cluster/k8s-ha-contrail/kubernetes/compute.yml
+++ b/classes/cluster/k8s-ha-contrail/kubernetes/compute.yml
@@ -28,7 +28,7 @@
   docker:
     host:
       pkgs:
-        - docker-engine=1.12.6-0~ubuntu-xenial
+        - ${_param:kubernetes_docker_package}
         - python-docker
       options:
         bip: 172.31.255.1/24
@@ -50,5 +50,13 @@
         contrail_cni:
           image: ${_param:kubernetes_opencontrail_cni_image}
     common:
+      addons:
+        virtlet:
+          enabled: ${_param:kubernetes_virtlet_enabled}
+          namespace: ${_param:kubernetes_addon_namespace}
+          image: ${_param:kubernetes_virtlet_image}
+          hosts:
+          - ${_param:kubernetes_compute_node01_hostname}
+          - ${_param:kubernetes_compute_node02_hostname}
       hyperkube:
         image: ${_param:kubernetes_hyperkube_image}
diff --git a/classes/cluster/k8s-ha-contrail/kubernetes/control.yml b/classes/cluster/k8s-ha-contrail/kubernetes/control.yml
index 4776b3b..67b7254 100644
--- a/classes/cluster/k8s-ha-contrail/kubernetes/control.yml
+++ b/classes/cluster/k8s-ha-contrail/kubernetes/control.yml
@@ -25,12 +25,18 @@
   kubernetes:
     common:
       addons:
+        dashboard:
+          enabled: ${_param:kubernetes_dashboard}
+        helm:
+          enabled: ${_param:kubernetes_helm_enabled}
         netchecker:
-          enabled: true
+          enabled: ${_param:kubernetes_netchecker_enabled}
           agent_image: ${_param:kubernetes_netchecker_agent_image}
           server_image: ${_param:kubernetes_netchecker_server_image}
-        helm:
-          enabled: true
+        contrail_network_controller:
+          namespace: ${_param:kubernetes_addon_namespace}
+          enabled: {_param:kubernetes_contrail_network_controller}
+          image: ${_param:kubernetes_contrail_network_controller_image}
     master:
       etcd:
         ssl:
diff --git a/classes/cluster/k8s-ha-contrail/kubernetes/init.yml b/classes/cluster/k8s-ha-contrail/kubernetes/init.yml
index 9a7f189..2abddda 100644
--- a/classes/cluster/k8s-ha-contrail/kubernetes/init.yml
+++ b/classes/cluster/k8s-ha-contrail/kubernetes/init.yml
@@ -15,14 +15,30 @@
     kubernetes_dns_token: 0S1I4iJeFjq5fopPwwCwTp3xFpEZfeUl
     etcd_initial_token: IN7KaRMSo3xkGxkjAAPtkRkAgqN4ZNRq
 
+    # docker package version
+    kubernetes_docker_package: docker-engine=1.12.6-0~ubuntu-xenial
+
     # component docker images
     kubernetes_calicoctl_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/ctl:latest
     kubernetes_calico_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/node:latest
     kubernetes_calico_cni_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/cni:latest
     kubernetes_opencontrail_cni_image: docker-prod-virtual.docker.mirantis.net/mirantis/kubernetes/contrail-integration/contrail-cni:v1.0.0
+
     kubernetes_hyperkube_image: docker-prod-virtual.docker.mirantis.net/mirantis/kubernetes/hyperkube-amd64:v1.7.3-1
-    kubernetes_netchecker_agent_image: quay.io/l23network/k8s-netchecker-agent:v1.0
-    kubernetes_netchecker_server_image: quay.io/l23network/k8s-netchecker-server:v1.0
+    kubernetes_virtlet_image: mirantis/virtlet:latest
+    kubernetes_netchecker_agent_image: mirantis/k8s-netchecker-agent:v1.1.0
+    kubernetes_netchecker_server_image: mirantis/k8s-netchecker-server:v1.1.0
+    kubernetes_netchecker_agent_probeurls: "http://ipinfo.io"
+    kubernetes_virtlet_image: mirantis/virtlet:v0.7.0
+
+    # switches of addons
+    kubernetes_addon_namespace: kube-system
+    kubernetes_dashboard: false
+    kubernetes_helm_enabled: true
+    kubernetes_netchecker_enabled: true
+    kubernetes_calico_policy_enabled: false
+    kubernetes_virtlet_enabled: false
+    kubernetes_contrail_network_controller: true
 
     # addresses and hostnames
     kubernetes_internal_api_address: 10.254.0.1
diff --git a/classes/cluster/k8s-ha-contrail/opencontrail/compute.yml b/classes/cluster/k8s-ha-contrail/opencontrail/compute.yml
index d6f92b6..3e3c1f4 100644
--- a/classes/cluster/k8s-ha-contrail/opencontrail/compute.yml
+++ b/classes/cluster/k8s-ha-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/cluster/model-manager/infra/init.yml b/classes/cluster/model-manager/infra/init.yml
index 4478e59..6b24a1d 100644
--- a/classes/cluster/model-manager/infra/init.yml
+++ b/classes/cluster/model-manager/infra/init.yml
@@ -1,8 +1,8 @@
 parameters:
   _param:
     cluster_domain: model-manager.local
-    cluster_name: model_manager
-    infra_config_deploy_address: 192.168.10.100
+    cluster_name: model-manager
+    infra_config_deploy_address: 192.168.10.90
     infra_config_address: 172.16.10.100
     cluster_public_host: mm.mcp.mirantis.net
   linux:
diff --git a/classes/cluster/model-manager/init.yml b/classes/cluster/model-manager/init.yml
index 8a17052..f7119c9 100644
--- a/classes/cluster/model-manager/init.yml
+++ b/classes/cluster/model-manager/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.single
 - system.openssh.server.team.lab
 - system.openssh.server.team.tcpcloud
diff --git a/classes/cluster/os-aio-contrail/infra/init.yml b/classes/cluster/os-aio-contrail/infra/init.yml
index 0900cb4..1050967 100755
--- a/classes/cluster/os-aio-contrail/infra/init.yml
+++ b/classes/cluster/os-aio-contrail/infra/init.yml
@@ -1,7 +1,7 @@
 parameters:
   _param:
     cluster_domain: os-aio-contrail.local
-    cluster_name: os_aio_contrail
+    cluster_name: os-aio-contrail
     infra_config_deploy_address: 192.168.10.90
     infra_config_address: 172.16.10.90
     infra_config_hostname: cfg01
diff --git a/classes/cluster/os-aio-contrail/init.yml b/classes/cluster/os-aio-contrail/init.yml
index eb4af4a..05aab3a 100755
--- a/classes/cluster/os-aio-contrail/init.yml
+++ b/classes/cluster/os-aio-contrail/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.repo.mcp.extra
 - system.linux.system.single
 - system.rsyslog.client.single
diff --git a/classes/cluster/os-aio-ovs/infra/init.yml b/classes/cluster/os-aio-ovs/infra/init.yml
index 03846c3..d5609e1 100644
--- a/classes/cluster/os-aio-ovs/infra/init.yml
+++ b/classes/cluster/os-aio-ovs/infra/init.yml
@@ -1,7 +1,7 @@
 parameters:
   _param:
     cluster_domain: os-aio-ovs.local
-    cluster_name: os_aio_ovs
+    cluster_name: os-aio-ovs
     infra_config_deploy_address: 192.168.10.90
     infra_config_address: 172.16.10.90
   linux:
diff --git a/classes/cluster/os-aio-ovs/init.yml b/classes/cluster/os-aio-ovs/init.yml
index c2785b7..7ba75cc 100644
--- a/classes/cluster/os-aio-ovs/init.yml
+++ b/classes/cluster/os-aio-ovs/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.single
 - cluster.os-aio-ovs.infra
 - cluster.os-aio-ovs.openstack
diff --git a/classes/cluster/os-ha-contrail-40/infra/init.yml b/classes/cluster/os-ha-contrail-40/infra/init.yml
index fdb1dc3..182936e 100644
--- a/classes/cluster/os-ha-contrail-40/infra/init.yml
+++ b/classes/cluster/os-ha-contrail-40/infra/init.yml
@@ -1,21 +1,9 @@
 parameters:
   _param:
-    cluster_domain: os_ha_contrail_40.local
-    cluster_name: os_ha_contrail_40
-    infra_config_deploy_address: 192.168.10.100
+    cluster_domain: os-ha-contrail-40.local
+    cluster_name: os-ha-contrail-40
+    infra_config_deploy_address: 192.168.10.90
     infra_config_address: 172.16.10.100
     infra_config_hostname: cfg01
     linux_system_repo_mcp_salt_version: nightly
-  linux:
-    network:
-      host:
-        cfg01:
-          address: ${_param:infra_config_address}
-          names:
-          - ${_param:infra_config_hostname}
-          - ${_param:infra_config_hostname}.${_param:cluster_domain}
-        cfg:
-          address: ${_param:infra_config_address}
-          names:
-          - cfg
-          - cfg.${_param:cluster_domain}
+  
diff --git a/classes/cluster/os-ha-contrail-40/init.yml b/classes/cluster/os-ha-contrail-40/init.yml
index b7c1997..7947dac 100644
--- a/classes/cluster/os-ha-contrail-40/init.yml
+++ b/classes/cluster/os-ha-contrail-40/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.repo.mcp.extra
 - system.linux.system.single
 - system.rsyslog.client.single
diff --git a/classes/cluster/os-ha-contrail-40/opencontrail/init.yml b/classes/cluster/os-ha-contrail-40/opencontrail/init.yml
index b36a3f0..b460eb0 100644
--- a/classes/cluster/os-ha-contrail-40/opencontrail/init.yml
+++ b/classes/cluster/os-ha-contrail-40/opencontrail/init.yml
@@ -13,26 +13,4 @@
     opencontrail_control_node02_address: 172.16.10.112
     opencontrail_control_node03_address: 172.16.10.113
     opencontrail_control_interface_name: eth1
-  linux:
-    network:
-      host:
-        ntw:
-          address: ${_param:opencontrail_control_address}
-          names:
-          - ntw
-          - ntw.${_param:cluster_domain}
-        ntw01:
-          address: ${_param:opencontrail_control_node01_address}
-          names:
-          - ${_param:opencontrail_control_node01_hostname}
-          - ${_param:opencontrail_control_node01_hostname}.${_param:cluster_domain}
-        ntw02:
-          address: ${_param:opencontrail_control_node02_address}
-          names:
-          - ${_param:opencontrail_control_node02_hostname}
-          - ${_param:opencontrail_control_node02_hostname}.${_param:cluster_domain}
-        ntw03:
-          address: ${_param:opencontrail_control_node03_address}
-          names:
-          - ${_param:opencontrail_control_node03_hostname}
-          - ${_param:opencontrail_control_node03_hostname}.${_param:cluster_domain}
+  
diff --git a/classes/cluster/os-ha-contrail-40/openstack/control.yml b/classes/cluster/os-ha-contrail-40/openstack/control.yml
index 732a6a1..e3c086f 100644
--- a/classes/cluster/os-ha-contrail-40/openstack/control.yml
+++ b/classes/cluster/os-ha-contrail-40/openstack/control.yml
@@ -110,6 +110,8 @@
                 rndc_host: ${_param:openstack_control_node03_address}
                 rndc_port: 953
                 rndc_key_file: /etc/designate/rndc.key
+    worker:
+      enabled: ${_param:designate_worker_enabled}
   glance:
     server:
       storage:
diff --git a/classes/cluster/os-ha-contrail-40/openstack/init.yml b/classes/cluster/os-ha-contrail-40/openstack/init.yml
index c129dea..cdcfd10 100644
--- a/classes/cluster/os-ha-contrail-40/openstack/init.yml
+++ b/classes/cluster/os-ha-contrail-40/openstack/init.yml
@@ -76,6 +76,7 @@
       rndc_port: 953
       rndc_key_file: /etc/designate/rndc.key
     designate_version: ${_param:openstack_version}
+    designate_worker_enabled: true
     cluster_vip_address: ${_param:openstack_control_address}
     glance_version: ${_param:openstack_version}
     glance_service_host: ${_param:openstack_control_address}
@@ -117,86 +118,3 @@
     horizon_identity_host: ${_param:openstack_control_address}
     horizon_identity_encryption: none
     horizon_identity_version: 2
-  linux:
-    network:
-      host:
-        prx:
-          address: ${_param:openstack_proxy_address}
-          names:
-          - prx
-          - prx.${_param:cluster_domain}
-        prx01:
-          address: ${_param:openstack_proxy_node01_address}
-          names:
-          - ${_param:openstack_proxy_node01_hostname}
-          - prx01.${_param:cluster_domain}
-        ctl:
-          address: ${_param:openstack_control_address}
-          names:
-          - ctl
-          - ctl.${_param:cluster_domain}
-        ctl01:
-          address: ${_param:openstack_control_node01_address}
-          names:
-          - ${_param:openstack_control_node01_hostname}
-          - ${_param:openstack_control_node01_hostname}.${_param:cluster_domain}
-        ctl02:
-          address: ${_param:openstack_control_node02_address}
-          names:
-          - ${_param:openstack_control_node02_hostname}
-          - ${_param:openstack_control_node02_hostname}.${_param:cluster_domain}
-        ctl03:
-          address: ${_param:openstack_control_node03_address}
-          names:
-          - ${_param:openstack_control_node03_hostname}
-          - ${_param:openstack_control_node03_hostname}.${_param:cluster_domain}
-        msg:
-          address: ${_param:openstack_message_queue_address}
-          names:
-          - msg
-          - msg.${_param:cluster_domain}
-        msg01:
-          address: ${_param:openstack_message_queue_node01_address}
-          names:
-          - ${_param:openstack_message_queue_node01_hostname}
-          - ${_param:openstack_message_queue_node01_hostname}.${_param:cluster_domain}
-        msg02:
-          address: ${_param:openstack_message_queue_node02_address}
-          names:
-          - ${_param:openstack_message_queue_node02_hostname}
-          - ${_param:openstack_message_queue_node02_hostname}.${_param:cluster_domain}
-        msg03:
-          address: ${_param:openstack_message_queue_node03_address}
-          names:
-          - ${_param:openstack_message_queue_node03_hostname}
-          - ${_param:openstack_message_queue_node03_hostname}.${_param:cluster_domain}
-        dbs:
-          address: ${_param:openstack_database_address}
-          names:
-          - dbs
-          - dbs.${_param:cluster_domain}
-        dbs01:
-          address: ${_param:openstack_database_node01_address}
-          names:
-          - ${_param:openstack_database_node01_hostname}
-          - ${_param:openstack_database_node01_hostname}.${_param:cluster_domain}
-        dbs02:
-          address: ${_param:openstack_database_node02_address}
-          names:
-          - ${_param:openstack_database_node02_hostname}
-          - ${_param:openstack_database_node02_hostname}.${_param:cluster_domain}
-        dbs03:
-          address: ${_param:openstack_database_node03_address}
-          names:
-          - ${_param:openstack_database_node03_hostname}
-          - ${_param:openstack_database_node03_hostname}.${_param:cluster_domain}
-        cmp01:
-          address: ${_param:openstack_compute_node01_address}
-          names:
-          - ${_param:openstack_compute_node01_hostname}
-          - ${_param:openstack_compute_node01_hostname}.${_param:cluster_domain}
-        cmp02:
-          address: ${_param:openstack_compute_node02_address}
-          names:
-          - ${_param:openstack_compute_node02_hostname}
-          - ${_param:openstack_compute_node02_hostname}.${_param:cluster_domain}
diff --git a/classes/cluster/os-ha-contrail/.env b/classes/cluster/os-ha-contrail/.env
new file mode 100644
index 0000000..753d68a
--- /dev/null
+++ b/classes/cluster/os-ha-contrail/.env
@@ -0,0 +1 @@
+EXTRA_FORMULAS="barbican"
diff --git a/classes/cluster/os-ha-contrail/infra/init.yml b/classes/cluster/os-ha-contrail/infra/init.yml
index 620e669..e504ccc 100755
--- a/classes/cluster/os-ha-contrail/infra/init.yml
+++ b/classes/cluster/os-ha-contrail/infra/init.yml
@@ -1,21 +1,9 @@
 parameters:
   _param:
     cluster_domain: os-ha-contrail.local
-    cluster_name: os_ha_contrail
-    infra_config_deploy_address: 192.168.10.100
+    cluster_name: os-ha-contrail
+    infra_config_deploy_address: 192.168.10.90
     infra_config_address: 172.16.10.100
     infra_config_hostname: cfg01
     linux_system_repo_mcp_salt_version: nightly
-  linux:
-    network:
-      host:
-        cfg01:
-          address: ${_param:infra_config_address}
-          names:
-          - ${_param:infra_config_hostname}
-          - ${_param:infra_config_hostname}.${_param:cluster_domain}
-        cfg:
-          address: ${_param:infra_config_address}
-          names:
-          - cfg
-          - cfg.${_param:cluster_domain}
+  
diff --git a/classes/cluster/os-ha-contrail/init.yml b/classes/cluster/os-ha-contrail/init.yml
index 203f799..8502db0 100755
--- a/classes/cluster/os-ha-contrail/init.yml
+++ b/classes/cluster/os-ha-contrail/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.repo.mcp.extra
 - system.linux.system.single
 - system.rsyslog.client.single
diff --git a/classes/cluster/os-ha-contrail/opencontrail/init.yml b/classes/cluster/os-ha-contrail/opencontrail/init.yml
index cee0b50..9b3acda 100644
--- a/classes/cluster/os-ha-contrail/opencontrail/init.yml
+++ b/classes/cluster/os-ha-contrail/opencontrail/init.yml
@@ -12,26 +12,4 @@
     opencontrail_control_node01_address: 172.16.10.111
     opencontrail_control_node02_address: 172.16.10.112
     opencontrail_control_node03_address: 172.16.10.113
-  linux:
-    network:
-      host:
-        ntw:
-          address: ${_param:opencontrail_control_address}
-          names:
-          - ntw
-          - ntw.${_param:cluster_domain}
-        ntw01:
-          address: ${_param:opencontrail_control_node01_address}
-          names:
-          - ${_param:opencontrail_control_node01_hostname}
-          - ${_param:opencontrail_control_node01_hostname}.${_param:cluster_domain}
-        ntw02:
-          address: ${_param:opencontrail_control_node02_address}
-          names:
-          - ${_param:opencontrail_control_node02_hostname}
-          - ${_param:opencontrail_control_node02_hostname}.${_param:cluster_domain}
-        ntw03:
-          address: ${_param:opencontrail_control_node03_address}
-          names:
-          - ${_param:opencontrail_control_node03_hostname}
-          - ${_param:opencontrail_control_node03_hostname}.${_param:cluster_domain}
\ No newline at end of file
+  
diff --git a/classes/cluster/os-ha-contrail/openstack/control.yml b/classes/cluster/os-ha-contrail/openstack/control.yml
index e5ab6a3..1e9733a 100755
--- a/classes/cluster/os-ha-contrail/openstack/control.yml
+++ b/classes/cluster/os-ha-contrail/openstack/control.yml
@@ -120,6 +120,8 @@
                 rndc_host: ${_param:openstack_control_node03_address}
                 rndc_port: 953
                 rndc_key_file: /etc/designate/rndc.key
+    worker:
+      enabled: ${_param:designate_worker_enabled}
   glance:
     server:
       storage:
diff --git a/classes/cluster/os-ha-contrail/openstack/init.yml b/classes/cluster/os-ha-contrail/openstack/init.yml
index a6c09ff..ee1eaef 100755
--- a/classes/cluster/os-ha-contrail/openstack/init.yml
+++ b/classes/cluster/os-ha-contrail/openstack/init.yml
@@ -77,6 +77,7 @@
       rndc_key_file: /etc/designate/rndc.key
     barbican_version: ${_param:openstack_version}
     designate_version: ${_param:openstack_version}
+    designate_worker_enabled: true
     cluster_vip_address: ${_param:openstack_control_address}
     glance_version: ${_param:openstack_version}
     glance_service_host: ${_param:openstack_control_address}
@@ -125,86 +126,4 @@
     opencontrail_barbican_password: ${_param:keystone_admin_password}
     opencontrail_barbican_tenant: admin
     barbican_simple_crypto_kek: "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoxMjM0NTY="
-  linux:
-    network:
-      host:
-        prx:
-          address: ${_param:openstack_proxy_address}
-          names:
-          - prx
-          - prx.${_param:cluster_domain}
-        prx01:
-          address: ${_param:openstack_proxy_node01_address}
-          names:
-          - ${_param:openstack_proxy_node01_hostname}
-          - prx01.${_param:cluster_domain}
-        ctl:
-          address: ${_param:openstack_control_address}
-          names:
-          - ctl
-          - ctl.${_param:cluster_domain}
-        ctl01:
-          address: ${_param:openstack_control_node01_address}
-          names:
-          - ${_param:openstack_control_node01_hostname}
-          - ${_param:openstack_control_node01_hostname}.${_param:cluster_domain}
-        ctl02:
-          address: ${_param:openstack_control_node02_address}
-          names:
-          - ${_param:openstack_control_node02_hostname}
-          - ${_param:openstack_control_node02_hostname}.${_param:cluster_domain}
-        ctl03:
-          address: ${_param:openstack_control_node03_address}
-          names:
-          - ${_param:openstack_control_node03_hostname}
-          - ${_param:openstack_control_node03_hostname}.${_param:cluster_domain}
-        msg:
-          address: ${_param:openstack_message_queue_address}
-          names:
-          - msg
-          - msg.${_param:cluster_domain}
-        msg01:
-          address: ${_param:openstack_message_queue_node01_address}
-          names:
-          - ${_param:openstack_message_queue_node01_hostname}
-          - ${_param:openstack_message_queue_node01_hostname}.${_param:cluster_domain}
-        msg02:
-          address: ${_param:openstack_message_queue_node02_address}
-          names:
-          - ${_param:openstack_message_queue_node02_hostname}
-          - ${_param:openstack_message_queue_node02_hostname}.${_param:cluster_domain}
-        msg03:
-          address: ${_param:openstack_message_queue_node03_address}
-          names:
-          - ${_param:openstack_message_queue_node03_hostname}
-          - ${_param:openstack_message_queue_node03_hostname}.${_param:cluster_domain}
-        dbs:
-          address: ${_param:openstack_database_address}
-          names:
-          - dbs
-          - dbs.${_param:cluster_domain}
-        dbs01:
-          address: ${_param:openstack_database_node01_address}
-          names:
-          - ${_param:openstack_database_node01_hostname}
-          - ${_param:openstack_database_node01_hostname}.${_param:cluster_domain}
-        dbs02:
-          address: ${_param:openstack_database_node02_address}
-          names:
-          - ${_param:openstack_database_node02_hostname}
-          - ${_param:openstack_database_node02_hostname}.${_param:cluster_domain}
-        dbs03:
-          address: ${_param:openstack_database_node03_address}
-          names:
-          - ${_param:openstack_database_node03_hostname}
-          - ${_param:openstack_database_node03_hostname}.${_param:cluster_domain}
-        cmp01:
-          address: ${_param:openstack_compute_node01_address}
-          names:
-          - ${_param:openstack_compute_node01_hostname}
-          - ${_param:openstack_compute_node01_hostname}.${_param:cluster_domain}
-        cmp02:
-          address: ${_param:openstack_compute_node02_address}
-          names:
-          - ${_param:openstack_compute_node02_hostname}
-          - ${_param:openstack_compute_node02_hostname}.${_param:cluster_domain}
+  
diff --git a/classes/cluster/os-ha-ovs-syndic/infra/init.yml b/classes/cluster/os-ha-ovs-syndic/infra/init.yml
index 90af472..b3dd013 100644
--- a/classes/cluster/os-ha-ovs-syndic/infra/init.yml
+++ b/classes/cluster/os-ha-ovs-syndic/infra/init.yml
@@ -1,7 +1,7 @@
 parameters:
   _param:
     cluster_domain: os-ha-ovs-syndic.local
-    cluster_name: os_ha_ovs_syndic
+    cluster_name: os-ha-ovs-syndic
     infra_config_deploy_address: 192.168.10.90
     infra_config_address: 172.16.10.90
     salt_syndic_master_address: 192.168.10.90
diff --git a/classes/cluster/os-ha-ovs-syndic/init.yml b/classes/cluster/os-ha-ovs-syndic/init.yml
index b4d28ad..5e4d440 100644
--- a/classes/cluster/os-ha-ovs-syndic/init.yml
+++ b/classes/cluster/os-ha-ovs-syndic/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.single
 - cluster.os-ha-ovs-syndic.infra
 - cluster.os-ha-ovs-syndic.openstack
diff --git a/classes/cluster/os-ha-ovs/infra/init.yml b/classes/cluster/os-ha-ovs/infra/init.yml
index b035577..b8555b0 100644
--- a/classes/cluster/os-ha-ovs/infra/init.yml
+++ b/classes/cluster/os-ha-ovs/infra/init.yml
@@ -1,7 +1,7 @@
 parameters:
   _param:
     cluster_domain: os-ha-ovs.local
-    cluster_name: os_ha_ovs
+    cluster_name: os-ha-ovs
     infra_config_deploy_address: 192.168.10.90
     infra_config_address: 172.16.10.90
   linux:
diff --git a/classes/cluster/os-ha-ovs/init.yml b/classes/cluster/os-ha-ovs/init.yml
index 37bd6d8..7c35891 100644
--- a/classes/cluster/os-ha-ovs/init.yml
+++ b/classes/cluster/os-ha-ovs/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.single
 - cluster.os-ha-ovs.infra
 - cluster.os-ha-ovs.openstack
diff --git a/classes/cluster/os-ha-ovs/openstack/control.yml b/classes/cluster/os-ha-ovs/openstack/control.yml
index b4078b9..ee20aa0 100644
--- a/classes/cluster/os-ha-ovs/openstack/control.yml
+++ b/classes/cluster/os-ha-ovs/openstack/control.yml
@@ -61,6 +61,8 @@
         driver: messagingv2
         topics: "notifications"
   designate:
+    worker:
+      enabled: ${_param:designate_worker_enabled}
     server:
       pools:
         default:
diff --git a/classes/cluster/os-ha-ovs/openstack/init.yml b/classes/cluster/os-ha-ovs/openstack/init.yml
index 7e1d100..38e2c1e 100644
--- a/classes/cluster/os-ha-ovs/openstack/init.yml
+++ b/classes/cluster/os-ha-ovs/openstack/init.yml
@@ -82,6 +82,7 @@
       rndc_host: ${_param:openstack_control_node01_address}
       rndc_port: 953
       rndc_key_file: /etc/designate/rndc.key
+    designate_worker_enabled: true
     designate_version: ${_param:openstack_version}
     glance_version: ${_param:openstack_version}
     glance_service_host: ${_param:cluster_vip_address}
diff --git a/classes/cluster/sl-k8s-calico/infra/init.yml b/classes/cluster/sl-k8s-calico/infra/init.yml
index 027faca..758544b 100644
--- a/classes/cluster/sl-k8s-calico/infra/init.yml
+++ b/classes/cluster/sl-k8s-calico/infra/init.yml
@@ -14,7 +14,7 @@
     # infra service addresses
     infra_config_hostname: cfg01
     infra_config_address: 172.16.10.100
-    infra_config_deploy_address: 192.168.10.100
+    infra_config_deploy_address: 192.168.10.90
 
     cluster_domain: virtual-mcp11-k8s-calico.local
     cluster_name: virtual-mcp11-k8s-calico
diff --git a/classes/cluster/sl-k8s-calico/init.yml b/classes/cluster/sl-k8s-calico/init.yml
index eca25ff..e21b7ee 100644
--- a/classes/cluster/sl-k8s-calico/init.yml
+++ b/classes/cluster/sl-k8s-calico/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - cluster.sl-k8s-calico.kubernetes
 - cluster.sl-k8s-calico.stacklight
 - cluster.sl-k8s-calico.infra
diff --git a/classes/cluster/sl-k8s-calico/stacklight/init.yml b/classes/cluster/sl-k8s-calico/stacklight/init.yml
index 3237575..2d4dc23 100644
--- a/classes/cluster/sl-k8s-calico/stacklight/init.yml
+++ b/classes/cluster/sl-k8s-calico/stacklight/init.yml
@@ -15,9 +15,6 @@
     stacklight_monitor_node02_address: 172.16.10.108
     stacklight_monitor_node03_address: 172.16.10.109
 
-    # Glusterfs
-    glusterfs_service_host: ${_param:stacklight_monitor_address}
-
     # Prometheus
     prometheus_control_address: ${_param:stacklight_monitor_address}
 
diff --git a/classes/cluster/sl-k8s-calico/stacklight/server.yml b/classes/cluster/sl-k8s-calico/stacklight/server.yml
index dae5452..e7e2f62 100644
--- a/classes/cluster/sl-k8s-calico/stacklight/server.yml
+++ b/classes/cluster/sl-k8s-calico/stacklight/server.yml
@@ -1,8 +1,7 @@
 classes:
 - system.docker.host
 - system.linux.system.repo.influxdb
-- system.linux.system.repo.tcp_elastic
-- system.linux.system.repo.glusterfs
+- system.linux.system.repo.elasticsearch
 # Needed to install Galera packages
 - system.linux.system.repo.mcp.openstack
 - system.elasticsearch.server.cluster
@@ -12,10 +11,6 @@
 - system.haproxy.proxy.listen.stacklight.kibana
 - system.haproxy.proxy.listen.stacklight.influxdb_relay
 - service.haproxy.proxy.single
-- system.glusterfs.client.cluster
-- system.glusterfs.client.volume.prometheus
-- system.glusterfs.server.cluster
-- system.glusterfs.server.volume.prometheus
 - system.galera.server.cluster
 - system.galera.server.database.grafana
 - system.influxdb.relay.cluster
diff --git a/classes/cluster/sl-k8s-contrail/infra/init.yml b/classes/cluster/sl-k8s-contrail/infra/init.yml
index cb7e820..0b58654 100644
--- a/classes/cluster/sl-k8s-contrail/infra/init.yml
+++ b/classes/cluster/sl-k8s-contrail/infra/init.yml
@@ -8,10 +8,10 @@
     # infra service addresses
     infra_config_hostname: cfg01
     infra_config_address: 172.16.10.100
-    infra_config_deploy_address: 192.168.10.100
+    infra_config_deploy_address: 192.168.10.90
 
     cluster_domain: sl-k8s-contrail.local
-    cluster_name: sl_k8s_contrail
+    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 5ea4d4f..2e194af 100644
--- a/classes/cluster/sl-k8s-contrail/init.yml
+++ b/classes/cluster/sl-k8s-contrail/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.single
 - cluster.sl-k8s-contrail.kubernetes
 - cluster.sl-k8s-contrail.opencontrail
diff --git a/classes/cluster/sl-k8s-contrail/stacklight/init.yml b/classes/cluster/sl-k8s-contrail/stacklight/init.yml
index f57c228..12a5c01 100644
--- a/classes/cluster/sl-k8s-contrail/stacklight/init.yml
+++ b/classes/cluster/sl-k8s-contrail/stacklight/init.yml
@@ -14,8 +14,6 @@
     stacklight_node01_address: 172.16.10.107
     stacklight_node02_address: 172.16.10.108
     stacklight_node03_address: 172.16.10.109
-    # GlusterFS
-    glusterfs_service_host: ${_param:stacklight_monitor_address}
     # Prometheus
     prometheus_control_address: ${_param:stacklight_monitor_address}
 
diff --git a/classes/cluster/sl-k8s-contrail/stacklight/server.yml b/classes/cluster/sl-k8s-contrail/stacklight/server.yml
index 2890d05..06e6293 100644
--- a/classes/cluster/sl-k8s-contrail/stacklight/server.yml
+++ b/classes/cluster/sl-k8s-contrail/stacklight/server.yml
@@ -1,7 +1,6 @@
 classes:
 - system.linux.system.repo.influxdb
-- system.linux.system.repo.tcp_elastic
-- system.linux.system.repo.glusterfs
+- system.linux.system.repo.elasticsearch
 # Needed to install Galera packages
 - system.linux.system.repo.mcp.openstack
 - system.docker.host
@@ -14,8 +13,6 @@
 - service.haproxy.proxy.single
 - system.galera.server.cluster
 - system.galera.server.database.grafana
-- system.glusterfs.client.cluster
-- system.glusterfs.client.volume.prometheus
 - system.influxdb.relay.cluster
 - system.influxdb.server.single
 - system.influxdb.database.prometheus
diff --git a/classes/cluster/sl-os-contrail/infra/init.yml b/classes/cluster/sl-os-contrail/infra/init.yml
index 893c1d4..a812065 100755
--- a/classes/cluster/sl-os-contrail/infra/init.yml
+++ b/classes/cluster/sl-os-contrail/infra/init.yml
@@ -1,8 +1,8 @@
 parameters:
   _param:
     cluster_domain: sl-os-contrail.local
-    cluster_name: sl_os_contrail
-    infra_config_deploy_address: 192.168.10.100
+    cluster_name: sl-os-contrail
+    infra_config_deploy_address: 192.168.10.90
     infra_config_address: 172.16.10.100
     infra_config_hostname: cfg01
     linux_system_repo_mcp_salt_version: nightly
diff --git a/classes/cluster/sl-os-contrail/init.yml b/classes/cluster/sl-os-contrail/init.yml
index 036e716..e410120 100755
--- a/classes/cluster/sl-os-contrail/init.yml
+++ b/classes/cluster/sl-os-contrail/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.repo.mcp.extra
 - system.linux.system.single
 - system.rsyslog.client.single
diff --git a/classes/cluster/sl-os-contrail/openstack/control.yml b/classes/cluster/sl-os-contrail/openstack/control.yml
index c2e88c4..c934ea0 100755
--- a/classes/cluster/sl-os-contrail/openstack/control.yml
+++ b/classes/cluster/sl-os-contrail/openstack/control.yml
@@ -12,7 +12,6 @@
 - system.keystone.server.cluster
 - system.glusterfs.server.volume.glance
 - system.glusterfs.server.volume.keystone
-- system.glusterfs.server.volume.prometheus
 - system.glusterfs.server.cluster
 - system.glusterfs.client.cluster
 - system.glusterfs.client.volume.glance
@@ -112,6 +111,8 @@
                 rndc_host: ${_param:openstack_control_node03_address}
                 rndc_port: 953
                 rndc_key_file: /etc/designate/rndc.key
+    worker:
+      enabled: ${_param:designate_worker_enabled}
   glance:
     server:
       storage:
diff --git a/classes/cluster/sl-os-contrail/openstack/init.yml b/classes/cluster/sl-os-contrail/openstack/init.yml
index 14af8a4..c0667d3 100755
--- a/classes/cluster/sl-os-contrail/openstack/init.yml
+++ b/classes/cluster/sl-os-contrail/openstack/init.yml
@@ -75,6 +75,7 @@
       rndc_port: 953
       rndc_key_file: /etc/designate/rndc.key
     designate_version: ${_param:openstack_version}
+    designate_worker_enabled: true
     cluster_vip_address: ${_param:openstack_control_address}
     glance_version: ${_param:openstack_version}
     glance_service_host: ${_param:openstack_control_address}
diff --git a/classes/cluster/sl-os-contrail/stacklight/server.yml b/classes/cluster/sl-os-contrail/stacklight/server.yml
index 25ca9cd..4c7b720 100755
--- a/classes/cluster/sl-os-contrail/stacklight/server.yml
+++ b/classes/cluster/sl-os-contrail/stacklight/server.yml
@@ -1,11 +1,8 @@
 classes:
 - system.docker.host
-- system.linux.system.repo.glusterfs
 - system.linux.system.repo.influxdb
 - system.linux.system.repo.mcp.salt
-- system.linux.system.repo.tcp_elastic
-- system.glusterfs.client.cluster
-- system.glusterfs.client.volume.prometheus
+- system.linux.system.repo.elasticsearch
 - system.elasticsearch.server.cluster
 - system.elasticsearch.server.curator
 - system.kibana.server.single
@@ -52,10 +49,6 @@
     docker_image_remote_collector: docker-prod-virtual.docker.mirantis.net/openstack-docker/heka:latest
     docker_image_remote_storage_adapter: docker-prod-virtual.docker.mirantis.net/openstack-docker/remote_storage_adapter:latest
     docker_image_grafana: grafana/grafana:4.3.2
-    prometheus_glusterfs_service_host: ${_param:openstack_control_address}
-    glusterfs_node01_address: ${_param:openstack_control_node01_address}
-    glusterfs_node02_address: ${_param:openstack_control_node02_address}
-    glusterfs_node03_address: ${_param:openstack_control_node03_address}
     grafana_admin_password: admin
     grafana_database_type: mysql
     grafana_database_host: ${_param:cluster_vip_address}
diff --git a/classes/cluster/sl-os-ovs/infra/init.yml b/classes/cluster/sl-os-ovs/infra/init.yml
index c2dc133..b774ff8 100644
--- a/classes/cluster/sl-os-ovs/infra/init.yml
+++ b/classes/cluster/sl-os-ovs/infra/init.yml
@@ -1,8 +1,8 @@
 parameters:
   _param:
     cluster_domain: sl-os-ovs.local
-    cluster_name: sl_os_ovs
-    infra_config_deploy_address: 192.168.10.100
+    cluster_name: sl-os-ovs
+    infra_config_deploy_address: 192.168.10.90
     infra_config_address: 172.16.10.100
   linux:
     network:
diff --git a/classes/cluster/sl-os-ovs/init.yml b/classes/cluster/sl-os-ovs/init.yml
index f9be30f..bbd135b 100644
--- a/classes/cluster/sl-os-ovs/init.yml
+++ b/classes/cluster/sl-os-ovs/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.single
 - system.openssh.server.team.lab
 - system.openssh.server.team.tcpcloud
diff --git a/classes/cluster/sl-os-ovs/openstack/control.yml b/classes/cluster/sl-os-ovs/openstack/control.yml
index 70287f9..0c6cbeb 100644
--- a/classes/cluster/sl-os-ovs/openstack/control.yml
+++ b/classes/cluster/sl-os-ovs/openstack/control.yml
@@ -46,6 +46,9 @@
           proto: static
           address: ${_param:single_address}
           netmask: 255.255.255.0
+  designate:
+    worker:
+      enabled: ${_param:designate_worker_enabled}
   keepalived:
     cluster:
       instance:
diff --git a/classes/cluster/sl-os-ovs/openstack/init.yml b/classes/cluster/sl-os-ovs/openstack/init.yml
index aba9cee..70e4733 100644
--- a/classes/cluster/sl-os-ovs/openstack/init.yml
+++ b/classes/cluster/sl-os-ovs/openstack/init.yml
@@ -103,6 +103,7 @@
     ceilometer_service_host: ${_param:cluster_vip_address}
     designate_version: ${_param:openstack_version}
     designate_service_host: ${_param:cluster_vip_address}
+    designate_worker_enabled: true
   linux:
     network:
       host:
diff --git a/classes/cluster/sl-os-ovs/stacklight/init.yml b/classes/cluster/sl-os-ovs/stacklight/init.yml
index 3e56adb..2449e44 100644
--- a/classes/cluster/sl-os-ovs/stacklight/init.yml
+++ b/classes/cluster/sl-os-ovs/stacklight/init.yml
@@ -16,8 +16,6 @@
     stacklight_monitor_node03_address: 172.16.10.109
     salt_minion_ca_host: cfg01.${_param:cluster_domain}
     salt_minion_ca_authority: salt_master_ca
-    # Glusterfs
-    glusterfs_service_host: ${_param:stacklight_monitor_address}
 
     # Prometheus
     prometheus_control_address: ${_param:stacklight_monitor_address}
diff --git a/classes/cluster/sl-os-ovs/stacklight/server.yml b/classes/cluster/sl-os-ovs/stacklight/server.yml
index 5d3b8b1..a85809e 100644
--- a/classes/cluster/sl-os-ovs/stacklight/server.yml
+++ b/classes/cluster/sl-os-ovs/stacklight/server.yml
@@ -1,7 +1,7 @@
 classes:
 - system.docker.host
 - system.linux.system.repo.influxdb
-- system.linux.system.repo.tcp_elastic
+- system.linux.system.repo.elasticsearch
 - system.linux.system.repo.mcp.openstack
 - system.elasticsearch.server.cluster
 - system.elasticsearch.server.curator
@@ -10,8 +10,6 @@
 - system.haproxy.proxy.listen.stacklight.kibana
 - system.haproxy.proxy.listen.stacklight.influxdb_relay
 - service.haproxy.proxy.single
-- system.glusterfs.client.cluster
-- system.glusterfs.client.volume.prometheus
 - system.galera.server.cluster
 - system.galera.server.database.grafana
 - system.influxdb.relay.cluster
@@ -66,10 +64,6 @@
     influxdb_admin_password: password
     influxdb_stacklight_password: lmapass
     openstack_version: newton
-    prometheus_glusterfs_service_host: ${_param:openstack_control_address}
-    glusterfs_node01_address: ${_param:openstack_control_node01_address}
-    glusterfs_node02_address: ${_param:openstack_control_node02_address}
-    glusterfs_node03_address: ${_param:openstack_control_node03_address}
     remote_collector_telegraf_host: monitoring_remote_agent
   linux:
     network:
diff --git a/classes/cluster/virtual-mcp-ocata-cicd/cicd/control/init.yml b/classes/cluster/virtual-mcp-ocata-cicd/cicd/control/init.yml
index a9e7f7b..d9f86ab 100644
--- a/classes/cluster/virtual-mcp-ocata-cicd/cicd/control/init.yml
+++ b/classes/cluster/virtual-mcp-ocata-cicd/cicd/control/init.yml
@@ -10,7 +10,6 @@
   - system.glusterfs.client.volume.mysql
   - system.glusterfs.client.volume.openldap
   - system.glusterfs.client.volume.postgresql
-  - system.glusterfs.client.volume.prometheus
   - system.glusterfs.client.volume.pushkin
   - system.glusterfs.client.volume.registry
   - system.glusterfs.client.volume.rundeck
@@ -245,6 +244,10 @@
     pushkin_db_user: pushkin
     pushkin_db_user_password: kRQaFJWiqhQfy6sN
     pushkin_db_host: ${_param:haproxy_postgresql_bind_host}
+    pushkin_smtp_host: 127.0.0.1
+    pushkin_smtp_port: 25
+    pushkin_email_sender_password: ''
+
     #..WebHook notification senders
     webhook_from: pushkin@example.com
     webhook_recipients: alerts@example.com
diff --git a/classes/cluster/virtual-mcp-ocata-cicd/cicd/gluster.yml b/classes/cluster/virtual-mcp-ocata-cicd/cicd/gluster.yml
index 47cd942..082902e 100644
--- a/classes/cluster/virtual-mcp-ocata-cicd/cicd/gluster.yml
+++ b/classes/cluster/virtual-mcp-ocata-cicd/cicd/gluster.yml
@@ -9,7 +9,6 @@
   - system.glusterfs.server.volume.mysql
   - system.glusterfs.server.volume.openldap
   - system.glusterfs.server.volume.postgresql
-  - system.glusterfs.server.volume.prometheus
   - system.glusterfs.server.volume.pushkin
   - system.glusterfs.server.volume.registry
   - system.glusterfs.server.volume.rundeck
diff --git a/classes/cluster/virtual-mcp-ocata-cicd/infra/config.yml b/classes/cluster/virtual-mcp-ocata-cicd/infra/config.yml
index 50b7893..e0425aa 100644
--- a/classes/cluster/virtual-mcp-ocata-cicd/infra/config.yml
+++ b/classes/cluster/virtual-mcp-ocata-cicd/infra/config.yml
@@ -32,7 +32,7 @@
     reclass_data_revision: master
     salt_master_environment_repository: "https://github.com/tcpcloud"
     salt_master_environment_revision: master
-    reclass_config_master: 192.168.10.100
+    reclass_config_master: 192.168.10.90
     single_address: 172.16.10.100
     salt_master_host: 127.0.0.1
     salt_master_base_environment: prd
diff --git a/classes/cluster/virtual-mcp-ocata-cicd/openstack/control.yml b/classes/cluster/virtual-mcp-ocata-cicd/openstack/control.yml
index 6ad2afa..e10b2a0 100644
--- a/classes/cluster/virtual-mcp-ocata-cicd/openstack/control.yml
+++ b/classes/cluster/virtual-mcp-ocata-cicd/openstack/control.yml
@@ -107,6 +107,8 @@
                 rndc_host: ${_param:openstack_control_node03_address}
                 rndc_port: 953
                 rndc_key_file: /etc/designate/rndc.key
+    worker:
+      enabled: ${_param:designate_worker_enabled}
   glance:
     server:
       storage:
diff --git a/classes/cluster/virtual-mcp-ocata-cicd/openstack/init.yml b/classes/cluster/virtual-mcp-ocata-cicd/openstack/init.yml
index b21c692..ff63ad9 100644
--- a/classes/cluster/virtual-mcp-ocata-cicd/openstack/init.yml
+++ b/classes/cluster/virtual-mcp-ocata-cicd/openstack/init.yml
@@ -60,6 +60,7 @@
       rndc_port: 953
       rndc_key_file: /etc/designate/rndc.key
     designate_version: ${_param:openstack_version}
+    designate_worker_enabled: true
     glance_version: ${_param:openstack_version}
     glance_service_host: ${_param:cluster_vip_address}
     keystone_version: ${_param:openstack_version}
@@ -182,4 +183,4 @@
       user:
         root:
           name: root
-          password: false
\ No newline at end of file
+          password: false
diff --git a/classes/cluster/virtual-mcp-ocata-cicd/stacklight/server.yml b/classes/cluster/virtual-mcp-ocata-cicd/stacklight/server.yml
index a455c20..67ca202 100644
--- a/classes/cluster/virtual-mcp-ocata-cicd/stacklight/server.yml
+++ b/classes/cluster/virtual-mcp-ocata-cicd/stacklight/server.yml
@@ -1,6 +1,6 @@
 classes:
 - system.linux.system.repo.influxdb
-- system.linux.system.repo.tcp_elastic
+- system.linux.system.repo.elasticsearch
 # Needed to install Galera packages
 - system.linux.system.repo.mcp.openstack
 - system.elasticsearch.server.cluster
diff --git a/classes/cluster/virtual-mcp-ocata-dvr/infra/config.yml b/classes/cluster/virtual-mcp-ocata-dvr/infra/config.yml
index 48bfdb4..10010ae 100644
--- a/classes/cluster/virtual-mcp-ocata-dvr/infra/config.yml
+++ b/classes/cluster/virtual-mcp-ocata-dvr/infra/config.yml
@@ -35,7 +35,7 @@
     salt_master_environment_repository: "https://github.com/tcpcloud"
     salt_master_environment_revision: master
     salt_api_password_hash: "$6$sGnRlxGf$al5jMCetLP.vfI/fTl3Z0N7Za1aeiexL487jAtyRABVfT3NlwZxQGVhO7S1N8OwS/34VHYwZQA8lkXwKMN/GS1"
-    reclass_config_master: 192.168.10.100
+    reclass_config_master: 192.168.10.90
     single_address: 172.16.10.100
     salt_master_host: 127.0.0.1
     salt_master_base_environment: prd
diff --git a/classes/cluster/virtual-mcp-ocata-dvr/init.yml b/classes/cluster/virtual-mcp-ocata-dvr/init.yml
index 8ddaf13..c801079 100644
--- a/classes/cluster/virtual-mcp-ocata-dvr/init.yml
+++ b/classes/cluster/virtual-mcp-ocata-dvr/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - service.grafana.collector
 - system.heka.log_collector.single
 - system.heka.log_collector.output.telegraf
diff --git a/classes/cluster/virtual-mcp-ocata-dvr/openstack/control.yml b/classes/cluster/virtual-mcp-ocata-dvr/openstack/control.yml
index 0ec3e9a..6232f79 100644
--- a/classes/cluster/virtual-mcp-ocata-dvr/openstack/control.yml
+++ b/classes/cluster/virtual-mcp-ocata-dvr/openstack/control.yml
@@ -14,7 +14,6 @@
 - system.glusterfs.client.volume.keystone
 - system.glusterfs.server.volume.glance
 - system.glusterfs.server.volume.keystone
-- system.glusterfs.server.volume.prometheus
 - system.glusterfs.server.cluster
 - system.glance.control.cluster
 - system.nova.control.cluster
diff --git a/classes/cluster/virtual-mcp-ocata-dvr/stacklight/server.yml b/classes/cluster/virtual-mcp-ocata-dvr/stacklight/server.yml
index bdc2c09..98cad93 100644
--- a/classes/cluster/virtual-mcp-ocata-dvr/stacklight/server.yml
+++ b/classes/cluster/virtual-mcp-ocata-dvr/stacklight/server.yml
@@ -1,15 +1,12 @@
 classes:
 - system.docker.host
-- system.linux.system.repo.glusterfs
 - system.linux.system.repo.influxdb
 - system.linux.system.repo.mcp.salt
-- system.linux.system.repo.tcp_elastic
+- system.linux.system.repo.elasticsearch
 - system.heka.remote_collector.container
 - system.heka.remote_collector.input.amqp
 - system.heka.remote_collector.output.elasticsearch
 - system.heka.remote_collector.output.telegraf
-- system.glusterfs.client.cluster
-- system.glusterfs.client.volume.prometheus
 - system.elasticsearch.server.cluster
 - system.elasticsearch.server.curator
 - system.kibana.server.single
@@ -54,10 +51,6 @@
     docker_image_remote_storage_adapter: docker-prod-virtual.docker.mirantis.net/openstack-docker/remote_storage_adapter:latest
     docker_image_remote_collector: docker-prod-virtual.docker.mirantis.net/openstack-docker/heka:latest
     docker_image_grafana: grafana/grafana:4.3.2
-    prometheus_glusterfs_service_host: ${_param:openstack_control_address}
-    glusterfs_node01_address: ${_param:openstack_control_node01_address}
-    glusterfs_node02_address: ${_param:openstack_control_node02_address}
-    glusterfs_node03_address: ${_param:openstack_control_node03_address}
     influxdb_port: 8086
     influxdb_admin_password: password
     influxdb_stacklight_password: lmapass
diff --git a/classes/cluster/virtual-mcp-ocata-ovs/infra/config.yml b/classes/cluster/virtual-mcp-ocata-ovs/infra/config.yml
index 2365676..93b6d6d 100644
--- a/classes/cluster/virtual-mcp-ocata-ovs/infra/config.yml
+++ b/classes/cluster/virtual-mcp-ocata-ovs/infra/config.yml
@@ -33,7 +33,7 @@
     reclass_data_revision: master
     salt_master_environment_repository: "https://github.com/tcpcloud"
     salt_master_environment_revision: master
-    reclass_config_master: 192.168.10.100
+    reclass_config_master: 192.168.10.90
     single_address: 172.16.10.100
     salt_master_host: 127.0.0.1
     salt_master_base_environment: prd
diff --git a/classes/cluster/virtual-mcp-ocata-ovs/init.yml b/classes/cluster/virtual-mcp-ocata-ovs/init.yml
index a178f05..d2e3d71 100644
--- a/classes/cluster/virtual-mcp-ocata-ovs/init.yml
+++ b/classes/cluster/virtual-mcp-ocata-ovs/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - service.grafana.collector
 - system.heka.log_collector.single
 - system.heka.log_collector.output.telegraf
diff --git a/classes/cluster/virtual-mcp-ocata-ovs/openstack/control.yml b/classes/cluster/virtual-mcp-ocata-ovs/openstack/control.yml
index cc036af..c88b3f9 100644
--- a/classes/cluster/virtual-mcp-ocata-ovs/openstack/control.yml
+++ b/classes/cluster/virtual-mcp-ocata-ovs/openstack/control.yml
@@ -14,7 +14,6 @@
 - system.glusterfs.client.volume.keystone
 - system.glusterfs.server.volume.glance
 - system.glusterfs.server.volume.keystone
-- system.glusterfs.server.volume.prometheus
 - system.glusterfs.server.cluster
 - system.glance.control.cluster
 - system.nova.control.cluster
@@ -110,6 +109,8 @@
                 rndc_host: ${_param:openstack_control_node03_address}
                 rndc_port: 953
                 rndc_key_file: /etc/designate/rndc.key
+    worker:
+      enabled: ${_param:designate_worker_enabled}
   glance:
     server:
       storage:
diff --git a/classes/cluster/virtual-mcp-ocata-ovs/openstack/init.yml b/classes/cluster/virtual-mcp-ocata-ovs/openstack/init.yml
index 749372c..fd60e93 100644
--- a/classes/cluster/virtual-mcp-ocata-ovs/openstack/init.yml
+++ b/classes/cluster/virtual-mcp-ocata-ovs/openstack/init.yml
@@ -60,6 +60,7 @@
       rndc_port: 953
       rndc_key_file: /etc/designate/rndc.key
     designate_version: ${_param:openstack_version}
+    designate_worker_enabled: true
     glance_version: ${_param:openstack_version}
     glance_service_host: ${_param:cluster_vip_address}
     keystone_version: ${_param:openstack_version}
@@ -171,4 +172,4 @@
       user:
         root:
           name: root
-          password: false
\ No newline at end of file
+          password: false
diff --git a/classes/cluster/virtual-mcp-ocata-ovs/stacklight/server.yml b/classes/cluster/virtual-mcp-ocata-ovs/stacklight/server.yml
index 398c722..84d9910 100644
--- a/classes/cluster/virtual-mcp-ocata-ovs/stacklight/server.yml
+++ b/classes/cluster/virtual-mcp-ocata-ovs/stacklight/server.yml
@@ -1,15 +1,12 @@
 classes:
 - system.docker.host
-- system.linux.system.repo.glusterfs
 - system.linux.system.repo.influxdb
 - system.linux.system.repo.mcp.salt
-- system.linux.system.repo.tcp_elastic
+- system.linux.system.repo.elasticsearch
 - system.heka.remote_collector.container
 - system.heka.remote_collector.input.amqp
 - system.heka.remote_collector.output.elasticsearch
 - system.heka.remote_collector.output.telegraf
-- system.glusterfs.client.cluster
-- system.glusterfs.client.volume.prometheus
 - system.elasticsearch.server.cluster
 - system.elasticsearch.server.curator
 - system.kibana.server.single
@@ -54,10 +51,6 @@
     docker_image_remote_storage_adapter: docker-prod-virtual.docker.mirantis.net/openstack-docker/remote_storage_adapter:latest
     docker_image_remote_collector: docker-prod-virtual.docker.mirantis.net/openstack-docker/heka:latest
     docker_image_grafana: grafana/grafana:4.3.2
-    prometheus_glusterfs_service_host: ${_param:openstack_control_address}
-    glusterfs_node01_address: ${_param:openstack_control_node01_address}
-    glusterfs_node02_address: ${_param:openstack_control_node02_address}
-    glusterfs_node03_address: ${_param:openstack_control_node03_address}
     influxdb_port: 8086
     influxdb_admin_password: password
     influxdb_stacklight_password: lmapass
diff --git a/classes/cluster/virtual-mcp05-dvr/infra/config.yml b/classes/cluster/virtual-mcp05-dvr/infra/config.yml
index cfcb185..469507b 100644
--- a/classes/cluster/virtual-mcp05-dvr/infra/config.yml
+++ b/classes/cluster/virtual-mcp05-dvr/infra/config.yml
@@ -28,7 +28,7 @@
     salt_master_environment_repository: "https://github.com/tcpcloud"
     salt_master_environment_revision: master
     salt_api_password_hash: "$6$sGnRlxGf$al5jMCetLP.vfI/fTl3Z0N7Za1aeiexL487jAtyRABVfT3NlwZxQGVhO7S1N8OwS/34VHYwZQA8lkXwKMN/GS1"
-    reclass_config_master: 192.168.10.100
+    reclass_config_master: 192.168.10.90
     single_address: 172.16.10.100
     salt_master_host: 127.0.0.1
     salt_master_base_environment: prd
diff --git a/classes/cluster/virtual-mcp05-dvr/init.yml b/classes/cluster/virtual-mcp05-dvr/init.yml
index 3e2f8cf..1af77a3 100644
--- a/classes/cluster/virtual-mcp05-dvr/init.yml
+++ b/classes/cluster/virtual-mcp05-dvr/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.single
 - system.rsyslog.client.single
 - system.openssh.server.team.lab
diff --git a/classes/cluster/virtual-mcp05-dvr/stacklight/server.yml b/classes/cluster/virtual-mcp05-dvr/stacklight/server.yml
index 198bfe7..184973b 100644
--- a/classes/cluster/virtual-mcp05-dvr/stacklight/server.yml
+++ b/classes/cluster/virtual-mcp05-dvr/stacklight/server.yml
@@ -1,7 +1,7 @@
 classes:
 - system.collectd.remote_client.cluster
 - system.linux.system.repo.influxdb
-- system.linux.system.repo.tcp_elastic
+- system.linux.system.repo.elasticsearch
 - system.heka.remote_collector.cluster
 - system.heka.remote_collector.input.amqp
 - system.heka.aggregator.cluster
diff --git a/classes/cluster/virtual-mcp05-ovs/infra/config.yml b/classes/cluster/virtual-mcp05-ovs/infra/config.yml
index 226b5e1..43e282d 100644
--- a/classes/cluster/virtual-mcp05-ovs/infra/config.yml
+++ b/classes/cluster/virtual-mcp05-ovs/infra/config.yml
@@ -27,7 +27,7 @@
     reclass_data_revision: master
     salt_master_environment_repository: "https://github.com/tcpcloud"
     salt_master_environment_revision: master
-    reclass_config_master: 192.168.10.100
+    reclass_config_master: 192.168.10.90
     single_address: 172.16.10.100
     salt_master_host: 127.0.0.1
     salt_master_base_environment: prd
diff --git a/classes/cluster/virtual-mcp05-ovs/init.yml b/classes/cluster/virtual-mcp05-ovs/init.yml
index 6c67937..ead6ba8 100644
--- a/classes/cluster/virtual-mcp05-ovs/init.yml
+++ b/classes/cluster/virtual-mcp05-ovs/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.single
 - cluster.virtual-mcp05-ovs.infra
 - cluster.virtual-mcp05-ovs.openstack
diff --git a/classes/cluster/virtual-mcp05-ovs/stacklight/server.yml b/classes/cluster/virtual-mcp05-ovs/stacklight/server.yml
index 2288aeb..f37f50d 100644
--- a/classes/cluster/virtual-mcp05-ovs/stacklight/server.yml
+++ b/classes/cluster/virtual-mcp05-ovs/stacklight/server.yml
@@ -4,7 +4,7 @@
 - system.linux.system.repo.influxdb
 - system.heka.remote_collector.input.amqp
 - system.heka.aggregator.cluster
-- system.linux.system.repo.tcp_elastic 
+- system.linux.system.repo.elasticsearch
 - system.elasticsearch.server.cluster
 - system.elasticsearch.server.curator
 - system.kibana.server.single
diff --git a/classes/cluster/virtual-mcp10-contrail/infra/config.yml b/classes/cluster/virtual-mcp10-contrail/infra/config.yml
index 67f9f01..64fb0a1 100755
--- a/classes/cluster/virtual-mcp10-contrail/infra/config.yml
+++ b/classes/cluster/virtual-mcp10-contrail/infra/config.yml
@@ -26,7 +26,7 @@
   _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
+    reclass_config_master: 192.168.10.90
     single_address: 172.16.10.100
     salt_master_host: 127.0.0.1
     salt_master_base_environment: prd
diff --git a/classes/cluster/virtual-mcp10-contrail/init.yml b/classes/cluster/virtual-mcp10-contrail/init.yml
index da3e7b1..5c405d4 100755
--- a/classes/cluster/virtual-mcp10-contrail/init.yml
+++ b/classes/cluster/virtual-mcp10-contrail/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.single
 - system.rsyslog.client.single
 - system.openssh.server.team.lab
diff --git a/classes/cluster/virtual-mcp10-contrail/stacklight/server.yml b/classes/cluster/virtual-mcp10-contrail/stacklight/server.yml
index 11def8a..e56a7e1 100755
--- a/classes/cluster/virtual-mcp10-contrail/stacklight/server.yml
+++ b/classes/cluster/virtual-mcp10-contrail/stacklight/server.yml
@@ -1,7 +1,7 @@
 classes:
 - system.linux.system.repo.grafana
 - system.linux.system.repo.influxdb
-- system.linux.system.repo.tcp_elastic
+- system.linux.system.repo.elasticsearch
 - system.collectd.remote_client.cluster
 - system.heka.remote_collector.cluster
 - system.heka.remote_collector.input.amqp
diff --git a/classes/cluster/virtual-mcp10-dvr/infra/config.yml b/classes/cluster/virtual-mcp10-dvr/infra/config.yml
index fa7c6c4..3eaadc9 100644
--- a/classes/cluster/virtual-mcp10-dvr/infra/config.yml
+++ b/classes/cluster/virtual-mcp10-dvr/infra/config.yml
@@ -28,7 +28,7 @@
     salt_master_environment_repository: "https://github.com/tcpcloud"
     salt_master_environment_revision: master
     salt_api_password_hash: "$6$sGnRlxGf$al5jMCetLP.vfI/fTl3Z0N7Za1aeiexL487jAtyRABVfT3NlwZxQGVhO7S1N8OwS/34VHYwZQA8lkXwKMN/GS1"
-    reclass_config_master: 192.168.10.100
+    reclass_config_master: 192.168.10.90
     single_address: 172.16.10.100
     salt_master_host: 127.0.0.1
     salt_master_base_environment: prd
diff --git a/classes/cluster/virtual-mcp10-dvr/init.yml b/classes/cluster/virtual-mcp10-dvr/init.yml
index ce47464..e1a87ce 100644
--- a/classes/cluster/virtual-mcp10-dvr/init.yml
+++ b/classes/cluster/virtual-mcp10-dvr/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.single
 - system.rsyslog.client.single
 - system.openssh.server.team.lab
diff --git a/classes/cluster/virtual-mcp10-dvr/stacklight/server.yml b/classes/cluster/virtual-mcp10-dvr/stacklight/server.yml
index 08cfa82..24771cb 100644
--- a/classes/cluster/virtual-mcp10-dvr/stacklight/server.yml
+++ b/classes/cluster/virtual-mcp10-dvr/stacklight/server.yml
@@ -1,7 +1,7 @@
 classes:
 - system.collectd.remote_client.cluster
 - system.linux.system.repo.influxdb
-- system.linux.system.repo.tcp_elastic
+- system.linux.system.repo.elasticsearch
 - system.heka.remote_collector.cluster
 - system.heka.remote_collector.input.amqp
 - system.heka.aggregator.cluster
diff --git a/classes/cluster/virtual-mcp10-ovs/infra/config.yml b/classes/cluster/virtual-mcp10-ovs/infra/config.yml
index 666de15..dc77ca6 100644
--- a/classes/cluster/virtual-mcp10-ovs/infra/config.yml
+++ b/classes/cluster/virtual-mcp10-ovs/infra/config.yml
@@ -27,7 +27,7 @@
     reclass_data_revision: master
     salt_master_environment_repository: "https://github.com/tcpcloud"
     salt_master_environment_revision: master
-    reclass_config_master: 192.168.10.100
+    reclass_config_master: 192.168.10.90
     single_address: 172.16.10.100
     salt_master_host: 127.0.0.1
     salt_master_base_environment: prd
diff --git a/classes/cluster/virtual-mcp10-ovs/init.yml b/classes/cluster/virtual-mcp10-ovs/init.yml
index 01ccbbf..af37ef4 100644
--- a/classes/cluster/virtual-mcp10-ovs/init.yml
+++ b/classes/cluster/virtual-mcp10-ovs/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.single
 - cluster.virtual-mcp10-ovs.infra
 - cluster.virtual-mcp10-ovs.openstack
diff --git a/classes/cluster/virtual-mcp10-ovs/stacklight/server.yml b/classes/cluster/virtual-mcp10-ovs/stacklight/server.yml
index 288e9d9..cf9f626 100644
--- a/classes/cluster/virtual-mcp10-ovs/stacklight/server.yml
+++ b/classes/cluster/virtual-mcp10-ovs/stacklight/server.yml
@@ -4,7 +4,7 @@
 - system.linux.system.repo.influxdb
 - system.heka.remote_collector.input.amqp
 - system.heka.aggregator.cluster
-- system.linux.system.repo.tcp_elastic 
+- system.linux.system.repo.elasticsearch
 - system.elasticsearch.server.cluster
 - system.elasticsearch.server.curator
 - system.kibana.server.single
diff --git a/classes/cluster/virtual-mcp11-aio/infra/config.yml b/classes/cluster/virtual-mcp11-aio/infra/config.yml
index ec91ce4..c59029b 100644
--- a/classes/cluster/virtual-mcp11-aio/infra/config.yml
+++ b/classes/cluster/virtual-mcp11-aio/infra/config.yml
@@ -7,3 +7,4 @@
     system:
       name: cfg01
       domain: ${_param:cluster_domain}
+      purge_repos: ${_param:linux_system_purge_repos}
diff --git a/classes/cluster/virtual-mcp11-aio/infra/init.yml b/classes/cluster/virtual-mcp11-aio/infra/init.yml
index 5bfe7c9..46d0de0 100644
--- a/classes/cluster/virtual-mcp11-aio/infra/init.yml
+++ b/classes/cluster/virtual-mcp11-aio/infra/init.yml
@@ -1,3 +1,4 @@
 parameters:
   _param:
-    apt_mk_version: stable
\ No newline at end of file
+    apt_mk_version: stable
+    linux_system_purge_repos: false
diff --git a/classes/cluster/virtual-mcp11-aio/init.yml b/classes/cluster/virtual-mcp11-aio/init.yml
index 86627d2..b3fcc39 100755
--- a/classes/cluster/virtual-mcp11-aio/init.yml
+++ b/classes/cluster/virtual-mcp11-aio/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - service.git.client
 - system.linux.system.single
 - system.linux.system.repo.mcp.salt
@@ -51,6 +52,10 @@
           source: ${_param:linux_system_repo}
           architectures: amd64
           clean_file: true
+          pin:
+          - pin: ${_param:linux_system_repo_pin}
+            priority: ${_param:linux_system_repo_priority}
+            package: '*'
     network:
       bridge: openvswitch
       interface:
diff --git a/classes/cluster/virtual-mcp11-aio/openstack/init.yml b/classes/cluster/virtual-mcp11-aio/openstack/init.yml
index 6cc6c14..f8187d0 100755
--- a/classes/cluster/virtual-mcp11-aio/openstack/init.yml
+++ b/classes/cluster/virtual-mcp11-aio/openstack/init.yml
@@ -101,7 +101,10 @@
       rndc_host: 127.0.0.1
       rndc_port: 953
       rndc_key_file: /etc/designate/rndc.key
+    designate_worker_enabled: true
     linux_system_repo: deb [arch=amd64] http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/xenial ${_param:openstack_version} main
+    linux_system_repo_pin: release a=${_param:openstack_version}
+    linux_system_repo_priority: 1200
     openstack_public_neutron_subnet_gateway:  192.168.130.1
     openstack_public_neutron_subnet_cidr: 192.168.130.0/24
     openstack_public_neutron_subnet_allocation_start: 192.168.130.10
@@ -115,12 +118,15 @@
       dvr: True
   nova:
     compute:
+      vncproxy_url: http://${_param:single_address}:6080
       network:
         user: neutron
         password: ${_param:keystone_neutron_password}
         tenant: service
       cache:
         members: ~
+    controller:
+      vncproxy_url: http://${_param:single_address}:6080
   cinder:
     volume:
       cache:
@@ -128,3 +134,6 @@
   horizon:
     server:
       secure: False
+  designate:
+    worker:
+      enabled: ${_param:designate_worker_enabled}
diff --git a/classes/cluster/virtual-mcp11-contrail-nfv/infra/config.yml b/classes/cluster/virtual-mcp11-contrail-nfv/infra/config.yml
index fe44865..ed9bbf6 100755
--- a/classes/cluster/virtual-mcp11-contrail-nfv/infra/config.yml
+++ b/classes/cluster/virtual-mcp11-contrail-nfv/infra/config.yml
@@ -40,7 +40,7 @@
   _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
+    reclass_config_master: 192.168.10.90
     single_address: 172.16.10.100
     salt_master_host: 127.0.0.1
     salt_master_base_environment: prd
diff --git a/classes/cluster/virtual-mcp11-contrail-nfv/init.yml b/classes/cluster/virtual-mcp11-contrail-nfv/init.yml
index 78298cb..9b0ff88 100755
--- a/classes/cluster/virtual-mcp11-contrail-nfv/init.yml
+++ b/classes/cluster/virtual-mcp11-contrail-nfv/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.single
 - system.rsyslog.client.single
 - system.openssh.server.team.lab
diff --git a/classes/cluster/virtual-mcp11-contrail-nfv/openstack/control.yml b/classes/cluster/virtual-mcp11-contrail-nfv/openstack/control.yml
index cc8ad62..f319493 100755
--- a/classes/cluster/virtual-mcp11-contrail-nfv/openstack/control.yml
+++ b/classes/cluster/virtual-mcp11-contrail-nfv/openstack/control.yml
@@ -122,6 +122,8 @@
                 rndc_host: ${_param:openstack_control_node03_address}
                 rndc_port: 953
                 rndc_key_file: /etc/designate/rndc.key
+    worker:
+      enabled: ${_param:designate_worker_enabled}
   glance:
     server:
       storage:
diff --git a/classes/cluster/virtual-mcp11-contrail-nfv/openstack/init.yml b/classes/cluster/virtual-mcp11-contrail-nfv/openstack/init.yml
index 33345a4..b57f7da 100755
--- a/classes/cluster/virtual-mcp11-contrail-nfv/openstack/init.yml
+++ b/classes/cluster/virtual-mcp11-contrail-nfv/openstack/init.yml
@@ -42,6 +42,7 @@
       rndc_port: 953
       rndc_key_file: /etc/designate/rndc.key
     designate_version: ${_param:openstack_version}
+    designate_worker_enabled: true
     cluster_vip_address: ${_param:openstack_control_address}
     glance_version: ${_param:openstack_version}
     glance_service_host: ${_param:openstack_control_address}
@@ -197,4 +198,4 @@
       user:
         root:
           name: root
-          password: false
\ No newline at end of file
+          password: false
diff --git a/classes/cluster/virtual-mcp11-contrail-nfv/stacklight/server.yml b/classes/cluster/virtual-mcp11-contrail-nfv/stacklight/server.yml
index ff8fd14..dcff03a 100755
--- a/classes/cluster/virtual-mcp11-contrail-nfv/stacklight/server.yml
+++ b/classes/cluster/virtual-mcp11-contrail-nfv/stacklight/server.yml
@@ -1,7 +1,7 @@
 classes:
 - system.linux.system.repo.grafana
 - system.linux.system.repo.influxdb
-- system.linux.system.repo.tcp_elastic
+- system.linux.system.repo.elasticsearch
 - system.collectd.remote_client.cluster
 - system.heka.remote_collector.cluster
 - system.heka.remote_collector.input.amqp
diff --git a/classes/cluster/virtual-mcp11-contrail/infra/config.yml b/classes/cluster/virtual-mcp11-contrail/infra/config.yml
index af5abe0..0f05600 100755
--- a/classes/cluster/virtual-mcp11-contrail/infra/config.yml
+++ b/classes/cluster/virtual-mcp11-contrail/infra/config.yml
@@ -40,7 +40,7 @@
   _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
+    reclass_config_master: 192.168.10.90
     single_address: 172.16.10.100
     salt_master_host: 127.0.0.1
     salt_master_base_environment: prd
diff --git a/classes/cluster/virtual-mcp11-contrail/infra/init.yml b/classes/cluster/virtual-mcp11-contrail/infra/init.yml
index 9140bd0..b6a6cc2 100755
--- a/classes/cluster/virtual-mcp11-contrail/infra/init.yml
+++ b/classes/cluster/virtual-mcp11-contrail/infra/init.yml
@@ -1,4 +1,8 @@
 parameters:
+  _param:
+    cluster_domain: virtual-mcp11-contrail.local
+    cluster_name: virtual-mcp11-contrail
+    infra_config_address: 172.16.10.100
   linux:
     network:
       host:
diff --git a/classes/cluster/virtual-mcp11-contrail/init.yml b/classes/cluster/virtual-mcp11-contrail/init.yml
index 613edb9..52fdf6f 100755
--- a/classes/cluster/virtual-mcp11-contrail/init.yml
+++ b/classes/cluster/virtual-mcp11-contrail/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - service.grafana.collector
 - system.heka.log_collector.single
 - system.heka.log_collector.output.telegraf
@@ -12,77 +13,7 @@
 - system.prometheus.collector
 - system.telegraf.agent
 - cluster.virtual-mcp11-contrail.infra
+- cluster.virtual-mcp11-contrail.opencontrail
 - cluster.virtual-mcp11-contrail.openstack
 - cluster.virtual-mcp11-contrail.stacklight
 - cluster.overrides
-parameters:
-  _param:
-    cluster_domain: virtual-mcp11-contrail.local
-    cluster_name: virtual-mcp11-contrail
-
-    # infra service addresses
-    infra_config_address: 172.16.10.100
-
-    # openstack service addresses
-    openstack_proxy_address: 172.16.10.121
-    openstack_proxy_node01_address: 172.16.10.121
-
-    openstack_control_address: 172.16.10.254
-    openstack_control_node01_address: 172.16.10.101
-    openstack_control_node02_address: 172.16.10.102
-    openstack_control_node03_address: 172.16.10.103
-
-    openstack_database_address: ${_param:openstack_control_address}
-    openstack_database_node01_address: ${_param:openstack_control_node01_address}
-    openstack_database_node02_address: ${_param:openstack_control_node02_address}
-    openstack_database_node03_address: ${_param:openstack_control_node02_address}
-
-    openstack_message_queue_address: ${_param:openstack_control_address}
-    openstack_message_queue_node01_address: ${_param:openstack_control_node01_address}
-    openstack_message_queue_node02_address: ${_param:openstack_control_node02_address}
-    openstack_message_queue_node03_address: ${_param:openstack_control_node03_address}
-
-    # opencontrail service addresses
-    opencontrail_analytics_address: ${_param:openstack_control_address}
-    opencontrail_analytics_node01_address: ${_param:openstack_control_node01_address}
-    opencontrail_analytics_node02_address: ${_param:openstack_control_node02_address}
-    opencontrail_analytics_node03_address: ${_param:openstack_control_node03_address}
-
-    opencontrail_control_address: 172.16.10.252
-    opencontrail_control_node01_address: 172.16.10.111
-    opencontrail_control_node02_address: 172.16.10.112
-    opencontrail_control_node03_address: 172.16.10.113
-
-    # stacklight service addresses
-    stacklight_monitor_address: 172.16.10.253
-    stacklight_monitor_node01_address: 172.16.10.107
-    stacklight_monitor_node02_address: 172.16.10.108
-    stacklight_monitor_node03_address: 172.16.10.109
-
-    stacklight_log_address: ${_param:stacklight_monitor_address}
-    stacklight_telemetry_address: ${_param:stacklight_monitor_address}
-    stacklight_telemetry_node01_address: ${_param:stacklight_monitor_node01_address}
-
-  linux:
-    network:
-      host:
-        ntw:
-          address: ${_param:opencontrail_control_address}
-          names:
-          - ntw
-          - ntw.${_param:cluster_domain}
-        ntw01:
-          address: ${_param:opencontrail_control_node01_address}
-          names:
-          - ntw01
-          - ntw01.${_param:cluster_domain}
-        ntw02:
-          address: ${_param:opencontrail_control_node02_address}
-          names:
-          - ntw02
-          - ntw02.${_param:cluster_domain}
-        ntw03:
-          address: ${_param:opencontrail_control_node03_address}
-          names:
-          - ntw03
-          - ntw03.${_param:cluster_domain}
\ No newline at end of file
diff --git a/classes/cluster/virtual-mcp11-contrail/opencontrail/init.yml b/classes/cluster/virtual-mcp11-contrail/opencontrail/init.yml
new file mode 100644
index 0000000..cee0b50
--- /dev/null
+++ b/classes/cluster/virtual-mcp11-contrail/opencontrail/init.yml
@@ -0,0 +1,37 @@
+parameters:
+  _param:
+    opencontrail_analytics_address: ${_param:openstack_control_address}
+    opencontrail_analytics_node01_address: ${_param:openstack_control_node01_address}
+    opencontrail_analytics_node02_address: ${_param:openstack_control_node02_address}
+    opencontrail_analytics_node03_address: ${_param:openstack_control_node03_address}
+
+    opencontrail_control_address: 172.16.10.252
+    opencontrail_control_node01_hostname: ntw01
+    opencontrail_control_node02_hostname: ntw02
+    opencontrail_control_node03_hostname: ntw03
+    opencontrail_control_node01_address: 172.16.10.111
+    opencontrail_control_node02_address: 172.16.10.112
+    opencontrail_control_node03_address: 172.16.10.113
+  linux:
+    network:
+      host:
+        ntw:
+          address: ${_param:opencontrail_control_address}
+          names:
+          - ntw
+          - ntw.${_param:cluster_domain}
+        ntw01:
+          address: ${_param:opencontrail_control_node01_address}
+          names:
+          - ${_param:opencontrail_control_node01_hostname}
+          - ${_param:opencontrail_control_node01_hostname}.${_param:cluster_domain}
+        ntw02:
+          address: ${_param:opencontrail_control_node02_address}
+          names:
+          - ${_param:opencontrail_control_node02_hostname}
+          - ${_param:opencontrail_control_node02_hostname}.${_param:cluster_domain}
+        ntw03:
+          address: ${_param:opencontrail_control_node03_address}
+          names:
+          - ${_param:opencontrail_control_node03_hostname}
+          - ${_param:opencontrail_control_node03_hostname}.${_param:cluster_domain}
\ No newline at end of file
diff --git a/classes/cluster/virtual-mcp11-contrail/openstack/control.yml b/classes/cluster/virtual-mcp11-contrail/openstack/control.yml
index 8869a18..0415236 100755
--- a/classes/cluster/virtual-mcp11-contrail/openstack/control.yml
+++ b/classes/cluster/virtual-mcp11-contrail/openstack/control.yml
@@ -12,7 +12,6 @@
 - system.keystone.server.cluster
 - system.glusterfs.server.volume.glance
 - system.glusterfs.server.volume.keystone
-- system.glusterfs.server.volume.prometheus
 - system.glusterfs.server.cluster
 - system.glusterfs.client.cluster
 - system.glusterfs.client.volume.glance
@@ -121,6 +120,8 @@
                 rndc_host: ${_param:openstack_control_node03_address}
                 rndc_port: 953
                 rndc_key_file: /etc/designate/rndc.key
+    worker:
+      enabled: ${_param:designate_worker_enabled}
   glance:
     server:
       storage:
diff --git a/classes/cluster/virtual-mcp11-contrail/openstack/init.yml b/classes/cluster/virtual-mcp11-contrail/openstack/init.yml
index f673ab7..50b13ed 100755
--- a/classes/cluster/virtual-mcp11-contrail/openstack/init.yml
+++ b/classes/cluster/virtual-mcp11-contrail/openstack/init.yml
@@ -1,5 +1,19 @@
 parameters:
   _param:
+    openstack_proxy_address: 172.16.10.121
+    openstack_proxy_node01_address: 172.16.10.121
+    openstack_control_address: 172.16.10.254
+    openstack_control_node01_address: 172.16.10.101
+    openstack_control_node02_address: 172.16.10.102
+    openstack_control_node03_address: 172.16.10.103
+    openstack_database_address: ${_param:openstack_control_address}
+    openstack_database_node01_address: ${_param:openstack_control_node01_address}
+    openstack_database_node02_address: ${_param:openstack_control_node02_address}
+    openstack_database_node03_address: ${_param:openstack_control_node02_address}
+    openstack_message_queue_address: ${_param:openstack_control_address}
+    openstack_message_queue_node01_address: ${_param:openstack_control_node01_address}
+    openstack_message_queue_node02_address: ${_param:openstack_control_node02_address}
+    openstack_message_queue_node03_address: ${_param:openstack_control_node03_address}
     openstack_version: ocata
     apt_mk_version: nightly
     openstack_region: RegionOne
@@ -44,6 +58,7 @@
       rndc_port: 953
       rndc_key_file: /etc/designate/rndc.key
     designate_version: ${_param:openstack_version}
+    designate_worker_enabled: true
     cluster_vip_address: ${_param:openstack_control_address}
     glance_version: ${_param:openstack_version}
     glance_service_host: ${_param:openstack_control_address}
diff --git a/classes/cluster/virtual-mcp11-contrail/stacklight/init.yml b/classes/cluster/virtual-mcp11-contrail/stacklight/init.yml
index 0b10c03..f30d6e4 100755
--- a/classes/cluster/virtual-mcp11-contrail/stacklight/init.yml
+++ b/classes/cluster/virtual-mcp11-contrail/stacklight/init.yml
@@ -1,5 +1,12 @@
 parameters:
   _param:
+    stacklight_monitor_address: 172.16.10.253
+    stacklight_monitor_node01_address: 172.16.10.107
+    stacklight_monitor_node02_address: 172.16.10.108
+    stacklight_monitor_node03_address: 172.16.10.109
+    stacklight_log_address: ${_param:stacklight_monitor_address}
+    stacklight_telemetry_address: ${_param:stacklight_monitor_address}
+    stacklight_telemetry_node01_address: ${_param:stacklight_monitor_node01_address}
     prometheus_control_address: ${_param:stacklight_monitor_address}
     heka_elasticsearch_host: ${_param:stacklight_monitor_address}
     elasticsearch_port: 9200
diff --git a/classes/cluster/virtual-mcp11-contrail/stacklight/server.yml b/classes/cluster/virtual-mcp11-contrail/stacklight/server.yml
index 693a7cb..f0f3280 100755
--- a/classes/cluster/virtual-mcp11-contrail/stacklight/server.yml
+++ b/classes/cluster/virtual-mcp11-contrail/stacklight/server.yml
@@ -1,15 +1,12 @@
 classes:
 - system.docker.host
-- system.linux.system.repo.glusterfs
 - system.linux.system.repo.influxdb
 - system.linux.system.repo.mcp.salt
-- system.linux.system.repo.tcp_elastic
+- system.linux.system.repo.elasticsearch
 - system.heka.remote_collector.container
 - system.heka.remote_collector.input.amqp
 - system.heka.remote_collector.output.elasticsearch
 - system.heka.remote_collector.output.telegraf
-- system.glusterfs.client.cluster
-- system.glusterfs.client.volume.prometheus
 - system.elasticsearch.server.cluster
 - system.elasticsearch.server.curator
 - system.kibana.server.single
@@ -54,10 +51,6 @@
     docker_image_remote_storage_adapter: docker-prod-virtual.docker.mirantis.net/openstack-docker/remote_storage_adapter:latest
     docker_image_remote_collector: docker-prod-virtual.docker.mirantis.net/openstack-docker/heka:latest
     docker_image_grafana: grafana/grafana:4.3.2
-    prometheus_glusterfs_service_host: ${_param:openstack_control_address}
-    glusterfs_node01_address: ${_param:openstack_control_node01_address}
-    glusterfs_node02_address: ${_param:openstack_control_node02_address}
-    glusterfs_node03_address: ${_param:openstack_control_node03_address}
     influxdb_port: 8086
     influxdb_admin_password: password
     influxdb_stacklight_password: lmapass
diff --git a/classes/cluster/virtual-mcp11-dvr/infra/config.yml b/classes/cluster/virtual-mcp11-dvr/infra/config.yml
index a6b94d7..3d6f018 100644
--- a/classes/cluster/virtual-mcp11-dvr/infra/config.yml
+++ b/classes/cluster/virtual-mcp11-dvr/infra/config.yml
@@ -32,7 +32,7 @@
     salt_master_environment_repository: "https://github.com/tcpcloud"
     salt_master_environment_revision: master
     salt_api_password_hash: "$6$sGnRlxGf$al5jMCetLP.vfI/fTl3Z0N7Za1aeiexL487jAtyRABVfT3NlwZxQGVhO7S1N8OwS/34VHYwZQA8lkXwKMN/GS1"
-    reclass_config_master: 192.168.10.100
+    reclass_config_master: 192.168.10.90
     single_address: 172.16.10.100
     salt_master_host: 127.0.0.1
     salt_master_base_environment: prd
diff --git a/classes/cluster/virtual-mcp11-dvr/init.yml b/classes/cluster/virtual-mcp11-dvr/init.yml
index 80a2628..8e93cbf 100644
--- a/classes/cluster/virtual-mcp11-dvr/init.yml
+++ b/classes/cluster/virtual-mcp11-dvr/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - service.grafana.collector
 - system.heka.log_collector.single
 - system.heka.log_collector.output.telegraf
diff --git a/classes/cluster/virtual-mcp11-dvr/openstack/control.yml b/classes/cluster/virtual-mcp11-dvr/openstack/control.yml
index 2403464..12431c9 100644
--- a/classes/cluster/virtual-mcp11-dvr/openstack/control.yml
+++ b/classes/cluster/virtual-mcp11-dvr/openstack/control.yml
@@ -14,7 +14,6 @@
 - system.glusterfs.client.volume.keystone
 - system.glusterfs.server.volume.glance
 - system.glusterfs.server.volume.keystone
-- system.glusterfs.server.volume.prometheus
 - system.glusterfs.server.cluster
 - system.glance.control.cluster
 - system.nova.control.cluster
diff --git a/classes/cluster/virtual-mcp11-dvr/openstack/init.yml b/classes/cluster/virtual-mcp11-dvr/openstack/init.yml
index c8b49ae..c08241d 100644
--- a/classes/cluster/virtual-mcp11-dvr/openstack/init.yml
+++ b/classes/cluster/virtual-mcp11-dvr/openstack/init.yml
@@ -1,6 +1,5 @@
 parameters:
   _param:
-    openstack_database_address: 172.16.10.254
     openstack_proxy_address: 172.16.10.121
     openstack_proxy_node01_address: 172.16.10.121
     openstack_control_address: 172.16.10.254
@@ -15,7 +14,8 @@
     openstack_message_queue_node01_address: ${_param:openstack_control_node01_address}
     openstack_message_queue_node02_address: ${_param:openstack_control_node02_address}
     openstack_message_queue_node03_address: ${_param:openstack_control_node03_address}
-    openstack_gateway_address: 172.16.10.110
+    openstack_gateway_node01_address: 172.16.10.110
+    openstack_gateway_address: ${_param:openstack_gateway_node01_address}
     openstack_version: newton
     apt_mk_version: nightly
     mcp_repo_version: 1.1
@@ -40,11 +40,11 @@
     cluster_vip_address: 172.16.10.254
     cluster_local_address: ${_param:single_address}
     cluster_node01_hostname: ctl01
-    cluster_node01_address: 172.16.10.101
+    cluster_node01_address: ${_param:openstack_control_node01_address}
     cluster_node02_hostname: ctl02
-    cluster_node02_address: 172.16.10.102
+    cluster_node02_address: ${_param:openstack_control_node02_address}
     cluster_node03_hostname: ctl03
-    cluster_node03_address: 172.16.10.103
+    cluster_node03_address: ${_param:openstack_control_node03_address}
     rabbitmq_secret_key: workshop
     rabbitmq_admin_password: workshop
     rabbitmq_openstack_password: workshop
diff --git a/classes/cluster/virtual-mcp11-dvr/stacklight/server.yml b/classes/cluster/virtual-mcp11-dvr/stacklight/server.yml
index 9e47cb3..2ba8f60 100644
--- a/classes/cluster/virtual-mcp11-dvr/stacklight/server.yml
+++ b/classes/cluster/virtual-mcp11-dvr/stacklight/server.yml
@@ -1,15 +1,12 @@
 classes:
 - system.docker.host
-- system.linux.system.repo.glusterfs
 - system.linux.system.repo.influxdb
 - system.linux.system.repo.mcp.salt
-- system.linux.system.repo.tcp_elastic
+- system.linux.system.repo.elasticsearch
 - system.heka.remote_collector.container
 - system.heka.remote_collector.input.amqp
 - system.heka.remote_collector.output.elasticsearch
 - system.heka.remote_collector.output.telegraf
-- system.glusterfs.client.cluster
-- system.glusterfs.client.volume.prometheus
 - system.elasticsearch.server.cluster
 - system.elasticsearch.server.curator
 - system.kibana.server.single
@@ -54,10 +51,6 @@
     docker_image_remote_storage_adapter: docker-prod-virtual.docker.mirantis.net/openstack-docker/remote_storage_adapter:latest
     docker_image_remote_collector: docker-prod-virtual.docker.mirantis.net/openstack-docker/heka:latest
     docker_image_grafana: grafana/grafana:4.3.2
-    prometheus_glusterfs_service_host: ${_param:openstack_control_address}
-    glusterfs_node01_address: ${_param:openstack_control_node01_address}
-    glusterfs_node02_address: ${_param:openstack_control_node02_address}
-    glusterfs_node03_address: ${_param:openstack_control_node03_address}
     influxdb_port: 8086
     influxdb_admin_password: password
     influxdb_stacklight_password: lmapass
diff --git a/classes/cluster/virtual-mcp11-k8s-calico-dyn/infra/init.yml b/classes/cluster/virtual-mcp11-k8s-calico-dyn/infra/init.yml
index 864492b..5e01c17 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico-dyn/infra/init.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico-dyn/infra/init.yml
@@ -17,7 +17,7 @@
     # infra service addresses
     infra_config_hostname: cfg01
     infra_config_address: 172.16.10.100
-    infra_config_deploy_address: 192.168.10.100
+    infra_config_deploy_address: 192.168.10.90
 
     cluster_domain: virtual-mcp11-k8s-calico.local
     cluster_name: virtual-mcp11-k8s-calico
diff --git a/classes/cluster/virtual-mcp11-k8s-calico-dyn/init.yml b/classes/cluster/virtual-mcp11-k8s-calico-dyn/init.yml
index 5484c66..10957f2 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico-dyn/init.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico-dyn/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - cluster.virtual-mcp11-k8s-calico-dyn.kubernetes
 - cluster.virtual-mcp11-k8s-calico-dyn.stacklight
 - cluster.virtual-mcp11-k8s-calico-dyn.infra
diff --git a/classes/cluster/virtual-mcp11-k8s-calico-dyn/stacklight/init.yml b/classes/cluster/virtual-mcp11-k8s-calico-dyn/stacklight/init.yml
index f755342..adcdb35 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico-dyn/stacklight/init.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico-dyn/stacklight/init.yml
@@ -8,9 +8,6 @@
     stacklight_node02_address: 172.16.10.108
     stacklight_node03_address: 172.16.10.109
 
-    # Glusterfs
-    glusterfs_service_host: ${_param:stacklight_address}
-
     # Prometheus
     prometheus_control_address: ${_param:stacklight_address}
 
diff --git a/classes/cluster/virtual-mcp11-k8s-calico-dyn/stacklight/server.yml b/classes/cluster/virtual-mcp11-k8s-calico-dyn/stacklight/server.yml
index a54bad3..0e931c4 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico-dyn/stacklight/server.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico-dyn/stacklight/server.yml
@@ -1,6 +1,6 @@
 classes:
 - system.docker.host
-- system.linux.system.repo.tcp_elastic
+- system.linux.system.repo.elasticsearch
 # Needed to install Galera packages
 - system.linux.system.repo.mcp.openstack
 - system.elasticsearch.server.cluster
@@ -9,10 +9,6 @@
 - system.haproxy.proxy.listen.stacklight.elasticsearch
 - system.haproxy.proxy.listen.stacklight.kibana
 - service.haproxy.proxy.single
-- system.glusterfs.client.cluster
-- system.glusterfs.client.volume.prometheus
-- system.glusterfs.server.cluster
-- system.glusterfs.server.volume.prometheus
 - system.galera.server.cluster
 - system.galera.server.database.grafana
 - system.salt.minion.cert.prometheus_server
diff --git a/classes/cluster/virtual-mcp11-k8s-calico-minimal/infra/init.yml b/classes/cluster/virtual-mcp11-k8s-calico-minimal/infra/init.yml
index 6124602..bdd4642 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico-minimal/infra/init.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico-minimal/infra/init.yml
@@ -14,7 +14,7 @@
     # infra service addresses
     infra_config_hostname: cfg01
     infra_config_address: 172.16.10.100
-    infra_config_deploy_address: 192.168.10.100
+    infra_config_deploy_address: 192.168.10.90
 
     cluster_domain: virtual-mcp11-k8s-calico-minimal.local
     cluster_name: virtual-mcp11-k8s-calico-minimal
diff --git a/classes/cluster/virtual-mcp11-k8s-calico-minimal/init.yml b/classes/cluster/virtual-mcp11-k8s-calico-minimal/init.yml
index e1ad5a6..56a3029 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico-minimal/init.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico-minimal/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - cluster.virtual-mcp11-k8s-calico-minimal.kubernetes
 - cluster.virtual-mcp11-k8s-calico-minimal.infra
 - cluster.overrides
diff --git a/classes/cluster/virtual-mcp11-k8s-calico/infra/config.yml b/classes/cluster/virtual-mcp11-k8s-calico/infra/config.yml
index e1f711e..443d473 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico/infra/config.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico/infra/config.yml
@@ -9,7 +9,8 @@
 - system.mysql.client.database.grafana
 - system.reclass.storage.salt
 - system.reclass.storage.system.kubernetes_control_cluster
-- cluster.virtual-mcp11-k8s-calico.infra
+- cluster.virtual-mcp11-k8s-calico.stacklight.proxy
+- cluster.virtual-mcp11-k8s-calico
 parameters:
   _param:
     salt_master_base_environment: prd
@@ -44,6 +45,8 @@
               value_template: <<node_control_ip>>
             infra_config_deploy_address:
               value_template: <<node_deploy_ip>>
+            cluster_domain:
+              value_template: <<node_domain>>
         infra_proxy:
           expression: <<node_hostname>>__startswith__prx
           node_class:
@@ -151,4 +154,4 @@
           params:
             salt_master_host: ${_param:infra_config_deploy_address}
             linux_system_codename: xenial
-            single_address: ${_param:kubernetes_compute_node02_address}
\ No newline at end of file
+            single_address: ${_param:kubernetes_compute_node02_address}
diff --git a/classes/cluster/virtual-mcp11-k8s-calico/infra/init.yml b/classes/cluster/virtual-mcp11-k8s-calico/infra/init.yml
index a55f484..736117d 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico/infra/init.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico/infra/init.yml
@@ -9,20 +9,12 @@
 - system.openssh.server.team.mcp_qa
 - system.openssh.server.team.k8s_team
 - system.rsyslog.client.single
-- system.heka.log_collector.single
-- system.heka.log_collector.output.telegraf
-- system.telegraf.agent
-- system.prometheus.collector
-- service.grafana.collector
-- cluster.virtual-mcp11-k8s-calico.kubernetes
-- cluster.virtual-mcp11-k8s-calico.stacklight
-- cluster.overrides
 parameters:
   _param:
     # infra service addresses
     infra_config_hostname: cfg01
     infra_config_address: 172.16.10.100
-    infra_config_deploy_address: 192.168.10.100
+    infra_config_deploy_address: 192.168.10.90
 
     cluster_domain: virtual-mcp11-k8s-calico.local
     cluster_name: virtual-mcp11-k8s-calico
diff --git a/classes/cluster/virtual-mcp11-k8s-calico/init.yml b/classes/cluster/virtual-mcp11-k8s-calico/init.yml
new file mode 100644
index 0000000..975217b
--- /dev/null
+++ b/classes/cluster/virtual-mcp11-k8s-calico/init.yml
@@ -0,0 +1,6 @@
+classes:
+- system.linux.network.dynamic_hosts
+- cluster.virtual-mcp11-k8s-calico.kubernetes
+- cluster.virtual-mcp11-k8s-calico.stacklight
+- cluster.virtual-mcp11-k8s-calico.infra
+- cluster.overrides
diff --git a/classes/cluster/virtual-mcp11-k8s-calico/kubernetes/compute.yml b/classes/cluster/virtual-mcp11-k8s-calico/kubernetes/compute.yml
index 14af257..e1325ea 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico/kubernetes/compute.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico/kubernetes/compute.yml
@@ -3,8 +3,7 @@
 - system.kubernetes.pool.cluster
 - system.salt.minion.cert.k8s_client
 - system.salt.minion.cert.etcd_client
-- cluster.virtual-mcp11-k8s-calico.infra
-- cluster.overrides
+- cluster.virtual-mcp11-k8s-calico
 parameters:
   docker:
     host:
diff --git a/classes/cluster/virtual-mcp11-k8s-calico/kubernetes/control.yml b/classes/cluster/virtual-mcp11-k8s-calico/kubernetes/control.yml
index ba33434..61fdaba 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico/kubernetes/control.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico/kubernetes/control.yml
@@ -6,7 +6,7 @@
 - system.kubernetes.master.cluster
 - cluster.virtual-mcp11-k8s-calico.kubernetes.compute
 - cluster.virtual-mcp11-k8s-calico.infra
-- cluster.overrides
+- cluster.virtual-mcp11-k8s-calico
 parameters:
   _param:
     keepalived_vip_interface: ens3
diff --git a/classes/cluster/virtual-mcp11-k8s-calico/stacklight/init.yml b/classes/cluster/virtual-mcp11-k8s-calico/stacklight/init.yml
index 243a614..6c57f52 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico/stacklight/init.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico/stacklight/init.yml
@@ -1,3 +1,10 @@
+classes:
+- service.grafana.collector
+- system.linux.system.repo.mcp.extra
+- system.heka.log_collector.single
+- system.heka.log_collector.output.telegraf
+- system.prometheus.collector
+- system.telegraf.agent
 parameters:
   _param:
     stacklight_monitor_address: 172.16.10.252
@@ -8,9 +15,6 @@
     stacklight_node02_address: 172.16.10.108
     stacklight_node03_address: 172.16.10.109
 
-    # Glusterfs
-    glusterfs_service_host: ${_param:stacklight_monitor_address}
-
     # Prometheus
     prometheus_control_address: ${_param:stacklight_monitor_address}
 
diff --git a/classes/cluster/virtual-mcp11-k8s-calico/stacklight/proxy.yml b/classes/cluster/virtual-mcp11-k8s-calico/stacklight/proxy.yml
index 1433a95..914b123 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico/stacklight/proxy.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico/stacklight/proxy.yml
@@ -5,7 +5,7 @@
 - system.nginx.server.proxy.monitoring.prometheus_server
 - system.nginx.server.proxy.monitoring.prometheus_alertmanager
 - system.salt.minion.cert.proxy
-- cluster.virtual-mcp11-k8s-calico.infra
+- cluster.virtual-mcp11-k8s-calico
 parameters:
   _param:
     cluster_public_host: ${_param:prometheus_control_address}
diff --git a/classes/cluster/virtual-mcp11-k8s-calico/stacklight/server.yml b/classes/cluster/virtual-mcp11-k8s-calico/stacklight/server.yml
index 442b8d5..8512f04 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico/stacklight/server.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico/stacklight/server.yml
@@ -1,6 +1,6 @@
 classes:
 - system.docker.host
-- system.linux.system.repo.tcp_elastic
+- system.linux.system.repo.elasticsearch
 - system.linux.system.repo.influxdb
 # Needed to install Galera packages
 - system.linux.system.repo.mcp.openstack
@@ -11,10 +11,6 @@
 - system.haproxy.proxy.listen.stacklight.influxdb_relay
 - system.haproxy.proxy.listen.stacklight.kibana
 - service.haproxy.proxy.single
-- system.glusterfs.client.cluster
-- system.glusterfs.client.volume.prometheus
-- system.glusterfs.server.cluster
-- system.glusterfs.server.volume.prometheus
 - system.influxdb.relay.cluster
 - system.galera.server.cluster
 - system.galera.server.database.grafana
@@ -28,7 +24,7 @@
 - system.prometheus.server.target.dns
 - system.docker.swarm.stack.monitoring
 - system.docker.swarm.stack.dashboard
-- cluster.virtual-mcp11-k8s-calico.infra
+- cluster.virtual-mcp11-k8s-calico
 parameters:
   _param:
     cluster_vip_address: ${_param:stacklight_monitor_address}
diff --git a/classes/cluster/virtual-mcp11-k8s-contrail/infra/init.yml b/classes/cluster/virtual-mcp11-k8s-contrail/infra/init.yml
index 5ffacc2..34a8fe1 100644
--- a/classes/cluster/virtual-mcp11-k8s-contrail/infra/init.yml
+++ b/classes/cluster/virtual-mcp11-k8s-contrail/infra/init.yml
@@ -23,7 +23,7 @@
     # infra service addresses
     infra_config_hostname: cfg01
     infra_config_address: 172.16.10.100
-    infra_config_deploy_address: 192.168.10.100
+    infra_config_deploy_address: 192.168.10.90
 
     cluster_domain: virtual-mcp11-k8s-contrail.local
     cluster_name: virtual-mcp11-k8s-contrail
diff --git a/classes/cluster/virtual-mcp11-k8s-contrail/stacklight/init.yml b/classes/cluster/virtual-mcp11-k8s-contrail/stacklight/init.yml
index 4b37345..832bcdd 100644
--- a/classes/cluster/virtual-mcp11-k8s-contrail/stacklight/init.yml
+++ b/classes/cluster/virtual-mcp11-k8s-contrail/stacklight/init.yml
@@ -7,8 +7,6 @@
     stacklight_node01_address: 172.16.10.107
     stacklight_node02_address: 172.16.10.108
     stacklight_node03_address: 172.16.10.109
-    # GlusterFS
-    glusterfs_service_host: ${_param:stacklight_monitor_address}
     # Prometheus
     prometheus_control_address: ${_param:stacklight_monitor_address}
 
diff --git a/classes/cluster/virtual-mcp11-k8s-contrail/stacklight/server.yml b/classes/cluster/virtual-mcp11-k8s-contrail/stacklight/server.yml
index d434b72..1c74b90 100644
--- a/classes/cluster/virtual-mcp11-k8s-contrail/stacklight/server.yml
+++ b/classes/cluster/virtual-mcp11-k8s-contrail/stacklight/server.yml
@@ -1,6 +1,6 @@
 classes:
 - system.linux.system.repo.influxdb
-- system.linux.system.repo.tcp_elastic
+- system.linux.system.repo.elasticsearch
 # Needed to install Galera packages
 - system.linux.system.repo.mcp.openstack
 - system.docker.host
@@ -13,10 +13,6 @@
 - service.haproxy.proxy.single
 - system.galera.server.cluster
 - system.galera.server.database.grafana
-- system.glusterfs.client.cluster
-- system.glusterfs.client.volume.prometheus
-- system.glusterfs.server.cluster
-- system.glusterfs.server.volume.prometheus
 - system.influxdb.relay.cluster
 - system.influxdb.server.single
 - system.influxdb.database.prometheus
diff --git a/classes/cluster/virtual-mcp11-ovs-dpdk/infra/config.yml b/classes/cluster/virtual-mcp11-ovs-dpdk/infra/config.yml
index ab3d282..c1528b4 100644
--- a/classes/cluster/virtual-mcp11-ovs-dpdk/infra/config.yml
+++ b/classes/cluster/virtual-mcp11-ovs-dpdk/infra/config.yml
@@ -31,7 +31,7 @@
     reclass_data_revision: master
     salt_master_environment_repository: "https://github.com/tcpcloud"
     salt_master_environment_revision: master
-    reclass_config_master: 192.168.10.100
+    reclass_config_master: 192.168.10.90
     single_address: 172.16.10.100
     salt_master_host: 127.0.0.1
     salt_master_base_environment: prd
diff --git a/classes/cluster/virtual-mcp11-ovs-dpdk/init.yml b/classes/cluster/virtual-mcp11-ovs-dpdk/init.yml
index e97b1a5..ef16a9e 100644
--- a/classes/cluster/virtual-mcp11-ovs-dpdk/init.yml
+++ b/classes/cluster/virtual-mcp11-ovs-dpdk/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.single
 - cluster.virtual-mcp11-ovs-dpdk.infra
 - cluster.virtual-mcp11-ovs-dpdk.openstack
diff --git a/classes/cluster/virtual-mcp11-ovs-dpdk/openstack/control.yml b/classes/cluster/virtual-mcp11-ovs-dpdk/openstack/control.yml
index ca478b9..8d86179 100644
--- a/classes/cluster/virtual-mcp11-ovs-dpdk/openstack/control.yml
+++ b/classes/cluster/virtual-mcp11-ovs-dpdk/openstack/control.yml
@@ -104,6 +104,8 @@
                 rndc_host: ${_param:openstack_control_node03_address}
                 rndc_port: 953
                 rndc_key_file: /etc/designate/rndc.key
+    worker:
+      enabled: ${_param:designate_worker_enabled}
   glance:
     server:
       storage:
diff --git a/classes/cluster/virtual-mcp11-ovs-dpdk/openstack/init.yml b/classes/cluster/virtual-mcp11-ovs-dpdk/openstack/init.yml
index 83d35b8..db21afe 100644
--- a/classes/cluster/virtual-mcp11-ovs-dpdk/openstack/init.yml
+++ b/classes/cluster/virtual-mcp11-ovs-dpdk/openstack/init.yml
@@ -72,6 +72,7 @@
       rndc_port: 953
       rndc_key_file: /etc/designate/rndc.key
     designate_version: ${_param:openstack_version}
+    designate_worker_enabled: true
     glance_version: ${_param:openstack_version}
     glance_service_host: ${_param:cluster_vip_address}
     keystone_version: ${_param:openstack_version}
@@ -179,4 +180,4 @@
       user:
         root:
           name: root
-          password: false
\ No newline at end of file
+          password: false
diff --git a/classes/cluster/virtual-mcp11-ovs-dpdk/stacklight/server.yml b/classes/cluster/virtual-mcp11-ovs-dpdk/stacklight/server.yml
index 8135eff..18027cf 100644
--- a/classes/cluster/virtual-mcp11-ovs-dpdk/stacklight/server.yml
+++ b/classes/cluster/virtual-mcp11-ovs-dpdk/stacklight/server.yml
@@ -4,7 +4,7 @@
 - system.linux.system.repo.influxdb
 - system.heka.remote_collector.input.amqp
 - system.heka.aggregator.cluster
-- system.linux.system.repo.tcp_elastic 
+- system.linux.system.repo.elasticsearch
 - system.elasticsearch.server.cluster
 - system.elasticsearch.server.curator
 - system.kibana.server.single
diff --git a/classes/cluster/virtual-mcp11-ovs-ironic/init.yml b/classes/cluster/virtual-mcp11-ovs-ironic/init.yml
index 654b013..a9ccc70 100644
--- a/classes/cluster/virtual-mcp11-ovs-ironic/init.yml
+++ b/classes/cluster/virtual-mcp11-ovs-ironic/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.single
 - cluster.virtual-mcp11-ovs-ironic.infra
 - cluster.virtual-mcp11-ovs-ironic.openstack
diff --git a/classes/cluster/virtual-mcp11-ovs-ironic/stacklight/server.yml b/classes/cluster/virtual-mcp11-ovs-ironic/stacklight/server.yml
index 4e8bc6c..aef3644 100644
--- a/classes/cluster/virtual-mcp11-ovs-ironic/stacklight/server.yml
+++ b/classes/cluster/virtual-mcp11-ovs-ironic/stacklight/server.yml
@@ -4,7 +4,7 @@
 - system.linux.system.repo.influxdb
 - system.heka.remote_collector.input.amqp
 - system.heka.aggregator.cluster
-- system.linux.system.repo.tcp_elastic 
+- system.linux.system.repo.elasticsearch
 - system.elasticsearch.server.cluster
 - system.elasticsearch.server.curator
 - system.kibana.server.single
diff --git a/classes/cluster/virtual-mcp11-ovs/infra/config.yml b/classes/cluster/virtual-mcp11-ovs/infra/config.yml
index 9580db4..b0b20c8 100644
--- a/classes/cluster/virtual-mcp11-ovs/infra/config.yml
+++ b/classes/cluster/virtual-mcp11-ovs/infra/config.yml
@@ -30,7 +30,7 @@
     reclass_data_revision: master
     salt_master_environment_repository: "https://github.com/tcpcloud"
     salt_master_environment_revision: master
-    reclass_config_master: 192.168.10.100
+    reclass_config_master: 192.168.10.90
     single_address: 172.16.10.100
     salt_master_host: 127.0.0.1
     salt_master_base_environment: prd
diff --git a/classes/cluster/virtual-mcp11-ovs/init.yml b/classes/cluster/virtual-mcp11-ovs/init.yml
index 2f85ae8..6d4d246 100644
--- a/classes/cluster/virtual-mcp11-ovs/init.yml
+++ b/classes/cluster/virtual-mcp11-ovs/init.yml
@@ -1,4 +1,5 @@
 classes:
+- system.linux.network.dynamic_hosts
 - system.linux.system.single
 - cluster.virtual-mcp11-ovs.infra
 - cluster.virtual-mcp11-ovs.openstack
diff --git a/classes/cluster/virtual-mcp11-ovs/stacklight/server.yml b/classes/cluster/virtual-mcp11-ovs/stacklight/server.yml
index c32e8a9..fcc8107 100644
--- a/classes/cluster/virtual-mcp11-ovs/stacklight/server.yml
+++ b/classes/cluster/virtual-mcp11-ovs/stacklight/server.yml
@@ -4,7 +4,7 @@
 - system.linux.system.repo.influxdb
 - system.heka.remote_collector.input.amqp
 - system.heka.aggregator.cluster
-- system.linux.system.repo.tcp_elastic 
+- system.linux.system.repo.elasticsearch
 - system.elasticsearch.server.cluster
 - system.elasticsearch.server.curator
 - system.kibana.server.single
diff --git a/classes/system b/classes/system
index 0e05a52..b5a5aa6 160000
--- a/classes/system
+++ b/classes/system
@@ -1 +1 @@
-Subproject commit 0e05a52f3e35853ec8e2bd7ad8ea9bce297e218a
+Subproject commit b5a5aa610defbf7b18fe90163c16855bd22aa60b