Merge "Enable k8s conformance tests for k8s_ha_calico."
diff --git a/.releasenotes/notes/parametric-telemetry-hostnames-06e14467d9a9077d.yaml b/.releasenotes/notes/parametric-telemetry-hostnames-06e14467d9a9077d.yaml
new file mode 100644
index 0000000..e75d549
--- /dev/null
+++ b/.releasenotes/notes/parametric-telemetry-hostnames-06e14467d9a9077d.yaml
@@ -0,0 +1,15 @@
+---
+upgrades:
+  - mongodb.server.cluster no longer hardcodes the telemetry nodes' hostnames
+    in favor of using `openstack_telemetry_node{01,02,03}_hostname` params,
+    allowing custom hostnames to be used.
+
+    Configuration example:
+
+    .. code-block:: yaml
+
+        parameters:
+          _param:
+            openstack_telemetry_node01_hostname: mdb01
+            openstack_telemetry_node02_hostname: mdb02
+            openstack_telemetry_node03_hostname: mdb03
diff --git a/.releasenotes/notes/proxy-prometheus-b48f1787735ae9d9.yaml b/.releasenotes/notes/proxy-prometheus-b48f1787735ae9d9.yaml
new file mode 100644
index 0000000..2dc0994
--- /dev/null
+++ b/.releasenotes/notes/proxy-prometheus-b48f1787735ae9d9.yaml
@@ -0,0 +1,10 @@
+---
+
+summary: >
+  Fixed the :guilabel:`Heatmaps` page in the DevOps Portal
+
+fixes:
+  - Fixed the issue with the DevOps Portal :guilabel:`Heatmaps` page
+    that was not available due to the disabled proxy for the
+    ``stacklight-prometeus`` endpoint and due to wrong
+    Prometheus URL configuration.
\ No newline at end of file
diff --git a/.releasenotes/notes/smtp_tls-907be4451c86b669.yaml b/.releasenotes/notes/smtp_tls-907be4451c86b669.yaml
new file mode 100644
index 0000000..3e79c8f
--- /dev/null
+++ b/.releasenotes/notes/smtp_tls-907be4451c86b669.yaml
@@ -0,0 +1,18 @@
+---
+summary: >
+  Additional option for push notification service to work with SMTP server
+
+features:
+  - Earlier the push notification service considered SMTP server working only under TLS.
+    In case of custom SMPT servers which use non-TLS connection the push notification service is
+    not working properly. This patch added the explicit definition of TLS using.
+    To define this parameter you need to set 'pushkin_smtp_use_tls' variable on cluster level metadata.
+
+    Example:
+    .. code-block:: yaml
+    parameters:
+      _param:
+        pushkin_smtp_use_tls: true
+
+fixes:
+  - related US: https://mirantis.jira.com/browse/PROD-14976
diff --git a/apache/server/proxy/openstack/cinder.yml b/apache/server/proxy/openstack/cinder.yml
new file mode 100644
index 0000000..8b3fb4f
--- /dev/null
+++ b/apache/server/proxy/openstack/cinder.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    apache_proxy_ssl:
+      enabled: false
+    apache_proxy_openstack_api_host: ${_param:cluster_public_host}
+    apache_proxy_openstack_api_address: 0.0.0.0
+    apache_proxy_openstack_cinder_host: ${_param:cinder_service_host}
+  apache:
+    server:
+      site:
+        apache_proxy_openstack_api_cinder:
+          enabled: true
+          type: proxy
+          name: openstack_api_cinder
+          check: false
+          proxy:
+            host: ${_param:apache_proxy_openstack_cinder_host}
+            port: 8776
+            protocol: http
+          host:
+            name: ${_param:apache_proxy_openstack_api_host}
+            port: 8776
+            address: ${_param:apache_proxy_openstack_api_address}
+          ssl: ${_param:apache_proxy_ssl}
diff --git a/apache/server/proxy/openstack/designate.yml b/apache/server/proxy/openstack/designate.yml
new file mode 100644
index 0000000..b681cf7
--- /dev/null
+++ b/apache/server/proxy/openstack/designate.yml
@@ -0,0 +1,28 @@
+parameters:
+  _param:
+    apache_proxy_ssl:
+      enabled: false
+    apache_proxy_openstack_api_host: ${_param:cluster_public_host}
+    apache_proxy_openstack_api_address: 0.0.0.0
+    apache_proxy_openstack_designate_host: ${_param:designate_service_host}
+  apache:
+    server:
+      modules:
+       - proxy
+       - proxy_http
+       - headers
+      enabled: true
+      site:
+        apache_proxy_openstack_api_designate:
+          enabled: true
+          type: proxy
+          name: openstack_api_designate
+          proxy:
+            host: ${_param:apache_proxy_openstack_designate_host}
+            port: 9001
+            protocol: http
+          host:
+            name: ${_param:apache_proxy_openstack_api_host}
+            port: 9001
+            address: ${_param:apache_proxy_openstack_api_address}
+          ssl: ${_param:apache_proxy_ssl}
diff --git a/apache/server/proxy/openstack/glance.yml b/apache/server/proxy/openstack/glance.yml
new file mode 100644
index 0000000..91bedea
--- /dev/null
+++ b/apache/server/proxy/openstack/glance.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    apache_proxy_ssl:
+      enabled: false
+    apache_proxy_openstack_api_host: ${_param:cluster_public_host}
+    apache_proxy_openstack_api_address: 0.0.0.0
+    apache_proxy_openstack_glance_host: ${_param:glance_service_host}
+  apache:
+    server:
+      enabled: true
+      site:
+        apache_proxy_openstack_api_glance:
+          enabled: true
+          type: proxy
+          name: openstack_api_glance
+          proxy:
+            host: ${_param:apache_proxy_openstack_glance_host}
+            port: 9292
+            protocol: http
+          host:
+            name: ${_param:apache_proxy_openstack_api_host}
+            port: 9292
+            address: ${_param:apache_proxy_openstack_api_address}
+          ssl: ${_param:apache_proxy_ssl}
diff --git a/apache/server/proxy/openstack/heat.yml b/apache/server/proxy/openstack/heat.yml
new file mode 100644
index 0000000..b844c45
--- /dev/null
+++ b/apache/server/proxy/openstack/heat.yml
@@ -0,0 +1,52 @@
+parameters:
+  _param:
+    apache_proxy_ssl:
+      enabled: false
+    apache_proxy_openstack_api_host: ${_param:cluster_public_host}
+    apache_proxy_openstack_api_address: 0.0.0.0
+    apache_proxy_openstack_heat_host: ${_param:heat_service_host}
+  apache:
+    server:
+      site:
+        apache_proxy_openstack_api_heat:
+          enabled: true
+          type: proxy
+          name: openstack_api_heat
+          check: false
+          proxy:
+            host: ${_param:apache_proxy_openstack_heat_host}
+            port: 8004
+            protocol: http
+          host:
+            name: ${_param:apache_proxy_openstack_api_host}
+            port: 8004
+            address: ${_param:apache_proxy_openstack_api_address}
+          ssl: ${_param:apache_proxy_ssl}
+        apache_proxy_openstack_api_heat_cfn:
+          enabled: true
+          type: proxy
+          name: openstack_api_heat_cfn
+          check: false
+          proxy:
+            host: ${_param:apache_proxy_openstack_heat_host}
+            port: 8000
+            protocol: http
+          host:
+            name: ${_param:apache_proxy_openstack_api_host}
+            port: 8000
+            address: ${_param:apache_proxy_openstack_api_address}
+          ssl: ${_param:apache_proxy_ssl}
+        apache_proxy_openstack_api_heat_cloudwatch:
+          enabled: true
+          type: proxy
+          name: openstack_api_heat_cloudwatch
+          check: false
+          proxy:
+            host: ${_param:apache_proxy_openstack_heat_host}
+            port: 8003
+            protocol: http
+          host:
+            name: ${_param:apache_proxy_openstack_api_host}
+            port: 8003
+            address: ${_param:apache_proxy_openstack_api_address}
+          ssl: ${_param:apache_proxy_ssl}
diff --git a/apache/server/proxy/openstack/neutron.yml b/apache/server/proxy/openstack/neutron.yml
new file mode 100644
index 0000000..dd18c40
--- /dev/null
+++ b/apache/server/proxy/openstack/neutron.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    apache_proxy_ssl:
+      enabled: false
+    apache_proxy_openstack_api_host: ${_param:cluster_public_host}
+    apache_proxy_openstack_api_address: 0.0.0.0
+    apache_proxy_openstack_neutron_host: ${_param:neutron_service_host}
+  apache:
+    server:
+      site:
+        apache_proxy_openstack_api_neutron:
+          enabled: true
+          type: proxy
+          name: openstack_api_neutron
+          check: false
+          proxy:
+            host: ${_param:apache_proxy_openstack_neutron_host}
+            port: 9696
+            protocol: http
+          host:
+            name: ${_param:apache_proxy_openstack_api_host}
+            port: 9696
+            address: ${_param:apache_proxy_openstack_api_address}
+          ssl: ${_param:apache_proxy_ssl}
diff --git a/apache/server/proxy/openstack/nova.yml b/apache/server/proxy/openstack/nova.yml
new file mode 100644
index 0000000..66a0107
--- /dev/null
+++ b/apache/server/proxy/openstack/nova.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    apache_proxy_ssl:
+      enabled: false
+    apache_proxy_openstack_api_host: ${_param:cluster_public_host}
+    apache_proxy_openstack_api_address: 0.0.0.0
+    apache_proxy_openstack_nova_host: ${_param:nova_service_host}
+  apache:
+    server:
+      site:
+        apache_proxy_openstack_api_nova:
+          enabled: true
+          type: proxy
+          name: openstack_api_nova
+          check: false
+          proxy:
+            host: ${_param:apache_proxy_openstack_nova_host}
+            port: 8774
+            protocol: http
+          host:
+            name: ${_param:apache_proxy_openstack_api_host}
+            port: 8774
+            address: ${_param:apache_proxy_openstack_api_address}
+          ssl: ${_param:apache_proxy_ssl}
diff --git a/apache/server/proxy/openstack/placement.yml b/apache/server/proxy/openstack/placement.yml
new file mode 100644
index 0000000..9e256b2
--- /dev/null
+++ b/apache/server/proxy/openstack/placement.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    apache_proxy_ssl:
+      enabled: false
+    placement_service_host: ${_param:nova_service_host}
+    apache_proxy_openstack_api_host: ${_param:cluster_public_host}
+    apache_proxy_openstack_api_address: 0.0.0.0
+    apache_proxy_openstack_placement_host: ${_param:placement_service_host}
+  apache:
+    server:
+      site:
+        apache_proxy_openstack_api_placement:
+          enabled: true
+          type: proxy
+          name: openstack_api_placement
+          check: false
+          proxy:
+            host: ${_param:apache_proxy_openstack_placement_host}
+            port: 8778
+            protocol: http
+          host:
+            name: ${_param:apache_proxy_openstack_api_host}
+            port: 8778
+            address: ${_param:apache_proxy_openstack_api_address}
+          ssl: ${_param:apache_proxy_ssl}
diff --git a/apache/server/site/barbican.yml b/apache/server/site/barbican.yml
new file mode 100644
index 0000000..78c9f02
--- /dev/null
+++ b/apache/server/site/barbican.yml
@@ -0,0 +1,50 @@
+parameters:
+  _param:
+    apache_barbican_ssl:
+      enabled: false
+    apache_barbican_api_address: 0.0.0.0
+    apache_barbican_api_host: ${linux:network:fqdn}
+  apache:
+    server:
+      enabled: true
+      site:
+        barbican:
+          enabled: false
+          available: true
+          type: wsgi
+          name: barbican
+          ssl: ${_param:apache_barbican_ssl}
+          wsgi:
+            daemon_process: barbican-api
+            processes: 3
+            threads: 10
+            user: barbican
+            group: barbican
+            display_name: '%{GROUP}'
+            script_alias: '/ /usr/bin/barbican-wsgi-api'
+            application_group: '%{GLOBAL}'
+            authorization: 'On'
+          host:
+            address: ${_param:apache_barbican_api_address}
+            name: ${_param:apache_barbican_api_host}
+            port: 9311
+          log:
+            custom:
+              format: >-
+                %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+            error:
+              enabled: true
+              format: '%M'
+        barbican_admin:
+          enabled: false
+          available: true
+          type: wsgi
+          name: barbican_admin
+          ssl: ${_param:apache_barbican_ssl}
+          wsgi:
+            daemon_process: barbican-api-admin
+            processes: 3
+            threads: 10
+            user: barbican
+            group: barbican
+            display_name: '%{GROUP}'
diff --git a/apache/server/site/cinder.yml b/apache/server/site/cinder.yml
new file mode 100644
index 0000000..7338b6e
--- /dev/null
+++ b/apache/server/site/cinder.yml
@@ -0,0 +1,42 @@
+parameters:
+  _param:
+    apache_cinder_ssl:
+      enabled: false
+    apache_cinder_api_address: 0.0.0.0
+    apache_cinder_api_host: ${linux:network:fqdn}
+  cinder:
+    server:
+      service_name: apache2
+  apache:
+    server:
+      enabled: true
+      default_mpm: event
+      site:
+        cinder:
+          enabled: false
+          available: true
+          type: wsgi
+          name: cinder
+          ssl: ${_param:apache_cinder_ssl}
+          wsgi:
+            daemon_process: cinder-wsgi
+            processes: 5
+            threads: 1
+            user: cinder
+            group: cinder
+            display_name: '%{GROUP}'
+            script_alias: '/ /usr/bin/cinder-wsgi'
+            application_group: '%{GLOBAL}'
+            authorization: 'On'
+          host:
+            address: ${_param:apache_cinder_api_address}
+            name: ${_param:apache_cinder_api_host}
+            port: 8776
+          log:
+            custom:
+              format: >-
+                %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+            error:
+              enabled: true
+              format: '%M'
+              file: '/var/log/apache2/cinder_error.log'
diff --git a/apache/server/site/gnocchi.yml b/apache/server/site/gnocchi.yml
new file mode 100644
index 0000000..a3d6def
--- /dev/null
+++ b/apache/server/site/gnocchi.yml
@@ -0,0 +1,35 @@
+parameters:
+  _param:
+    gnocchi_api_workers: 2
+    apache_gnocchi_ssl:
+      enabled: false
+    apache_gnocchi_api_host: ${linux:network:fqdn}
+    apache_gnocchi_api_address: ${_param:single_address}
+    apache_gnocchi_api_port: 8041
+  apache:
+    server:
+      site:
+        gnocchi:
+          enabled: false
+          available: true
+          type: wsgi
+          name: gnocchi
+          ssl: ${_param:apache_gnocchi_ssl}
+          host:
+            name: ${_param:apache_gnocchi_api_host}
+            address: ${_param:apache_gnocchi_api_address}
+            port: ${_param:apache_gnocchi_api_port}
+          log:
+            custom:
+              format: >-
+                %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+          wsgi:
+            daemon_process: gnocchi-api
+            processes: ${_param:gnocchi_api_workers}
+            threads: 10
+            user: gnocchi
+            group: gnocchi
+            display_name: '%{GROUP}'
+            script_alias: '/ /usr/bin/gnocchi-api'
+            application_group: '%{GLOBAL}'
+            authorization: 'On'
diff --git a/apache/server/site/manila.yml b/apache/server/site/manila.yml
new file mode 100644
index 0000000..2161882
--- /dev/null
+++ b/apache/server/site/manila.yml
@@ -0,0 +1,44 @@
+parameters:
+  _param:
+    apache_manila_ssl:
+      enabled: false
+    apache_manila_api_address: 0.0.0.0
+    apache_manila_api_host: ${linux:network:fqdn}
+  manila:
+    server:
+      service_name: apache2
+  apache:
+    server:
+      enabled: true
+      default_mpm: event
+      site:
+        manila:
+          enabled: false
+          available: true
+          type: wsgi
+          name: manila
+          ssl: ${_param:apache_manila_ssl}
+          wsgi:
+            daemon_process: manila-api
+            threads: 2
+            user: manila
+            group: manila
+            display_name: '%{GROUP}'
+            script_alias: '/ /usr/bin/manila-wsgi'
+            application_group: '%{GLOBAL}'
+            authorization: 'On'
+          limits:
+            request_body: 114688
+          host:
+            address: ${_param:apache_manila_api_address}
+            name: ${_param:apache_manila_api_host}
+            port: 8786
+          log:
+            custom:
+              format: >-
+                %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+            error:
+              enabled: true
+              level: debug
+              format: '%M'
+              file: '/var/log/manila/manila-api.log'
diff --git a/apache/server/site/nova-placement.yml b/apache/server/site/nova-placement.yml
new file mode 100644
index 0000000..9eeeae4
--- /dev/null
+++ b/apache/server/site/nova-placement.yml
@@ -0,0 +1,45 @@
+parameters:
+  _param:
+    apache_nova_placement_ssl:
+      enabled: false
+    apache_nova_placement_api_address: 0.0.0.0
+    apache_nova_placement_api_host: ${linux:network:fqdn}
+  nova_placement:
+    server:
+      service_name: apache2
+  apache:
+    server:
+      enabled: true
+      default_mpm: event
+      site:
+        nova_placement:
+          enabled: false
+          available: true
+          type: wsgi
+          name: nova_placement
+          ssl: ${_param:apache_nova_placement_ssl}
+          wsgi:
+            daemon_process: nova-placement
+            processes: 5
+            threads: 1
+            user: nova
+            group: nova
+            display_name: '%{GROUP}'
+            script_alias: '/ /usr/bin/nova-placement-api'
+            application_group: '%{GLOBAL}'
+            authorization: 'On'
+          limits:
+            request_body: 114688
+          host:
+            address: ${_param:apache_nova_placement_api_address}
+            name: ${_param:apache_nova_placement_api_host}
+            port: 8778
+          log:
+            custom:
+              format: >-
+                %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+              file: '/var/log/apache2/nova_placement_access.log'
+            error:
+              enabled: true
+              format: '%M'
+              file: '/var/log/apache2/nova_placement_error.log'
diff --git a/apache/server/site/panko.yml b/apache/server/site/panko.yml
new file mode 100644
index 0000000..d052c37
--- /dev/null
+++ b/apache/server/site/panko.yml
@@ -0,0 +1,35 @@
+parameters:
+  _param:
+    apache_panko_ssl:
+      enabled: false
+    panko_api_workers: 2
+    apache_panko_api_host: ${linux:network:fqdn}
+    apache_panko_api_address: ${_param:single_address}
+    apache_panko_api_port: 8977
+  apache:
+    server:
+      site:
+        panko:
+          enabled: false
+          available: true
+          type: wsgi
+          name: panko
+          ssl: ${_param:apache_panko_ssl}
+          host:
+            name: ${_param:apache_panko_api_host}
+            address: ${_param:apache_panko_api_address}
+            port: ${_param:apache_panko_api_port}
+          log:
+            custom:
+              format: >-
+                %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+          wsgi:
+            daemon_process: panko-api
+            processes: ${_param:panko_api_workers}
+            threads: 1
+            user: panko
+            group: panko
+            display_name: '%{GROUP}'
+            script_alias: '/ /usr/bin/panko-api'
+            application_group: '%{GLOBAL}'
+            authorization: 'On'
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/fluentd.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/fluentd.yml
new file mode 100644
index 0000000..ee765d4
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/fluentd.yml
@@ -0,0 +1,21 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_trusty_fluentd_source: http://mirror.mirantis.com/${_param:apt_mk_version}/td-agent/trusty
+    mirror_mirantis_openstack_trusty_fluentd_distribution: trusty
+    mirror_mirantis_openstack_trusty_fluentd_components: contrib
+    mirror_mirantis_openstack_trusty_fluentd_gpgkeys:
+      - 901F9177AB97ACBE
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_trusty_fluentd:
+          source: ${_param:mirror_mirantis_openstack_trusty_fluentd_source}
+          distribution: ${_param:mirror_mirantis_openstack_trusty_fluentd_distribution}
+          components: ${_param:mirror_mirantis_openstack_trusty_fluentd_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_mirantis_openstack_trusty_fluentd_gpgkeys}
+          publisher:
+            component: contrib
+            distributions:
+              - ubuntu-trusty/fluentd/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/aptly.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/aptly.yml
index 507ed5e..72c20cb 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/aptly.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/aptly.yml
@@ -1,12 +1,11 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_aptly_source: http://apt.mirantis.com/xenial/aptly/
-    mirror_mirantis_openstack_xenial_aptly_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_aptly_source: http://mirror.mirantis.com/${_param:apt_mk_version}/aptly/xenial/
+    mirror_mirantis_openstack_xenial_aptly_distribution: squeeze
     mirror_mirantis_openstack_xenial_aptly_components: main
-    mirror_mirantis_openstack_xenial_aptly_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mirantis_openstack_xenial_aptly_gpgkeys:
-      - A76882D3
+      - 9C7DE460
   aptly:
     server:
       mirror:
@@ -15,9 +14,8 @@
           distribution: ${_param:mirror_mirantis_openstack_xenial_aptly_distribution}
           components: ${_param:mirror_mirantis_openstack_xenial_aptly_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_xenial_aptly_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_xenial_aptly_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_xenial_aptly_components}
+            component: main
             distributions:
               - ubuntu-xenial/aptly/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/cassandra.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/cassandra.yml
index 5afbf77..c34a904 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/cassandra.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/cassandra.yml
@@ -1,12 +1,14 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_cassandra_source: http://apt.mirantis.com/xenial/cassandra/
-    mirror_mirantis_openstack_xenial_cassandra_distribution: ${_param:apt_mk_version}
-    mirror_mirantis_openstack_xenial_cassandra_components: 21x
-    mirror_mirantis_openstack_xenial_cassandra_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_cassandra_source: http://mirror.mirantis.com/${_param:apt_mk_version}/cassandra/xenial/
+    mirror_mirantis_openstack_xenial_cassandra_distribution: 21x
+    mirror_mirantis_openstack_xenial_cassandra_components: main
     mirror_mirantis_openstack_xenial_cassandra_gpgkeys:
-      - A76882D3
+      - A278B781FE4B2BDA
+      - F758CE318D77295D
+      - 2B5C1B00
+      - 0353B12C
   aptly:
     server:
       mirror:
@@ -15,9 +17,8 @@
           distribution: ${_param:mirror_mirantis_openstack_xenial_cassandra_distribution}
           components: ${_param:mirror_mirantis_openstack_xenial_cassandra_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_xenial_cassandra_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_xenial_cassandra_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_xenial_cassandra_components}
+            component: 21x
             distributions:
               - ubuntu-xenial/cassandra/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/ceph.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/ceph.yml
index a0b1293..d997485 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/ceph.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/ceph.yml
@@ -1,10 +1,9 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_ceph_source: http://apt.mirantis.com/xenial/ceph/
+    mirror_mirantis_openstack_xenial_ceph_source: http://apt.mirantis.com/xenial/
     mirror_mirantis_openstack_xenial_ceph_distribution: ${_param:apt_mk_version}
-    mirror_mirantis_openstack_xenial_ceph_components: luminous
-    mirror_mirantis_openstack_xenial_ceph_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_ceph_components: ceph-luminous
     mirror_mirantis_openstack_xenial_ceph_gpgkeys:
       - A76882D3
   aptly:
@@ -15,9 +14,8 @@
           distribution: ${_param:mirror_mirantis_openstack_xenial_ceph_distribution}
           components: ${_param:mirror_mirantis_openstack_xenial_ceph_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_xenial_ceph_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_xenial_ceph_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_xenial_ceph_components}
+            component: luminous
             distributions:
               - ubuntu-xenial/ceph/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/docker-legacy.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/docker-legacy.yml
index 03a5fae..c6814b7 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/docker-legacy.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/docker-legacy.yml
@@ -1,7 +1,7 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_docker_legacy_source: http://mirror.mirantis.com/${_param:apt_mk_version}/docker-1.x/
+    mirror_mirantis_openstack_xenial_docker_legacy_source: http://mirror.mirantis.com/${_param:apt_mk_version}/docker-1.x/xenial/
     mirror_mirantis_openstack_xenial_docker_legacy_distribution: ubuntu-xenial
     mirror_mirantis_openstack_xenial_docker_legacy_components: main
     mirror_mirantis_openstack_xenial_docker_legacy_gpgkeys:
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/docker.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/docker.yml
index 703d202..2ae01f9 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/docker.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/docker.yml
@@ -1,12 +1,11 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_docker_source: http://apt.mirantis.com/xenial/docker/
-    mirror_mirantis_openstack_xenial_docker_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_docker_source: http://mirror.mirantis.com/${_param:apt_mk_version}/docker/xenial/
+    mirror_mirantis_openstack_xenial_docker_distribution: xenial
     mirror_mirantis_openstack_xenial_docker_components: stable
-    mirror_mirantis_openstack_xenial_docker_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mirantis_openstack_xenial_docker_gpgkeys:
-      - A76882D3
+      - 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
   aptly:
     server:
       mirror:
@@ -15,9 +14,8 @@
           distribution: ${_param:mirror_mirantis_openstack_xenial_docker_distribution}
           components: ${_param:mirror_mirantis_openstack_xenial_docker_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_xenial_docker_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_xenial_docker_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_xenial_docker_components}
+            component: stable
             distributions:
               - ubuntu-xenial/docker/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic/2x.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic/2x.yml
index 6b1c006..1bf92ed 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic/2x.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic/2x.yml
@@ -1,12 +1,11 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_elastic_2x_source: http://apt.mirantis.com/xenial/elastic/2.x/
-    mirror_mirantis_openstack_xenial_elastic_2x_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_elastic_2x_source: http://mirror.mirantis.com/${_param:apt_mk_version}/elasticsearch-2.x/xenial/
+    mirror_mirantis_openstack_xenial_elastic_2x_distribution: stable
     mirror_mirantis_openstack_xenial_elastic_2x_components: main
-    mirror_mirantis_openstack_xenial_elastic_2x_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mirantis_openstack_xenial_elastic_2x_gpgkeys:
-      - A76882D3
+      - D88E42B4
   aptly:
     server:
       mirror:
@@ -15,9 +14,8 @@
           distribution: ${_param:mirror_mirantis_openstack_xenial_elastic_2x_distribution}
           components: ${_param:mirror_mirantis_openstack_xenial_elastic_2x_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_xenial_elastic_2x_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_xenial_elastic_2x_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_xenial_elastic_2x_components}
+            component: main
             distributions:
               - ubuntu-xenial/elastic/2.x/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic/5x.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic/5x.yml
index d7e92c6..1281c30 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic/5x.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic/5x.yml
@@ -1,12 +1,11 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_elastic_5x_source: http://apt.mirantis.com/xenial/elastic/5.x/
-    mirror_mirantis_openstack_xenial_elastic_5x_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_elastic_5x_source: http://mirror.mirantis.com/${_param:apt_mk_version}/elasticsearch-5.x/xenial/
+    mirror_mirantis_openstack_xenial_elastic_5x_distribution: stable
     mirror_mirantis_openstack_xenial_elastic_5x_components: main
-    mirror_mirantis_openstack_xenial_elastic_5x_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mirantis_openstack_xenial_elastic_5x_gpgkeys:
-      - A76882D3
+      - D88E42B4
   aptly:
     server:
       mirror:
@@ -15,9 +14,8 @@
           distribution: ${_param:mirror_mirantis_openstack_xenial_elastic_5x_distribution}
           components: ${_param:mirror_mirantis_openstack_xenial_elastic_5x_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_xenial_elastic_5x_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_xenial_elastic_5x_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_xenial_elastic_5x_components}
+            component: main
             distributions:
               - ubuntu-xenial/elastic/5.x/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/fluentd.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/fluentd.yml
new file mode 100644
index 0000000..bba5d9c
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/fluentd.yml
@@ -0,0 +1,21 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_xenial_fluentd_source: http://mirror.mirantis.com/${_param:apt_mk_version}/td-agent/xenial
+    mirror_mirantis_openstack_xenial_fluentd_distribution: xenial
+    mirror_mirantis_openstack_xenial_fluentd_components: contrib
+    mirror_mirantis_openstack_xenial_fluentd_gpgkeys:
+      - 901F9177AB97ACBE
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_xenial_fluentd:
+          source: ${_param:mirror_mirantis_openstack_xenial_fluentd_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_fluentd_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_fluentd_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_fluentd_gpgkeys}
+          publisher:
+            component: contrib
+            distributions:
+              - ubuntu-xenial/fluentd/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/glusterfs.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/glusterfs.yml
index cfec221..c38aa6f 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/glusterfs.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/glusterfs.yml
@@ -1,12 +1,11 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_glusterfs_source: http://apt.mirantis.com/xenial/glusterfs/
-    mirror_mirantis_openstack_xenial_glusterfs_distribution: ${_param:apt_mk_version}
-    mirror_mirantis_openstack_xenial_glusterfs_components: '"3.12"'
-    mirror_mirantis_openstack_xenial_glusterfs_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_glusterfs_source: http://mirror.mirantis.com/${_param:apt_mk_version}/glusterfs-3.8/xenial/
+    mirror_mirantis_openstack_xenial_glusterfs_distribution: xenial
+    mirror_mirantis_openstack_xenial_glusterfs_components: main
     mirror_mirantis_openstack_xenial_glusterfs_gpgkeys:
-      - A76882D3
+      - 3FE869A9
   aptly:
     server:
       mirror:
@@ -15,9 +14,8 @@
           distribution: ${_param:mirror_mirantis_openstack_xenial_glusterfs_distribution}
           components: ${_param:mirror_mirantis_openstack_xenial_glusterfs_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_xenial_glusterfs_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_xenial_glusterfs_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_xenial_glusterfs_components}
+            component: '"3.8"'
             distributions:
               - ubuntu-xenial/glusterfs/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/grafana.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/grafana.yml
index e09ba61..7c159b8 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/grafana.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/grafana.yml
@@ -1,12 +1,11 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_grafana_source: http://apt.mirantis.com/xenial/grafana/
-    mirror_mirantis_openstack_xenial_grafana_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_grafana_source: http://mirror.mirantis.com/${_param:apt_mk_version}/grafana/xenial/
+    mirror_mirantis_openstack_xenial_grafana_distribution: jessie
     mirror_mirantis_openstack_xenial_grafana_components: main
-    mirror_mirantis_openstack_xenial_grafana_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mirantis_openstack_xenial_grafana_gpgkeys:
-      - A76882D3
+      - D59097AB
   aptly:
     server:
       mirror:
@@ -15,9 +14,8 @@
           distribution: ${_param:mirror_mirantis_openstack_xenial_grafana_distribution}
           components: ${_param:mirror_mirantis_openstack_xenial_grafana_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_xenial_grafana_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_xenial_grafana_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_xenial_grafana_components}
+            component: main
             distributions:
               - ubuntu-xenial/grafana/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/influxdb.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/influxdb.yml
index 01093fe..e8838d9 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/influxdb.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/influxdb.yml
@@ -1,12 +1,11 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_influxdb_source: http://apt.mirantis.com/xenial/influxdb/
-    mirror_mirantis_openstack_xenial_influxdb_distribution: ${_param:apt_mk_version}
-    mirror_mirantis_openstack_xenial_influxdb_components: main
-    mirror_mirantis_openstack_xenial_influxdb_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_influxdb_source: http://mirror.mirantis.com/${_param:apt_mk_version}/influxdb/xenial/
+    mirror_mirantis_openstack_xenial_influxdb_distribution: xenial
+    mirror_mirantis_openstack_xenial_influxdb_components: stable
     mirror_mirantis_openstack_xenial_influxdb_gpgkeys:
-      - A76882D3
+      - 2582E0C5
   aptly:
     server:
       mirror:
@@ -15,9 +14,8 @@
           distribution: ${_param:mirror_mirantis_openstack_xenial_influxdb_distribution}
           components: ${_param:mirror_mirantis_openstack_xenial_influxdb_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_xenial_influxdb_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_xenial_influxdb_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_xenial_influxdb_components}
+            component: main
             distributions:
               - ubuntu-xenial/influxdb/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/kibana/46.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/kibana/46.yml
index 815185b..253c007 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/kibana/46.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/kibana/46.yml
@@ -1,12 +1,11 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_kibana_46_source: http://apt.mirantis.com/xenial/kibana/4.6/
-    mirror_mirantis_openstack_xenial_kibana_46_distribution: ${_param:apt_mk_version}
-    mirror_mirantis_openstack_xenial_kibana_46_components: "kibana-46"
-    mirror_mirantis_openstack_xenial_kibana_46_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_kibana_46_source: http://mirror.mirantis.com/${_param:apt_mk_version}/kibana-4.6/xenial/
+    mirror_mirantis_openstack_xenial_kibana_46_distribution: stable
+    mirror_mirantis_openstack_xenial_kibana_46_components: main
     mirror_mirantis_openstack_xenial_kibana_46_gpgkeys:
-      - A76882D3
+      - D88E42B4
   aptly:
     server:
       mirror:
@@ -15,9 +14,8 @@
           distribution: ${_param:mirror_mirantis_openstack_xenial_kibana_46_distribution}
           components: ${_param:mirror_mirantis_openstack_xenial_kibana_46_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_xenial_kibana_46_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_xenial_kibana_46_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_xenial_kibana_46_components}
+            component: kibana-46
             distributions:
               - ubuntu-xenial/kibana/4.6/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/kibana/5x.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/kibana/5x.yml
index c1b061e..58d26aa 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/kibana/5x.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/kibana/5x.yml
@@ -1,12 +1,11 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_kibana_5x_source: http://apt.mirantis.com/xenial/kibana/5.x/
-    mirror_mirantis_openstack_xenial_kibana_5x_distribution: ${_param:apt_mk_version}
-    mirror_mirantis_openstack_xenial_kibana_5x_components: "kibana-5x"
-    mirror_mirantis_openstack_xenial_kibana_5x_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_kibana_5x_source: http://mirror.mirantis.com/${_param:apt_mk_version}/elasticsearch-5.x/xenial/
+    mirror_mirantis_openstack_xenial_kibana_5x_distribution: stable
+    mirror_mirantis_openstack_xenial_kibana_5x_components: main
     mirror_mirantis_openstack_xenial_kibana_5x_gpgkeys:
-      - A76882D3
+      - D88E42B4
   aptly:
     server:
       mirror:
@@ -15,9 +14,8 @@
           distribution: ${_param:mirror_mirantis_openstack_xenial_kibana_5x_distribution}
           components: ${_param:mirror_mirantis_openstack_xenial_kibana_5x_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_xenial_kibana_5x_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_xenial_kibana_5x_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_xenial_kibana_5x_components}
+            component: kibana-5x
             distributions:
               - ubuntu-xenial/kibana/5.x/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/maas.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/maas.yml
index 3d63b00..acf5a63 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/maas.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/maas.yml
@@ -1,12 +1,11 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_maas_source: http://apt.mirantis.com/xenial/maas/
-    mirror_mirantis_openstack_xenial_maas_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_maas_source: http://mirror.mirantis.com/${_param:apt_mk_version}/maas/xenial/
+    mirror_mirantis_openstack_xenial_maas_distribution: xenial
     mirror_mirantis_openstack_xenial_maas_components: main
-    mirror_mirantis_openstack_xenial_maas_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mirantis_openstack_xenial_maas_gpgkeys:
-      - A76882D3
+      - 684D4A1C
   aptly:
     server:
       mirror:
@@ -15,9 +14,8 @@
           distribution: ${_param:mirror_mirantis_openstack_xenial_maas_distribution}
           components: ${_param:mirror_mirantis_openstack_xenial_maas_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_xenial_maas_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_xenial_maas_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_xenial_maas_components}
+            component: main
             distributions:
               - ubuntu-xenial/maas/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/saltstack/salt-2016-3.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/saltstack/salt-2016-3.yml
index 86a33e6..bd6b440 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/saltstack/salt-2016-3.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/saltstack/salt-2016-3.yml
@@ -1,12 +1,11 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_saltstack_2016_3_source: http://apt.mirantis.com/xenial/salt/2016.3/
-    mirror_mirantis_openstack_xenial_saltstack_2016_3_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_saltstack_2016_3_source: http://mirror.mirantis.com/${_param:apt_mk_version}/saltstack-2016.3/xenial/
+    mirror_mirantis_openstack_xenial_saltstack_2016_3_distribution: xenial
     mirror_mirantis_openstack_xenial_saltstack_2016_3_components: main
-    mirror_mirantis_openstack_xenial_saltstack_2016_3_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mirantis_openstack_xenial_saltstack_2016_3_gpgkeys:
-      - A76882D3
+      - DE57BFBE
   aptly:
     server:
       mirror:
@@ -15,9 +14,8 @@
           distribution: ${_param:mirror_mirantis_openstack_xenial_saltstack_2016_3_distribution}
           components: ${_param:mirror_mirantis_openstack_xenial_saltstack_2016_3_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_xenial_saltstack_2016_3_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_xenial_saltstack_2016_3_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_xenial_saltstack_2016_3_components}
+            component: main
             distributions:
               - ubuntu-xenial/salt/2016.3/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/saltstack/salt-2017-7.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/saltstack/salt-2017-7.yml
index 0478cde..019161b 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/saltstack/salt-2017-7.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/saltstack/salt-2017-7.yml
@@ -1,12 +1,11 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_saltstack_2017_7_source: http://apt.mirantis.com/xenial/salt/2017.7/
-    mirror_mirantis_openstack_xenial_saltstack_2017_7_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_saltstack_2017_7_source: http://mirror.mirantis.com/${_param:apt_mk_version}/saltstack-2017.7/xenial/
+    mirror_mirantis_openstack_xenial_saltstack_2017_7_distribution: xenial
     mirror_mirantis_openstack_xenial_saltstack_2017_7_components: main
-    mirror_mirantis_openstack_xenial_saltstack_2017_7_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mirantis_openstack_xenial_saltstack_2017_7_gpgkeys:
-      - A76882D3
+      - DE57BFBE
   aptly:
     server:
       mirror:
@@ -15,9 +14,8 @@
           distribution: ${_param:mirror_mirantis_openstack_xenial_saltstack_2017_7_distribution}
           components: ${_param:mirror_mirantis_openstack_xenial_saltstack_2017_7_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_xenial_saltstack_2017_7_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_xenial_saltstack_2017_7_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_xenial_saltstack_2017_7_components}
+            component: main
             distributions:
               - ubuntu-xenial/salt/2017.7/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/sensu.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/sensu.yml
index 505ec97..ce42857 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/sensu.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/sensu.yml
@@ -1,12 +1,12 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_sensu_source: http://apt.mirantis.com/xenial/sensu/
-    mirror_mirantis_openstack_xenial_sensu_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_sensu_source: http://mirror.mirantis.com/${_param:apt_mk_version}/sensu/xenial/
+    mirror_mirantis_openstack_xenial_sensu_distribution: sensu
     mirror_mirantis_openstack_xenial_sensu_components: main
     mirror_mirantis_openstack_xenial_sensu_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mirantis_openstack_xenial_sensu_gpgkeys:
-      - A76882D3
+      - EB9C94BB
   aptly:
     server:
       mirror:
@@ -15,9 +15,8 @@
           distribution: ${_param:mirror_mirantis_openstack_xenial_sensu_distribution}
           components: ${_param:mirror_mirantis_openstack_xenial_sensu_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_xenial_sensu_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_xenial_sensu_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_xenial_sensu_components}
+            component: main
             distributions:
               - ubuntu-xenial/sensu/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/barbican/server/cluster.yml b/barbican/server/cluster.yml
index 5b5bc5e..ed45b47 100644
--- a/barbican/server/cluster.yml
+++ b/barbican/server/cluster.yml
@@ -1,3 +1,10 @@
 classes:
 - service.barbican.server.cluster
-- system.haproxy.proxy.listen.openstack.barbican
\ No newline at end of file
+- system.haproxy.proxy.listen.openstack.barbican
+parameters:
+  _param:
+    cluster_internal_protocol: 'http'
+  barbican:
+    server:
+      identity:
+        protocol: ${_param:cluster_internal_protocol}
diff --git a/barbican/server/single.yml b/barbican/server/single.yml
index eb2b30b..aab0b18 100644
--- a/barbican/server/single.yml
+++ b/barbican/server/single.yml
@@ -1,2 +1,9 @@
 classes:
 - service.barbican.server.single
+parameters:
+  _param:
+    internal_protocol: 'http'
+  barbican:
+    server:
+      identity:
+        protocol: ${_param:internal_protocol}
diff --git a/ceilometer/agent/polling/default.yml b/ceilometer/agent/polling/default.yml
new file mode 100644
index 0000000..47b2d1d
--- /dev/null
+++ b/ceilometer/agent/polling/default.yml
@@ -0,0 +1,8 @@
+parameters:
+  ceilometer:
+    agent:
+      polling:
+        sources:
+          default_pollsters:
+            meters: ${_param:ceilometer_agent_default_polling_meters}
+            interval: ${_param:ceilometer_agent_default_polling_interval}
\ No newline at end of file
diff --git a/ceilometer/server/backend/default.yml b/ceilometer/server/backend/default.yml
new file mode 100644
index 0000000..8842e11
--- /dev/null
+++ b/ceilometer/server/backend/default.yml
@@ -0,0 +1,12 @@
+classes:
+- service.ceilometer.server.publisher.gnocchi
+- service.ceilometer.server.publisher.panko
+parameters:
+  # gnocchi and panko are default backends for Ceilometer since Pike
+  # they are incompatible with any legacy database publisher backends
+  ceilometer:
+    server:
+      database: ~
+      publisher:
+        default:
+          enabled: false
diff --git a/ceilometer/server/coordination/redis.yml b/ceilometer/server/coordination/redis.yml
index e013e0f..e8610f3 100644
--- a/ceilometer/server/coordination/redis.yml
+++ b/ceilometer/server/coordination/redis.yml
@@ -1,7 +1,7 @@
 classes:
 - service.redis.server.single
 parameters:
-  aodh:
+  ceilometer:
     server:
       coordination_backend:
         url:  redis://${_param:single_address}:6379/${_param:cluster_node01_address}
diff --git a/cinder/control/cluster.yml b/cinder/control/cluster.yml
index c130e97..1110c63 100644
--- a/cinder/control/cluster.yml
+++ b/cinder/control/cluster.yml
@@ -4,13 +4,15 @@
 - service.keepalived.cluster.single
 - system.haproxy.proxy.listen.openstack.cinder
 parameters:
+  _param:
+    cluster_internal_protocol: 'http'
   linux:
     system:
       package:
         python-pymysql:
           fromrepo: ${_param:openstack_version}
           version: latest
-  cinder:      
+  cinder:
     volume:
       enabled: false
       default_volume_type: ""
@@ -40,9 +42,11 @@
         tenant: service
         user: cinder
         password: ${_param:keystone_cinder_password}
+        protocol: ${_param:cluster_internal_protocol}
       glance:
         host: ${_param:cluster_vip_address}
         port: 9292
+        protocol: ${_param:cluster_internal_protocol}
       message_queue:
         engine: rabbitmq
         members:
diff --git a/cinder/control/single.yml b/cinder/control/single.yml
index 2d7f179..66aea6d 100644
--- a/cinder/control/single.yml
+++ b/cinder/control/single.yml
@@ -1,6 +1,8 @@
 classes:
 - service.cinder.control.single
 parameters:
+  _param:
+    internal_protocol: 'http'
   linux:
     system:
       package:
@@ -15,4 +17,6 @@
       default_volume_type: ''
       database:
         host: ${_param:single_address}
+      identity:
+        protocol: ${_param:internal_protocol}
 
diff --git a/cinder/volume/single.yml b/cinder/volume/single.yml
index de468ba..1b9948d 100644
--- a/cinder/volume/single.yml
+++ b/cinder/volume/single.yml
@@ -1,6 +1,8 @@
 classes:
 - service.cinder.volume.single
 parameters:
+  _param:
+    cluster_internal_protocol: 'http'
   linux:
     system:
       package:
@@ -21,3 +23,4 @@
           - host: ${_param:openstack_message_queue_node03_address}
       identity:
         host: ${_param:openstack_control_address}
+        protocol: ${_param:cluster_internal_protocol}
diff --git a/debmirror/mirror_mirantis_com/ubuntu/xenial.yml b/debmirror/mirror_mirantis_com/ubuntu/xenial.yml
new file mode 100644
index 0000000..a0f8657
--- /dev/null
+++ b/debmirror/mirror_mirantis_com/ubuntu/xenial.yml
@@ -0,0 +1,67 @@
+parameters:
+  _param:
+    apt_mk_version: 'stable'
+    mirror_mirantis_com_ubuntu_xenial_force: False
+  debmirror:
+    client:
+      enabled: true
+      mirrors:
+        mirror_mirantis_com_ubuntu_xenial:
+          force: ${_param:mirror_mirantis_com_ubuntu_xenial_force}
+          lock_target: True
+          extra_flags: [ '--verbose', '--progress', '--nosource', '--no-check-gpg', '--rsync-extra=none' ]
+          method: "rsync"
+          arch: [ 'amd64' ]
+          mirror_host: "mirror.mirantis.com"
+          mirror_root: ":mirror/${_param:apt_mk_version}/ubuntu/"
+          target_dir: "/srv/volumes/aptly/public/ubuntu/"
+          log_file: "/var/log/debmirror/mirror_mirantis_com_ubuntu_xenial.log"
+          dist: [ xenial , xenial-security, xenial-updates ]
+          section: [ main , multiverse, restricted, universe ]
+          exclude_deb_section: [ games, gnome, Xfce, sound, electronics, graphics, hamradio , doc, localization, kde, video,  translations, news, x11,
+                                 multiverse/games, multiverse/gnome, multiverse/Xfce, multiverse/sound, multiverse/electronics, multiverse/graphics,
+                                 multiverse/hamradio , multiverse/doc, multiverse/localization, multiverse/kde, multiverse/video,  multiverse/translations, multiverse/news, multiverse/x11,
+                                 universe/games, universe/gnome, universe/Xfce, universe/sound, universe/electronics, universe/hamradio , universe/doc, universe/localization, universe/kde,
+                                 universe/video,  universe/translations, universe/news, universe/x11, universe/graphics,
+                                 restricted/games, restricted/gnome, restricted/Xfce, restricted/sound, restricted/electronics, restricted/graphics, restricted/hamradio , restricted/doc,
+                                 restricted/localization, restricted/kde, restricted/video,  restricted/translations, restricted/news, restricted/x11 ]
+          filter:
+            1: "--exclude='android*'"
+            2: "--exclude='/firefox*'"
+            3: "--exclude='/chromium-browser*'"
+            4: "--exclude='/ceph*'"
+            5: "--exclude='/*-wallpapers*'"
+            6: "--exclude='/language-pack-(?!en)'"
+            7: "--exclude='thunderbird*'"
+            8: "--exclude='libreoffice*'"
+            9: "--exclude='openoffice*'"
+            10: "--exclude='live-image-*-desktop*'"
+            11: "--exclude='lubuntu-*'"
+            12: "--exclude='kubuntu-*'"
+            13: "--exclude='cinnamon-*'"
+            14: "--exclude='mate-*'"
+            15: "--exclude='desktop-*'"
+            16: "--exclude='flashplugin*'"
+            17: "--exclude='gnome*'"
+            18: "--exclude='/unity*'"
+            20: "--exclude='openjdk-*-(dbg|demo|source).*'"
+            22: "--exclude='(kde|ubuntu|xfce4|sabily).*artwork*'"
+            23: "--exclude='ubuntu-touch*'"
+            24: "--exclude='remmina*'"
+            25: "--exclude='/libbluetooth*'"
+            26: "--exclude='/libandroid*'"
+            27: "--exclude='/banshee*'"
+            27: "--exclude='/*(.xorg)*joystick'"
+            28: "--exclude='/xserver-xorg-video(.*vivid|.*wily|.*utopic)'"
+            30: "--exclude='/*universe.*bluez.*'"
+            92: "--exclude='/(llvm-toolchain|address-book|amule|openclipart|rhythmbox|gimp|sonic-visualiser|games|bsdgame|gazebo|arduino|webkitgtk|widelands|wxwidget|warzone|wings3d).*'"
+            93: "--exclude='/(asterisk|abiword|webbrowser-app|imagemagick|.*clamav|wireshar|vlc|.*transmission|tryton-modules|trilinos|tomboy|wine1|wine-dev|compiz|mythtv|ubuntustudio).*'"
+            94: "--exclude='/(ceilometer|nova).*'"
+            95: "--exclude='/gcc-.*-cross.*'"
+            96: "--exclude='/(nvidia).*'"
+            97: "--exclude='linux-*-(.*azure|.*aws|gke|.*azure-edge|.*linux-oem)'"
+            98: "--exclude='/.*(arm64|powerpc|s390x|armel|armhf|sparc64|mips64|ppc64el|mipsn32)(?!.*amd64)'"
+            99: "--exclude='/*universe.*(-armel-|-arm-)(?!.*amd64)'"
+            100: "--include='/main(.*)manpages'"
+            101: "--include='/main(.*)python-(.*)doc'"
+            102: "--include='/main(.*)python-(.*)network'"
diff --git a/designate/server/cluster.yml b/designate/server/cluster.yml
index 1030861..afbb7df 100644
--- a/designate/server/cluster.yml
+++ b/designate/server/cluster.yml
@@ -6,6 +6,7 @@
 parameters:
   _param:
     designate_admin_api_enabled: false
+    cluster_internal_protocol: 'http'
   linux:
     system:
       package:
@@ -41,6 +42,7 @@
         tenant: service
         user: designate
         password: ${_param:keystone_designate_password}
+        protocol: ${_param:cluster_internal_protocol}
       bind:
         api:
           address: ${_param:single_address}
diff --git a/designate/server/single.yml b/designate/server/single.yml
index 765dcf8..3fdd448 100644
--- a/designate/server/single.yml
+++ b/designate/server/single.yml
@@ -3,6 +3,7 @@
 parameters:
   _param:
     designate_admin_api_enabled: false
+    internal_protocol: 'http'
   linux:
     system:
       package:
@@ -38,6 +39,7 @@
         tenant: service
         user: designate
         password: ${_param:keystone_designate_password}
+        protocol: ${_param:internal_protocol}
       message_queue:
         engine: rabbitmq
         host: ${_param:cluster_vip_address}
diff --git a/devops_portal/service/stacklight-prometheus.yml b/devops_portal/service/stacklight-prometheus.yml
index 119c13f..9b5a74f 100644
--- a/devops_portal/service/stacklight-prometheus.yml
+++ b/devops_portal/service/stacklight-prometheus.yml
@@ -6,7 +6,7 @@
     config:
       service:
         stacklight-prometheus:
-          configure_proxy: false
+          configure_proxy: true
           enabled: true
           endpoint:
             address: ${_param:grafana_prometheus_address}
diff --git a/docker/swarm/stack/aptly.yml b/docker/swarm/stack/aptly.yml
index 36c719b..89ec5ec 100644
--- a/docker/swarm/stack/aptly.yml
+++ b/docker/swarm/stack/aptly.yml
@@ -2,6 +2,7 @@
 - system.docker
 parameters:
   _param:
+    docker_stack_aptly_public_replicas: 3
     docker_image_aptly:
       api: tcpcloud/aptly-api
       public: tcpcloud/aptly-public
@@ -25,7 +26,7 @@
                 - /srv/volumes/aptly:/var/lib/aptly
             public:
               deploy:
-                replicas: 3
+                replicas: ${_param:docker_stack_aptly_public_replicas}
                 restart_policy:
                   condition: any
               image: ${_param:docker_image_aptly:public}
diff --git a/docker/swarm/stack/docker.yml b/docker/swarm/stack/docker.yml
index 7f8c153..f861718 100644
--- a/docker/swarm/stack/docker.yml
+++ b/docker/swarm/stack/docker.yml
@@ -2,6 +2,7 @@
   _param:
     docker_image_registry: registry:2
     docker_image_visualizer: dockersamples/visualizer
+    docker_stack_registry_replicas: 3
   docker:
     client:
       stack:
@@ -11,7 +12,7 @@
               environment:
                 REGISTRY_HTTP_SECRET: ${_param:docker_registry_http_secret}
               deploy:
-                replicas: 3
+                replicas: ${_param:docker_stack_registry_replicas}
                 restart_policy:
                   condition: any
               image: ${_param:docker_image_registry}
diff --git a/docker/swarm/stack/monitoring/alertmanager.yml b/docker/swarm/stack/monitoring/alertmanager.yml
new file mode 100644
index 0000000..662baf4
--- /dev/null
+++ b/docker/swarm/stack/monitoring/alertmanager.yml
@@ -0,0 +1,37 @@
+classes:
+- system.prometheus.alertmanager.container
+parameters:
+  docker:
+    client:
+      stack:
+        monitoring:
+          network:
+            monitoring:
+              driver: overlay
+              driver_opts:
+                encrypted: 1
+          service:
+            alertmanager:
+              networks:
+                - monitoring
+              deploy:
+                replicas: 2
+                labels:
+                  com.mirantis.monitoring: "alertmanager"
+                restart_policy:
+                  condition: any
+              labels:
+                com.mirantis.monitoring: "alertmanager"
+              image: ${_param:docker_image_alertmanager}
+              ports:
+                - 15011:${prometheus:alertmanager:bind:port}
+              volumes:
+                - ${prometheus:alertmanager:dir:config}:${_param:prometheus_alertmanager_config_directory}
+                - ${prometheus:alertmanager:dir:data}:${_param:prometheus_alertmanager_data_directory}
+              environment:
+                ALERTMANAGER_CONFIG_DIR: ${_param:prometheus_alertmanager_config_directory}
+                ALERTMANAGER_DATA_DIR: ${_param:prometheus_alertmanager_data_directory}
+                ALERTMANAGER_BIND_PORT: ${prometheus:alertmanager:bind:port}
+                ALERTMANAGER_BIND_ADDRESS: ${prometheus:alertmanager:bind:address}
+                ALERTMANAGER_DISCOVERY_DOMAIN: 'monitoring_alertmanager'
+                ALERTMANAGER_EXTERNAL_URL: "http://${_param:stacklight_monitor_address}:15011"
diff --git a/docker/swarm/stack/monitoring/init.yml b/docker/swarm/stack/monitoring/init.yml
index 57d7a5a..134efdc 100644
--- a/docker/swarm/stack/monitoring/init.yml
+++ b/docker/swarm/stack/monitoring/init.yml
@@ -1,131 +1,8 @@
 classes:
-- system.prometheus.alertmanager.container
-- system.prometheus.pushgateway.container
-- system.prometheus.remote_storage_adapter.container
-- system.prometheus.server.container
+- system.docker.swarm.stack.monitoring.prometheus
+- system.docker.swarm.stack.monitoring.prometheus.replicated
+- system.docker.swarm.stack.monitoring.alertmanager
+- system.docker.swarm.stack.monitoring.prometheus_relay
+- system.docker.swarm.stack.monitoring.pushgateway
 - system.docker.swarm.stack.monitoring.remote_agent
-parameters:
-  _param:
-    # Backward compatibility for Prometheus 1.7
-    prometheus_storage_local_engine: "persisted"
-    prometheus_storage_heap_size: 3221225472
-    prometheus_storage_num_fingerprint_mutexes: 4096
-
-  docker:
-    client:
-      stack:
-        monitoring:
-          network:
-            monitoring:
-              driver: overlay
-              driver_opts:
-                encrypted: 1
-          service:
-            relay:
-              networks:
-                - monitoring
-              deploy:
-                replicas: 2
-                labels:
-                  com.mirantis.monitoring: "relay"
-                restart_policy:
-                  condition: any
-              labels:
-                com.mirantis.monitoring: "relay"
-              image: ${_param:docker_image_prometheus_relay}
-              ports:
-                - 15016:8080
-              environment:
-                PROMETHEUS_RELAY_DNS: 'tasks.monitoring_server'
-            remote_storage_adapter:
-              networks:
-                - monitoring
-              deploy:
-                replicas: 1
-                labels:
-                  com.mirantis.monitoring: "remote_storage_adapter"
-                restart_policy:
-                  condition: any
-              labels:
-                com.mirantis.monitoring: "remote_storage_adapter"
-              image: ${_param:docker_image_remote_storage_adapter}
-              ports:
-                - 15015:${prometheus:remote_storage_adapter:bind:port}
-              environment:
-                RSA_BIND_PORT: ${prometheus:remote_storage_adapter:bind:port}
-                RSA_BIND_ADDRESS: ${prometheus:remote_storage_adapter:bind:address}
-                RSA_INFLUXDB_RETENTION_POLICY: 'lma'
-                RSA_INFLUXDB_URL: ${_param:prometheus_influxdb_url}
-                RSA_INFLUXDB_DB: ${_param:prometheus_influxdb_db}
-                RSA_INFLUXDB_USERNAME: ${_param:prometheus_influxdb_username}
-                RSA_INFLUXDB_PASSWORD: ${_param:prometheus_influxdb_password}
-            alertmanager:
-              networks:
-                - monitoring
-              deploy:
-                replicas: 2
-                labels:
-                  com.mirantis.monitoring: "alertmanager"
-                restart_policy:
-                  condition: any
-              labels:
-                com.mirantis.monitoring: "alertmanager"
-              image: ${_param:docker_image_alertmanager}
-              ports:
-                - 15011:${prometheus:alertmanager:bind:port}
-              volumes:
-                - ${prometheus:alertmanager:dir:config}:${_param:prometheus_alertmanager_config_directory}
-                - ${prometheus:alertmanager:dir:data}:${_param:prometheus_alertmanager_data_directory}
-              environment:
-                ALERTMANAGER_CONFIG_DIR: ${_param:prometheus_alertmanager_config_directory}
-                ALERTMANAGER_DATA_DIR: ${_param:prometheus_alertmanager_data_directory}
-                ALERTMANAGER_BIND_PORT: ${prometheus:alertmanager:bind:port}
-                ALERTMANAGER_BIND_ADDRESS: ${prometheus:alertmanager:bind:address}
-                ALERTMANAGER_DISCOVERY_DOMAIN: 'monitoring_alertmanager'
-                ALERTMANAGER_EXTERNAL_URL: "http://${_param:stacklight_monitor_address}:15011"
-            pushgateway:
-              networks:
-                - monitoring
-              deploy:
-                replicas: 2
-                labels:
-                  com.mirantis.monitoring: "pushgateway"
-                restart_policy:
-                  condition: any
-              environment:
-                PUSHGATEWAY_BIND_PORT: ${prometheus:pushgateway:bind:port}
-                PUSHGATEWAY_BIND_ADDRESS: ${prometheus:pushgateway:bind:address}
-              labels:
-                com.mirantis.monitoring: "pushgateway"
-              image: ${_param:docker_image_pushgateway}
-              ports:
-                - 15012:${prometheus:pushgateway:bind:port}
-            server:
-              networks:
-                - monitoring
-              deploy:
-                replicas: 2
-                labels:
-                  com.mirantis.monitoring: "prometheus"
-                restart_policy:
-                  condition: any
-              labels:
-                com.mirantis.monitoring: "prometheus"
-              image: ${_param:docker_image_prometheus}
-              ports:
-                - 15010:${prometheus:server:bind:port}
-              volumes:
-                - ${prometheus:server:dir:config}:${_param:prometheus_server_config_directory}
-                - ${prometheus:server:dir:data}:${_param:prometheus_server_data_directory}
-              environment:
-                PROMETHEUS_CONFIG_DIR: ${_param:prometheus_server_config_directory}
-                PROMETHEUS_DATA_DIR: ${_param:prometheus_server_data_directory}
-                PROMETHEUS_BIND_PORT: ${prometheus:server:bind:port}
-                PROMETHEUS_BIND_ADDRESS: ${prometheus:server:bind:address}
-                PROMETHEUS_STORAGE_LOCAL_RETENTION: ${prometheus:server:storage:local:retention}
-                PROMETHEUS_EXTERNAL_URL: "http://${_param:stacklight_monitor_address}:15010"
-                # Backward compatibility for Prometheus 1.7
-                PROMETHEUS_STORAGE_LOCAL_ENGINE: ${_param:prometheus_storage_local_engine}
-                PROMETHEUS_STORAGE_LOCAL_TARGET_HEAP_SIZE: ${_param:prometheus_storage_heap_size}
-                PROMETHEUS_STORAGE_LOCAL_NUM_FINGERPRINT_MUTEXES: ${_param:prometheus_storage_num_fingerprint_mutexes}
- 
\ No newline at end of file
+- system.docker.swarm.stack.monitoring.remote_storage_adapter
diff --git a/docker/swarm/stack/monitoring/prometheus/global.yml b/docker/swarm/stack/monitoring/prometheus/global.yml
new file mode 100644
index 0000000..d86f456
--- /dev/null
+++ b/docker/swarm/stack/monitoring/prometheus/global.yml
@@ -0,0 +1,9 @@
+parameters:
+  docker:
+    client:
+      stack:
+        monitoring:
+          service:
+            server:
+              deploy:
+                mode: global
diff --git a/docker/swarm/stack/monitoring/prometheus/init.yml b/docker/swarm/stack/monitoring/prometheus/init.yml
new file mode 100644
index 0000000..2d455f7
--- /dev/null
+++ b/docker/swarm/stack/monitoring/prometheus/init.yml
@@ -0,0 +1,45 @@
+classes:
+- system.prometheus.server.container
+parameters:
+  _param:
+    # Backward compatibility for Prometheus 1.7
+    prometheus_storage_local_engine: "persisted"
+    prometheus_storage_heap_size: 3221225472
+    prometheus_storage_num_fingerprint_mutexes: 4096
+  docker:
+    client:
+      stack:
+        monitoring:
+          network:
+            monitoring:
+              driver: overlay
+              driver_opts:
+                encrypted: 1
+          service:
+            server:
+              networks:
+                - monitoring
+              deploy:
+                labels:
+                  com.mirantis.monitoring: "prometheus"
+                restart_policy:
+                  condition: any
+              labels:
+                com.mirantis.monitoring: "prometheus"
+              image: ${_param:docker_image_prometheus}
+              ports:
+                - 15010:${prometheus:server:bind:port}
+              volumes:
+                - ${prometheus:server:dir:config}:${_param:prometheus_server_config_directory}
+                - ${prometheus:server:dir:data}:${_param:prometheus_server_data_directory}
+              environment:
+                PROMETHEUS_CONFIG_DIR: ${_param:prometheus_server_config_directory}
+                PROMETHEUS_DATA_DIR: ${_param:prometheus_server_data_directory}
+                PROMETHEUS_BIND_PORT: ${prometheus:server:bind:port}
+                PROMETHEUS_BIND_ADDRESS: ${prometheus:server:bind:address}
+                PROMETHEUS_STORAGE_LOCAL_RETENTION: ${prometheus:server:storage:local:retention}
+                PROMETHEUS_EXTERNAL_URL: "http://${_param:stacklight_monitor_address}:15010"
+                # Backward compatibility for Prometheus 1.7
+                PROMETHEUS_STORAGE_LOCAL_ENGINE: ${_param:prometheus_storage_local_engine}
+                PROMETHEUS_STORAGE_LOCAL_TARGET_HEAP_SIZE: ${_param:prometheus_storage_heap_size}
+                PROMETHEUS_STORAGE_LOCAL_NUM_FINGERPRINT_MUTEXES: ${_param:prometheus_storage_num_fingerprint_mutexes}
diff --git a/docker/swarm/stack/monitoring/prometheus/replicated.yml b/docker/swarm/stack/monitoring/prometheus/replicated.yml
new file mode 100644
index 0000000..c201172
--- /dev/null
+++ b/docker/swarm/stack/monitoring/prometheus/replicated.yml
@@ -0,0 +1,9 @@
+parameters:
+  docker:
+    client:
+      stack:
+        monitoring:
+          service:
+            server:
+              deploy:
+                replicas: 2
diff --git a/docker/swarm/stack/monitoring/prometheus_global.yml b/docker/swarm/stack/monitoring/prometheus_global.yml
index 9745638..6d8e4ba 100644
--- a/docker/swarm/stack/monitoring/prometheus_global.yml
+++ b/docker/swarm/stack/monitoring/prometheus_global.yml
@@ -1,131 +1,8 @@
 classes:
-- system.prometheus.alertmanager.container
-- system.prometheus.pushgateway.container
-- system.prometheus.remote_storage_adapter.container
-- system.prometheus.server.container
+- system.docker.swarm.stack.monitoring.prometheus
+- system.docker.swarm.stack.monitoring.prometheus.global
+- system.docker.swarm.stack.monitoring.alertmanager
+- system.docker.swarm.stack.monitoring.prometheus_relay
+- system.docker.swarm.stack.monitoring.pushgateway
 - system.docker.swarm.stack.monitoring.remote_agent
-parameters:
-  _param:
-    # Backward compatibility for Prometheus 1.7
-    prometheus_storage_local_engine: "persisted"
-    prometheus_storage_heap_size: 3221225472
-    prometheus_storage_num_fingerprint_mutexes: 4096
-
-  docker:
-    client:
-      stack:
-        monitoring:
-          network:
-            monitoring:
-              driver: overlay
-              driver_opts:
-                encrypted: 1
-          service:
-            relay:
-              networks:
-                - monitoring
-              deploy:
-                replicas: 2
-                labels:
-                  com.mirantis.monitoring: "relay"
-                restart_policy:
-                  condition: any
-              labels:
-                com.mirantis.monitoring: "relay"
-              image: ${_param:docker_image_prometheus_relay}
-              ports:
-                - 15016:8080
-              environment:
-                PROMETHEUS_RELAY_DNS: 'tasks.monitoring_server'
-            remote_storage_adapter:
-              networks:
-                - monitoring
-              deploy:
-                replicas: 1
-                labels:
-                  com.mirantis.monitoring: "remote_storage_adapter"
-                restart_policy:
-                  condition: any
-              labels:
-                com.mirantis.monitoring: "remote_storage_adapter"
-              image: ${_param:docker_image_remote_storage_adapter}
-              ports:
-                - 15015:${prometheus:remote_storage_adapter:bind:port}
-              environment:
-                RSA_BIND_PORT: ${prometheus:remote_storage_adapter:bind:port}
-                RSA_BIND_ADDRESS: ${prometheus:remote_storage_adapter:bind:address}
-                RSA_INFLUXDB_RETENTION_POLICY: 'lma'
-                RSA_INFLUXDB_URL: ${_param:prometheus_influxdb_url}
-                RSA_INFLUXDB_DB: ${_param:prometheus_influxdb_db}
-                RSA_INFLUXDB_USERNAME: ${_param:prometheus_influxdb_username}
-                RSA_INFLUXDB_PASSWORD: ${_param:prometheus_influxdb_password}
-            alertmanager:
-              networks:
-                - monitoring
-              deploy:
-                replicas: 2
-                labels:
-                  com.mirantis.monitoring: "alertmanager"
-                restart_policy:
-                  condition: any
-              labels:
-                com.mirantis.monitoring: "alertmanager"
-              image: ${_param:docker_image_alertmanager}
-              ports:
-                - 15011:${prometheus:alertmanager:bind:port}
-              volumes:
-                - ${prometheus:alertmanager:dir:config}:${_param:prometheus_alertmanager_config_directory}
-                - ${prometheus:alertmanager:dir:data}:${_param:prometheus_alertmanager_data_directory}
-              environment:
-                ALERTMANAGER_CONFIG_DIR: ${_param:prometheus_alertmanager_config_directory}
-                ALERTMANAGER_DATA_DIR: ${_param:prometheus_alertmanager_data_directory}
-                ALERTMANAGER_BIND_PORT: ${prometheus:alertmanager:bind:port}
-                ALERTMANAGER_BIND_ADDRESS: ${prometheus:alertmanager:bind:address}
-                ALERTMANAGER_DISCOVERY_DOMAIN: 'monitoring_alertmanager'
-                ALERTMANAGER_EXTERNAL_URL: "http://${_param:stacklight_monitor_address}:15011"
-            pushgateway:
-              networks:
-                - monitoring
-              deploy:
-                replicas: 2
-                labels:
-                  com.mirantis.monitoring: "pushgateway"
-                restart_policy:
-                  condition: any
-              environment:
-                PUSHGATEWAY_BIND_PORT: ${prometheus:pushgateway:bind:port}
-                PUSHGATEWAY_BIND_ADDRESS: ${prometheus:pushgateway:bind:address}
-              labels:
-                com.mirantis.monitoring: "pushgateway"
-              image: ${_param:docker_image_pushgateway}
-              ports:
-                - 15012:${prometheus:pushgateway:bind:port}
-            server:
-              networks:
-                - monitoring
-              deploy:
-                mode: global
-                labels:
-                  com.mirantis.monitoring: "prometheus"
-                restart_policy:
-                  condition: any
-              labels:
-                com.mirantis.monitoring: "prometheus"
-              image: ${_param:docker_image_prometheus}
-              ports:
-                - 15010:${prometheus:server:bind:port}
-              volumes:
-                - ${prometheus:server:dir:config}:${_param:prometheus_server_config_directory}
-                - ${prometheus:server:dir:data}:${_param:prometheus_server_data_directory}
-              environment:
-                PROMETHEUS_CONFIG_DIR: ${_param:prometheus_server_config_directory}
-                PROMETHEUS_DATA_DIR: ${_param:prometheus_server_data_directory}
-                PROMETHEUS_BIND_PORT: ${prometheus:server:bind:port}
-                PROMETHEUS_BIND_ADDRESS: ${prometheus:server:bind:address}
-                PROMETHEUS_STORAGE_LOCAL_RETENTION: ${prometheus:server:storage:local:retention}
-                PROMETHEUS_EXTERNAL_URL: "http://${_param:stacklight_monitor_address}:15010"
-                # Backward compatibility for Prometheus 1.7
-                PROMETHEUS_STORAGE_LOCAL_ENGINE: ${_param:prometheus_storage_local_engine}
-                PROMETHEUS_STORAGE_LOCAL_TARGET_HEAP_SIZE: ${_param:prometheus_storage_heap_size}
-                PROMETHEUS_STORAGE_LOCAL_NUM_FINGERPRINT_MUTEXES: ${_param:prometheus_storage_num_fingerprint_mutexes}
-                PROMETHEUS_USE_STATIC_DATADIR: "true"
+- system.docker.swarm.stack.monitoring.remote_storage_adapter
diff --git a/docker/swarm/stack/monitoring/prometheus_relay.yml b/docker/swarm/stack/monitoring/prometheus_relay.yml
new file mode 100644
index 0000000..315ba1d
--- /dev/null
+++ b/docker/swarm/stack/monitoring/prometheus_relay.yml
@@ -0,0 +1,27 @@
+parameters:
+  docker:
+    client:
+      stack:
+        monitoring:
+          network:
+            monitoring:
+              driver: overlay
+              driver_opts:
+                encrypted: 1
+          service:
+            relay:
+              networks:
+                - monitoring
+              deploy:
+                replicas: 2
+                labels:
+                  com.mirantis.monitoring: "relay"
+                restart_policy:
+                  condition: any
+              labels:
+                com.mirantis.monitoring: "relay"
+              image: ${_param:docker_image_prometheus_relay}
+              ports:
+                - 15016:8080
+              environment:
+                PROMETHEUS_RELAY_DNS: 'tasks.monitoring_server'
diff --git a/docker/swarm/stack/monitoring/pushgateway.yml b/docker/swarm/stack/monitoring/pushgateway.yml
new file mode 100644
index 0000000..af108a6
--- /dev/null
+++ b/docker/swarm/stack/monitoring/pushgateway.yml
@@ -0,0 +1,30 @@
+classes:
+- system.prometheus.pushgateway.container
+parameters:
+  docker:
+    client:
+      stack:
+        monitoring:
+          network:
+            monitoring:
+              driver: overlay
+              driver_opts:
+                encrypted: 1
+          service:
+            pushgateway:
+              networks:
+                - monitoring
+              deploy:
+                replicas: 2
+                labels:
+                  com.mirantis.monitoring: "pushgateway"
+                restart_policy:
+                  condition: any
+              environment:
+                PUSHGATEWAY_BIND_PORT: ${prometheus:pushgateway:bind:port}
+                PUSHGATEWAY_BIND_ADDRESS: ${prometheus:pushgateway:bind:address}
+              labels:
+                com.mirantis.monitoring: "pushgateway"
+              image: ${_param:docker_image_pushgateway}
+              ports:
+                - 15012:${prometheus:pushgateway:bind:port}
diff --git a/docker/swarm/stack/monitoring/remote_storage_adapter.yml b/docker/swarm/stack/monitoring/remote_storage_adapter.yml
new file mode 100644
index 0000000..04ffb90
--- /dev/null
+++ b/docker/swarm/stack/monitoring/remote_storage_adapter.yml
@@ -0,0 +1,35 @@
+classes:
+- system.prometheus.remote_storage_adapter.container
+parameters:
+  docker:
+    client:
+      stack:
+        monitoring:
+          network:
+            monitoring:
+              driver: overlay
+              driver_opts:
+                encrypted: 1
+          service:
+            remote_storage_adapter:
+              networks:
+                - monitoring
+              deploy:
+                replicas: 1
+                labels:
+                  com.mirantis.monitoring: "remote_storage_adapter"
+                restart_policy:
+                  condition: any
+              labels:
+                com.mirantis.monitoring: "remote_storage_adapter"
+              image: ${_param:docker_image_remote_storage_adapter}
+              ports:
+                - 15015:${prometheus:remote_storage_adapter:bind:port}
+              environment:
+                RSA_BIND_PORT: ${prometheus:remote_storage_adapter:bind:port}
+                RSA_BIND_ADDRESS: ${prometheus:remote_storage_adapter:bind:address}
+                RSA_INFLUXDB_RETENTION_POLICY: 'lma'
+                RSA_INFLUXDB_URL: ${_param:prometheus_influxdb_url}
+                RSA_INFLUXDB_DB: ${_param:prometheus_influxdb_db}
+                RSA_INFLUXDB_USERNAME: ${_param:prometheus_influxdb_username}
+                RSA_INFLUXDB_PASSWORD: ${_param:prometheus_influxdb_password}
diff --git a/docker/swarm/stack/pushkin.yml b/docker/swarm/stack/pushkin.yml
index 22a921d..55f1fd6 100644
--- a/docker/swarm/stack/pushkin.yml
+++ b/docker/swarm/stack/pushkin.yml
@@ -11,6 +11,7 @@
     pushkin_db_host: ${_param:haproxy_postgresql_bind_host}
     pushkin_smtp_host: smtp.gmail.com
     pushkin_smtp_port: 587
+    pushkin_smtp_use_tls: true
     webhook_from: your_sender@mail.com
     pushkin_email_sender_password: your_sender_password
     webhook_recipients: "recepient1@mail.com,recepient2@mail.com"
@@ -38,6 +39,7 @@
             EMAIL_SENDER_PASSWORD: ${_param:pushkin_email_sender_password}
             SMTP_HOST: ${_param:pushkin_smtp_host}
             SMTP_PORT: ${_param:pushkin_smtp_port}
+            SMTP_USE_TLS: ${_param:pushkin_smtp_use_tls}
             WEBHOOK_RECIPIENTS: ${_param:webhook_recipients}
             WEBHOOK_LOGIN_ID: ${_param:webhook_login_id}
             WEBHOOK_APPLICATION_ID: ${_param:webhook_application_id}
diff --git a/dogtag/server/cluster.yml b/dogtag/server/cluster.yml
new file mode 100644
index 0000000..5ef3f4c
--- /dev/null
+++ b/dogtag/server/cluster.yml
@@ -0,0 +1,3 @@
+classes:
+- service.dogtag.server.cluster
+- system.haproxy.proxy.listen.dogtag
diff --git a/fluentd/label/default_output/elasticsearch.yml b/fluentd/label/default_output/elasticsearch.yml
index 3c26d15..5960c49 100644
--- a/fluentd/label/default_output/elasticsearch.yml
+++ b/fluentd/label/default_output/elasticsearch.yml
@@ -9,6 +9,32 @@
       config:
         label:
           default_output:
+            filter:
+              drop_nested_timestamp_and_sensitive_data:
+                tag: "openstack.**"
+                type: record_transformer
+                enable_ruby: true
+                remove_keys: '["_dummy_1", "_dummy_2", "_dummy_3"]'
+                record:
+                  - name: _dummy_1
+                    value: ${fluentd:dollar}{if record.has_key?("context"); record["context"].delete("timestamp") ; end; nil }
+                  - name: _dummy_2
+                    value: ${fluentd:dollar}{if record.has_key?("context"); record["context"].delete("auth_token"); end; nil}
+                  - name: _dummy_3
+                    value: ${fluentd:dollar}{if record.has_key?("context"); record["context"].delete("auth_token_info"); end; nil}
+              drop_hostname_field:
+                tag: "openstack.**"
+                type: record_transformer
+                enable_ruby: true
+                remove_keys: '["hostname"]'
+              change_pid_field_value:
+                tag: "haproxy.**"
+                type: record_transformer
+                enable_ruby: true
+                record:
+                  - name: Pid
+                    value: ${fluentd:dollar}{record["pid"]}
+                remove_keys: '["pid"]'
             match:
               elasticsearch_output:
                 host: ${_param:fluentd_elasticsearch_host}
diff --git a/galera/server/database/gnocchi.yml b/galera/server/database/gnocchi.yml
new file mode 100644
index 0000000..1ee36da
--- /dev/null
+++ b/galera/server/database/gnocchi.yml
@@ -0,0 +1,19 @@
+parameters:
+  _param:
+    mysql_gnocchi_ssl_option: []
+  mysql:
+    server:
+      database:
+        gnocchi:
+          encoding: utf8
+          users:
+          - name: gnocchi
+            password: ${_param:mysql_gnocchi_password}
+            host: '%'
+            rights: all
+            ssl_option: ${_param:mysql_gnocchi_ssl_option}
+          - name: gnocchi
+            password: ${_param:mysql_gnocchi_password}
+            host: ${_param:cluster_local_address}
+            rights: all
+            ssl_option: ${_param:mysql_gnocchi_ssl_option}
diff --git a/galera/server/database/manila.yml b/galera/server/database/manila.yml
new file mode 100644
index 0000000..3339b83
--- /dev/null
+++ b/galera/server/database/manila.yml
@@ -0,0 +1,15 @@
+parameters:
+  mysql:
+    server:
+      database:
+        manila:
+          encoding: utf8
+          users:
+          - name: manila
+            password: ${_param:mysql_manila_password}
+            host: '%'
+            rights: all
+          - name: manila
+            password: ${_param:mysql_manila_password}
+            host: ${_param:cluster_local_address}
+            rights: all
diff --git a/glusterfs/client/volume/backup.yml b/glusterfs/client/volume/backup.yml
new file mode 100644
index 0000000..eded1ac
--- /dev/null
+++ b/glusterfs/client/volume/backup.yml
@@ -0,0 +1,13 @@
+parameters:
+  _param:
+    backup_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
+  glusterfs:
+    client:
+      volumes:
+        backup:
+          path: /srv/volumes/backup
+          server: ${_param:backup_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/gnocchi.yml b/glusterfs/client/volume/gnocchi.yml
new file mode 100644
index 0000000..f6c3351
--- /dev/null
+++ b/glusterfs/client/volume/gnocchi.yml
@@ -0,0 +1,32 @@
+parameters:
+  _param:
+    gnocchi_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
+  glusterfs:
+    client:
+      volumes:
+        gnocchi:
+          path: /var/lib/gnocchi/
+          server: ${_param:gnocchi_glusterfs_service_host}
+          user: gnocchi
+          group: gnocchi
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
+  linux:
+    system:
+      user:
+        gnocchi:
+          enabled: true
+          name: gnocchi
+          uid: 305
+          gid: 305
+          home: /var/lib/gnocchi
+          shell: /bin/false
+          system: True
+      group:
+        gnocchi:
+          enabled: true
+          name: gnocchi
+          gid: 305
+          system: True
diff --git a/glusterfs/server/volume/backup.yml b/glusterfs/server/volume/backup.yml
new file mode 100644
index 0000000..22e59e2
--- /dev/null
+++ b/glusterfs/server/volume/backup.yml
@@ -0,0 +1,18 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        backup:
+          storage: /srv/glusterfs/backup
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/backup
+            - ${_param:cluster_node02_address}:/srv/glusterfs/backup
+            - ${_param:cluster_node03_address}:/srv/glusterfs/backup
+          options:
+            cluster.readdir-optimize: On
+            nfs.disable: On
+            network.remote-dio: On
+            diagnostics.client-log-level: WARNING
+            diagnostics.brick-log-level: WARNING
+            cluster.favorite-child-policy: mtime
diff --git a/glusterfs/server/volume/gnocchi.yml b/glusterfs/server/volume/gnocchi.yml
new file mode 100644
index 0000000..f8f5b6a
--- /dev/null
+++ b/glusterfs/server/volume/gnocchi.yml
@@ -0,0 +1,18 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        gnocchi:
+          storage: /srv/glusterfs/gnocchi
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/gnocchi
+            - ${_param:cluster_node02_address}:/srv/glusterfs/gnocchi
+            - ${_param:cluster_node03_address}:/srv/glusterfs/gnocchi
+          options:
+            cluster.readdir-optimize: On
+            nfs.disable: On
+            network.remote-dio: On
+            diagnostics.client-log-level: WARNING
+            diagnostics.brick-log-level: WARNING
+            cluster.favorite-child-policy: mtime
diff --git a/gnocchi/common/coordination/redis.yml b/gnocchi/common/coordination/redis.yml
new file mode 100644
index 0000000..673d9bd
--- /dev/null
+++ b/gnocchi/common/coordination/redis.yml
@@ -0,0 +1,7 @@
+parameters:
+  _param:
+    gnocchi_coordination_url: redis://${_param:single_address}:6379
+  gnocchi:
+    common:
+      coordination_backend:
+        url: ${_param:gnocchi_coordination_url}
diff --git a/gnocchi/common/storage/file.yml b/gnocchi/common/storage/file.yml
new file mode 100644
index 0000000..c035723
--- /dev/null
+++ b/gnocchi/common/storage/file.yml
@@ -0,0 +1,9 @@
+parameters:
+  _param:
+    gnocchi_storage_file_basepath: /var/lib/gnocchi
+    gnocchi_storage_driver: file
+  gnocchi:
+    common:
+      storage:
+        driver: ${_param:gnocchi_storage_driver}
+        file_basepath: ${_param:gnocchi_storage_file_basepath}
diff --git a/gnocchi/common/storage/incoming/file.yml b/gnocchi/common/storage/incoming/file.yml
new file mode 100644
index 0000000..52d57f7
--- /dev/null
+++ b/gnocchi/common/storage/incoming/file.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    gnocchi_storage_incoming_file_basepath: /var/lib/gnocchi
+    gnocchi_storage_incoming_driver: file
+  gnocchi:
+    common:
+      storage:
+        incoming:
+          driver: ${_param:gnocchi_storage_incoming_driver}
+          file_basepath: ${_param:gnocchi_storage_incoming_file_basepath}
diff --git a/gnocchi/common/storage/incoming/redis.yml b/gnocchi/common/storage/incoming/redis.yml
new file mode 100644
index 0000000..d0f04d7
--- /dev/null
+++ b/gnocchi/common/storage/incoming/redis.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    gnocchi_storage_incoming_redis_url: redis://${_param:single_address}:6379
+    gnocchi_storage_incoming_driver: redis
+  gnocchi:
+    common:
+      storage:
+        incoming:
+          driver: ${_param:gnocchi_storage_incoming_driver}
+          redis_url: ${_param:gnocchi_storage_incoming_redis_url}
\ No newline at end of file
diff --git a/gnocchi/common/storage/redis.yml b/gnocchi/common/storage/redis.yml
new file mode 100644
index 0000000..d71fcf0
--- /dev/null
+++ b/gnocchi/common/storage/redis.yml
@@ -0,0 +1,9 @@
+parameters:
+  _param:
+    gnocchi_storage_redis_url: redis://${_param:single_address}:6379
+    gnocchi_storage_driver: redis
+  gnocchi:
+    common:
+      storage:
+        driver: ${_param:gnocchi_storage_driver}
+        redis_url: ${_param:gnocchi_storage_redis_url}
\ No newline at end of file
diff --git a/gnocchi/server/cluster.yml b/gnocchi/server/cluster.yml
new file mode 100644
index 0000000..062b60e
--- /dev/null
+++ b/gnocchi/server/cluster.yml
@@ -0,0 +1,25 @@
+classes:
+- service.gnocchi.server.cluster
+- service.haproxy.proxy.single
+- system.apache.server.site.gnocchi
+- system.haproxy.proxy.listen.openstack.gnocchi
+- system.keepalived.cluster.instance.openstack_telemetry_vip
+parameters:
+  _param:
+    gnocchi_memcached_node01_address: ${_param:cluster_node01_address}
+    gnocchi_memcached_node02_address: ${_param:cluster_node02_address}
+    gnocchi_memcached_node03_address: ${_param:cluster_node03_address}
+  gnocchi:
+    server:
+      enable_proxy_headers_parsing: true
+      identity:
+        host: ${_param:openstack_control_address}
+      cache:
+        engine: memcached
+        members:
+        - host: ${_param:gnocchi_memcached_node01_address}
+          port: 11211
+        - host: ${_param:gnocchi_memcached_node02_address}
+          port: 11211
+        - host: ${_param:gnocchi_memcached_node03_address}
+          port: 11211
diff --git a/gnocchi/server/single.yml b/gnocchi/server/single.yml
new file mode 100644
index 0000000..035491e
--- /dev/null
+++ b/gnocchi/server/single.yml
@@ -0,0 +1,2 @@
+classes:
+- service.gnocchi.server.single
diff --git a/gnocchi/statsd/single.yml b/gnocchi/statsd/single.yml
new file mode 100644
index 0000000..4be519f
--- /dev/null
+++ b/gnocchi/statsd/single.yml
@@ -0,0 +1,2 @@
+classes:
+- service.gnocchi.statsd.single
\ No newline at end of file
diff --git a/haproxy/proxy/listen/dogtag.yml b/haproxy/proxy/listen/dogtag.yml
new file mode 100644
index 0000000..90761c0
--- /dev/null
+++ b/haproxy/proxy/listen/dogtag.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    haproxy_dogtag_bind_port: ${_param:cluster_dogtag_port}
+    haproxy_dogtag_source_port: ${_param:cluster_dogtag_port}
+  haproxy:
+    proxy:
+      listen:
+        dogtag:
+          mode: tcp
+          binds:
+            - address: ${_param:cluster_vip_address}
+              port: ${_param:haproxy_dogtag_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_hostname}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_dogtag_source_port}
+              params: check
+            - name: ${_param:cluster_node02_hostname}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_dogtag_source_port}
+              params: check
+            - name: ${_param:cluster_node03_hostname}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_dogtag_source_port}
+              params: check
\ No newline at end of file
diff --git a/haproxy/proxy/listen/openstack/gnocchi.yml b/haproxy/proxy/listen/openstack/gnocchi.yml
new file mode 100644
index 0000000..ec2bb20
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/gnocchi.yml
@@ -0,0 +1,23 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        gnocchi_api:
+          type: openstack-service
+          service_name: gnocchi
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: 8041
+          servers:
+          - name: ${_param:cluster_node01_hostname}
+            host: ${_param:cluster_node01_address}
+            port: 8041
+            params: check
+          - name: ${_param:cluster_node02_hostname}
+            host: ${_param:cluster_node02_address}
+            port: 8041
+            params: check
+          - name: ${_param:cluster_node03_hostname}
+            host: ${_param:cluster_node03_address}
+            port: 8041
+            params: check
\ No newline at end of file
diff --git a/haproxy/proxy/listen/openstack/manila.yml b/haproxy/proxy/listen/openstack/manila.yml
new file mode 100644
index 0000000..a28f365
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/manila.yml
@@ -0,0 +1,23 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        manila_api:
+          type: openstack-service
+          service_name: manila
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: 8786
+          servers:
+          - name: ${_param:cluster_node01_hostname}
+            host: ${_param:cluster_node01_address}
+            port: 8786
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+          - name: ${_param:cluster_node02_hostname}
+            host: ${_param:cluster_node02_address}
+            port: 8786
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+          - name: ${_param:cluster_node03_hostname}
+            host: ${_param:cluster_node03_address}
+            port: 8786
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/openstack/nova-placement.yml b/haproxy/proxy/listen/openstack/nova-placement.yml
index 9fec963..58c9dd2 100644
--- a/haproxy/proxy/listen/openstack/nova-placement.yml
+++ b/haproxy/proxy/listen/openstack/nova-placement.yml
@@ -2,18 +2,21 @@
   haproxy:
     proxy:
       listen:
+        # Nova placement API returns 401 when doing GET to root URL, while
+        # other serivces normally returns 200 and API versions data.
         nova_placement_api:
           mode: http
-          binds:
-          - address: ${_param:cluster_vip_address}
-            port: 8778
+          service_name: nova_placement
           options:
-          - httpclose
-          - httplog
+            - httpclose
+            - httplog
           health-check:
             http:
               options:
               - expect status 401
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: 8778
           servers:
           - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
diff --git a/haproxy/proxy/listen/openstack/panko.yml b/haproxy/proxy/listen/openstack/panko.yml
new file mode 100644
index 0000000..51eb030
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/panko.yml
@@ -0,0 +1,23 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        panko_api:
+          type: general-service
+          check: false
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: 8977
+          servers:
+          - name: ${_param:cluster_node01_hostname}
+            host: ${_param:cluster_node01_address}
+            port: 8977
+            params: check
+          - name: ${_param:cluster_node02_hostname}
+            host: ${_param:cluster_node02_address}
+            port: 8977
+            params: check
+          - name: ${_param:cluster_node03_hostname}
+            host: ${_param:cluster_node03_address}
+            port: 8977
+            params: check
\ No newline at end of file
diff --git a/haproxy/proxy/listen/openstack/placement.yml b/haproxy/proxy/listen/openstack/placement.yml
new file mode 100644
index 0000000..f3b2b99
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/placement.yml
@@ -0,0 +1,26 @@
+# Starting with Nova (17.0.0) Queens - accessing to / of placement service
+# returns 200 with version data instead of 401 as it was before.
+# This file should be included for nova/placement higher than Queens.
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        placement_api:
+          type: openstack-service
+          service_name: placement
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: 8778
+          servers:
+          - name: ${_param:cluster_node01_hostname}
+            host: ${_param:cluster_node01_address}
+            port: 8778
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+          - name: ${_param:cluster_node02_hostname}
+            host: ${_param:cluster_node02_address}
+            port: 8778
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+          - name: ${_param:cluster_node03_hostname}
+            host: ${_param:cluster_node03_address}
+            port: 8778
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/heat/server/cluster.yml b/heat/server/cluster.yml
index 8e38f4f..5829aee 100644
--- a/heat/server/cluster.yml
+++ b/heat/server/cluster.yml
@@ -5,7 +5,8 @@
 - system.haproxy.proxy.listen.openstack.heat
 parameters:
   _param:
-    cluster_public_protocol: https
+    cluster_public_protocol: 'https'
+    cluster_internal_protocol: 'http'
   linux:
     system:
       package:
@@ -54,6 +55,7 @@
         tenant: service
         user: heat
         password: ${_param:keystone_heat_password}
+        protocol: ${_param:cluster_internal_protocol}
       message_queue:
         engine: rabbitmq
         port: 5672
diff --git a/heat/server/resource/networking_bgpvpn.yml b/heat/server/resource/networking_bgpvpn.yml
new file mode 100644
index 0000000..4fbd851
--- /dev/null
+++ b/heat/server/resource/networking_bgpvpn.yml
@@ -0,0 +1,11 @@
+parameters:
+  linux:
+    system:
+      package:
+        python-networking-bgpvpn:
+          version: latest
+  heat:
+    server:
+      dir:
+        plugins:
+        - /usr/lib/python2.7/dist-packages/networking_bgpvpn_heat
\ No newline at end of file
diff --git a/horizon/server/plugin/manila.yml b/horizon/server/plugin/manila.yml
new file mode 100644
index 0000000..ec00da6
--- /dev/null
+++ b/horizon/server/plugin/manila.yml
@@ -0,0 +1,17 @@
+parameters:
+  horizon:
+    server:
+      plugin:
+        manila:
+          source:
+            engine: pkg
+            name: python-manila-ui
+      policy:
+        share:
+          source: file
+          name: manila_policy.json
+          enabled: true
+        sharev2:
+          source: file
+          name: manila_policy.json
+          enabled: true
diff --git a/horizon/server/plugin/neutron_bgpvpn.yml b/horizon/server/plugin/neutron_bgpvpn.yml
new file mode 100644
index 0000000..7ad75ff
--- /dev/null
+++ b/horizon/server/plugin/neutron_bgpvpn.yml
@@ -0,0 +1,8 @@
+parameters:
+  horizon:
+    server:
+      plugin:
+        bgpvpn:
+          source:
+            engine: pkg
+            name: python-networking-bgpvpn
diff --git a/jenkins/client/job/debian/packages/extra.yml b/jenkins/client/job/debian/packages/extra.yml
index 61d7ee2..0a21a55 100644
--- a/jenkins/client/job/debian/packages/extra.yml
+++ b/jenkins/client/job/debian/packages/extra.yml
@@ -205,6 +205,10 @@
               dist: xenial
               build: pipeline
               branch: debian/xenial
+            - package: python-backports.ssl-match-hostname
+              dist: xenial
+              build: pipeline
+              branch: debian/xenial
           template:
             type: workflow-scm
             concurrent: false
diff --git a/jenkins/client/job/debian/packages/salt-multi.yml b/jenkins/client/job/debian/packages/salt-multi.yml
index f7a87c7..e185b60 100644
--- a/jenkins/client/job/debian/packages/salt-multi.yml
+++ b/jenkins/client/job/debian/packages/salt-multi.yml
@@ -56,9 +56,6 @@
             - name: kubernetes
               upload_source_package: true
               dist: xenial
-            - name: mirascan
-              upload_source_package: true
-              dist: xenial
             - name: neutron
               upload_source_package: true
               dist: xenial
@@ -114,10 +111,10 @@
                 default: 'true'
               EXTRA_REPO_URL:
                 type: string
-                default: "deb ${_param:jenkins_aptly_url}/{{dist}}/ testing salt salt-latest"
+                default: "deb http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.3 xenial main; deb ${_param:jenkins_aptly_url}/{{dist}}/ testing salt"
               EXTRA_REPO_KEY_URL:
                 type: string
-                default: "${_param:jenkins_aptly_url}/public.gpg"
+                default: "https://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.3/SALTSTACK-GPG-KEY.pub; ${_param:jenkins_aptly_url}/public.gpg"
               APTLY_URL:
                 type: string
                 default: "${_param:jenkins_aptly_api_url}"
diff --git a/jenkins/client/job/debian/packages/salt.yml b/jenkins/client/job/debian/packages/salt.yml
index 6089195..ad35faa 100644
--- a/jenkins/client/job/debian/packages/salt.yml
+++ b/jenkins/client/job/debian/packages/salt.yml
@@ -5,680 +5,897 @@
         build-debian-salt-formula:
           name: build-debian-salt-formula-{{name}}-ubuntu-{{dist}}
           jobs:
-            - name: aide
-              upload_source_package: false
-              dist: trusty
             - name: aodh
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: apache
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: aptcacher
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: aptly
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: artifactory
               upload_source_package: false
-              dist: trusty
-            - name: auditd
-              upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: avinetworks
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: backupninja
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: baremetal-simulator
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: billometer
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: bind
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: bird
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: cadf
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: calico
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: cassandra
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: ccp
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: ceph
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: chrony
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: collectd
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: debmirror
               upload_source_package: true
+              upload_to_aptly: true
               dist: trusty
             - name: dekapod
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: designate
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: devops-portal
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: docker
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: dogtag
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: dovecot
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: elasticsearch
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: etcd
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: fluentbit
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: fluentd
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: foreman
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: freeipa
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: galera
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: gerrit
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: git
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: gitlab
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: glusterfs
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: grafana
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: graphite
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: haproxy
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: heka
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: heketi
               upload_source_package: true
+              upload_to_aptly: true
               dist: trusty
             - name: influxdb
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: iptables
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: ironic
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: isc-dhcp
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: java
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: jenkins
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: kedb
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: keepalived
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: kibana
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: letsencrypt
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: libvirt
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: linux
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: lldp
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: logrotate
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: maas
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: magnum
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: manila
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: memcached
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: mirascan
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: midonet
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: monasca
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: mongodb
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: murano
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: mysql
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: nagios
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: network
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: nfs
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: nginx
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: nodejs
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: ntp
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: octavia
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: opencontrail
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: openldap
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: openssh
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: openvpn
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: openvstorage
               upload_source_package: false
+              upload_to_aptly: true
+              dist: trusty
+            - name: oslo-templates
+              upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: owncloud
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: postfix
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: postgresql
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: powerdns
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: pritunl
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: prometheus
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: python
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: rabbitmq
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: reclass
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: redis
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: roundcube
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: rsync
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: rsyslog
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: rundeck
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: runtest
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: sahara
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: salt
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: sensu
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: sentry
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: shibboleth
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: sphinx
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: spinnaker
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: statsd
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: supervisor
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: taiga
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: telegraf
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: tinyproxy
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: tftpd-hpa
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: varnish
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: xtrabackup
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: zookeeper
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
-            - name: aide
-              upload_source_package: true
-              dist: xenial
             - name: aodh
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: apache
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: aptcacher
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: aptly
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: artifactory
               upload_source_package: true
-              dist: xenial
-            - name: auditd
-              upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: avinetworks
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: barbican
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: baremetal-simulator
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: backupninja
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: billometer
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: bind
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: bird
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: cadf
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: calico
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: cassandra
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: ccp
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: ceph
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: chrony
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: collectd
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: debmirror
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: dekapod
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: designate
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: devops-portal
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: docker
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: dogtag
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: dovecot
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: elasticsearch
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: etcd
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: fluentbit
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: fluentd
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: foreman
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: freeipa
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: galera
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: gerrit
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: git
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: gitlab
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: glusterfs
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: gnocchi
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: grafana
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: graphite
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: haproxy
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: heka
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: heketi
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: helm
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: influxdb
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: iptables
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: ironic
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: isc-dhcp
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: java
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: jenkins
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: kedb
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: keepalived
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: kibana
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: letsencrypt
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: libvirt
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: linux
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: lldp
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: logrotate
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: maas
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: magnum
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: manila
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: memcached
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: mirascan
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: midonet
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: monasca
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: mongodb
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: murano
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: mysql
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: nagios
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: network
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: nfs
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: nginx
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: nodejs
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: ntp
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: octavia
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: opencontrail
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: openldap
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: openssh
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: openvpn
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: openvstorage
               upload_source_package: true
+              upload_to_aptly: true
+              dist: xenial
+            - name: oslo-templates
+              upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: owncloud
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: panko
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: postfix
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: postgresql
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: pritunl
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: prometheus
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: powerdns
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: python
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: rabbitmq
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: reclass
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: redis
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: roundcube
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: rsync
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: rundeck
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: rsyslog
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: runtest
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: sahara
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: salt
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: sensu
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: sentry
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: shibboleth
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: sphinx
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: spinnaker
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: statsd
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: supervisor
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: taiga
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: telegraf
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: tinyproxy
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: tftpd-hpa
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: varnish
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: watchdog
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: xtrabackup
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: zookeeper
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
           template:
             discard:
@@ -725,10 +942,10 @@
                 default: '~{{dist}}1'
               EXTRA_REPO_URL:
                 type: string
-                default: "deb ${_param:jenkins_aptly_url}/{{dist}}/ testing salt salt-latest"
+                default: "deb http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.3 xenial main; deb ${_param:jenkins_aptly_url}/{{dist}}/ testing salt"
               EXTRA_REPO_KEY_URL:
                 type: string
-                default: "${_param:jenkins_aptly_url}/public.gpg"
+                default: "https://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.3/SALTSTACK-GPG-KEY.pub; ${_param:jenkins_aptly_url}/public.gpg"
               APTLY_URL:
                 type: string
                 default: "${_param:jenkins_aptly_api_url}"
@@ -752,7 +969,7 @@
                 default: '{{upload_source_package}}'
               UPLOAD_APTLY:
                 type: boolean
-                default: 'true'
+                default: '{{upload_to_aptly}}'
               DEBUG:
                 type: boolean
                 default: 'false'
diff --git a/jenkins/client/job/deploy/lab/cleanup.yml b/jenkins/client/job/deploy/lab/cleanup.yml
index 0db6463..6ecaeee 100644
--- a/jenkins/client/job/deploy/lab/cleanup.yml
+++ b/jenkins/client/job/deploy/lab/cleanup.yml
@@ -87,7 +87,7 @@
               default: "openstack-devcloud-credentials"
             OPENSTACK_API_PROJECT:
               type: string
-              default: "mcp-mk"
+              default: "mcp-k8s, mcp-maintenance, mcp-mk, mcp-networking, mcp-opencontrail, mcp-oss, mcp-platform,  mcp-scale, mcp-stacklight, mcp-support"
             OPENSTACK_API_CLIENT:
               type: string
               default: ""
diff --git a/jenkins/client/job/deploy/lab/component/aaa.yml b/jenkins/client/job/deploy/lab/component/aaa.yml
index 1c640d5..26a66fd 100644
--- a/jenkins/client/job/deploy/lab/component/aaa.yml
+++ b/jenkins/client/job/deploy/lab/component/aaa.yml
@@ -8,4 +8,4 @@
         stack_type: heat
         stack_install: core,aaa
         stack_test: ""
-        job_timer: ""
+        job_timer: "H H(0-6) * * *"
diff --git a/jenkins/client/job/deploy/lab/component/drivetrain.yml b/jenkins/client/job/deploy/lab/component/drivetrain.yml
index 945ac4a..6d05945 100644
--- a/jenkins/client/job/deploy/lab/component/drivetrain.yml
+++ b/jenkins/client/job/deploy/lab/component/drivetrain.yml
@@ -8,7 +8,7 @@
         stack_type: heat
         stack_install: core
         stack_test: ""
-        job_timer: ""
+        job_timer: "H H(0-6) * * *"
       - stack_name: drivetrain_ha_clusters
         stack_env: devcloud
         stack_type: heat
diff --git a/jenkins/client/job/deploy/lab/deploy.yml b/jenkins/client/job/deploy/lab/deploy.yml
index 9a04876..76a077d 100644
--- a/jenkins/client/job/deploy/lab/deploy.yml
+++ b/jenkins/client/job/deploy/lab/deploy.yml
@@ -55,6 +55,10 @@
               STACK_COMPUTE_COUNT:
                 type: string
                 default: '2'
+              STACK_CLUSTER_NAME:
+                type: string
+                default: ""
+                description: "Cluster name to use from reclass"
 
               STACK_TEMPLATE:
                 type: string
diff --git a/jenkins/client/job/deploy/lab/release/mcp11.yml b/jenkins/client/job/deploy/lab/release/mcp11.yml
index 657e1d1..789dd53 100644
--- a/jenkins/client/job/deploy/lab/release/mcp11.yml
+++ b/jenkins/client/job/deploy/lab/release/mcp11.yml
@@ -27,6 +27,24 @@
         stack_type: heat
         stack_test: ""
         job_timer: ""
+      - stack_name: virtual_mcp11_ironic_ssl_small
+        stack_env: devcloud
+        stack_install: core,openstack
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mcp11_aio_manila
+        stack_env: devcloud
+        stack_install: core,openstack,ovs
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mcp11_aio_telemetry
+        stack_env: devcloud
+        stack_install: core,openstack,ovs
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
       - stack_name: virtual_mcp11_aio
         stack_env: devcloud
         stack_install: core,openstack,ovs
@@ -81,3 +99,21 @@
         stack_type: heat
         stack_test: ""
         job_timer: ""
+      - stack_name: virtual_mcp_pike_dvr
+        stack_env: devcloud
+        stack_install: core,openstack,dvr
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mcp_pike_dvr_ssl
+        stack_env: devcloud
+        stack_install: core,openstack,dvr
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mcp_pike_ovs
+        stack_env: devcloud
+        stack_install: core,openstack,ovs
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
diff --git a/jenkins/client/job/deploy/openstack.yml b/jenkins/client/job/deploy/openstack.yml
index d9b1c29..a9f2007 100644
--- a/jenkins/client/job/deploy/openstack.yml
+++ b/jenkins/client/job/deploy/openstack.yml
@@ -26,7 +26,7 @@
             STACK_INSTALL:
               type: string
               default: "core,kvm,openstack,stacklight"
-
+              description: "Components to be installed. Valid values are 'core,kvm,k8s,openstack,contrail,ovs,ceph,oss,cicd,stacklight,sl-legacy,finalize'. For all deployments it's recommended to run 'finalize' as a final step as Salt highstate on all nodes will be run."
             # salt master
             SALT_MASTER_CREDENTIALS:
               type: string
diff --git a/jenkins/client/job/deploy/update/init.yml b/jenkins/client/job/deploy/update/init.yml
index 4e6f460..0b10ff2 100644
--- a/jenkins/client/job/deploy/update/init.yml
+++ b/jenkins/client/job/deploy/update/init.yml
@@ -13,3 +13,4 @@
   - system.jenkins.client.job.deploy.update.restore_mysql
   - system.jenkins.client.job.deploy.update.restore_cassandra
   - system.jenkins.client.job.deploy.update.restore_zookeeper
+  - system.jenkins.client.job.deploy.update.virt_snapshot
diff --git a/jenkins/client/job/deploy/update/upgrade.yml b/jenkins/client/job/deploy/update/upgrade.yml
index 2c76753..7e94c10 100644
--- a/jenkins/client/job/deploy/update/upgrade.yml
+++ b/jenkins/client/job/deploy/update/upgrade.yml
@@ -36,6 +36,10 @@
               type: boolean
               default: 'true'
               description: "Rollback if control upgrade fails"
+            OPERATING_SYSTEM_RELEASE_UPGRADE:
+              type: boolean
+              default: 'false'
+              description: "Set to true if operating system release upgrade is desired. For ex. from Ubuntu 14.04 currently running on ctl and prx nodes to Ubuntu 16.04"
             SKIP_VM_RELAUNCH:
               type: boolean
               default: 'false'
diff --git a/jenkins/client/job/deploy/update/virt_snapshot.yml b/jenkins/client/job/deploy/update/virt_snapshot.yml
new file mode 100644
index 0000000..0388ed1
--- /dev/null
+++ b/jenkins/client/job/deploy/update/virt_snapshot.yml
@@ -0,0 +1,62 @@
+#
+# Job to manage libvirt live snapshots
+#
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      job:
+        manage-virt-snapshot:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - virt snapshot VM"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
+            credentials: "gerrit"
+            script: libvirt-live-snapshots.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            CREATE_LIVE_SNAPSHOT:
+              type: boolean
+              default: 'true'
+              description: "Ensures that the live snapshot exists"
+            ROLLBACK_LIVE_SNAPSHOT:
+              type: boolean
+              default: 'false'
+              description: "Rollback the VM to a state before live snapshot was taken"
+            REMOVE_LIVE_SNAPSHOT:
+              type: boolean
+              default: 'false'
+              description: "Ensures that the live snapshot does not exist"
+            MERGE_LIVE_SNAPSHOT:
+              type: boolean
+              default: 'false'
+              description: "Ensures that the live snapshot is merged into it's base image"
+            NODE_PROVIDER:
+              type: string
+              default: "kvm01"
+              description: "KVM node that hosts the VM (for ex. kvm02)"
+            TARGET:
+              type: string
+              default: "ctl01"
+              description: "Unique identification of the VM being snapshoted without domain name (for ex. ctl01)"
+            SNAPSHOT_NAME:
+              type: string
+              default: "snapshot1"
+              description: "Snapshot name"
+            PATH:
+              type: string
+              default: "/var/lib/libvirt/images"
+              description: "Path where snapshot image and dumpxml are being put"
+            DISK_NAME:
+              type: string
+              default: "vda"
+              description: "Disk name of the snapshot"
diff --git a/jenkins/client/job/docker/cicd/init.yml b/jenkins/client/job/docker/cicd/init.yml
new file mode 100644
index 0000000..5b1df1d
--- /dev/null
+++ b/jenkins/client/job/docker/cicd/init.yml
@@ -0,0 +1,3 @@
+classes:
+  - system.jenkins.client.job.docker.cicd.rally
+  - system.jenkins.client.job.docker.cicd.tempest
diff --git a/jenkins/client/job/docker/cicd/rally.yml b/jenkins/client/job/docker/cicd/rally.yml
new file mode 100644
index 0000000..849d453
--- /dev/null
+++ b/jenkins/client/job/docker/cicd/rally.yml
@@ -0,0 +1,56 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        docker-build-images-docker-ci-rally:
+          name: docker-build-images-docker-ci-rally
+          discard:
+            build:
+              keep_num: 30
+            artifact:
+              keep_num: 30
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
+            credentials: "gerrit"
+            script: docker-build-image-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                "mcp/docker-ci-rally":
+                  branches:
+                    - master
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeNoCodeChange: false
+                change:
+                  - merged
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: 'rebuild'
+          param:
+            IMAGE_NAME:
+              type: string
+              default: "ci-rally"
+            IMAGE_TAGS:
+              type: string
+              default: ""
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            DOCKER_REGISTRY:
+              type: string
+              default: "docker-dev-virtual.docker.mirantis.net"
+            PROJECT_NAMESPACE:
+              type: string
+              default: "cicd"
+            DOCKERFILE_PATH:
+              type: string
+              default: "Dockerfile"
+            CONTEXT_PATH:
+              type: string
+              default: "."
diff --git a/jenkins/client/job/docker/cicd/tempest.yml b/jenkins/client/job/docker/cicd/tempest.yml
new file mode 100644
index 0000000..7b68403
--- /dev/null
+++ b/jenkins/client/job/docker/cicd/tempest.yml
@@ -0,0 +1,56 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        docker-build-images-docker-ci-tempest:
+          name: docker-build-images-docker-ci-tempest
+          discard:
+            build:
+              keep_num: 30
+            artifact:
+              keep_num: 30
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
+            credentials: "gerrit"
+            script: docker-build-image-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                "mcp/docker-ci-tempest":
+                  branches:
+                    - master
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeNoCodeChange: false
+                change:
+                  - merged
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: 'rebuild'
+          param:
+            IMAGE_NAME:
+              type: string
+              default: "ci-tempest"
+            IMAGE_TAGS:
+              type: string
+              default: ""
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            DOCKER_REGISTRY:
+              type: string
+              default: "docker-dev-virtual.docker.mirantis.net"
+            PROJECT_NAMESPACE:
+              type: string
+              default: "cicd"
+            DOCKERFILE_PATH:
+              type: string
+              default: "Dockerfile"
+            CONTEXT_PATH:
+              type: string
+              default: "."
diff --git a/jenkins/client/job/git-mirrors/2way.yml b/jenkins/client/job/git-mirrors/2way.yml
index 3b1a62f..4b4d0a3 100644
--- a/jenkins/client/job/git-mirrors/2way.yml
+++ b/jenkins/client/job/git-mirrors/2way.yml
@@ -11,6 +11,14 @@
               source: mcp/mcp-common-scripts
               target: Mirantis/mcp-common-scripts
               branches: "master"
+            - name: mcp-local-repo-model
+              source: mcp/mcp-local-repo-model
+              target: Mirantis/mcp-local-repo-model
+              branches: "master"
+            - name: mcp-offline-model
+              source: mcp/mcp-offline-model
+              target: Mirantis/mcp-offline-model
+              branches: "master"
           template:
             discard:
               build:
diff --git a/jenkins/client/job/oscore/init.yml b/jenkins/client/job/oscore/init.yml
index 18dd008..4666ddd 100644
--- a/jenkins/client/job/oscore/init.yml
+++ b/jenkins/client/job/oscore/init.yml
@@ -2,11 +2,15 @@
   - system.jenkins.client.job.oscore.security_tests
   - system.jenkins.client.job.oscore.tests
   - system.jenkins.client.job.oscore.qa
+  - system.jenkins.client.job.oscore.salt_virtual_models
 parameters:
   jenkins:
     client:
       view:
         "OSCORE":
           enabled: true
-          type: ListView
+          type: CategorizedJobsView
           include_regex: "^oscore-.*"
+          categories:
+            - group_regex: "oscore-bandit-*"
+              naming_rule: "Bandit"
diff --git a/jenkins/client/job/oscore/qa.yml b/jenkins/client/job/oscore/qa.yml
index a8d4fae..258baa7 100644
--- a/jenkins/client/job/oscore/qa.yml
+++ b/jenkins/client/job/oscore/qa.yml
@@ -168,10 +168,18 @@
                 type: string
                 description: Tempest configuration file path inside container
                 default: "{{tempest_conf}}"
+              TEST_CONF:
+                type: string
+                description: Tempest configuration file path inside container
+                default: "{{test_conf}}"
               TEST_TEMPEST_TARGET:
                 type: string
                 description: Node to run tests
                 default: "{{tempest_target}}"
+              TEST_TARGET:
+                type: string
+                description: Node to run tests
+                default: "{{test_target}}"
               TEST_MODEL:
                 type: string
                 description: Environment salt model
diff --git a/jenkins/client/job/oscore/salt_virtual_models.yml b/jenkins/client/job/oscore/salt_virtual_models.yml
new file mode 100644
index 0000000..f8ee2f3
--- /dev/null
+++ b/jenkins/client/job/oscore/salt_virtual_models.yml
@@ -0,0 +1,168 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        oscore-test_virtual_model:
+          concurrent: true
+          discard:
+            build:
+              keep_num: 30
+            artifact:
+              keep_num: 30
+          plugin_properties:
+            throttleconcurrents:
+              enabled: true
+              throttle_option: category
+              categories:
+                - oscore-ci-ha-builds
+          display_name: oscore-test-virtual-model
+          name: oscore-test-virtual-model
+          param:
+            CREDENTIALS_ID:
+              default: gerrit
+              type: string
+              description: "Name of creadentials to use when connecting to gerrit"
+            HEAT_STACK_ZONE:
+              type: string
+              description: "Heat stack zone where build stack"
+              default: "mcp-oscore-ci"
+            STACK_RECLASS_ADDRESS:
+              type: string
+              default: 'https://gerrit.mcp.mirantis.net/salt-models/mcp-virtual-lab'
+              description: 'Url to repository with stack salt models'
+            STACK_RECLASS_BRANCH:
+              type: string
+              default: 'master'
+              description: 'Branch of repository with stack salt models'
+            STACK_CLUSTER_NAME:
+              type: string
+              default: ""
+              description: "Cluster name to use from reclass"
+            STACK_DELETE:
+              type: boolean
+              default: 'false'
+              description: "Enable it when stack have to be deleted."
+            FORMULA_PKG_REVISION:
+              type: string
+              description: Version of formulas for salt-master bootstrap
+              default: "nightly"
+            # openstack api
+            OPENSTACK_API_URL:
+              type: string
+              default: "https://cloud-cz.bud.mirantis.net:5000"
+            OPENSTACK_API_CREDENTIALS:
+              type: string
+              default: "openstack-devcloud-credentials"
+            OPENSTACK_API_PROJECT:
+              type: string
+              default: "mcp-oscore-ci"
+            OPENSTACK_API_PROJECT_DOMAIN:
+              type: string
+              default: "default"
+            OPENSTACK_API_PROJECT_ID:
+              type: string
+              default: ""
+            OPENSTACK_API_USER_DOMAIN:
+              type: string
+              default: "default"
+            OPENSTACK_API_CLIENT:
+              type: string
+              default: ""
+            OPENSTACK_API_VERSION:
+              type: string
+              default: "3"
+            # Test params
+            TEST_CONF:
+              type: string
+              description: Tempest configuration file path inside container
+              default: "/home/rally/rally_reports/tempest_generated.conf"
+            TEST_TARGET:
+              type: string
+              description: Node to run tests
+              default: "cfg01*"
+            TEST_CONCURRENCY:
+              type: string
+              description: How much test threads to run
+              default: "2"
+            RUN_SMOKE:
+              type: boolean
+              default: "false"
+              description: Enabling of running smoke tests
+          scm:
+            script: test-virtual-model-pipeline.groovy
+            type: git
+            url: "${_param:jenkins_gerrit_url}/openstack-ci/openstack-pipelines"
+            credentials: "gerrit"
+          type: workflow-scm
+        oscore-test_virtual_models:
+          concurrent: true
+          discard:
+            build:
+              keep_num: 30
+            artifact:
+              keep_num: 30
+          trigger:
+              timer:
+               spec: "H 05 * * *"
+          display_name: oscore-test-virtual-models
+          name: oscore-test-virtual-models
+          param:
+            CREDENTIALS_ID:
+              default: gerrit
+              type: string
+              description: "Name of creadentials to use when connecting to gerrit"
+            HEAT_STACK_ZONE:
+              type: string
+              description: "Heat stack zone where build stack"
+              default: "mcp-oscore-ci"
+            STACK_RECLASS_ADDRESS:
+              type: string
+              default: 'https://gerrit.mcp.mirantis.net/salt-models/mcp-virtual-lab'
+              description: 'Url to repository with stack salt models'
+            STACK_RECLASS_BRANCH:
+              type: string
+              default: 'master'
+              description: 'Branch of repository with stack salt models'
+            STACK_CLUSTER_NAMES:
+              type: string
+              default: "virtual-mcp-pike-ovs,virtual-mcp-pike-dvr,virtual-mcp-pike-dvr-ssl"
+              description: "Comma separated list of cluster names to test."
+            STACK_DELETE:
+              type: boolean
+              default: 'true'
+              description: "Enable it when stack have to be deleted."
+            FORMULA_PKG_REVISION:
+              type: string
+              description: Version of formulas for salt-master bootstrap
+              default: "nightly"
+            # openstack api
+            OPENSTACK_API_URL:
+              type: string
+              default: "https://cloud-cz.bud.mirantis.net:5000"
+            OPENSTACK_API_CREDENTIALS:
+              type: string
+              default: "openstack-devcloud-credentials"
+            OPENSTACK_API_PROJECT:
+              type: string
+              default: "mcp-oscore-ci"
+            OPENSTACK_API_PROJECT_DOMAIN:
+              type: string
+              default: "default"
+            OPENSTACK_API_PROJECT_ID:
+              type: string
+              default: ""
+            OPENSTACK_API_USER_DOMAIN:
+              type: string
+              default: "default"
+            OPENSTACK_API_CLIENT:
+              type: string
+              default: ""
+            OPENSTACK_API_VERSION:
+              type: string
+              default: "3"
+          scm:
+            script: test-virtual-models-pipeline.groovy
+            type: git
+            url: "${_param:jenkins_gerrit_url}/openstack-ci/openstack-pipelines"
+            credentials: "gerrit"
+          type: workflow-scm
diff --git a/jenkins/client/job/oscore/tests.yml b/jenkins/client/job/oscore/tests.yml
index f5bb092..8012d61 100644
--- a/jenkins/client/job/oscore/tests.yml
+++ b/jenkins/client/job/oscore/tests.yml
@@ -64,6 +64,10 @@
                 type: string
                 default: '{{stack_reclass_branch}}'
                 description: 'Branch of repository with stack salt models'
+              STACK_CLUSTER_NAME:
+                type: string
+                default: ""
+                description: "Cluster name to use from reclass"
               # salt
               SALT_OVERRIDES:
                 type: text
@@ -103,14 +107,26 @@
                 type: string
                 description: Tempest configuration file path inside container
                 default: "{{tempest_conf}}"
+              TEST_CONF:
+                type: string
+                description: Tempest configuration file path inside container
+                default: "{{test_conf}}"
               TEST_TEMPEST_TARGET:
                 type: string
                 description: Node to run tests
                 default: "{{tempest_target}}"
+              TEST_TARGET:
+                type: string
+                description: Node to run tests
+                default: "{{test_target}}"
               TEST_TEMPEST_PATTERN:
                 type: string
                 description: Run tests matched to pattern only
                 default: "tempest"
+              TEST_PATTERN:
+                type: string
+                description: Run tests matched to pattern only
+                default: "tempest"
               TEST_MODEL:
                 type: string
                 description: Environment salt model
@@ -253,14 +269,26 @@
                 type: string
                 description: Tempest configuration file path inside container
                 default: "{{tempest_conf}}"
+              TEST_CONF:
+                type: string
+                description: Tempest configuration file path inside container
+                default: "{{test_conf}}"
               TEST_TEMPEST_TARGET:
                 type: string
                 description: Node to run tests
                 default: "{{tempest_target}}"
+              TEST_TARGET:
+                type: string
+                description: Node to run tests
+                default: "{{test_target}}"
               TEST_TEMPEST_PATTERN:
                 type: string
                 description: Run tests matched to pattern only
-                default: "tempest --concurrency 2"
+                default: "{{test_pattern}}"
+              TEST_PATTERN:
+                type: string
+                description: Run tests matched to pattern only
+                default: "{{test_pattern}}"
               TEST_MODEL:
                 type: string
                 description: Environment salt model
@@ -273,6 +301,10 @@
                 type: boolean
                 default: 'true'
                 description: Whether to fail build on test results
+              RUN_SMOKE:
+                type: boolean
+                default: "{{run_smoke}}"
+                description: Enabling of running smoke tests
         test-runner-template:
           name: "{{job_prefix}}-{{test_type}}-runner"
           template:
@@ -308,6 +340,10 @@
                 type: string
                 description: Job for results processing
                 default: "{{proc_results_job}}"
+              TEST_TYPE:
+                type: string
+                description: Name of test type
+                default: "{{test_type}}"
               SLAVE_NODE:
                 type: string
                 default: 'python'
@@ -326,10 +362,17 @@
               TEST_TEMPEST_TARGET:
                 type: string
                 description: Salt target to run tests
+              TEST_TARGET:
+                type: string
+                description: Salt target to run tests
               TEST_TEMPEST_IMAGE:
                 type: string
                 description: Url to tempest docker image
-                default: 'docker-prod-local.artifactory.mirantis.com/mirantis/oscore/rally-tempest'
+                default: "{{test_image}}"
+              TEST_IMAGE:
+                type: string
+                description: Url to tempest docker image
+                default: "{{test_image}}"
               LOCAL_TEMPEST_IMAGE:
                 type: string
                 description: Path to local docker image
@@ -337,17 +380,31 @@
               TEST_TEMPEST_PATTERN:
                 type: string
                 description: Run tests matched to pattern only
+              TEST_PATTERN:
+                type: string
+                description: Run tests matched to pattern only
               TEST_TEMPEST_SET:
                 type: string
                 description: Run tests matched by tempest set only
+              TEST_SET:
+                type: string
+                description: Run tests matched by tempest set only
               TEST_TEMPEST_CONCURRENCY:
                 type: string
                 description: How much test threads to run
                 default: "2"
+              TEST_CONCURRENCY:
+                type: string
+                description: How much test threads to run
+                default: "2"
               TEST_TEMPEST_CONF:
                 type: string
                 description: Tempest configuration file path inside container
                 default: "mcp.conf"
+              TEST_CONF:
+                type: string
+                description: Tempest configuration file path inside container
+                default: "mcp.conf"
               TEST_MODEL:
                 type: string
                 description: Environment salt model
@@ -406,14 +463,16 @@
               TEST_TEMPEST_TARGET:
                 type: string
                 description: Node to run tests
+              TEST_TARGET:
+                type: string
+                description: Node to run tests
               TEST_MILESTONE:
                 type: string
                 description: Product milestone
               TEST_SUITE:
                 type: string
                 description: Testrail test suite
-                default: >-
-                  'Tempest 16.0.0 with designate tests'
+                default: "{{test_suite}}"
               TEST_PLAN:
                 type: string
                 description: Testrail test plan
@@ -620,11 +679,11 @@
                 description: Whether to make a snapshot build
               EXTRA_REPO_URL:
                 type: string
-                default: "deb ${_param:jenkins_aptly_url}/{{dist}}/ testing salt salt-latest"
+                default: "deb http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.3 xenial main; deb ${_param:jenkins_aptly_url}/{{dist}}/ testing salt"
                 description: Extra repo for building process
               EXTRA_REPO_KEY_URL:
                 type: string
-                default: "${_param:jenkins_aptly_url}/public.gpg"
+                default: "https://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.3/SALTSTACK-GPG-KEY.pub; ${_param:jenkins_aptly_url}/public.gpg"
                 description: Extra repo GPG public key URL
               OS:
                 type: string
@@ -669,7 +728,7 @@
             trigger:
               gerrit:
                 project:
-                  "^salt-formulas/(nova|cinder|glance|keystone|horizon|neutron|designate|heat|ironic|barbican|salt|linux|reclass|galera|memcached|rabbitmq|bind|apache)$":
+                  "^salt-formulas/(nova|cinder|glance|keystone|horizon|neutron|designate|heat|ironic|barbican|aodh|ceilometer|gnocchi|panko|manila|salt|linux|reclass|galera|memcached|rabbitmq|bind|apache)$":
                     compare_type: 'REG_EXP'
                     branches:
                       - master
@@ -734,3 +793,60 @@
                 type: string
                 default: "{{systestJobPrefix}}"
                 description: "Systest job prefix. I.e. oscore-formula-systest-virtual_mcp11_aio-"
+              OPENSTACK_COMPONENTS_LIST:
+                type: string
+                description: "OpenStack related components list"
+                default: "{{openstack_components_list}}"
+              SOURCE_REPO_NAME:
+                type: string
+                description: "Name of the repo where packages are stored"
+                default: "{{source_repo_name}}"
+        test-deploy-virtual-model-change-template:
+          name: "{{job_prefix}}-deploy-virtual-model-change-{{job_suffix}}"
+          template:
+            discard:
+              build:
+                keep_num: 30
+              artifact:
+                keep_num: 30
+            type: workflow-scm
+            concurrent: true
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/openstack-ci/openstack-pipelines.git"
+              credentials: "gerrit"
+              branch: 'master'
+              script: deploy-virtual-model-change-pipeline.groovy
+            trigger:
+              gerrit:
+                project:
+                  "^salt-models/mcp-virtual-aio$":
+                    compare_type: 'REG_EXP'
+                    branches:
+                      - master
+                      - stable/pike
+                      - stable/ocata
+                      - stable/newton
+                      - stable/mitaka
+                skip_vote:
+                  - successful
+                  - failed
+                  - unstable
+                  - not_built
+                event:
+                  comment:
+                    - addedContains:
+                        commentAddedCommentContains: '^(?s:Patch Set \d+:.*(test|recheck|reverify)\s*)$'
+            param:
+              CREDENTIALS_ID:
+                type: string
+                default: "{{credentials_id}}"
+              STACK_RECLASS_ADDRESS:
+                type: string
+                default: "{{stack_reclass_address}}"
+              STACK_RECLASS_BRANCH:
+                type: string
+                default: "{{stack_reclass_branch}}"
+              TEST_CLUSTER_NAMES:
+                type: string
+                default: "{{test_cluster_names}}"
diff --git a/jenkins/client/job/saas/init.yml b/jenkins/client/job/saas/init.yml
new file mode 100644
index 0000000..33ebbe4
--- /dev/null
+++ b/jenkins/client/job/saas/init.yml
@@ -0,0 +1,3 @@
+classes:
+  - system.jenkins.client.job.saas.test_saas_ui
+  - system.jenkins.client.job.saas.test_saas_core_auth
diff --git a/jenkins/client/job/saas/test_saas_core_auth.yml b/jenkins/client/job/saas/test_saas_core_auth.yml
new file mode 100644
index 0000000..1ff2339
--- /dev/null
+++ b/jenkins/client/job/saas/test_saas_core_auth.yml
@@ -0,0 +1,43 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        test-saas-core-auth:
+          name: test-saas-core-auth
+          discard:
+            build:
+              keep_num: 15
+            artifact:
+              keep_num: 15
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
+            credentials: "gerrit"
+            script: test-saas-core-auth-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                "saas/core/auth":
+                  branches:
+                    - master
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeTrivialRebase: false
+                      excludeNoCodeChange: false
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: '^(?s:Patch Set \d+:.*(test|recheck|reverify)\s*)$'
+          param:
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            DEFAULT_GIT_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/saas/core/auth"
+            DEFAULT_GIT_REF:
+                type: string
+                default: master
diff --git a/jenkins/client/job/saas/test_saas_ui.yml b/jenkins/client/job/saas/test_saas_ui.yml
new file mode 100644
index 0000000..f49dd7f
--- /dev/null
+++ b/jenkins/client/job/saas/test_saas_ui.yml
@@ -0,0 +1,43 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        test-saas-ui:
+          name: test-saas-ui
+          discard:
+            build:
+              keep_num: 15
+            artifact:
+              keep_num: 15
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
+            credentials: "gerrit"
+            script: test-saas-ui-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                "saas/frontend/ui":
+                  branches:
+                    - master
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeTrivialRebase: false
+                      excludeNoCodeChange: false
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: '^(?s:Patch Set \d+:.*(test|recheck|reverify)\s*)$'
+          param:
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            DEFAULT_GIT_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/saas/frontend/ui"
+            DEFAULT_GIT_REF:
+                type: string
+                default: master
diff --git a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
index 249a7e5..a23f4d0 100644
--- a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
+++ b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
@@ -7,8 +7,6 @@
         git-mirror-2way-salt-formula:
           name: git-mirror-2way-salt-formula-{{name}}
           jobs:
-            - name: aide
-              branches: ${_param:salt_formulas_branches}
             - name: aodh
               branches: ${_param:salt_formulas_branches}
               notification_recipients: ${_param:salt_formulas_notification_recipients}
@@ -24,9 +22,6 @@
             - name: artifactory
               branches: ${_param:salt_formulas_branches}
               notification_recipients: ${_param:salt_formulas_notification_recipients}
-            - name: auditd
-              branches: ${_param:salt_formulas_branches}
-              notification_recipients: ${_param:salt_formulas_notification_recipients}
             - name: avinetworks
               branches: ${_param:salt_formulas_branches}
               notification_recipients: ${_param:salt_formulas_notification_recipients}
@@ -36,6 +31,9 @@
             - name: barbican
               branches: ${_param:salt_formulas_branches}
               notification_recipients: ${_param:salt_formulas_notification_recipients}
+            - name: baremetal-simulator
+              branches: ${_param:salt_formulas_branches}
+              notification_recipients: ${_param:salt_formulas_notification_recipients}
             - name: billometer
               branches: ${_param:salt_formulas_branches}
               notification_recipients: ${_param:salt_formulas_notification_recipients}
@@ -84,6 +82,9 @@
             - name: docker
               branches: ${_param:salt_formulas_branches}
               notification_recipients: ${_param:salt_formulas_notification_recipients}
+            - name: dogtag
+              branches: ${_param:salt_formulas_branches}
+              notification_recipients: ${_param:salt_formulas_notification_recipients}
             - name: dovecot
               branches: ${_param:salt_formulas_branches}
               notification_recipients: ${_param:salt_formulas_notification_recipients}
diff --git a/jenkins/client/job/salt-formulas/tests.yml b/jenkins/client/job/salt-formulas/tests.yml
index b6d74f2..73d9083 100644
--- a/jenkins/client/job/salt-formulas/tests.yml
+++ b/jenkins/client/job/salt-formulas/tests.yml
@@ -5,13 +5,11 @@
         test-salt-formula:
           name: test-salt-formula-{{name}}-latest
           jobs:
-            - name: aide
             - name: aodh
             - name: apache
             - name: aptcacher
             - name: aptly
             - name: artifactory
-            - name: auditd
             - name: avinetworks
             - name: backupninja
             - name: barbican
@@ -53,6 +51,7 @@
             - name: haproxy
             - name: heat
             - name: heka
+            - name: heketi
             - name: helm
             - name: horizon
             - name: influxdb
@@ -95,6 +94,7 @@
             - name: openssh
             - name: openvpn
             - name: openvstorage
+            - name: oslo-templates
             - name: owncloud
             - name: panko
             - name: postfix
diff --git a/jenkins/client/job/salt-models/generate.yml b/jenkins/client/job/salt-models/generate.yml
index b2ef4e5..686e74d 100644
--- a/jenkins/client/job/salt-models/generate.yml
+++ b/jenkins/client/job/salt-models/generate.yml
@@ -19,25 +19,10 @@
               script: generate-cookiecutter-products.groovy
             param:
               # Cookiecutter
-              COOKIECUTTER_TEMPLATE_URL:
-                type: string
-                default: "${_param:jenkins_gerrit_url}/mk/cookiecutter-templates.git"
-              COOKIECUTTER_TEMPLATE_CREDENTIALS:
-                type: string
-                default: gerrit
-              COOKIECUTTER_TEMPLATE_BRANCH:
-                type: string
-                default: master
-              COOKIECUTTER_TEMPLATE_PATH:
-                type: string
-                default: "./"
               COOKIECUTTER_TEMPLATE_CONTEXT:
                 type: text
 
               # Other
-              SHARED_RECLASS_URL:
-                type: string
-                default: "${_param:jenkins_gerrit_url}/salt-models/reclass-system.git"
               EMAIL_ADDRESS:
                 type: string
               TEST_MODEL:
diff --git a/jenkins/client/job/salt-models/tests.yml b/jenkins/client/job/salt-models/tests.yml
index 9e6b8ac..6a80fab 100644
--- a/jenkins/client/job/salt-models/tests.yml
+++ b/jenkins/client/job/salt-models/tests.yml
@@ -82,6 +82,31 @@
               APT_REPOSITORY_GPG:
                 type: string
                 default: ""
+        test_customers_salt_models:
+          name: test-customers-salt-models
+          template:
+            type: workflow-scm
+            discard:
+              build:
+                keep_num: 50
+              artifact:
+                keep_num: 50
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
+              credentials: "gerrit"
+              script: test-customers-salt-models.groovy
+            concurrent: false
+            trigger:
+               timer:
+                 spec: "{{job_timer}}"
+            param:
+              CUSTOMERS:
+                type: string
+                description: "Comma separated list of customer model names"
+                default: "{{customers}}"
+
         test_salt_model_customer:
           name: test-salt-model-customer-{{name}}
           template:
@@ -110,6 +135,10 @@
                     - addedContains:
                         commentAddedCommentContains: '^(?s:Patch Set \d+:.*(test|recheck|reverify)\s*)$'
             param:
+              TEST_CLUSTER_NAMES:
+                type: string
+                description: "Comma separated list of cluster names, empty string means all valid clusters"
+                default: "{{test_cluster_names}}"
               SALT_OPTS:
                 type: string
                 default: "--force-color"
@@ -244,6 +273,9 @@
               RECLASS_MODEL_BRANCH:
                 type: string
                 default: master
+              DISTRIB_REVISION:
+                type: string
+                default: 'nightly'
               SYSTEM_GIT_URL:
                 type: string
                 default: ""
diff --git a/jenkins/slave/libvirt.yml b/jenkins/slave/libvirt.yml
index e40b841..4ebaae2 100644
--- a/jenkins/slave/libvirt.yml
+++ b/jenkins/slave/libvirt.yml
@@ -14,6 +14,9 @@
           version: latest
         libvirt-bin:
           version: latest
+        # Reguired to simplify building custom cloud-init.iso
+        cloud-image-utils:
+          version: latest
   # Ensure FORWARD chain to be ACCEPT to avoid issue when running with docker
   # 1.13 and newer that sets chain to DROP, see:
   #   https://github.com/docker/docker/pull/28257
diff --git a/keepalived/cluster/instance/cicd_control_vip.yml b/keepalived/cluster/instance/cicd_control_vip.yml
index ab7f413..462cbd6 100644
--- a/keepalived/cluster/instance/cicd_control_vip.yml
+++ b/keepalived/cluster/instance/cicd_control_vip.yml
@@ -5,6 +5,12 @@
 parameters:
   keepalived:
     cluster:
+      vrrp_scripts:
+        vip:
+          content: "pidof haproxy && docker service ls"
+          interval: 30
+          rise: 1
+          fall: 1
       enabled: true
       instance:
         cicd_control_vip:
@@ -13,3 +19,4 @@
           interface: ${_param:keepalived_vip_interface}
           virtual_router_id: ${_param:keepalived_vip_virtual_router_id}
           priority: ${_param:keepalived_vip_priority}
+          track_script: vip
diff --git a/keepalived/cluster/instance/openstack_baremetal_vip.yml b/keepalived/cluster/instance/openstack_baremetal_vip.yml
index c3141b6..355cf53 100644
--- a/keepalived/cluster/instance/openstack_baremetal_vip.yml
+++ b/keepalived/cluster/instance/openstack_baremetal_vip.yml
@@ -11,6 +11,12 @@
     keepalived_openstack_baremetal_vip_priority: ${_param:keepalived_vip_priority}
   keepalived:
     cluster:
+      vrrp_scripts:
+        check_pidof:
+          args: "haproxy"
+          interval: 10
+          rise: 1
+          fall: 1
       enabled: true
       instance:
         openstack_baremetal_vip:
@@ -19,3 +25,4 @@
           interface: ${_param:keepalived_openstack_baremetal_vip_interface}
           virtual_router_id: ${_param:keepalived_openstack_baremetal_vip_virtual_router_id}
           priority: ${_param:keepalived_openstack_baremetal_vip_priority}
+          track_script: check_pidof
diff --git a/keepalived/cluster/instance/openstack_web_public_vip.yml b/keepalived/cluster/instance/openstack_web_public_vip.yml
index 8279b65..1080e62 100644
--- a/keepalived/cluster/instance/openstack_web_public_vip.yml
+++ b/keepalived/cluster/instance/openstack_web_public_vip.yml
@@ -9,6 +9,12 @@
     keepalived_openstack_web_public_vip_interface: eth1
   keepalived:
     cluster:
+      vrrp_scripts:
+        check_pidof:
+          args: "haproxy"
+          interval: 10
+          rise: 1
+          fall: 1
       enabled: true
       instance:
         openstack_web_public_vip:
@@ -17,3 +23,4 @@
           interface: ${_param:keepalived_openstack_web_public_vip_interface}
           virtual_router_id: 132
           priority: ${_param:keepalived_vip_priority}
+          track_script: check_pidof
diff --git a/keepalived/cluster/instance/prometheus_server_vip.yml b/keepalived/cluster/instance/prometheus_server_vip.yml
index 7bde702..aea8b55 100644
--- a/keepalived/cluster/instance/prometheus_server_vip.yml
+++ b/keepalived/cluster/instance/prometheus_server_vip.yml
@@ -5,8 +5,15 @@
 parameters:
   _param:
     keepalived_vip_priority: 101
+    keepalived_prometheus_vrrp_script_content: "pidof haproxy && docker service ls"
   keepalived:
     cluster:
+      vrrp_scripts:
+        vip:
+          content: ${_param:keepalived_prometheus_vrrp_script_content}
+          interval: 30
+          rise: 1
+          fall: 1
       enabled: true
       instance:
         prometheus_server_vip:
@@ -15,4 +22,4 @@
           interface: ${_param:keepalived_prometheus_vip_interface}
           virtual_router_id: 105
           priority: ${_param:keepalived_vip_priority}
-
+          track_script: vip
diff --git a/keepalived/cluster/instance/stacklight_log_vip.yml b/keepalived/cluster/instance/stacklight_log_vip.yml
index caa6754..44d3527 100644
--- a/keepalived/cluster/instance/stacklight_log_vip.yml
+++ b/keepalived/cluster/instance/stacklight_log_vip.yml
@@ -5,6 +5,12 @@
 parameters:
   keepalived:
     cluster:
+      vrrp_scripts:
+        check_pidof:
+          args: "haproxy"
+          interval: 10
+          rise: 1
+          fall: 1
       enabled: true
       instance:
         stacklight_log_vip:
@@ -13,3 +19,4 @@
           interface: ${_param:keepalived_stacklight_log_vip_interface}
           virtual_router_id: 110
           priority: 101
+          track_script: check_pidof
diff --git a/keepalived/cluster/instance/stacklight_monitor_vip.yml b/keepalived/cluster/instance/stacklight_monitor_vip.yml
index 28a6b69..51283b2 100644
--- a/keepalived/cluster/instance/stacklight_monitor_vip.yml
+++ b/keepalived/cluster/instance/stacklight_monitor_vip.yml
@@ -3,8 +3,16 @@
 classes:
 - service.keepalived.support
 parameters:
+  _param:
+    keepalived_docker_vrrp_script_content: "docker service ls"
   keepalived:
     cluster:
+      vrrp_scripts:
+        docker_service_ls:
+          content: ${_param:keepalived_docker_vrrp_script_content}
+          interval: 10
+          rise: 1
+          fall: 1
       enabled: true
       instance:
         stacklight_monitor_vip:
@@ -13,3 +21,4 @@
           interface: ${_param:keepalived_stacklight_monitor_vip_interface}
           virtual_router_id: 100
           priority: 101
+          track_script: docker_service_ls
diff --git a/keepalived/cluster/instance/stacklight_telemetry_vip.yml b/keepalived/cluster/instance/stacklight_telemetry_vip.yml
index e7d31a5..95d4d80 100644
--- a/keepalived/cluster/instance/stacklight_telemetry_vip.yml
+++ b/keepalived/cluster/instance/stacklight_telemetry_vip.yml
@@ -5,6 +5,12 @@
 parameters:
   keepalived:
     cluster:
+      vrrp_scripts:
+        check_pidof:
+          args: "haproxy"
+          interval: 10
+          rise: 1
+          fall: 1
       enabled: true
       instance:
         stacklight_telemetry_vip:
@@ -13,3 +19,4 @@
           interface: ${_param:keepalived_stacklight_telemetry_vip_interface}
           virtual_router_id: 120
           priority: 101
+          track_script: check_pidof
diff --git a/keystone/client/service/aodh.yml b/keystone/client/service/aodh.yml
index c4d49b8..e7b0dbb 100644
--- a/keystone/client/service/aodh.yml
+++ b/keystone/client/service/aodh.yml
@@ -2,6 +2,7 @@
   _param:
     cluster_public_protocol: https
     aodh_service_protocol: http
+    aodh_public_host: ${_param:cluster_public_host}
   keystone:
     client:
       server:
@@ -19,7 +20,7 @@
               description: OpenStack Alarming Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:cluster_public_host}
+                public_address: ${_param:aodh_public_host}
                 public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8042
                 public_path: '/'
diff --git a/keystone/client/service/ceilometer.yml b/keystone/client/service/ceilometer.yml
index 90e0d3e..40f4ebf 100644
--- a/keystone/client/service/ceilometer.yml
+++ b/keystone/client/service/ceilometer.yml
@@ -2,6 +2,7 @@
   _param:
     cluster_public_protocol: https
     ceilometer_service_protocol: http
+    ceilometer_public_host: ${_param:cluster_public_host}
   keystone:
     client:
       server:
@@ -19,7 +20,7 @@
               description: OpenStack Telemetry Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:cluster_public_host}
+                public_address: ${_param:ceilometer_public_host}
                 public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8777
                 public_path: '/'
diff --git a/keystone/client/service/gnocchi.yml b/keystone/client/service/gnocchi.yml
new file mode 100644
index 0000000..6707764
--- /dev/null
+++ b/keystone/client/service/gnocchi.yml
@@ -0,0 +1,34 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    gnocchi_service_protocol: http
+    gnocchi_public_host: ${_param:cluster_public_host}
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                gnocchi:
+                  is_admin: true
+                  password: ${_param:keystone_gnocchi_password}
+                  email: ${_param:admin_email}
+          service:
+            gnocchi:
+              type: metric
+              description: OpenStack Metric Service
+              endpoints:
+              - region: ${_param:openstack_region}
+                public_address: ${_param:gnocchi_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
+                public_port: 8041
+                public_path: '/'
+                internal_address: ${_param:gnocchi_service_host}
+                internal_port: 8041
+                internal_path: '/'
+                internal_protocol: ${_param:gnocchi_service_protocol}
+                admin_protocol: ${_param:gnocchi_service_protocol}
+                admin_address: ${_param:gnocchi_service_host}
+                admin_port: 8041
+                admin_path: '/'
diff --git a/keystone/client/service/keystone.yml b/keystone/client/service/keystone.yml
index d9092e0..ba116f8 100644
--- a/keystone/client/service/keystone.yml
+++ b/keystone/client/service/keystone.yml
@@ -2,6 +2,9 @@
   _param:
     cluster_public_protocol: https
     keystone_service_protocol: http
+    keystone_public_path: "/v2.0"
+    keystone_internal_path: "/v2.0"
+    keystone_admin_path: "/v2.0"
   keystone:
     client:
       server:
@@ -15,12 +18,12 @@
                 public_address: ${_param:cluster_public_host}
                 public_protocol: ${_param:cluster_public_protocol}
                 public_port: 5000
-                public_path: '/v2.0'
+                public_path: ${_param:keystone_public_path}
                 internal_address: ${_param:keystone_service_host}
                 internal_port: 5000
-                internal_path: '/v2.0'
+                internal_path: ${_param:keystone_internal_path}
                 internal_protocol: ${_param:keystone_service_protocol}
                 admin_address: ${_param:keystone_service_host}
                 admin_port: 35357
-                admin_path: '/v2.0'
+                admin_path: ${_param:keystone_admin_path}
                 admin_protocol: ${_param:keystone_service_protocol}
diff --git a/keystone/client/service/manila.yml b/keystone/client/service/manila.yml
new file mode 100644
index 0000000..07e88b2
--- /dev/null
+++ b/keystone/client/service/manila.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    manila_service_protocol: http
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                manila:
+                  is_admin: true
+                  password: ${_param:keystone_manila_password}
+                  email: ${_param:admin_email}
+          service:
+            manila:
+              type: share
+              description: OpenStack Shared File Systems V1
+              endpoints:
+              - region: ${_param:openstack_region}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
+                public_port: 8786
+                public_path: '/v1/$(tenant_id)s'
+                internal_address: ${_param:manila_service_host}
+                internal_port: 8786
+                internal_path: '/v1/$(tenant_id)s'
+                internal_protocol: ${_param:manila_service_protocol}
+                admin_protocol: ${_param:manila_service_protocol}
+                admin_address: ${_param:manila_service_host}
+                admin_port: 8786
+                admin_path: '/v1/$(tenant_id)s'
diff --git a/keystone/client/service/manila2.yml b/keystone/client/service/manila2.yml
new file mode 100644
index 0000000..1a3a125
--- /dev/null
+++ b/keystone/client/service/manila2.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    manila_service_protocol: http
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                manila:
+                  is_admin: true
+                  password: ${_param:keystone_manila_password}
+                  email: ${_param:admin_email}
+          service:
+            manilav2:
+              type: sharev2
+              description: OpenStack Shared File Systems V2
+              endpoints:
+              - region: ${_param:openstack_region}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
+                public_port: 8786
+                public_path: '/v2/$(tenant_id)s'
+                internal_address: ${_param:manila_service_host}
+                internal_port: 8786
+                internal_path: '/v2/$(tenant_id)s'
+                internal_protocol: ${_param:manila_service_protocol}
+                admin_protocol: ${_param:manila_service_protocol}
+                admin_address: ${_param:manila_service_host}
+                admin_port: 8786
+                admin_path: '/v2/$(tenant_id)s'
diff --git a/keystone/client/service/panko.yml b/keystone/client/service/panko.yml
index 05f9453..6f86b36 100644
--- a/keystone/client/service/panko.yml
+++ b/keystone/client/service/panko.yml
@@ -1,6 +1,8 @@
 parameters:
   _param:
     cluster_public_protocol: https
+    panko_service_protocol: http
+    panko_public_host: ${_param:cluster_public_host}
   keystone:
     client:
       server:
@@ -18,13 +20,15 @@
               description: OpenStack Event Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:cluster_public_host}
+                public_address: ${_param:panko_public_host}
                 public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8977
                 public_path: '/'
                 internal_address: ${_param:panko_service_host}
                 internal_port: 8977
                 internal_path: '/'
+                internal_protocol: ${_param:panko_service_protocol}
+                admin_protocol: ${_param:panko_service_protocol}
                 admin_address: ${_param:panko_service_host}
                 admin_port: 8977
                 admin_path: '/'
diff --git a/kubernetes/master/cluster.yml b/kubernetes/master/cluster.yml
index f21f003..78e91a0 100644
--- a/kubernetes/master/cluster.yml
+++ b/kubernetes/master/cluster.yml
@@ -11,7 +11,6 @@
     master:
       container: false
       network:
-        engine: calico
-        private_ip_range: ${_param:calico_private_network}/${_param:calico_private_netmask}
-        prometheus:
-          enabled: true
+        calico:
+          prometheus:
+            enabled: true
diff --git a/kubernetes/master/single.yml b/kubernetes/master/single.yml
index cc8d8ab..684af64 100644
--- a/kubernetes/master/single.yml
+++ b/kubernetes/master/single.yml
@@ -7,5 +7,3 @@
   kubernetes:
     master:
       container: false
-      network:
-        engine: calico
diff --git a/kubernetes/pool/cluster.yml b/kubernetes/pool/cluster.yml
index 3dd0c40..d223d57 100644
--- a/kubernetes/pool/cluster.yml
+++ b/kubernetes/pool/cluster.yml
@@ -4,7 +4,7 @@
 parameters:
   _param:
     # component docker images
-    kubernetes_calicoctl_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/ctl:latest
+    kubernetes_calico_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.6.2-2
@@ -15,9 +15,9 @@
     pool:
       container: false
       network:
-        engine: calico
-        prometheus:
-          enabled: true
+        calico:
+          prometheus:
+            enabled: true
   docker:
     host:
       options:
diff --git a/kubernetes/pool/single.yml b/kubernetes/pool/single.yml
index 67363a6..d6282c3 100644
--- a/kubernetes/pool/single.yml
+++ b/kubernetes/pool/single.yml
@@ -4,7 +4,7 @@
 parameters:
   _param:
     # component docker images
-    kubernetes_calicoctl_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/ctl:latest
+    kubernetes_calico_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.6.2-2
@@ -14,8 +14,6 @@
   kubernetes:
     pool:
       container: false
-      network:
-        engine: calico
   docker:
     host:
       options:
diff --git a/linux/storage/loopback_manila.yml b/linux/storage/loopback_manila.yml
new file mode 100644
index 0000000..6a9986c
--- /dev/null
+++ b/linux/storage/loopback_manila.yml
@@ -0,0 +1,8 @@
+parameters:
+  linux:
+    storage:
+      enabled: true
+      loopback:
+        loop1:
+          file: "/srv/disk1"
+          size: ${_param:loopback_device1_size}G
diff --git a/linux/system/repo/mcp/apt_mirantis/aptly.yml b/linux/system/repo/mcp/apt_mirantis/aptly.yml
index b0cf536..5a023a5 100644
--- a/linux/system/repo/mcp/apt_mirantis/aptly.yml
+++ b/linux/system/repo/mcp/apt_mirantis/aptly.yml
@@ -6,11 +6,8 @@
     system:
       repo:
         mcp_aptly:
-          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/aptly/ ${_param:linux_system_repo_mcp_aptly_version} main"
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_aptly_version}/aptly/${_param:linux_system_codename}/ squeeze main"
           architectures: amd64
-          key_url: "http://apt.mirantis.com/public.gpg"
+          key_id: 9E3E53F19C7DE460
+          key_server: keys.gnupg.net
           clean_file: true
-          pin:
-          - pin: 'release a=${_param:linux_system_repo_mcp_aptly_version}'
-            priority: 1100
-            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/cassandra.yml b/linux/system/repo/mcp/apt_mirantis/cassandra.yml
index 308f555..8bf3583 100644
--- a/linux/system/repo/mcp/apt_mirantis/cassandra.yml
+++ b/linux/system/repo/mcp/apt_mirantis/cassandra.yml
@@ -7,11 +7,8 @@
     system:
       repo:
         mcp_cassandra:
-          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/cassandra/ ${_param:linux_system_repo_mcp_cassandra_version} ${_param:linux_system_repo_mcp_cassandra_version_number}"
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_cassandra_version}/cassandra/${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_cassandra_version_number} main"
           architectures: amd64
-          key_url: "http://apt.mirantis.com/public.gpg"
+          key_id: F8358FA2F2833C93
+          key_server: keyserver.ubuntu.com
           clean_file: true
-          pin:
-          - pin: 'release a=${_param:linux_system_repo_mcp_cassandra_version}'
-            priority: 1100
-            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/ceph.yml b/linux/system/repo/mcp/apt_mirantis/ceph.yml
index 2532f86..40c8d87 100644
--- a/linux/system/repo/mcp/apt_mirantis/ceph.yml
+++ b/linux/system/repo/mcp/apt_mirantis/ceph.yml
@@ -7,11 +7,11 @@
     system:
       repo:
         mcp_ceph:
-          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/ceph/ ${_param:linux_system_repo_mcp_ceph_version} ${_param:linux_system_repo_mcp_ceph_codename}"
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_ceph_version} ceph-${_param:linux_system_repo_mcp_ceph_codename}"
           architectures: amd64
           key_url: "http://apt.mirantis.com/public.gpg"
           clean_file: true
           pin:
           - pin: 'release a=${_param:linux_system_repo_mcp_ceph_version}'
             priority: 1100
-            package: '*'
\ No newline at end of file
+            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/docker.yml b/linux/system/repo/mcp/apt_mirantis/docker.yml
index cbd3097..d3314a9 100644
--- a/linux/system/repo/mcp/apt_mirantis/docker.yml
+++ b/linux/system/repo/mcp/apt_mirantis/docker.yml
@@ -6,11 +6,8 @@
     system:
       repo:
         mcp_docker:
-          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/docker/ ${_param:linux_system_repo_mcp_docker_version} stable"
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_docker_version}/docker/${_param:linux_system_codename}/ ${_param:linux_system_codename} stable"
           architectures: amd64
-          key_url: "http://apt.mirantis.com/public.gpg"
-          clean_file: true
-          pin:
-          - pin: 'release a=${_param:linux_system_repo_mcp_docker_version}'
-            priority: 1100
-            package: '*'
+          key_id: 8D81803C0EBFCD88
+          key_server: keyserver.ubuntu.com
+          clean_file: true
\ No newline at end of file
diff --git a/linux/system/repo/mcp/apt_mirantis/docker_legacy.yml b/linux/system/repo/mcp/apt_mirantis/docker_legacy.yml
index cf49630..2689869 100644
--- a/linux/system/repo/mcp/apt_mirantis/docker_legacy.yml
+++ b/linux/system/repo/mcp/apt_mirantis/docker_legacy.yml
@@ -6,7 +6,7 @@
     system:
       repo:
         mcp_docker_legacy:
-          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_docker_legacy_version}/docker-1.x/ ubuntu-${_param:linux_system_codename} main"
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_docker_legacy_version}/docker-1.x/${_param:linux_system_codename}/ ubuntu-${_param:linux_system_codename} main"
           architectures: amd64
           key_id: 58118E89F3A912897C070ADBF76221572C52609D
           key_server: keyserver.ubuntu.com
\ No newline at end of file
diff --git a/linux/system/repo/mcp/apt_mirantis/elastic/2x.yml b/linux/system/repo/mcp/apt_mirantis/elastic/2x.yml
index 4add81e..1db8267 100644
--- a/linux/system/repo/mcp/apt_mirantis/elastic/2x.yml
+++ b/linux/system/repo/mcp/apt_mirantis/elastic/2x.yml
@@ -6,11 +6,8 @@
     system:
       repo:
         mcp_elastic_2x:
-          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/elastic/2.x/ ${_param:linux_system_repo_mcp_elastic_2x_version} main"
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_elastic_2x_version}/elasticsearch-2.x/${_param:linux_system_codename}/ stable main"
           architectures: amd64
-          key_url: "http://apt.mirantis.com/public.gpg"
+          key_id: D88E42B4
+          key_server: keyserver.ubuntu.com
           clean_file: true
-          pin:
-          - pin: 'release a=${_param:linux_system_repo_mcp_elastic_2x_version}'
-            priority: 1100
-            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/elastic/5x.yml b/linux/system/repo/mcp/apt_mirantis/elastic/5x.yml
index 8876c51..453b3bc 100644
--- a/linux/system/repo/mcp/apt_mirantis/elastic/5x.yml
+++ b/linux/system/repo/mcp/apt_mirantis/elastic/5x.yml
@@ -6,11 +6,8 @@
     system:
       repo:
         mcp_elastic_5x:
-          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/elastic/5.x/ ${_param:linux_system_repo_mcp_elastic_5x_version} main"
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_elastic_5x_version}/elasticsearch-5.x/${_param:linux_system_codename}/ stable main"
           architectures: amd64
-          key_url: "http://apt.mirantis.com/public.gpg"
+          key_id: D88E42B4
+          key_server: keyserver.ubuntu.com
           clean_file: true
-          pin:
-          - pin: 'release a=${_param:linux_system_repo_mcp_elastic_5x_version}'
-            priority: 1100
-            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/fluentd.yml b/linux/system/repo/mcp/apt_mirantis/fluentd.yml
index da7d3ca..58df85f 100644
--- a/linux/system/repo/mcp/apt_mirantis/fluentd.yml
+++ b/linux/system/repo/mcp/apt_mirantis/fluentd.yml
@@ -6,11 +6,8 @@
     system:
       repo:
         mcp_fluentd:
-          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/fluentd/ ${_param:linux_system_repo_mcp_fluentd_version} main"
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_fluentd_version}/td-agent/${_param:linux_system_codename} ${_param:linux_system_codename} contrib"
           architectures: amd64
-          key_url: "http://apt.mirantis.com/public.gpg"
+          key_id: 901F9177AB97ACBE
+          key_server: keyserver.ubuntu.com
           clean_file: true
-          pin:
-          - pin: 'release a=${_param:linux_system_repo_mcp_fluentd_version}'
-            priority: 1100
-            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/glusterfs.yml b/linux/system/repo/mcp/apt_mirantis/glusterfs.yml
index 1f5dd0e..02f2fd9 100644
--- a/linux/system/repo/mcp/apt_mirantis/glusterfs.yml
+++ b/linux/system/repo/mcp/apt_mirantis/glusterfs.yml
@@ -2,16 +2,13 @@
   _param:
     apt_mk_version: stable
     linux_system_repo_mcp_glusterfs_version: ${_param:apt_mk_version}
-    linux_system_repo_mcp_glusterfs_version_number: "3.12"
+    linux_system_repo_mcp_glusterfs_version_number: "3.8"
   linux:
     system:
       repo:
         mcp_glusterfs:
-          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/glusterfs/ ${_param:linux_system_repo_mcp_glusterfs_version} ${_param:linux_system_repo_mcp_glusterfs_version_number}"
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_glusterfs_version}/glusterfs-${_param:linux_system_repo_mcp_glusterfs_version_number}/${_param:linux_system_codename}/ ${_param:linux_system_codename} main"
           architectures: amd64
-          key_url: "http://apt.mirantis.com/public.gpg"
+          key_id: 3FE869A9
+          key_server: keyserver.ubuntu.com
           clean_file: true
-          pin:
-          - pin: 'release a=${_param:linux_system_repo_mcp_glusterfs_version}'
-            priority: 1100
-            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/grafana.yml b/linux/system/repo/mcp/apt_mirantis/grafana.yml
index 2d71740..5bf9396 100644
--- a/linux/system/repo/mcp/apt_mirantis/grafana.yml
+++ b/linux/system/repo/mcp/apt_mirantis/grafana.yml
@@ -6,11 +6,8 @@
     system:
       repo:
         mcp_grafana:
-          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/grafana/ ${_param:linux_system_repo_mcp_grafana_version} main"
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_grafana_version}/grafana/${_param:linux_system_codename}/ jessie main"
           architectures: amd64
-          key_url: "http://apt.mirantis.com/public.gpg"
+          key_id: C2E73424D59097AB
+          key_server: keyserver.ubuntu.com
           clean_file: true
-          pin:
-          - pin: 'release a=${_param:linux_system_repo_mcp_grafana_version}'
-            priority: 1100
-            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/influxdb.yml b/linux/system/repo/mcp/apt_mirantis/influxdb.yml
index f3c1fec..e6ebcb3 100644
--- a/linux/system/repo/mcp/apt_mirantis/influxdb.yml
+++ b/linux/system/repo/mcp/apt_mirantis/influxdb.yml
@@ -6,11 +6,8 @@
     system:
       repo:
         mcp_influxdb:
-          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/influxdb/ ${_param:linux_system_repo_mcp_influxdb_version} main"
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_influxdb_version}/influxdb/${_param:linux_system_codename}/ ${_param:linux_system_codename} stable"
           architectures: amd64
-          key_url: "http://apt.mirantis.com/public.gpg"
+          key_id: 684A14CF2582E0C5
+          key_server: keyserver.ubuntu.com
           clean_file: true
-          pin:
-          - pin: 'release a=${_param:linux_system_repo_mcp_influxdb_version}'
-            priority: 1100
-            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/kibana/46.yml b/linux/system/repo/mcp/apt_mirantis/kibana/46.yml
index f3795ad..21ab878 100644
--- a/linux/system/repo/mcp/apt_mirantis/kibana/46.yml
+++ b/linux/system/repo/mcp/apt_mirantis/kibana/46.yml
@@ -6,11 +6,8 @@
     system:
       repo:
         mcp_kibana_46:
-          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/kibana/4.6/ ${_param:linux_system_repo_mcp_kibana_46_version} kibana-46"
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_kibana_46_version}/kibana-4.6/${_param:linux_system_codename}/ stable main"
           architectures: amd64
-          key_url: "http://apt.mirantis.com/public.gpg"
+          key_id: D88E42B4
+          key_server: keyserver.ubuntu.com
           clean_file: true
-          pin:
-          - pin: 'release a=${_param:linux_system_repo_mcp_kibana_46_version}'
-            priority: 1100
-            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/kibana/5x.yml b/linux/system/repo/mcp/apt_mirantis/kibana/5x.yml
index e2f4795..3c3d128 100644
--- a/linux/system/repo/mcp/apt_mirantis/kibana/5x.yml
+++ b/linux/system/repo/mcp/apt_mirantis/kibana/5x.yml
@@ -6,11 +6,8 @@
     system:
       repo:
         mcp_kibana_5x:
-          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/kibana/5.x/ ${_param:linux_system_repo_mcp_kibana_5x_version} kibana-5x"
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_kibana_5x_version}/elasticsearch-5.x/${_param:linux_system_codename}/ stable main"
           architectures: amd64
-          key_url: "http://apt.mirantis.com/public.gpg"
+          key_id: D88E42B4
+          key_server: keyserver.ubuntu.com
           clean_file: true
-          pin:
-          - pin: 'release a=${_param:linux_system_repo_mcp_kibana_5x_version}'
-            priority: 1100
-            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/maas.yml b/linux/system/repo/mcp/apt_mirantis/maas.yml
index b18bf65..7ee3537 100644
--- a/linux/system/repo/mcp/apt_mirantis/maas.yml
+++ b/linux/system/repo/mcp/apt_mirantis/maas.yml
@@ -6,11 +6,8 @@
     system:
       repo:
         mcp_maas:
-          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/maas/ ${_param:linux_system_repo_mcp_maas_version} main"
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_maas_version}/maas/${_param:linux_system_codename}/ ${_param:linux_system_codename} main"
           architectures: amd64
-          key_url: "http://apt.mirantis.com/public.gpg"
+          key_id: 684D4A1C
+          key_server: keyserver.ubuntu.com
           clean_file: true
-          pin:
-          - pin: 'release a=${_param:linux_system_repo_mcp_maas_version}'
-            priority: 1100
-            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/saltstack_2016_3.yml b/linux/system/repo/mcp/apt_mirantis/saltstack_2016_3.yml
index bec95cd..c47e177 100644
--- a/linux/system/repo/mcp/apt_mirantis/saltstack_2016_3.yml
+++ b/linux/system/repo/mcp/apt_mirantis/saltstack_2016_3.yml
@@ -6,11 +6,8 @@
     system:
       repo:
         mcp_saltstack:
-          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/salt/2016.3/ ${_param:linux_system_repo_mcp_saltstack_version} main"
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_saltstack_version}/saltstack-2016.3/${_param:linux_system_codename}/ ${_param:linux_system_codename} main"
           architectures: amd64
-          key_url: "http://apt.mirantis.com/public.gpg"
+          key_id: 0E08A149DE57BFBE
+          key_server: keyserver.ubuntu.com
           clean_file: true
-          pin:
-          - pin: 'release a=${_param:linux_system_repo_mcp_saltstack_version}'
-            priority: 1100
-            package: '*'
\ No newline at end of file
diff --git a/linux/system/repo/mcp/apt_mirantis/sensu.yml b/linux/system/repo/mcp/apt_mirantis/sensu.yml
index f86b88a..fb1045f 100644
--- a/linux/system/repo/mcp/apt_mirantis/sensu.yml
+++ b/linux/system/repo/mcp/apt_mirantis/sensu.yml
@@ -1,16 +1,13 @@
 parameters:
   _param:
     apt_mk_version: stable
-    linux_system_repo_mcp_extra_version: ${_param:apt_mk_version}
+    linux_system_repo_mcp_sensu_version: ${_param:apt_mk_version}
   linux:
     system:
       repo:
-        mcp_extra:
-          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/sensu/ ${_param:linux_system_repo_mcp_extra_version} main"
+        mcp_sensu:
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_sensu_version}/sensu/${_param:linux_system_codename}/ sensu main"
           architectures: amd64
-          key_url: "http://apt.mirantis.com/public.gpg"
+          key_id: A20F259AEB9C94BB
+          key_server: keyserver.ubuntu.com
           clean_file: true
-          pin:
-          - pin: 'release a=${_param:linux_system_repo_mcp_extra_version}'
-            priority: 1100
-            package: '*'
diff --git a/linux/system/repo/mcp/updates.yml b/linux/system/repo/mcp/updates.yml
new file mode 100644
index 0000000..6d08b19
--- /dev/null
+++ b/linux/system/repo/mcp/updates.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_updates_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_updates:
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_updates_version} updates"
+          architectures: amd64
+          key_url: "http://apt.mirantis.com/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_updates_version}'
+            priority: 1200
+            package: '*'
diff --git a/linux/system/repo_local/mcp/apt_mirantis/fluentd.yml b/linux/system/repo_local/mcp/apt_mirantis/fluentd.yml
index 40682d7..d0a1671 100644
--- a/linux/system/repo_local/mcp/apt_mirantis/fluentd.yml
+++ b/linux/system/repo_local/mcp/apt_mirantis/fluentd.yml
@@ -6,7 +6,7 @@
     system:
       repo:
         mcp_fluentd:
-          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/fluentd/ ${_param:linux_system_repo_mcp_fluentd_version} main"
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/fluentd ${_param:apt_mk_version} contrib"
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           clean_file: true
diff --git a/linux/system/repo_local/mcp/apt_mirantis/glusterfs.yml b/linux/system/repo_local/mcp/apt_mirantis/glusterfs.yml
index ca7e1bd..cb3444b 100644
--- a/linux/system/repo_local/mcp/apt_mirantis/glusterfs.yml
+++ b/linux/system/repo_local/mcp/apt_mirantis/glusterfs.yml
@@ -2,7 +2,7 @@
   _param:
     apt_mk_version: stable
     linux_system_repo_mcp_glusterfs_version: ${_param:apt_mk_version}
-    linux_system_repo_mcp_glusterfs_version_number: "3.12"
+    linux_system_repo_mcp_glusterfs_version_number: "3.8"
   linux:
     system:
       repo:
diff --git a/linux/system/repo_local/mcp/updates.yml b/linux/system/repo_local/mcp/updates.yml
new file mode 100644
index 0000000..f7f22d1
--- /dev/null
+++ b/linux/system/repo_local/mcp/updates.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_updates_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_updates:
+          refresh_db: ${_param:linux_repo_refresh_db}
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_updates_version} updates"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_updates_version}'
+            priority: 1200
+            package: '*'
diff --git a/linux/system/single/debian.yml b/linux/system/single/debian.yml
index b6d0b2b..b4d08c9 100644
--- a/linux/system/single/debian.yml
+++ b/linux/system/single/debian.yml
@@ -6,5 +6,31 @@
   linux:
     system:
       package:
+        apt-transport-https:
+          version: latest
+        cloud-init:
+          version: purged
+        mcelog:
+          version: latest
         python-msgpack:
           version: latest
+        unattended-upgrades:
+          version: purged
+      apt:
+        config:
+          compression-workaround:
+            "Acquire::CompressionTypes::Order": "gz"
+          aws-s3-mirrors-workaround:
+            "Acquire::http::Pipeline-Depth": "0"
+          dont_install_recommends:
+            "APT::Install-Recommends": "false"
+          dont_install_suggests:
+            "APT::Install-Suggests": "false"
+          dont_acquire_all_languages:
+            "Acquire::Languages": "none"
+          dont_update_package_list:
+            "APT::Periodic::Update-Package-Lists": "0"
+          dont_update_download_upg_packages:
+            "APT::Periodic::Download-Upgradeable-Packages": "0"
+          disable_unattended_upgrade:
+            "APT::Periodic::Unattended-Upgrade": "0"
diff --git a/linux/system/single/init.yml b/linux/system/single/init.yml
index 70eae66..dae70ff 100644
--- a/linux/system/single/init.yml
+++ b/linux/system/single/init.yml
@@ -14,19 +14,6 @@
           enabled: true
           name: root
           home: /root
-      package:
-        cloud-init:
-          version: purged
-        unattended-upgrades:
-          version: purged
-        mcelog:
-          version: latest
-      apt:
-        config:
-          compression-workaround:
-            "Acquire::CompressionTypes::Order": "gz"
-          aws-s3-mirrors-workaround:
-            "Acquire::http::Pipeline-Depth": "0"
       kernel:
         modules:
           - nf_conntrack
diff --git a/manila/common/cluster.yml b/manila/common/cluster.yml
new file mode 100644
index 0000000..8763903
--- /dev/null
+++ b/manila/common/cluster.yml
@@ -0,0 +1,34 @@
+classes:
+ - service.manila.common.cluster
+ - service.haproxy.proxy.single
+ - system.haproxy.proxy.listen.openstack.manila
+parameters:
+  manila:
+    common:
+      version: ${_param:openstack_version}
+      message_queue:
+        engine: rabbitmq
+        port: 5672
+        user: openstack
+        password: ${_param:rabbitmq_openstack_password}
+        virtual_host: '/openstack'
+        host: ${_param:openstack_message_queue_address}
+      database:
+        engine: mysql
+        host: ${_param:openstack_database_address}
+        port: 3306
+        name: manila
+        user: manila
+        password: ${_param:mysql_manila_password}
+      identity:
+        engine: keystone
+        region: RegionOne
+        host: ${_param:cluster_vip_address}
+        port: 35357
+        user: manila
+        password: ${_param:keystone_manila_password}
+        tenant: service
+        auth_type: password
+        user_domain_id: default
+        project_domain_id: default
+        protocol: 'http'
diff --git a/manila/common/single.yml b/manila/common/single.yml
new file mode 100644
index 0000000..362338f
--- /dev/null
+++ b/manila/common/single.yml
@@ -0,0 +1,32 @@
+classes:
+ - service.manila.common.single
+parameters:
+  manila:
+    common:
+      version: ${_param:openstack_version}
+      message_queue:
+        engine: rabbitmq
+        port: 5672
+        user: openstack
+        password: ${_param:rabbitmq_openstack_password}
+        virtual_host: '/openstack'
+        host: ${_param:single_address}
+      database:
+        engine: mysql
+        host: ${_param:single_address}
+        port: 3306
+        name: manila
+        user: manila
+        password: ${_param:mysql_manila_password}
+      identity:
+        engine: keystone
+        region: RegionOne
+        host: ${_param:single_address}
+        port: 35357
+        user: manila
+        password: ${_param:keystone_manila_password}
+        tenant: service
+        auth_type: password
+        user_domain_id: default
+        project_domain_id: default
+        protocol: 'http'
diff --git a/manila/control/cluster.yml b/manila/control/cluster.yml
new file mode 100644
index 0000000..ff6ca10
--- /dev/null
+++ b/manila/control/cluster.yml
@@ -0,0 +1,15 @@
+classes:
+ - system.manila.common.cluster
+ - system.apache.server.site.manila
+ - system.haproxy.proxy.listen.openstack.manila
+parameters:
+  manila:
+    common:
+      dhss: false
+      version: ${_param:openstack_version}
+    api:
+      enabled: true
+      version: ${_param:openstack_version}
+    scheduler:
+      enabled: true
+      version: ${_param:openstack_version}
diff --git a/manila/control/single.yml b/manila/control/single.yml
new file mode 100644
index 0000000..3e14e96
--- /dev/null
+++ b/manila/control/single.yml
@@ -0,0 +1,14 @@
+classes:
+ - system.manila.common.cluster
+ - system.apache.server.site.manila
+parameters:
+  manila:
+    common:
+      dhss: false
+      version: ${_param:openstack_version}
+    api:
+      enabled: true
+      version: ${_param:openstack_version}
+    scheduler:
+      enabled: true
+      version: ${_param:openstack_version}
diff --git a/manila/share/backend/lvm.yml b/manila/share/backend/lvm.yml
new file mode 100644
index 0000000..4dd589b
--- /dev/null
+++ b/manila/share/backend/lvm.yml
@@ -0,0 +1,22 @@
+parameters:
+  _param:
+    manila_share_address: ${_param:single_address}
+  linux:
+    storage:
+      lvm:
+        manila-vg:
+          enabled: true
+          name: manila-volume
+          devices: ${_param:manila_lvm_devices}
+  manila:
+    share:
+      enabled_share_backends:
+        lvm:
+          name: lvm
+          type: lvm
+          enabled: true
+          lvm_share_export_ips:
+            - "${_param:manila_share_address}"
+          dhss: false
+          share_driver: manila.share.drivers.lvm.LVMShareDriver
+          lvm_share_volume_group: manila-volume
diff --git a/manila/share/init.yml b/manila/share/init.yml
new file mode 100644
index 0000000..af85c0d
--- /dev/null
+++ b/manila/share/init.yml
@@ -0,0 +1,10 @@
+classes:
+ - system.manila.common.cluster
+parameters:
+  manila:
+    common:
+      dhss: false
+      version: ${_param:openstack_version}
+    share:
+      enabled: true
+      version: ${_param:openstack_version}
diff --git a/mongodb/server/cluster.yml b/mongodb/server/cluster.yml
index f3c16d6..02294c4 100644
--- a/mongodb/server/cluster.yml
+++ b/mongodb/server/cluster.yml
@@ -2,10 +2,13 @@
 - service.mongodb.server.cluster
 parameters:
   _param:
+    openstack_telemetry_node01_hostname: mdb01
+    openstack_telemetry_node02_hostname: mdb02
+    openstack_telemetry_node03_hostname: mdb03
     mongodb_server_replica_set: mongodb
-    mongodb_master: mdb01
+    mongodb_master: ${_param:openstack_telemetry_node01_hostname}
     mongodb_server_members:
-    - host: mdb01
+    - host: ${_param:openstack_telemetry_node01_hostname}
       priority: 2
-    - host: mdb02
-    - host: mdb03
+    - host: ${_param:openstack_telemetry_node02_hostname}
+    - host: ${_param:openstack_telemetry_node03_hostname}
diff --git a/neutron/client/service/manila.yml b/neutron/client/service/manila.yml
new file mode 100644
index 0000000..cdbc7bb
--- /dev/null
+++ b/neutron/client/service/manila.yml
@@ -0,0 +1,21 @@
+classes:
+- service.neutron.client
+parameters:
+  neutron:
+    client:
+      server:
+        admin_identity:
+          endpoint_type: internalURL
+          network:
+            manila-share-network:
+              tenant: admin
+              shared: false
+              admin_state_up: True
+              port_security_enabled: false
+              subnet:
+                manila-share-subnet:
+                  cidr: ${_param:openstack_manila_share_neutron_subnet_cidr}
+                  allocation_pools:
+                    - start: ${_param:openstack_manila_share_neutron_subnet_allocation_start}
+                      end: ${_param:openstack_manila_share_neutron_subnet_allocation_end}
+                  enable_dhcp: true
diff --git a/neutron/compute/cluster.yml b/neutron/compute/cluster.yml
index 13ee31c..e348a93 100644
--- a/neutron/compute/cluster.yml
+++ b/neutron/compute/cluster.yml
@@ -4,6 +4,8 @@
   _param:
     neutron_enable_qos: False
     neutron_enable_vlan_aware_vms: False
+    neutron_enable_bgp_vpn: False
+    neutron_bgp_vpn_driver: bagpipe
   linux:
     system:
       package:
@@ -15,6 +17,9 @@
       dvr: ${_param:neutron_compute_dvr}
       qos: ${_param:neutron_enable_qos}
       vlan_aware_vms: ${_param:neutron_enable_vlan_aware_vms}
+      bgp_vpn:
+        enabled: ${_param:neutron_enable_bgp_vpn}
+        driver: ${_param:neutron_bgp_vpn_driver}
       agent_mode: ${_param:neutron_compute_agent_mode}
       external_access: ${_param:neutron_compute_external_access}
       backend:
diff --git a/neutron/control/cluster.yml b/neutron/control/cluster.yml
index ea9596d..166de3a 100644
--- a/neutron/control/cluster.yml
+++ b/neutron/control/cluster.yml
@@ -5,6 +5,8 @@
 - system.haproxy.proxy.listen.openstack.neutron
 - system.galera.server.database.neutron
 parameters:
+  _param:
+    cluster_internal_protocol: 'http'
   linux:
     system:
       package:
@@ -36,3 +38,5 @@
   neutron:
     server:
       plugin: contrail
+    identity:
+      protocol: ${_param:cluster_internal_protocol}
diff --git a/neutron/control/opendaylight/cluster.yml b/neutron/control/opendaylight/cluster.yml
new file mode 100644
index 0000000..7a62e8b
--- /dev/null
+++ b/neutron/control/opendaylight/cluster.yml
@@ -0,0 +1,23 @@
+classes:
+- service.keepalived.cluster.single
+- service.haproxy.proxy.single
+- service.neutron.control.cluster
+- system.neutron.control.openvswitch.cluster
+parameters:
+  _param:
+    opendaylight_router: odl-router_v2
+    opendaylight_driver: opendaylight_v2
+  neutron:
+    server:
+      backend:
+        opendaylight: true
+        host: ${_param:opendaylight_service_host}
+        rest_api_port: 8282
+        user: admin
+        password: admin
+        ovsdb_connection: tcp:127.0.0.1:6639
+        router: ${_param:opendaylight_router}
+        enable_websocket: true
+        mechanism:
+          ovs:
+            driver: ${_param:opendaylight_driver}
diff --git a/neutron/control/opendaylight/single.yml b/neutron/control/opendaylight/single.yml
new file mode 100644
index 0000000..e0c3ea9
--- /dev/null
+++ b/neutron/control/opendaylight/single.yml
@@ -0,0 +1,21 @@
+classes:
+- service.neutron.control.single
+- system.neutron.control.openvswitch.single
+parameters:
+  _param:
+    opendaylight_router: odl-router_v2
+    opendaylight_driver: opendaylight_v2
+  neutron:
+    server:
+      backend:
+        opendaylight: true
+        host: ${_param:opendaylight_service_host}
+        rest_api_port: 8282
+        user: admin
+        password: admin
+        ovsdb_connection: tcp:127.0.0.1:6639
+        router: ${_param:opendaylight_router}
+        enable_websocket: true
+        mechanism:
+          ovs:
+            driver: ${_param:opendaylight_driver}
diff --git a/neutron/control/openvswitch/cluster.yml b/neutron/control/openvswitch/cluster.yml
index 80489c8..3f80a55 100644
--- a/neutron/control/openvswitch/cluster.yml
+++ b/neutron/control/openvswitch/cluster.yml
@@ -12,6 +12,9 @@
     neutron_tenant_network_types: "flat,vxlan"
     neutron_enable_qos: False
     neutron_enable_vlan_aware_vms: False
+    neutron_enable_bgp_vpn: False
+    neutron_bgp_vpn_driver: bagpipe
+    cluster_internal_protocol: 'http'
   neutron:
     server:
       global_physnet_mtu: ${_param:neutron_global_physnet_mtu}
@@ -19,6 +22,9 @@
       dvr: ${_param:neutron_control_dvr}
       qos: ${_param:neutron_enable_qos}
       vlan_aware_vms: ${_param:neutron_enable_vlan_aware_vms}
+      bgp_vpn:
+        enabled: ${_param:neutron_enable_bgp_vpn}
+        driver: ${_param:neutron_bgp_vpn_driver}
       backend:
         engine: ml2
         tenant_network_types: "${_param:neutron_tenant_network_types}"
@@ -32,6 +38,7 @@
         host: ${_param:openstack_database_address}
       identity:
         region: ${_param:openstack_region}
+        protocol: ${_param:cluster_internal_protocol}
       message_queue:
         members:
           - host: ${_param:openstack_message_queue_node01_address}
diff --git a/neutron/control/openvswitch/single.yml b/neutron/control/openvswitch/single.yml
index 009c116..baa710e 100644
--- a/neutron/control/openvswitch/single.yml
+++ b/neutron/control/openvswitch/single.yml
@@ -10,6 +10,9 @@
     neutron_tenant_network_types: "flat,vxlan"
     neutron_enable_qos: False
     neutron_enable_vlan_aware_vms: False
+    neutron_enable_bgp_vpn: False
+    neutron_bgp_vpn_driver: bagpipe
+    internal_protocol: 'http'
   neutron:
     server:
       global_physnet_mtu: ${_param:neutron_global_physnet_mtu}
@@ -17,6 +20,9 @@
       dvr: ${_param:neutron_control_dvr}
       qos: ${_param:neutron_enable_qos}
       vlan_aware_vms: ${_param:neutron_enable_vlan_aware_vms}
+      bgp_vpn:
+        enabled: ${_param:neutron_enable_bgp_vpn}
+        driver: ${_param:neutron_bgp_vpn_driver}
       backend:
         engine: ml2
         tenant_network_types: "${_param:neutron_tenant_network_types}"
@@ -30,6 +36,7 @@
         host: ${_param:openstack_database_address}
       identity:
         region: ${_param:openstack_region}
+        protocol: ${_param:internal_protocol}
       message_queue:
         members:
           - host: ${_param:openstack_message_queue_node01_address}
diff --git a/neutron/control/single.yml b/neutron/control/single.yml
index 7f02325..067b4df 100644
--- a/neutron/control/single.yml
+++ b/neutron/control/single.yml
@@ -2,6 +2,8 @@
 - service.neutron.control.single
 - system.galera.server.database.neutron
 parameters:
+  _param:
+    internal_protocol: 'http'
   linux:
     system:
       package:
@@ -12,3 +14,5 @@
     server:
       database:
         host: ${_param:single_address}
+      identity:
+        protocol: ${_param:internal_protocol}
diff --git a/nginx/server/proxy/openstack/aodh.yml b/nginx/server/proxy/openstack/aodh.yml
index bfdb4d6..bd73165 100644
--- a/nginx/server/proxy/openstack/aodh.yml
+++ b/nginx/server/proxy/openstack/aodh.yml
@@ -1,6 +1,8 @@
 parameters:
   _param:
     nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_aodh_host: ${_param:aodh_service_host}
   nginx:
     server:
       enabled: true
@@ -11,10 +13,11 @@
           name: openstack_api_aodh
           check: false
           proxy:
-            host: ${_param:aodh_service_host}
+            host: ${_param:nginx_proxy_openstack_aodh_host}
             port: 8042
             protocol: http
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8042
+            address: ${_param:nginx_proxy_openstack_api_address}
           ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/ceilometer.yml b/nginx/server/proxy/openstack/ceilometer.yml
index 57315fe..938b6cf 100644
--- a/nginx/server/proxy/openstack/ceilometer.yml
+++ b/nginx/server/proxy/openstack/ceilometer.yml
@@ -1,6 +1,8 @@
 parameters:
   _param:
     nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_ceilometer_host: ${_param:ceilometer_service_host}
   nginx:
     server:
       enabled: true
@@ -11,10 +13,11 @@
           name: openstack_api_ceilometer
           check: false
           proxy:
-            host: ${_param:ceilometer_service_host}
+            host: ${_param:nginx_proxy_openstack_ceilometer_host}
             port: 8777
             protocol: http
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8777
+            address: ${_param:nginx_proxy_openstack_api_address}
           ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/gnocchi.yml b/nginx/server/proxy/openstack/gnocchi.yml
new file mode 100644
index 0000000..2f6d0e5
--- /dev/null
+++ b/nginx/server/proxy/openstack/gnocchi.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_gnocchi_host: ${_param:gnocchi_service_host}
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_gnocchi:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_gnocchi
+          check: false
+          proxy:
+            host: ${_param:nginx_proxy_openstack_gnocchi_host}
+            port: 8041
+            protocol: http
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8041
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/ironic.yml b/nginx/server/proxy/openstack/ironic.yml
new file mode 100644
index 0000000..95eb1bd
--- /dev/null
+++ b/nginx/server/proxy/openstack/ironic.yml
@@ -0,0 +1,22 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_ironic_host: ${_param:ironic_service_host}
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_ironic:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_ironic
+          proxy:
+            host: ${_param:nginx_proxy_openstack_ironic_host}
+            port: 6385
+            protocol: http
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 6385
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/manila.yml b/nginx/server/proxy/openstack/manila.yml
new file mode 100644
index 0000000..050d0de
--- /dev/null
+++ b/nginx/server/proxy/openstack/manila.yml
@@ -0,0 +1,22 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_manila_host: ${_param:manila_service_host}
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_manila:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_manila
+          proxy:
+            host: ${_param:nginx_proxy_openstack_manila_host}
+            port: 8786
+            protocol: http
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8786
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/panko.yml b/nginx/server/proxy/openstack/panko.yml
new file mode 100644
index 0000000..6081dd1
--- /dev/null
+++ b/nginx/server/proxy/openstack/panko.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_panko_host: ${_param:panko_service_host}
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_panko:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_panko
+          check: false
+          proxy:
+            host: ${_param:nginx_proxy_openstack_panko_host}
+            port: 8977
+            protocol: http
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8977
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nova/compute/cluster.yml b/nova/compute/cluster.yml
index 5d0e6a1..f32fffd 100644
--- a/nova/compute/cluster.yml
+++ b/nova/compute/cluster.yml
@@ -35,6 +35,7 @@
       7xDyBz85icFU0rceYQetwFH2p5tRL0GcUQhJmJFgIL0OXdCQvRNJrT3iS00N1aUo
       SG9MrLHCd5l60aCUQg0UA5ed7Hd6SA314k+HwxJno9/wJ+voBeacMg==
       -----END RSA PRIVATE KEY-----
+    cluster_internal_protocol: 'http'
   openssh:
     client:
       enabled: True
@@ -68,6 +69,7 @@
         user: nova
         password: ${_param:keystone_nova_password}
         tenant: service
+        protocol: ${_param:cluster_internal_protocol}
       message_queue:
         engine: rabbitmq
         port: 5672
@@ -82,6 +84,7 @@
         engine: glance
         host: ${_param:cluster_vip_address}
         port: 9292
+        protocol: ${_param:cluster_internal_protocol}
       network:
         engine: neutron
         region: ${_param:openstack_region}
@@ -90,6 +93,7 @@
         user: neutron
         tenant: service
         password: ${_param:keystone_neutron_password}
+        protocol: ${_param:cluster_internal_protocol}
       user:
         public_key: ${_param:nova_compute_ssh_public}
         private_key: ${_param:nova_compute_ssh_private}
diff --git a/nova/compute/single.yml b/nova/compute/single.yml
index b915145..483a1d3 100644
--- a/nova/compute/single.yml
+++ b/nova/compute/single.yml
@@ -35,6 +35,7 @@
       7xDyBz85icFU0rceYQetwFH2p5tRL0GcUQhJmJFgIL0OXdCQvRNJrT3iS00N1aUo
       SG9MrLHCd5l60aCUQg0UA5ed7Hd6SA314k+HwxJno9/wJ+voBeacMg==
       -----END RSA PRIVATE KEY-----
+    cluster_internal_protocol: 'http'
   openssh:
     client:
       enabled: True
@@ -66,6 +67,7 @@
         user: nova
         password: ${_param:keystone_nova_password}
         tenant: service
+        protocol: ${_param:cluster_internal_protocol}
       message_queue:
         engine: rabbitmq
         host: ${_param:control_address}
@@ -77,10 +79,12 @@
         engine: glance
         host: ${_param:control_address}
         port: 9292
+        protocol: ${_param:cluster_internal_protocol}
       network:
         engine: neutron
         host: ${_param:control_address}
         port: 9696
+        protocol: ${_param:cluster_internal_protocol}
       cache:
         engine: memcached
         members:
diff --git a/nova/compute_ironic/cluster.yml b/nova/compute_ironic/cluster.yml
index 2526373..885a869 100644
--- a/nova/compute_ironic/cluster.yml
+++ b/nova/compute_ironic/cluster.yml
@@ -1,6 +1,8 @@
 classes:
 - service.nova.compute.ironic
 parameters:
+  _param:
+    cluster_internal_protocol: 'http'
   nova:
     compute:
       version: ${_param:nova_version}
@@ -23,6 +25,7 @@
         user: nova
         password: ${_param:keystone_nova_password}
         tenant: service
+        protocol: ${_param:cluster_internal_protocol}
       message_queue:
         engine: rabbitmq
         port: 5672
@@ -41,6 +44,9 @@
         user: neutron
         tenant: service
         password: ${_param:keystone_neutron_password}
+        protocol: ${_param:cluster_internal_protocol}
+      glance:
+        protocol: ${_param:cluster_internal_protocol}
       ironic:
         region: ${_param:openstack_region}
         host: ${_param:ironic_service_host}
@@ -51,3 +57,4 @@
         auth_type: password
         project_domain_name: Default
         user_domain_name: Default
+        protocol: ${_param:cluster_internal_protocol}
diff --git a/nova/compute_ironic/single.yml b/nova/compute_ironic/single.yml
index 5c19023..69025d3 100644
--- a/nova/compute_ironic/single.yml
+++ b/nova/compute_ironic/single.yml
@@ -1,6 +1,8 @@
 classes:
 - service.nova.compute.ironic
 parameters:
+  _param:
+    cluster_internal_protocol: 'http'
   nova:
     compute:
       version: ${_param:nova_version}
@@ -23,6 +25,7 @@
         user: nova
         password: ${_param:keystone_nova_password}
         tenant: service
+        protocol: ${_param:cluster_internal_protocol}
       message_queue:
         engine: rabbitmq
         port: 5672
@@ -38,6 +41,9 @@
         user: neutron
         tenant: service
         password: ${_param:keystone_neutron_password}
+        protocol: ${_param:cluster_internal_protocol}
+      glance:
+        protocol: ${_param:cluster_internal_protocol}
       ironic:
         region: ${_param:openstack_region}
         host: ${_param:control_address}
@@ -45,3 +51,4 @@
         user: ironic
         tenant: service
         password: ${_param:keystone_ironic_password}
+        protocol: ${_param:cluster_internal_protocol}
diff --git a/nova/control/cluster.yml b/nova/control/cluster.yml
index f583156..be5f775 100644
--- a/nova/control/cluster.yml
+++ b/nova/control/cluster.yml
@@ -11,6 +11,7 @@
     nova_ram_allocation_ratio: 1.5
     nova_disk_allocation_ratio: 1.0
     metadata_password: metadataPass
+    cluster_internal_protocol: 'http'
   linux:
     system:
       package:
@@ -50,6 +51,7 @@
         user: nova
         password: ${_param:keystone_nova_password}
         tenant: service
+        protocol: ${_param:cluster_internal_protocol}
       message_queue:
         engine: rabbitmq
         port: 5672
@@ -63,6 +65,7 @@
       glance:
         host: ${_param:cluster_vip_address}
         port: 9292
+        protocol: ${_param:cluster_internal_protocol}
       network:
         engine: neutron
         region: ${_param:openstack_region}
@@ -72,5 +75,6 @@
         port: 9696
         mtu: 1500
         tenant: service
+        protocol: ${_param:cluster_internal_protocol}
       metadata:
         password: ${_param:metadata_password}
diff --git a/nova/control/single.yml b/nova/control/single.yml
index c2aef10..ca21d05 100644
--- a/nova/control/single.yml
+++ b/nova/control/single.yml
@@ -1,6 +1,8 @@
 classes:
 - service.nova.control.single
 parameters:
+  _param:
+    cluster_internal_protocol: 'http'
   linux:
     system:
       package:
@@ -11,3 +13,9 @@
     controller:
       database:
         host: ${_param:single_address}
+      identity:
+        protocol: ${_param:cluster_internal_protocol}
+      network:
+        protocol: ${_param:cluster_internal_protocol}
+      glance:
+        protocol: ${_param:cluster_internal_protocol}
diff --git a/openssh/server/team/members/lmercl.yml b/openssh/server/team/members/lmercl.yml
index c735ed5..04be2f5 100644
--- a/openssh/server/team/members/lmercl.yml
+++ b/openssh/server/team/members/lmercl.yml
@@ -17,4 +17,5 @@
           enabled: true
           public_keys:
             - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCy6mFrr4oNdLjT5wBZj1+KXNpdawnGGWEevDBQ2SWFjxBFujkWVLiW1kxLTpLVSnuoE5FB7doRIsT/CDe9IU5OhsJ+z6TT56R/pfVKrVnSB1rgrwqdezjgmYEM6kTWiH2GKJE0yiQEPgagK8Rz5Zl420JkhbFWnL7EGPhxNtmYMGDTZwUTzP0KYmytyeH15OqNIiBGTrp1t2bTrVB8HRnUp0uDpfoWAUnsijVGNe1j1bNKtDO0Z9LAWx3eUyxIk4cdpX/EeWJg8jNrSMxtAZZ7Hhm/WInNSNqcHcZ1rEYCAjENxo1WVOuA/aqUqc5xaAipWNon4Rk0e0IUAaFOfLvN2lIuilUZ5XKHDe7a2crkGPnotheT9FgaEHOeFtpuhSaygeZHTMR197jeocgjWIkPqHjVAGSQqQf0TAdNuN73QPTigbbfHWWc1d8KlCM5BqJUXMHPG6BasE1sI/4ykYbxN/DAEvVJ4+rdIlqSdedd73ZAseVQjDtpzD8diScGrpdOhZnTm43q89F8dIFv7tt1TjIwvfcDQNSBjyyKcYpj+NTyW2Zk7qWDVz+lzH0ToYk/rOKkGlrsRy7OwOnmyKR8IcIOL7Bowj895ThCX8tBrdLu/m55ojBOcZiCpawCm7K55ri1Ar6i8cO+bHDh11kKRa/utRRSQTpsW0sbCsamzQ== lubos@lubos-ThinkPad-X1
-          user: ${linux:system:user:lmercl}
\ No newline at end of file
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZFmRirw1DHtY8VQDfnZDEi1tWhW4lHWaCq3T14K2HtU17ulJB4KbonMWZLiqFsX44okKM7FOiR9L5ij417CRytlzuHSJebnDj6kppE+lslvfd8TdTTVmvQ7rLj+mdvsRmNVRnou1JPlhryJFshZSsfonn6s6AlAWW4RHx9a8kWuYplObGdUQN9pXReDso9UjeOOuPVmtpfvBXgljHEa/IyAAk47CTe7vVTggauWTVIB+F3zmL2KPFEKGBvd6Ac/wOdirHgV5YgR9LT81hZ9p6TZXkfbIGOl+K6dOIgGqGykn77qloTnKUTSPMWJz11xgwE3sv314ZZ6oZvhCVCcLX lmercl@Luboss-MacBook-Pro.local
+          user: ${linux:system:user:lmercl}
diff --git a/openssh/server/team/stacklight.yml b/openssh/server/team/stacklight.yml
index b46ac24..032466b 100644
--- a/openssh/server/team/stacklight.yml
+++ b/openssh/server/team/stacklight.yml
@@ -109,6 +109,20 @@
           full_name: Christian Huebner
           home: /home/crh
           email: chuebner@mirantis.com
+        mmatuszkowiak:
+          enabled: true
+          name: mmatuszkowiak
+          sudo: true
+          full_name: Mateusz Matuszkowiak
+          home: /home/mmatuszkowiak
+          email: mmatuszkowiak@mirantis.com
+        mkobus:
+          enabled: true
+          name: mkobus
+          sudo: true
+          full_name: Michal Kobus
+          home: /home/mkobus
+          email: mkobus@mirantis.com
   openssh:
     client:
       enabled: true
@@ -190,6 +204,16 @@
           public_keys:
           - ${public_keys:crh}
           user: ${linux:system:user:crh}
+        mmatuszkowiak:
+          enabled: true
+          public_keys:
+          - ${public_keys:mmatuszkowiak}
+          user: ${linux:system:user:mmatuszkowiak}
+        mkobus:
+          enabled: true
+          public_keys:
+          - ${public_keys:mkobus}
+          user: ${linux:system:user:mkobus}
   public_keys:
     newt:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3odU+3V2uDA2ptAFL9hrJRPNEEdAyztWOZFQ5Oyd9oerTGOU3p4xmrgWWjfKFKbYGhiiIUcYAol5PkTfKukGEkkjCHYA1t023soCaaAj85wCZCnw2zQNAziwxTYmAzTqgxiSvtZNMMrtJvFHRIRDzJ3M1lV0prWNWkMM1/3FAd4W49y6VT3fkMCo8uqG7CfGdgR2DgBCxf9KaNPfW5eDEPOgmE5lK8tVSEI6T+Cg7hbcTf4lFYnlFBnlQgp/0JstsM4Vbwb4B34LOpOsf2S8rrWk2xQMjwaMHXkc2s/E8iW3F5nVFuyEXYISFQIiAHw8dzC6CHgLcyHUVWwznKawZ newt@newt-dev1
@@ -221,3 +245,7 @@
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMdgjQ/jeWwQTaPyy7G5JJAkM+QPNPFkzMldPHJzOxEBzt/M5zAooj0XgbRIDIztolhXhmj8N5QSG5n3Wn9T9e2KpoxrLaVhMV5WGTgMrXMmyT8oXLV3gLxGNHMWFvplSbHLK78EsZQQ1/kBQMyPXB1+FpIuSHVOxaospOQObJ08lvQfvlO7AUUV4ecpFj3PpV5vkKPRS+KfiRm84BeGIu51BL1BClZcOyHZPBQT+DUBjm8y4Nd7pVZRjsiBzZBvUotCbn5+RqWJnu4kyoGoRNmk8pvCx7jGL1G9rE8NNsKlCUWedvyNkDeoWKvleJuzkj3ggfuCj/iTtDoXFR95e3
     crh:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDjW4PSMoILjoZWDM8RnbiW6HXHBFntnDd6jgAlokJhTpYIjzUHpoh/OqphraKbNFnPbzL2nkIbaKZqKj+uuvbsitHnApmdFgSpOmBRGeaSExA30GqweYrIMKN5JAQTbONZWLSm+LD689CXRv2s6Th/YMELYfoi2W0pkvwiBdr+/0NxpdRvJydCn36SE6wOigu4uJXIXeNqIjTD+x4sW6GB54Ugbg+SMmI9D5ONlmfEj8K/ZmG1THdPGOLlquy/VLiuOBuwNoJCBV9shsGEmdg8NiOu8NPupQlsbmClZDbBAklJ0AF6ElAwKSiqCOhbaa7hu4qJFrCKC+XAgYxS9t7r
+    mmatuszkowiak:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDC6TGCQAH3FGNSOhSbovhwODabOAsgVqG71rEDdXvDSShwyNB3RIICefas3mdSLsG7+1K9mZ1jicWzNbotvePwzrM/MESzntzp4QZ5J/9L3BMiqWWKL2u6BQ65LGe0YMzMmdSkqMAj0uxt3+OiFDPDrwqH6qN0hwxAJM+byeUlQW8uWQYm/pmWMD60GUrnjYUfKfEa/S3symaZBHQvjtp26De8D6u/jr4TWi5VJpKqVREqU7Z4IKwn8JvHMmUbRO4endW3cRiv35Qb7s66rO6TD0KlDFnnTxOtFvLhL51j58X4MrV9FHUI6czoqjAgEDe9CW7DzZ1xMj03d6IAipgL
+    mkobus:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDCBqe3X+LrneiuieWGjlw5wRtgixBu2Q8LZjH6W+8nsOkB7iN6qRdKom3jac1Cdd5wSJ0NFAhDNcTLK4Etz/3YACglsTxk09TzXlqs1V0Y7U5a2eqn3KTOgMNsJ1aOhFq/LnmUwTdN8NXac6TIkwZZBj5KhHSvIoO+mfsascct5FIVU/+p32d3o/4NqMDDdTg/qxIMKQsh5sw5Y9Tz9h28LGbDh+QF2lW+b5YJhnCG21Uw17xcyxf3/53EpJwTXfElonSR7HMVLxrq7oDzmqKFZ2z8i9do6EgODKlZpSkxiAFOBw5oA2hPtEeqtXqvddu2FcNGuSNhx/6O8ZHIKq3Xh/tTOYnoc+qYDMRCzDwzeyivfr5Ci3n64giUaZl+KUr6D1CKeL2s8j9+kod/1JJDEeoYR+V93MTiTD/39N8eQAGv+6r9HBapXIkvr3iNuTH1+5eN36Vc90jXXRmGMZkF5P9ivNGDZGcy2pBwwPg/bRn2xb0zx1fsxd4qOi+Cd7mBCF4+SfnVCqUd2H9R0O3S7WgfLr+wOXpFq6/WwgjzI9RVhLJ5cZmePJKvYZYYhkAxsVwWSE639zFFuU1zhFXr49wa0njK9DdYWiQEhOki0ki3huABmVbWKg/zP1Rlllmtk0S4mwggJ57JYbuhEV3a1x1KOtWMzODW5cb3HlPTQw==
diff --git a/panko/server/cluster.yml b/panko/server/cluster.yml
new file mode 100644
index 0000000..c258c9a
--- /dev/null
+++ b/panko/server/cluster.yml
@@ -0,0 +1,26 @@
+classes:
+- service.panko.server.cluster
+- service.haproxy.proxy.single
+- system.apache.server.site.panko
+- system.haproxy.proxy.listen.openstack.panko
+- system.keepalived.cluster.instance.openstack_telemetry_vip
+parameters:
+  _param:
+    panko_memcached_node01_address: ${_param:cluster_node01_address}
+    panko_memcached_node02_address: ${_param:cluster_node02_address}
+    panko_memcached_node03_address: ${_param:cluster_node03_address}
+  panko:
+    server:
+      identity:
+        host: ${_param:openstack_control_address}
+      database:
+        host: ${_param:openstack_database_address}
+      cache:
+        engine: memcached
+        members:
+        - host: ${_param:panko_memcached_node01_address}
+          port: 11211
+        - host: ${_param:panko_memcached_node02_address}
+          port: 11211
+        - host: ${_param:panko_memcached_node03_address}
+          port: 11211
\ No newline at end of file
diff --git a/prometheus/relay/init.yml b/prometheus/relay/init.yml
new file mode 100644
index 0000000..a240458
--- /dev/null
+++ b/prometheus/relay/init.yml
@@ -0,0 +1,3 @@
+classes:
+ - service.prometheus.relay
+ - service.prometheus.relay.cluster
diff --git a/prometheus/server/standalone.yml b/prometheus/server/standalone.yml
new file mode 100644
index 0000000..cdddb9a
--- /dev/null
+++ b/prometheus/server/standalone.yml
@@ -0,0 +1,7 @@
+classes:
+- service.prometheus.server.standalone
+parameters:
+  prometheus:
+    server:
+      version: 2.0
+
diff --git a/prometheus/server/target/dns.yml b/prometheus/server/target/dns.yml
deleted file mode 100644
index e2745f1..0000000
--- a/prometheus/server/target/dns.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-parameters:
-  prometheus:
-    server:
-      target:
-        dns:
-          enabled: true
-          endpoint:
-            - name: 'pushgateway'
-              domain:
-              - 'tasks.monitoring_pushgateway'
-              type: A
-              port: ${prometheus:pushgateway:bind:port}
-            - name: 'prometheus'
-              domain:
-              - 'tasks.monitoring_server'
-              type: A
-              port: ${prometheus:server:bind:port}
-            - name: 'alertmanager'
-              domain:
-              - 'tasks.monitoring_alertmanager'
-              type: A
-              port: ${prometheus:alertmanager:bind:port}
-            - name: 'remote_agent'
-              domain:
-              - 'tasks.monitoring_remote_agent'
-              type: A
-              port: ${telegraf:remote_agent:output:prometheus_client:bind:port}
-            - name: 'remote_storage_adapter'
-              domain:
-              - 'tasks.monitoring_remote_storage_adapter'
-              type: A
-              port: ${prometheus:remote_storage_adapter:bind:port}
diff --git a/prometheus/server/target/dns/alertmanager.yml b/prometheus/server/target/dns/alertmanager.yml
new file mode 100644
index 0000000..78172d1
--- /dev/null
+++ b/prometheus/server/target/dns/alertmanager.yml
@@ -0,0 +1,12 @@
+parameters:
+  prometheus:
+    server:
+      target:
+        dns:
+          enabled: true
+          endpoint:
+            - name: 'alertmanager'
+              domain:
+              - 'tasks.monitoring_alertmanager'
+              type: A
+              port: ${prometheus:alertmanager:bind:port}
diff --git a/prometheus/server/target/dns/init.yml b/prometheus/server/target/dns/init.yml
new file mode 100644
index 0000000..361d296
--- /dev/null
+++ b/prometheus/server/target/dns/init.yml
@@ -0,0 +1,6 @@
+classes:
+- system.prometheus.server.target.dns.alertmanager
+- system.prometheus.server.target.dns.prometheus
+- system.prometheus.server.target.dns.pushgateway
+- system.prometheus.server.target.dns.remote_agent
+- system.prometheus.server.target.dns.remote_storage_adapter
diff --git a/prometheus/server/target/dns/prometheus.yml b/prometheus/server/target/dns/prometheus.yml
new file mode 100644
index 0000000..abffe03
--- /dev/null
+++ b/prometheus/server/target/dns/prometheus.yml
@@ -0,0 +1,12 @@
+parameters:
+  prometheus:
+    server:
+      target:
+        dns:
+          enabled: true
+          endpoint:
+            - name: 'prometheus'
+              domain:
+              - 'tasks.monitoring_server'
+              type: A
+              port: ${prometheus:server:bind:port}
diff --git a/prometheus/server/target/dns/pushgateway.yml b/prometheus/server/target/dns/pushgateway.yml
new file mode 100644
index 0000000..9022fa7
--- /dev/null
+++ b/prometheus/server/target/dns/pushgateway.yml
@@ -0,0 +1,12 @@
+parameters:
+  prometheus:
+    server:
+      target:
+        dns:
+          enabled: true
+          endpoint:
+            - name: 'pushgateway'
+              domain:
+              - 'tasks.monitoring_pushgateway'
+              type: A
+              port: ${prometheus:pushgateway:bind:port}
\ No newline at end of file
diff --git a/prometheus/server/target/dns/remote_agent.yml b/prometheus/server/target/dns/remote_agent.yml
new file mode 100644
index 0000000..6801ffc
--- /dev/null
+++ b/prometheus/server/target/dns/remote_agent.yml
@@ -0,0 +1,12 @@
+parameters:
+  prometheus:
+    server:
+      target:
+        dns:
+          enabled: true
+          endpoint:
+            - name: 'remote_agent'
+              domain:
+              - 'tasks.monitoring_remote_agent'
+              type: A
+              port: ${telegraf:remote_agent:output:prometheus_client:bind:port}
diff --git a/prometheus/server/target/dns/remote_storage_adapter.yml b/prometheus/server/target/dns/remote_storage_adapter.yml
new file mode 100644
index 0000000..618f438
--- /dev/null
+++ b/prometheus/server/target/dns/remote_storage_adapter.yml
@@ -0,0 +1,12 @@
+parameters:
+  prometheus:
+    server:
+      target:
+        dns:
+          enabled: true
+          endpoint:
+            - name: 'remote_storage_adapter'
+              domain:
+              - 'tasks.monitoring_remote_storage_adapter'
+              type: A
+              port: ${prometheus:remote_storage_adapter:bind:port}
diff --git a/prometheus/server/target/federation/all_metrics.yml b/prometheus/server/target/federation/all_metrics.yml
new file mode 100644
index 0000000..f6a4ae3
--- /dev/null
+++ b/prometheus/server/target/federation/all_metrics.yml
@@ -0,0 +1,9 @@
+parameters:
+  prometheus:
+    server:
+      target:
+        static:
+          prometheus_federation:
+            params:
+              match[]:
+                - '{__name__=~".+"}'
diff --git a/prometheus/server/target/federation/init.yml b/prometheus/server/target/federation/init.yml
new file mode 100644
index 0000000..564af82
--- /dev/null
+++ b/prometheus/server/target/federation/init.yml
@@ -0,0 +1,17 @@
+parameters:
+  prometheus:
+    server:
+      target:
+        static:
+          prometheus:
+            endpoint:
+             - address: 127.0.0.1
+               port: ${prometheus:server:bind:port}
+          prometheus_federation:
+            honor_labels: true
+            metrics_path: '/federate'
+            scrape_interval: 15s
+            scrape_timeout: 15s
+            endpoint:
+             - address: ${_param:stacklight_monitor_address}
+               port: 15010
diff --git a/reclass/storage/system/opendaylight_control_single.yml b/reclass/storage/system/opendaylight_control_single.yml
new file mode 100644
index 0000000..ad809f5
--- /dev/null
+++ b/reclass/storage/system/opendaylight_control_single.yml
@@ -0,0 +1,13 @@
+parameters:
+  _param:
+    opendaylight_control_hostname: odl01
+  reclass:
+    storage:
+      node:
+        opendaylight_control_node01:
+          name: ${_param:opendaylight_control_hostname}
+          domain: ${_param:cluster_domain}
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:linux_system_codename}
+            single_address: ${_param:opendaylight_service_host}
diff --git a/reclass/storage/system/openstack_share_multi.yml b/reclass/storage/system/openstack_share_multi.yml
new file mode 100644
index 0000000..a70af28
--- /dev/null
+++ b/reclass/storage/system/openstack_share_multi.yml
@@ -0,0 +1,42 @@
+parameters:
+  _param:
+    openstack_share_node01_hostname: share01
+    openstack_share_node02_hostname: share02
+    openstack_share_node03_hostname: share03
+
+    openstack_share_node01_share_address: ${_param:single_address}
+    openstack_share_node02_share_address: ${_param:single_address}
+    openstack_share_node03_share_address: ${_param:single_address}
+  reclass:
+    storage:
+      node:
+        openstack_share_node01:
+          name: ${_param:openstack_share_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.share
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:linux_system_codename}
+            single_address: ${_param:openstack_share_node01_address}
+            manila_share_address: ${_param:openstack_share_node01_share_address}
+        openstack_share_node02:
+          name: ${_param:openstack_share_node02_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.share
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:linux_system_codename}
+            single_address: ${_param:openstack_share_node02_address}
+            manila_share_address: ${_param:openstack_share_node02_share_address}
+        openstack_share_node03:
+          name: ${_param:openstack_share_node03_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.share
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:linux_system_codename}
+            single_address: ${_param:openstack_share_node03_address}
+            manila_share_address: ${_param:openstack_share_node03_share_address}
diff --git a/reclass/storage/system/openstack_share_single.yml b/reclass/storage/system/openstack_share_single.yml
new file mode 100644
index 0000000..fca56f2
--- /dev/null
+++ b/reclass/storage/system/openstack_share_single.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    openstack_share_node01_hostname: share01
+  reclass:
+    storage:
+      node:
+        openstack_share_node01:
+          name: ${_param:openstack_share_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.share
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:linux_system_codename}
+            single_address: ${_param:openstack_share_node01_address}
+            manila_share_address: ${_param:openstack_share_node01_share_address}
diff --git a/salt/control/sizes/ceph.yml b/salt/control/sizes/ceph.yml
new file mode 100644
index 0000000..a4be9c9
--- /dev/null
+++ b/salt/control/sizes/ceph.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    salt_control_size_cpu_ceph_mon: 8
+    salt_control_size_ram_ceph_mon: 16384
+    salt_control_size_disk_profile_ceph_mon: large
+    salt_control_size_net_profile_ceph_mon: default
+    salt_control_size_cpu_ceph_rgw: 8
+    salt_control_size_ram_ceph_rgw: 16384
+    salt_control_size_disk_profile_ceph_rgw: small
+    salt_control_size_net_profile_ceph_rgw: default
+  salt:
+    control:
+      size:
+        ceph.mon:
+          cpu: ${_param:salt_control_size_cpu_ceph_mon}
+          ram: ${_param:salt_control_size_ram_ceph_mon}
+          disk_profile: ${_param:salt_control_size_disk_profile_ceph_mon}
+          net_profile: ${_param:salt_control_size_net_profile_ceph_mon}
+        ceph.rgw:
+          cpu: ${_param:salt_control_size_cpu_ceph_rgw}
+          ram: ${_param:salt_control_size_ram_ceph_rgw}
+          disk_profile: ${_param:salt_control_size_disk_profile_ceph_rgw}
+          net_profile: ${_param:salt_control_size_net_profile_ceph_rgw}
diff --git a/salt/control/sizes/cicd.yml b/salt/control/sizes/cicd.yml
new file mode 100644
index 0000000..a2ada77
--- /dev/null
+++ b/salt/control/sizes/cicd.yml
@@ -0,0 +1,14 @@
+parameters:
+  _param:
+    salt_control_size_cpu_cicd_control: 8
+    salt_control_size_ram_cicd_control: 32768
+    salt_control_size_disk_profile_cicd_control: huge
+    salt_control_size_net_profile_cicd_control: default
+  salt:
+    control:
+      size:
+        cicd.control:
+          cpu: ${_param:salt_control_size_cpu_cicd_control}
+          ram: ${_param:salt_control_size_ram_cicd_control}
+          disk_profile: ${_param:salt_control_size_disk_profile_cicd_control}
+          net_profile: ${_param:salt_control_size_net_profile_cicd_control}
diff --git a/salt/control/sizes/opencontrail.yml b/salt/control/sizes/opencontrail.yml
new file mode 100644
index 0000000..41b858d
--- /dev/null
+++ b/salt/control/sizes/opencontrail.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    salt_control_size_cpu_opencontrail_control: 8
+    salt_control_size_ram_opencontrail_control: 65536
+    salt_control_size_disk_profile_opencontrail_control: large
+    salt_control_size_net_profile_opencontrail_control: default
+    salt_control_size_cpu_opencontrail_analytics: 16
+    salt_control_size_ram_opencontrail_analytics: 98304
+    salt_control_size_disk_profile_opencontrail_analytics: huge
+    salt_control_size_net_profile_opencontrail_analytics: default
+  salt:
+    control:
+      size:
+        opencontrail.control:
+          cpu: ${_param:salt_control_size_cpu_opencontrail_control}
+          ram: ${_param:salt_control_size_ram_opencontrail_control}
+          disk_profile: ${_param:salt_control_size_disk_profile_opencontrail_control}
+          net_profile: ${_param:salt_control_size_net_profile_opencontrail_control}
+        opencontrail.analytics:
+          cpu: ${_param:salt_control_size_cpu_opencontrail_analytics}
+          ram: ${_param:salt_control_size_ram_opencontrail_analytics}
+          disk_profile: ${_param:salt_control_size_disk_profile_opencontrail_analytics}
+          net_profile: ${_param:salt_control_size_net_profile_opencontrail_analytics}
diff --git a/salt/control/sizes/openstack.yml b/salt/control/sizes/openstack.yml
new file mode 100644
index 0000000..b75161b
--- /dev/null
+++ b/salt/control/sizes/openstack.yml
@@ -0,0 +1,50 @@
+parameters:
+  _param:
+    salt_control_size_cpu_openstack_control: 8
+    salt_control_size_ram_openstack_control: 65536
+    salt_control_size_disk_profile_openstack_control: large
+    salt_control_size_net_profile_openstack_control: default
+    salt_control_size_cpu_openstack_database: 8
+    salt_control_size_ram_openstack_database: 32768
+    salt_control_size_disk_profile_openstack_database: large
+    salt_control_size_net_profile_openstack_database: default
+    salt_control_size_cpu_openstack_message_queue: 16
+    salt_control_size_ram_openstack_message_queue: 65536
+    salt_control_size_disk_profile_openstack_message_queue: xxlarge
+    salt_control_size_net_profile_openstack_message_queue: default
+    salt_control_size_cpu_openstack_proxy: 4
+    salt_control_size_ram_openstack_proxy: 16384
+    salt_control_size_disk_profile_openstack_proxy: large
+    salt_control_size_net_profile_openstack_proxy: default
+    salt_control_size_cpu_openstack_upgrade: 8
+    salt_control_size_ram_openstack_upgrade: 16384
+    salt_control_size_disk_profile_openstack_upgrade: medium
+    salt_control_size_net_profile_openstack_upgrade: default
+  salt:
+    control:
+      size:
+        openstack.control:
+          cpu: ${_param:salt_control_size_cpu_openstack_control}
+          ram: ${_param:salt_control_size_ram_openstack_control}
+          disk_profile: ${_param:salt_control_size_disk_profile_openstack_control}
+          net_profile: ${_param:salt_control_size_net_profile_openstack_control}
+        openstack.database:
+          cpu: ${_param:salt_control_size_cpu_openstack_database}
+          ram: ${_param:salt_control_size_ram_openstack_database}
+          disk_profile: ${_param:salt_control_size_disk_profile_openstack_database}
+          net_profile: ${_param:salt_control_size_net_profile_openstack_database}
+        openstack.message_queue:
+          cpu: ${_param:salt_control_size_cpu_openstack_message_queue}
+          ram: ${_param:salt_control_size_ram_openstack_message_queue}
+          disk_profile: ${_param:salt_control_size_disk_profile_openstack_message_queue}
+          net_profile: ${_param:salt_control_size_net_profile_openstack_message_queue}
+        openstack.proxy:
+          cpu: ${_param:salt_control_size_cpu_openstack_proxy}
+          ram: ${_param:salt_control_size_ram_openstack_proxy}
+          disk_profile: ${_param:salt_control_size_disk_profile_openstack_proxy}
+          net_profile: ${_param:salt_control_size_net_profile_openstack_proxy}
+        openstack.upgrade:
+          cpu: ${_param:salt_control_size_cpu_openstack_upgrade}
+          ram: ${_param:salt_control_size_ram_openstack_upgrade}
+          disk_profile: ${_param:salt_control_size_disk_profile_openstack_upgrade}
+          net_profile: ${_param:salt_control_size_net_profile_openstack_upgrade}
diff --git a/salt/control/sizes/stacklight.yml b/salt/control/sizes/stacklight.yml
new file mode 100644
index 0000000..5b09c14
--- /dev/null
+++ b/salt/control/sizes/stacklight.yml
@@ -0,0 +1,32 @@
+parameters:
+  _param:
+    salt_control_size_cpu_stacklight_log: 16
+    salt_control_size_ram_stacklight_log: 49152
+    salt_control_size_disk_profile_stacklight_log: xxhuge
+    salt_control_size_net_profile_stacklight_log: default
+    salt_control_size_cpu_stacklight_server: 12
+    salt_control_size_ram_stacklight_server: 65536
+    salt_control_size_disk_profile_stacklight_server: xxlarge
+    salt_control_size_net_profile_stacklight_server: default
+    salt_control_size_cpu_stacklight_telemetry: 12
+    salt_control_size_ram_stacklight_telemetry: 98304
+    salt_control_size_disk_profile_stacklight_telemetryr: huge
+    salt_control_size_net_profile_stacklight_telemetry: default
+  salt:
+    control:
+      size:
+        stacklight.log:
+          cpu: ${_param:salt_control_size_cpu_stacklight_log}
+          ram: ${_param:salt_control_size_ram_stacklight_log}
+          disk_profile: ${_param:salt_control_size_disk_profile_stacklight_log}
+          net_profile: ${_param:salt_control_size_net_profile_stacklight_log}
+        stacklight.server:
+          cpu: ${_param:salt_control_size_cpu_stacklight_server}
+          ram: ${_param:salt_control_size_ram_stacklight_server}
+          disk_profile: ${_param:salt_control_size_disk_profile_stacklight_server}
+          net_profile: ${_param:salt_control_size_net_profile_stacklight_server}
+        stacklight.telemetry:
+          cpu: ${_param:salt_control_size_cpu_stacklight_telemetry}
+          ram: ${_param:salt_control_size_ram_stacklight_telemetry}
+          disk_profile: ${_param:salt_control_size_disk_profile_stacklight_telemetry}
+          net_profile: ${_param:salt_control_size_net_profile_stacklight_telemetry}
\ No newline at end of file
diff --git a/salt/master/formula/git/gnocchi.yml b/salt/master/formula/git/gnocchi.yml
new file mode 100644
index 0000000..53d2f56
--- /dev/null
+++ b/salt/master/formula/git/gnocchi.yml
@@ -0,0 +1,10 @@
+parameters:
+  salt:
+    master:
+      environment:
+        dev:
+          formula:
+            gnocchi:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-gnocchi.git'
+              revision: ${_param:salt_master_environment_revision}
diff --git a/salt/master/formula/git/manila.yml b/salt/master/formula/git/manila.yml
new file mode 100644
index 0000000..b9cf3e0
--- /dev/null
+++ b/salt/master/formula/git/manila.yml
@@ -0,0 +1,10 @@
+parameters:
+  salt:
+    master:
+      environment:
+        dev:
+          formula:
+            manila:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-manila.git'
+              revision: ${_param:salt_master_environment_revision}
diff --git a/salt/master/formula/git/panko.yml b/salt/master/formula/git/panko.yml
new file mode 100644
index 0000000..045331b
--- /dev/null
+++ b/salt/master/formula/git/panko.yml
@@ -0,0 +1,10 @@
+parameters:
+  salt:
+    master:
+      environment:
+        dev:
+          formula:
+            panko:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-panko.git'
+              revision: ${_param:salt_master_environment_revision}
diff --git a/salt/master/formula/pkg/gnocchi.yml b/salt/master/formula/pkg/gnocchi.yml
new file mode 100644
index 0000000..2f49b99
--- /dev/null
+++ b/salt/master/formula/pkg/gnocchi.yml
@@ -0,0 +1,9 @@
+parameters:
+  salt:
+    master:
+      environment:
+        prd:
+          formula:
+            gnocchi:
+              source: pkg
+              name: salt-formula-gnocchi
diff --git a/salt/master/formula/pkg/manila.yml b/salt/master/formula/pkg/manila.yml
new file mode 100644
index 0000000..4777a36
--- /dev/null
+++ b/salt/master/formula/pkg/manila.yml
@@ -0,0 +1,9 @@
+parameters:
+  salt:
+    master:
+      environment:
+        prd:
+          formula:
+            manila:
+              source: pkg
+              name: salt-formula-manila
diff --git a/salt/master/formula/pkg/panko.yml b/salt/master/formula/pkg/panko.yml
new file mode 100644
index 0000000..d4d8b8f
--- /dev/null
+++ b/salt/master/formula/pkg/panko.yml
@@ -0,0 +1,9 @@
+parameters:
+  salt:
+    master:
+      environment:
+        prd:
+          formula:
+            panko:
+              source: pkg
+              name: salt-formula-panko
diff --git a/salt/master/single.yml b/salt/master/single.yml
index 9764a97..fbb32f2 100644
--- a/salt/master/single.yml
+++ b/salt/master/single.yml
@@ -13,7 +13,8 @@
     master:
       accept_policy: auto_accept
       worker_threads: 40
+      max_open_files: 15000
       command_timeout: 10
       peer:
         '.*':
-          - x509.sign_remote_certificate
+          - x509.sign_remote_certificate
\ No newline at end of file
diff --git a/salt/minion/single.yml b/salt/minion/single.yml
new file mode 100644
index 0000000..9d20aff
--- /dev/null
+++ b/salt/minion/single.yml
@@ -0,0 +1,10 @@
+parameters:
+  salt:
+    minion:
+      acceptance_wait_time_max: 60
+      acceptance_wait_time: 10
+      random_reauth_delay: 270
+      recon_default: 1000
+      recon_max: 60000
+      recon_randomize: True
+      auth_timeout: 60
\ No newline at end of file
diff --git a/watchdog/server/init.yml b/watchdog/server/init.yml
new file mode 100644
index 0000000..28435d6
--- /dev/null
+++ b/watchdog/server/init.yml
@@ -0,0 +1,7 @@
+classes:
+- service.watchdog.server
+parameters:
+  watchdog:
+    server:
+      enabled: true
+