Merge "Add tinyproxy formula debian package build job"
diff --git a/.releasenotes/config.yaml b/.releasenotes/config.yaml
new file mode 100644
index 0000000..bf103f9
--- /dev/null
+++ b/.releasenotes/config.yaml
@@ -0,0 +1,87 @@
+---
+# Usage:
+#
+# reno -qd .releasenotes list
+# reno -qd .releasenotes new slug-title --edit
+# reno -qd .releasenotes report --no-show-source
+
+# Change prelude_section_name to 'summary' from default value prelude
+prelude_section_name: summary
+show_source: False
+sections:
+  - [features, New features]
+  - [upgrades, Upgrade notes]
+  - [deprecations, Deprecation notes]
+  - [fixes, Bug fixes]
+  - [others, Other notes]
+template: |
+  ---
+  # Author the following sections or remove the section if it is not related.
+  # Use one release note per a feature.
+  #
+  # If you miss a section from the list below, please first submit a review
+  # adding it to .releasenotes/config.yaml.
+  #
+  # Format content with reStructuredText (RST).
+  # **Formatting examples:**
+  # - |
+  #   This is a brief description of the feature. It may include a
+  #   number of components:
+  #
+  #   * List item 1
+  #   * List item 2.
+  #     This code block below will appear as part of the list item 2:
+  #
+  #     .. code-block:: yaml
+  #
+  #        classes:
+  #        - system.class.to.load
+  #
+  #   The code block below will appear on the same level as the feature
+  #   description:
+  #
+  #   .. code-block:: text
+  #
+  #      provide model/formula pillar snippets
+
+
+  summary: >
+    This section is not mandatory. Use it to highlight the change.
+
+  features:
+    - Use the list to record summary of **NEW** features
+    - Provide detailed description of the feature indicating the use cases
+      when users benefit from using it
+    - Explain how the feature integrates into the overall reference
+      architecture of a deployment.
+    - Provide steps to deploy the feature (if the procedure is complicated
+      indicate during what stage of the deployment workflow it should be
+      deployed).
+    - Indicate limitations or incompatibility with other versions, if applicable.
+    - Provide a brief overview of how to use the feature after installation
+      (Day2 operations).
+    - Provide troubleshooting information, if any.
+    - Provide disaster recovery information (in case of hardware or software
+      failure.)
+
+  upgrades:
+    - Use the list to record summary of an **improvement** to an existing
+      functionality/feature
+    - Document how to use a feature.
+    - Document the related upgrade instructions.
+    - Indicate limitations, if applicable.
+
+  deprecations:
+    - Use the list to record deprecated features.
+    - Explain the reason of deprecation.
+    - Point to the functionality that can be used instead.
+
+  fixes:
+    - Use the list to record summary of a bug fix for blocker, critical,
+      and/or customer-found issues.
+    - Provide a brief summary of what has been fixed.
+
+  others:
+    - Author any additional notes. Use this section if note is not related to
+      any of the common sections above.
+
diff --git a/.releasenotes/notes/add-fwaas-d4dea7f376eb3f83.yaml b/.releasenotes/notes/add-fwaas-d4dea7f376eb3f83.yaml
new file mode 100644
index 0000000..69c6ad2
--- /dev/null
+++ b/.releasenotes/notes/add-fwaas-d4dea7f376eb3f83.yaml
@@ -0,0 +1,19 @@
+---
+features:
+  - |
+    Add system level metadata class required to enable FWaaS in Neutron.
+
+    The Firewall-as-a-Service (FWaaS) plug-in applies firewalls to OpenStack
+    objects such as projects, routers, router ports, as well as to VM ports
+    and SFC ports in FWaaS V2.
+
+    To enable FWaaS add the ``system.neutron.fwaas`` class to nodes with
+    control, gateway and, if the Neutron DVR feature is enabled, compute roles.
+
+    By default the FWaaS V1 is installed. To install FWaaS V2 redefine the
+    ``fwaas_version`` parameter on the cluster level:
+
+    .. code-block:: yaml
+
+       fwaas_version: v2
+
diff --git a/.releasenotes/notes/add-influxdb-relay-dc8bd245bebec442.yaml b/.releasenotes/notes/add-influxdb-relay-dc8bd245bebec442.yaml
new file mode 100644
index 0000000..2ccc60c
--- /dev/null
+++ b/.releasenotes/notes/add-influxdb-relay-dc8bd245bebec442.yaml
@@ -0,0 +1,15 @@
+---
+features:
+  - |
+    Added system metadata classes to deploy the InfluxDB relay service.
+
+    The InfluxDB relay service replicates the InfluxDB data to a cluster of
+    InfluxDB servers for HA.
+
+    For more details about the service, see the `GitHub project
+    <https://github.com/influxdata/influxdb-relay>`_ page.
+
+    To enable it, add the ``system.influxdb.relay.cluster`` class to the
+    Telemetry nodes and change
+    ``system.haproxy.proxy.listen.stacklight.influxdb`` to
+    ``system.haproxy.proxy.listen.stacklight.influxdb_relay``.
diff --git a/.releasenotes/notes/add-jenkins-and-gerrit-nginx-proxy-support-272f290d7c92480a.yaml b/.releasenotes/notes/add-jenkins-and-gerrit-nginx-proxy-support-272f290d7c92480a.yaml
new file mode 100644
index 0000000..f15497f
--- /dev/null
+++ b/.releasenotes/notes/add-jenkins-and-gerrit-nginx-proxy-support-272f290d7c92480a.yaml
@@ -0,0 +1,30 @@
+---
+features:
+  - |
+    Added system metadata classes to deploy reverse proxy support for
+    Jenkins and Gerrit services. When enabled, these services can be
+    accessed through a public URL or DNS.
+
+    **To apply the change to your deployment:**
+
+    #. Add the following classes to
+       ``cluster.<CLUSTER_NAME>.openstack.proxy.yml``:
+
+       .. code-block:: yaml
+
+          classes:
+            - system.nginx.server.proxy.cicd.gerrit
+            - system.nginx.server.proxy.cicd.jenkins
+
+    #. Set up the following parameters in
+       ``cluster.<CLUSTER_NAME>.cicd.control.init.yml``:
+
+       .. code-block:: yaml
+
+          parameters:
+            _param:
+              nginx_proxy_gerrit_server_site_host: ${_param:openstack_proxy_address}
+              nginx_proxy_gerrit_server_site_port: 8080
+              gerrit_http_listen_url: proxy-https://*:8080/
+              gerrit_public_host: https://${_param:nginx_proxy_gerrit_server_site_host}:${_param:nginx_proxy_gerrit_server_site_port}
+
diff --git a/.releasenotes/notes/add-mysql-cert-definition-c6a2e6445020d66f.yaml b/.releasenotes/notes/add-mysql-cert-definition-c6a2e6445020d66f.yaml
new file mode 100644
index 0000000..06398e1
--- /dev/null
+++ b/.releasenotes/notes/add-mysql-cert-definition-c6a2e6445020d66f.yaml
@@ -0,0 +1,19 @@
+---
+features:
+  - |
+    Added a system class to generate certificates and keys for MySQL.
+
+    **To generate files:**
+
+    #. Include the class to the Reclass model of your deployment:
+
+       .. code-block:: yaml
+
+          classes:
+             - system.salt.minion.cert.mysql.server
+
+    #. Apply the :command:`salt.minion.cert` Salt state:
+
+       .. code-block:: bash
+
+          salt '*' state.sls salt.minion.cert
diff --git a/.releasenotes/notes/add-prometheus-relay-df282e14ed88da8c.yaml b/.releasenotes/notes/add-prometheus-relay-df282e14ed88da8c.yaml
new file mode 100644
index 0000000..e9db668
--- /dev/null
+++ b/.releasenotes/notes/add-prometheus-relay-df282e14ed88da8c.yaml
@@ -0,0 +1,10 @@
+---
+summary: >
+  Added the Prometheus Relay service
+
+features:
+  - Added the Prometheus Relay service. The Prometheus Relay service is
+    responsible for getting PromQL queries from external components,
+    such as Grafana, passing them to all discovered Prometheus servers,
+    merging the results and returning the data. Prometheus Relay can be
+    used to handle Prometheus high availability or sharding.
diff --git a/.releasenotes/notes/add-releasenotes-20cce0cea873f011.yaml b/.releasenotes/notes/add-releasenotes-20cce0cea873f011.yaml
new file mode 100644
index 0000000..45b6749
--- /dev/null
+++ b/.releasenotes/notes/add-releasenotes-20cce0cea873f011.yaml
@@ -0,0 +1,20 @@
+---
+summary: >
+  This is the test release of MCP Feature Update notes.
+  These notes are intended to detail the new functionality and
+  bug fixes released for Reclass model on a sprint basis.
+
+others:
+  - |
+    Added `Reno <https://docs.openstack.org/reno/latest>_`, a release notes
+    configuration tool, to track release notes within the ``reclass-system``
+    Git repository.
+
+    To list/create/show release notes:
+
+    .. code-block:: shell
+
+       reno -qd .releasenotes list
+       reno -qd .releasenotes new releasenote-slug-title --edit
+       reno -qd .releasenotes report --no-show-source
+
diff --git a/.releasenotes/notes/add-upstream-proxy-feauture-for-maas-gerrit-jenkins-aptly-53bec821be830377.yaml b/.releasenotes/notes/add-upstream-proxy-feauture-for-maas-gerrit-jenkins-aptly-53bec821be830377.yaml
new file mode 100644
index 0000000..3c408a2
--- /dev/null
+++ b/.releasenotes/notes/add-upstream-proxy-feauture-for-maas-gerrit-jenkins-aptly-53bec821be830377.yaml
@@ -0,0 +1,48 @@
+---
+features:
+  - |
+    Added system metadata to set upstream proxy for the MAAS, Gerrit, Jenkins,
+    and Aptly services.
+
+    **To apply the change to an existing cicd cluster deployment:**
+
+    #. Set the ``http_proxy`` parameter in
+       ``cluster.<CLUSTER_NAME>.cicd.control.init.yml``:
+
+       .. code-block:: yaml
+
+          parameters:
+            _param:
+              http_proxy: 'http://<<upstream_proxy_address>>:<<upstream_proxy_port>>'
+
+    #. Apply the :command:`docker.client` state:
+
+       .. code-block::
+
+          salt -C 'I@docker:client' state.sls docker.client
+
+    **To apply the change to an existing maas deployment:**
+
+    #. Configure ``upstream_proxy`` for MAAS:
+
+       .. code-block:: yaml
+
+          maas:
+            region:
+              upstream_proxy:
+                address: <<upstream_proxy_address>>
+                port: <<upstream_proxy_address>>
+
+     #. On the Salt Master node, update the MaaS Salt formula to latest:
+
+        .. code-block::
+
+           salt-call state.sls salt.master
+
+     #. On the MAAS node, apply the :command:`maas.region` state:
+
+        .. code-block::
+
+           salt-call state.sls maas.region
+           reboot
+
diff --git a/.releasenotes/notes/add_ssl_support_oss-ea1eb1e086d08e3c.yaml b/.releasenotes/notes/add_ssl_support_oss-ea1eb1e086d08e3c.yaml
new file mode 100644
index 0000000..d28f488
--- /dev/null
+++ b/.releasenotes/notes/add_ssl_support_oss-ea1eb1e086d08e3c.yaml
@@ -0,0 +1,66 @@
+---
+summary: >
+  Added SSL support for cloud-monitoring services
+
+upgrades:
+  - |
+    Added SSL support for the following cloud-monitoring services:
+
+    * Rundeck CIS Collectors
+
+      To provide ssl support for CIS, set up ``cert`` and ``ssl_cert_file``
+      on a cluster level metadata:
+
+      .. code-block:: yaml
+
+         rundeck_cis_openstack:
+           auth_url: ${_param:oss_openstack_auth_url}/auth/tokens
+           username: ${_param:oss_openstack_username}
+           password: ${_param:oss_openstack_password}
+           cert: |
+            -----BEGIN CERTIFICATE-----
+            MIIE0DCCA7igAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx
+            -----END CERTIFICATE-----
+           ssl_cert_file: cert.pem
+
+      If all parameters are defined properly, Rundeck enables the ssl support
+      automatically.
+
+    * Cleanup Service
+
+      To provide ssl support for Cleanup Service, specify the cert path
+      and set the ``ssl_verify`` variable to ``True`` on a cluster level
+      metadata:
+
+      .. code-block:: yaml
+
+         janitor_monkey_openstack:
+           username: ${_param:oss_openstack_username}
+           password: ${_param:oss_openstack_password}
+           auth_url: ${_param:oss_openstack_auth_url}
+           ssl_verify: True
+           cacert_path: ${_param:oss_openstack_cert_path}
+
+    * Security Audit Service
+
+      To provide ssl support for Security audit Service, provide cert path,
+      set the ``ssl_verify`` variable to ``True``, and select the endpoint
+      type for cloud connections on a cluster level metadata:
+
+      .. code-block:: yaml
+
+         security_monkey_openstack:
+           username: ${_param:oss_openstack_username}
+           password: ${_param:oss_openstack_password}
+           auth_url: ${_param:oss_openstack_auth_url}
+           ssl_verify: True
+           endpoint_type: public
+           cacert_path: ${_param:oss_openstack_cert_path}
+
+      .. note:: By default, the ``cacert_path`` variable is defined as
+                follows:
+
+                .. code-block:: yaml
+
+                   oss_openstack_cert_path: /srv/volumes/rundeck/storage/content/keys/cis/openstack/cert.pem
+
diff --git a/.releasenotes/notes/custom-path-proxy-7f587526696c0744.yaml b/.releasenotes/notes/custom-path-proxy-7f587526696c0744.yaml
new file mode 100644
index 0000000..17f383d
--- /dev/null
+++ b/.releasenotes/notes/custom-path-proxy-7f587526696c0744.yaml
@@ -0,0 +1,41 @@
+---
+summary: >
+  Added the ability to define a custom path to the NGINX proxy service
+  endpoints for DevOps Portal
+
+features:
+   - |
+     Added the ability to define a custom path to the NGINX proxy service
+     endpoints for the DevOps Portal to auto-load a dedicated frame in the
+     web UI. To define the path, specify the ``custom_path`` parameter on
+     the system level metadata of your deployment.
+
+     Configuration example:
+
+     .. code-block:: yaml
+
+        parameters:
+          _param:
+            grafana_prometheus_ssl:
+              enabled: false
+          devops_portal:
+            config:
+              service:
+                stacklight-prometheus:
+                  configure_proxy: false
+                  enabled: true
+                  endpoint:
+                    address: ${_param:grafana_prometheus_address}
+                    custom_path: alerts
+                    port: ${_param:grafana_prometheus_port}
+                    https: ${_param:grafana_prometheus_ssl:enabled}
+
+     If specified, the endpoint of the NGINX service will take the following
+     form:
+
+     .. code-block:: yaml
+
+        <ADDRESS>:<PORT>/<CUSTOM_PATH>
+
+     .. fixes: https://mirantis.jira.com/browse/PROD-15068
+
diff --git a/.releasenotes/notes/move-monitoring-and-oss-to-mon-nodes-9711005d184b1f59.yaml b/.releasenotes/notes/move-monitoring-and-oss-to-mon-nodes-9711005d184b1f59.yaml
new file mode 100644
index 0000000..c68faf1
--- /dev/null
+++ b/.releasenotes/notes/move-monitoring-and-oss-to-mon-nodes-9711005d184b1f59.yaml
@@ -0,0 +1,11 @@
+---
+fixes:
+  - |
+    For stability and diversification of resources, Prometheus-based Stacklight
+    and OSS services were moved to monitoring nodes. Now, on spawning new
+    monitoring nodes, different Docker swarm is set up on them to deliver
+    Stacklight and/or OSS services.
+
+    To deploy Stacklight with OSS services on monitoring nodes, generate a new
+    deployment model using the Model Designer UI.
+
diff --git a/.releasenotes/notes/nginx-timeouts-15edce840ee27b59.yaml b/.releasenotes/notes/nginx-timeouts-15edce840ee27b59.yaml
new file mode 100644
index 0000000..7d5893d
--- /dev/null
+++ b/.releasenotes/notes/nginx-timeouts-15edce840ee27b59.yaml
@@ -0,0 +1,51 @@
+---
+summary: >
+    Added possibility to define Nginx proxy timeouts for Devops Portal Service.
+
+features:
+  - |
+    Added possibility to define Nginx proxy timeouts for Devops Portal service through Salt metadata.
+    To avoid possible *Gateway Timeout* errors that occur due to huge amount
+    of data, connection, and other issues. Its possible to configure server timeouts on the side of
+    Devops Portal service.
+
+    **To configure Nginx proxy timeouts:**
+
+    #. Define following parameters on a system level for each service in
+       your Docker stack.
+
+       .. code-block:: yaml
+
+          parameters:
+            devops_portal:
+              config:
+                service:
+                  your_service:
+                    configure_proxy: true
+                    resolve_hostname: true
+                    # Proxy parameters, default value equals 300 ms
+                    proxy_connect_timeout: 300
+                    proxy_send_timeout: 300
+                    proxy_read_timeout: 300
+                    send_timeout: 300
+
+       .. note:: The following is the example of the above configuration
+                 location:
+
+                 .. code-block:: yaml
+
+                    /srv/salt/reclass/classes/system/docker/swarm/stack/YOUR_SERVICE.yml
+
+    #. Recreate devops-portal stack:
+
+       .. code-block:: bash
+
+          docker stack rm devops-portal
+          salt -C 'I@devops_portal:config' state.sls devops_portal.config
+          salt -C 'I@docker:swarm:role:master' state.sls docker.client
+
+       The Nginx configuration are updated during the Devops Portal Salt
+       formula application.
+
+    .. fixes https://mirantis.jira.com/browse/PROD-14603
+
diff --git a/.releasenotes/notes/oss-cluster-60617c0d44ca6c0a.yaml b/.releasenotes/notes/oss-cluster-60617c0d44ca6c0a.yaml
new file mode 100644
index 0000000..3dddf61
--- /dev/null
+++ b/.releasenotes/notes/oss-cluster-60617c0d44ca6c0a.yaml
@@ -0,0 +1,9 @@
+---
+prelude: >
+  Implemented the OSS nodes definition for standalone OSS deployments
+
+features:
+  - Implemented the OSS nodes definition for standalone OSS deployments.
+    Now, deployment engineers have ability to switch the placement of the OSS
+    services that are by default binded to StackLight monitoring nodes.
+
diff --git a/.releasenotes/notes/remove-glusterfs-prometheus-4206900d4ccfb601.yaml b/.releasenotes/notes/remove-glusterfs-prometheus-4206900d4ccfb601.yaml
new file mode 100644
index 0000000..6d6a426
--- /dev/null
+++ b/.releasenotes/notes/remove-glusterfs-prometheus-4206900d4ccfb601.yaml
@@ -0,0 +1,9 @@
+---
+summary: >
+  Removed GlusterFS requirements for Prometheus
+
+deprecations:
+  - Removed GlusterFS from Prometheus requirements.
+    Prometheus/alertmanager do not require shared storage.
+    Now, the configurations for Prometheus and Alertmanager
+    will be generated on every Docker Swarm node.
diff --git a/.releasenotes/notes/remove-repo-includes-from-system-d4af8a0ac985d4e5.yaml b/.releasenotes/notes/remove-repo-includes-from-system-d4af8a0ac985d4e5.yaml
new file mode 100644
index 0000000..c0d8932
--- /dev/null
+++ b/.releasenotes/notes/remove-repo-includes-from-system-d4af8a0ac985d4e5.yaml
@@ -0,0 +1,23 @@
+---
+summary: >
+    Removed included classes for ``linux.system.repo`` from the system level
+    Reclass model because they were breaking installation from local repos
+
+features:
+  - Added ``linux.system.repo`` definition for MAAS.
+
+deprecations:
+  - |
+    Removed:
+
+    - ``system.linux.system.repo.mcp.salt`` from ``salt/master/pkg.yml``
+    - ``system.linux.system.repo.docker`` from ``docker/host.yml``
+    - ``service.maas.region.vendor_repo`` from ``maas/region/single.yml``
+
+    These repos should be added to appropriate cluster level classes.
+    New cluster models from Cookiecutter have them already included.
+
+fixes:
+  - MCP deployments can now be installed from local repositories without
+    problems.
+
diff --git a/.releasenotes/notes/rename-options-5db6ad4bb2ff80f5.yaml b/.releasenotes/notes/rename-options-5db6ad4bb2ff80f5.yaml
new file mode 100644
index 0000000..e5bc283
--- /dev/null
+++ b/.releasenotes/notes/rename-options-5db6ad4bb2ff80f5.yaml
@@ -0,0 +1,42 @@
+---
+summary: >
+  Improved the OpenStack cloud credentials defining process for the OSS services
+
+upgrades:
+  - |
+    Improved the OpenStack cloud credentials defining process for the OSS
+    services. The changes affect cluster and system levels of an MCP
+    deployment and include the following:
+
+    * ``cacert_path`` and ``cafile`` parameters for the Security Audit and
+      Cleanup services has changed to:
+
+      .. code-block:: yaml
+
+         security_monkey_openstack:
+           source_credentials: source/path/for/os/credentials/on/env
+           service_credentials: path/to/os/credentials/in/service/container
+
+         janitor_monkey_openstack:
+           source_credentials: source/path/for/os/credentials/on/env
+           service_credentials: path/to/os/credentials/in/service/container
+
+      Now, you do not need to specify the certificate file but only the
+      directory where it is located.
+      The certificate file is named ``cert.pem`` for all services by default;
+      and the ``source_credentials`` value equals to
+      the value of the ``oss_openstack_credentials_path`` parameter.
+
+    * ``oss_openstack_cert_path`` has changed as follows:
+
+      .. code-block:: yaml
+
+         oss_openstack_credentials_path: source/path/for/os/credentials/on/env
+
+    .. fixes:
+       - https://mirantis.jira.com/browse/PROD-14863
+       - https://mirantis.jira.com/browse/PROD-14870
+
+    .. full change-list:
+       https://gerrit.mcp.mirantis.net/#/q/topic:os-creds+(status:open+OR+status:merged)
+
diff --git a/.releasenotes/notes/sfdc-support-995867e00a89add0.yaml b/.releasenotes/notes/sfdc-support-995867e00a89add0.yaml
new file mode 100644
index 0000000..0b4bff4
--- /dev/null
+++ b/.releasenotes/notes/sfdc-support-995867e00a89add0.yaml
@@ -0,0 +1,20 @@
+---
+summary: >
+   Added support for the Push Notifications service to Salesforce.
+
+features:
+  - |
+    Added support for the Push Notification service to Salesforce.
+    To configure the Push Notification service for a SalesForce account,
+    define following variables on the cluster level metadata:
+
+    .. code-block:: yaml
+
+       sfdc_auth_url: https://login.salesforce.com/services/oauth2/token
+       sfdc_username: user@example.net
+       sfdc_password: secret
+       sfdc_consumer_key: example_consumer_key
+       sfdc_consumer_secret: example_consumer_secret
+       sfdc_organization_id: example_organization_id
+       sfdc_sandbox_enabled: True/False
+
diff --git a/.releasenotes/notes/spawn-multiple-replicas-prometheus-b80eaede9c19b8cd.yaml b/.releasenotes/notes/spawn-multiple-replicas-prometheus-b80eaede9c19b8cd.yaml
new file mode 100644
index 0000000..df15d71
--- /dev/null
+++ b/.releasenotes/notes/spawn-multiple-replicas-prometheus-b80eaede9c19b8cd.yaml
@@ -0,0 +1,15 @@
+---
+summary: >
+  Spawned two replicas of Prometheus to provide HA
+
+features:
+  - Spawned two replicas of Prometheus inside Docker Swarm.
+    These two instances have the same configuration file
+    and scrape the same endpoints. Therefore, they can be
+    treated as one-to-one copies.
+    Due to a limitation, when connecting to the Prometheus
+    web UI it is not possible to choose to which of the
+    existing Prometheus servers to connect and those
+    servers may contain slightly different results for the
+    same queries. Therefore, we suggest that you use Grafana
+    to visualize the data.
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 4fd75aa..35dcda3 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,6 +1,8 @@
 Changelog
 ==========
 
+* 2017-05-22 Petr Michalec <pmichalec@mirantis.com}
+- enable galera cluster check script for haproxy, require salt-formula-galera >= MCP 1.1
 
 * 2017-03-03 Tomáš Kukrál <tkukral@mirantis.com}
 - change default Salt-API port to 6969
diff --git a/aodh/server/cluster.yml b/aodh/server/cluster.yml
index 4743111..00a8263 100644
--- a/aodh/server/cluster.yml
+++ b/aodh/server/cluster.yml
@@ -1,6 +1,8 @@
 classes:
 - service.aodh.server.cluster
+- service.haproxy.proxy.single
 - system.haproxy.proxy.listen.openstack.aodh
+- system.keepalived.cluster.instance.openstack_telemetry_vip
 parameters:
   aodh:
     server:
diff --git a/aptly/server/docker.yml b/aptly/server/docker.yml
index 3fa0a8e1..c33f169 100644
--- a/aptly/server/docker.yml
+++ b/aptly/server/docker.yml
@@ -6,13 +6,17 @@
     aptly_gpg_keypair_id: none
     aptly_gpg_public_key: none
     aptly_gpg_private_key: none
+    aptly_server_mirror_sources: false
+    aptly_server_mirror_ubuntu_sources: ${_param:aptly_server_mirror_sources}
+    docker_image_aptly:
+      base: tcpcloud/aptly
   aptly:
     server:
       enabled: true
       secure: ${_param:aptly_server_secure}
       source:
         engine: docker
-        image: tcpcloud/aptly
+        image: ${_param:docker_image_aptly:base}
       user:
         uid: 501
         gid: 501
diff --git a/aptly/server/mirror/debian/aptly.yml b/aptly/server/mirror/debian/aptly.yml
index 48a176e..ce05ee6 100644
--- a/aptly/server/mirror/debian/aptly.yml
+++ b/aptly/server/mirror/debian/aptly.yml
@@ -1,14 +1,19 @@
 parameters:
+  _param:
+    mirror_aptly_source: http://repo.aptly.info/
+    mirror_aptly_distribution: squeeze
+    mirror_aptly_components: main
+    mirror_aptly_gpgkeys:
+      - 9C7DE460
   aptly:
     server:
       mirror:
         aptly:
-          source: http://repo.aptly.info/
-          distribution: squeeze
-          components: main
+          source: ${_param:mirror_aptly_source}
+          distribution: ${_param:mirror_aptly_distribution}
+          components: ${_param:mirror_aptly_components}
           architectures: amd64
-          gpgkeys:
-            - 9C7DE460
+          gpgkeys: ${_param:mirror_aptly_gpgkeys}
           publisher:
             component: extra
             distributions:
diff --git a/aptly/server/mirror/debian/cassandra.yml b/aptly/server/mirror/debian/cassandra.yml
index 846df4e..3a19e84 100644
--- a/aptly/server/mirror/debian/cassandra.yml
+++ b/aptly/server/mirror/debian/cassandra.yml
@@ -1,18 +1,22 @@
 parameters:
   _param:
     apt_mk_version: stable
+    mirror_cassandra-21x_source: http://www.apache.org/dist/cassandra/debian
+    mirror_cassandra-21x_distribution: 21x
+    mirror_cassandra-21x_components: main
+    mirror_cassandra-21x_gpgkeys:
+      - F758CE318D77295D
+      - 2B5C1B00
+      - 0353B12C
   aptly:
     server:
       mirror:
         cassandra-21x:
-          source: http://www.apache.org/dist/cassandra/debian
-          distribution: 21x
-          components: main
+          source: ${_param:mirror_cassandra-21x_source}
+          distribution: ${_param:mirror_cassandra-21x_distribution}
+          components: ${_param:mirror_cassandra-21x_components}
           architectures: amd64
-          gpgkeys:
-            - F758CE318D77295D
-            - 2B5C1B00
-            - 0353B12C
+          gpgkeys: ${_param:mirror_cassandra-21x_gpgkeys}
           publisher:
             component: extra
             distributions:
diff --git a/aptly/server/mirror/debian/elasticsearch.yml b/aptly/server/mirror/debian/elasticsearch.yml
index ece60af..84a21d1 100644
--- a/aptly/server/mirror/debian/elasticsearch.yml
+++ b/aptly/server/mirror/debian/elasticsearch.yml
@@ -1,52 +1,68 @@
 parameters:
   _param:
     apt_mk_version: stable
+    mirror_elasticsearch-2x_source: http://packages.elastic.co/elasticsearch/2.x/debian
+    mirror_elasticsearch-2x_distribution: stable
+    mirror_elasticsearch-2x_components: main
+    mirror_elasticsearch-2x_gpgkeys:
+      - D88E42B4
+    mirror_kibana_source: http://packages.elasticsearch.org/kibana/4.4/debian
+    mirror_kibana_distribution: stable
+    mirror_kibana_components: main
+    mirror_kibana_gpgkeys:
+      - D88E42B4
+    mirror_kibana-46_source: http://packages.elasticsearch.org/kibana/4.6/debian
+    mirror_kibana-46_distribution: stable
+    mirror_kibana-46_components: main
+    mirror_kibana-46_gpgkeys:
+      - D88E42B4
+    mirror_elasticsearch-curator_source: http://packages.elastic.co/curator/4/debian
+    mirror_elasticsearch-curator_distribution: stable
+    mirror_elasticsearch-curator_components: main
+    mirror_elasticsearch-curator_gpgkeys:
+      - D88E42B4
   aptly:
     server:
       mirror:
         elasticsearch-2x:
-          source: http://packages.elastic.co/elasticsearch/2.x/debian
-          distribution: stable
-          components: main
+          source: ${_param:mirror_elasticsearch-2x_source}
+          distribution: ${_param:mirror_elasticsearch-2x_distribution}
+          components: ${_param:mirror_elasticsearch-2x_components}
           architectures: amd64
-          gpgkeys:
-            - D88E42B4
+          gpgkeys: ${_param:mirror_elasticsearch-2x_gpgkeys}
           publisher:
             component: elastic
             distributions:
               - trusty/${_param:apt_mk_version}
               - xenial/${_param:apt_mk_version}
         kibana:
-          source: http://packages.elasticsearch.org/kibana/4.4/debian
-          distribution: stable
-          components: main
+          source: ${_param:mirror_kibana_source}
+          distribution: ${_param:mirror_kibana_distribution}
+          components: ${_param:mirror_kibana_components}
           architectures: amd64
-          gpgkeys:
-            - D88E42B4
+          gpgkeys: ${_param:mirror_kibana_gpgkeys}
           publisher:
             component: elastic
             distributions:
               - trusty/${_param:apt_mk_version}
               - xenial/${_param:apt_mk_version}
         kibana-46:
-          source: http://packages.elasticsearch.org/kibana/4.6/debian
-          distribution: stable
-          components: main
+          source: ${_param:mirror_kibana-46_source}
+          distribution: ${_param:mirror_kibana-46_distribution}
+          components: ${_param:mirror_kibana-46_components}
           architectures: amd64
-          gpgkeys:
-            - D88E42B4
+          gpgkeys: ${_param:mirror_kibana-46_gpgkeys}
           publisher:
             component: elastic
             distributions:
               - trusty/${_param:apt_mk_version}
               - xenial/${_param:apt_mk_version}
         elasticsearch-curator:
-          source: http://packages.elastic.co/curator/4/debian
-          distribution: stable
-          components: main
+          source: ${_param:mirror_elasticsearch-curator_source}
+          distribution: ${_param:mirror_elasticsearch-curator_distribution}
+          components: ${_param:mirror_elasticsearch-curator_components}
           architectures: amd64
-          gpgkeys:
-            - D88E42B4
+          gpgkeys: ${_param:mirror_elasticsearch-curator_gpgkeys}
           publisher:
             component: elastic
             distributions:
diff --git a/aptly/server/mirror/debian/jenkins.yml b/aptly/server/mirror/debian/jenkins.yml
index f04f4d9..1392323 100644
--- a/aptly/server/mirror/debian/jenkins.yml
+++ b/aptly/server/mirror/debian/jenkins.yml
@@ -1,28 +1,37 @@
 parameters:
+  _param:
+    mirror_jenkins_source: http://pkg.jenkins-ci.org/debian/
+    mirror_jenkins_distribution: binary/
+    mirror_jenkins_components: ""
+    mirror_jenkins_gpgkeys:
+      - D50582E6
+    mirror_jenkins-debian-glue_source: http://jenkins.grml.org/debian/
+    mirror_jenkins-debian-glue_distribution: jenkins-debian-glue
+    mirror_jenkins-debian-glue_components: main
+    # TODO: this key is not uploaded to keyserver, workaround:
+    # su aptly -c 'curl http://jenkins.grml.org/debian/C525F56752D4A654.asc|gpg --no-default-keyring --keyring trustedkeys.gpg --import'
+    mirror_jenkins-debian-glue_gpgkeys:
+      - 52D4A654
   aptly:
     server:
       mirror:
         jenkins:
-          source: http://pkg.jenkins-ci.org/debian/
-          distribution: binary/
-          components: ""
+          source: ${_param:mirror_jenkins_source}
+          distribution: ${_param:mirror_jenkins_distribution}
+          components: ${_param:mirror_jenkins_components}
           architectures: amd64
-          gpgkeys:
-            - D50582E6
+          gpgkeys: ${_param:mirror_jenkins_gpgkeys}
           publisher:
             component: extra
             distributions:
               - trusty/nightly
               - xenial/nightly
         jenkins-debian-glue:
-          source: http://jenkins.grml.org/debian/
-          distribution: jenkins-debian-glue
-          components: main
+          source: ${_param:mirror_jenkins-debian-glue_source}
+          distribution: ${_param:mirror_jenkins-debian-glue_distribution}
+          components: ${_param:mirror_jenkins-debian-glue_components}
           architectures: amd64
-          # TODO: this key is not uploaded to keyserver, workaround:
-          # su aptly -c 'curl http://jenkins.grml.org/debian/C525F56752D4A654.asc|gpg --no-default-keyring --keyring trustedkeys.gpg --import'
-          gpgkeys:
-            - 52D4A654
+          gpgkeys: ${_param:mirror_jenkins-debian-glue_gpgkeys}
           publisher:
             component: extra
             distributions:
diff --git a/aptly/server/mirror/debian/sensu.yml b/aptly/server/mirror/debian/sensu.yml
index 0361538..9e2f5a1 100644
--- a/aptly/server/mirror/debian/sensu.yml
+++ b/aptly/server/mirror/debian/sensu.yml
@@ -1,18 +1,22 @@
 parameters:
   _param:
     apt_mk_version: stable
+    mirror_sensu_source: http://sensu.global.ssl.fastly.net/apt
+    mirror_sensu_distribution: sensu
+    mirror_sensu_components: main
+    mirror_sensu_gpgkeys:
+      - EB9C94BB
   aptly:
     server:
       mirror:
         sensu:
-          source: http://sensu.global.ssl.fastly.net/apt
-          distribution: sensu
-          components: main
+          source: ${_param:mirror_sensu_source}
+          distribution: ${_param:mirror_sensu_distribution}
+          components: ${_param:mirror_sensu_components}
           architectures: amd64
-          gpgkeys:
-            - EB9C94BB
+          gpgkeys: ${_param:mirror_sensu_gpgkeys}
           publisher:
             component: sensu
             distributions:
               - ubuntu-trusty/${_param:apt_mk_version}
-              - ubuntu-xenial/${_param:apt_mk_version}
+              - ubuntu-xenial/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ceph.yml b/aptly/server/mirror/ubuntu/trusty/ceph.yml
index 2729acc..9d0d950 100644
--- a/aptly/server/mirror/ubuntu/trusty/ceph.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ceph.yml
@@ -1,15 +1,22 @@
 parameters:
+  _param:
+    ceph_version: luminous
+    apt_mk_version: stable
+    mirror_ceph-trusty_source: http://download.ceph.com/debian-${_param:ceph_version}
+    mirror_ceph-trusty_distribution: trusty
+    mirror_ceph-trusty_components: main
+    mirror_ceph-trusty_gpgkeys:
+      - 460F3994
   aptly:
     server:
       mirror:
         ceph-trusty:
-          source: http://download.ceph.com/debian-hammer
-          distribution: trusty
-          components: main
+          source: ${_param:mirror_ceph-trusty_source}
+          distribution: ${_param:mirror_ceph-trusty_distribution}
+          components: ${_param:mirror_ceph-trusty_components}
           architectures: amd64
-          gpgkeys:
-            - 460F3994
+          gpgkeys: ${_param:mirror_ceph-trusty_gpgkeys}
           publisher:
             component: ceph
             distributions:
-              - ubuntu-trusty/nightly
+              - ubuntu-trusty/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/trusty/docker.yml b/aptly/server/mirror/ubuntu/trusty/docker.yml
index 217d405..5ee9daf 100644
--- a/aptly/server/mirror/ubuntu/trusty/docker.yml
+++ b/aptly/server/mirror/ubuntu/trusty/docker.yml
@@ -1,14 +1,19 @@
 parameters:
+  _param:
+    mirror_docker-trusty_source: 'https://download.docker.com/linux/ubuntu'
+    mirror_docker-trusty_distribution: trusty
+    mirror_docker-trusty_components: stable
+    mirror_docker-trusty_gpgkeys:
+      - 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
   aptly:
     server:
       mirror:
         docker-trusty:
-          source: https://apt.dockerproject.org/repo
-          distribution: ubuntu-trusty
-          components: main
+          source: ${_param:mirror_docker-trusty_source}
+          distribution: ${_param:mirror_docker-trusty_distribution}
+          components: ${_param:mirror_docker-trusty_components}
           architectures: amd64
-          gpgkeys:
-            - 58118E89F3A912897C070ADBF76221572C52609D
+          gpgkeys: ${_param:mirror_docker-trusty_gpgkeys}
           publisher:
             component: docker
             distributions:
diff --git a/aptly/server/mirror/ubuntu/trusty/docker_legacy.yml b/aptly/server/mirror/ubuntu/trusty/docker_legacy.yml
new file mode 100644
index 0000000..a686566
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/docker_legacy.yml
@@ -0,0 +1,20 @@
+parameters:
+  _param:
+    mirror_docker-trusty_source: 'https://apt.dockerproject.org/repo'
+    mirror_docker-trusty_distribution: ubuntu-trusty
+    mirror_docker-trusty_components: main
+    mirror_docker-trusty_gpgkeys:
+      - 58118E89F3A912897C070ADBF76221572C52609D
+  aptly:
+    server:
+      mirror:
+        docker-trusty-legacy:
+          source: ${_param:mirror_docker-trusty_source}
+          distribution: ${_param:mirror_docker-trusty_distribution}
+          components: ${_param:mirror_docker-trusty_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_docker-trusty_gpgkeys}
+          publisher:
+            component: docker-legacy
+            distributions:
+              - ubuntu-trusty/nightly
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/erlang.yml b/aptly/server/mirror/ubuntu/trusty/erlang.yml
index 7a01032..cb173f1 100644
--- a/aptly/server/mirror/ubuntu/trusty/erlang.yml
+++ b/aptly/server/mirror/ubuntu/trusty/erlang.yml
@@ -1,14 +1,19 @@
 parameters:
+  _param:
+    mirror_erlang-trusty_source: http://packages.erlang-solutions.com/ubuntu
+    mirror_erlang-trusty_distribution: trusty
+    mirror_erlang-trusty_components: contrib
+    mirror_erlang-trusty_gpgkeys:
+      - A14F4FCA
   aptly:
     server:
       mirror:
         erlang-trusty:
-          source: http://packages.erlang-solutions.com/ubuntu
-          distribution: trusty
-          components: contrib
+          source: ${_param:mirror_erlang-trusty_source}
+          distribution: ${_param:mirror_erlang-trusty_distribution}
+          components: ${_param:mirror_erlang-trusty_components}
           architectures: amd64
-          gpgkeys:
-            - A14F4FCA
+          gpgkeys: ${_param:mirror_erlang-trusty_gpgkeys}
           publisher:
             component: erlang
             distributions:
diff --git a/aptly/server/mirror/ubuntu/trusty/foreman.yml b/aptly/server/mirror/ubuntu/trusty/foreman.yml
index 6769691..902f86e 100644
--- a/aptly/server/mirror/ubuntu/trusty/foreman.yml
+++ b/aptly/server/mirror/ubuntu/trusty/foreman.yml
@@ -1,25 +1,35 @@
 parameters:
+  _param:
+    mirror_foreman-trusty_source: http://deb.theforeman.org
+    mirror_foreman-trusty_distribution: trusty
+    mirror_foreman-trusty_components: stable
+    mirror_foreman-trusty_gpgkeys:
+      - 1AA043B8
+
+    mirror_foreman-plugins-trusty_source: http://deb.theforeman.org
+    mirror_foreman-plugins-trusty_distribution: plugins
+    mirror_foreman-plugins-trusty_components: stable
+    mirror_foreman-plugins-trusty_gpgkeys:
+      - 1AA043B8
   aptly:
     server:
       mirror:
         foreman-trusty:
-          source: http://deb.theforeman.org
-          distribution: trusty
-          components: stable
+          source: ${_param:mirror_foreman-trusty_source}
+          distribution: ${_param:mirror_foreman-trusty_distribution}
+          components: ${_param:mirror_foreman-trusty_components}
           architectures: amd64
-          gpgkeys:
-            - 1AA043B8
+          gpgkeys: ${_param:mirror_foreman-trusty_gpgkeys}
           publisher:
             component: extra
             distributions:
               - ubuntu-trusty/nightly
         foreman-plugins-trusty:
-          source: http://deb.theforeman.org
-          distribution: plugins
-          components: stable
+          source: ${_param:mirror_foreman-plugins-trusty_source}
+          distribution: ${_param:mirror_foreman-plugins-trusty_distribution}
+          components: ${_param:mirror_foreman-plugins-trusty_components}
           architectures: amd64
-          gpgkeys:
-            - 1AA043B8
+          gpgkeys: ${_param:mirror_foreman-plugins-trusty_gpgkeys}
           publisher:
             component: extra
             distributions:
diff --git a/aptly/server/mirror/ubuntu/trusty/galera.yml b/aptly/server/mirror/ubuntu/trusty/galera.yml
index 61acd31..1a2e749 100644
--- a/aptly/server/mirror/ubuntu/trusty/galera.yml
+++ b/aptly/server/mirror/ubuntu/trusty/galera.yml
@@ -1,14 +1,19 @@
 parameters:
+  _param:
+    mirror_galera-trusty_source: http://releases.galeracluster.com/ubuntu/
+    mirror_galera-trusty_distribution: trusty
+    mirror_galera-trusty_components: main
+    mirror_galera-trusty_gpgkeys:
+      - BC19DDBA
   aptly:
     server:
       mirror:
         galera-trusty:
-          source: http://releases.galeracluster.com/ubuntu/
-          distribution: trusty
-          components: main
+          source: ${_param:mirror_galera-trusty_source}
+          distribution: ${_param:mirror_galera-trusty_distribution}
+          components: ${_param:mirror_galera-trusty_components}
           architectures: amd64
-          gpgkeys:
-            - BC19DDBA
+          gpgkeys: ${_param:mirror_galera-trusty_gpgkeys}
           publisher:
             component: galera
             distributions:
diff --git a/aptly/server/mirror/ubuntu/trusty/glusterfs.yml b/aptly/server/mirror/ubuntu/trusty/glusterfs.yml
index 4d27bf6..1777777 100644
--- a/aptly/server/mirror/ubuntu/trusty/glusterfs.yml
+++ b/aptly/server/mirror/ubuntu/trusty/glusterfs.yml
@@ -1,17 +1,21 @@
 parameters:
   _param:
     glusterfs_version: 3.8
+    mirror_glusterfs_upstream_trusty_source: http://ppa.launchpad.net/gluster/glusterfs-${_param:glusterfs_version}/ubuntu
+    mirror_glusterfs_upstream_trusty_distribution: trusty
+    mirror_glusterfs_upstream_trusty_components: main
+    mirror_glusterfs_upstream_trusty_gpgkeys:
+      - 3FE869A9
   aptly:
     server:
       mirror:
         glusterfs_upstream_trusty:
-          source: http://ppa.launchpad.net/gluster/glusterfs-${_param:glusterfs_version}/ubuntu
-          distribution: trusty
-          components: main
+          source: ${_param:mirror_glusterfs_upstream_trusty_source}
+          distribution: ${_param:mirror_glusterfs_upstream_trusty_distribution}
+          components: ${_param:mirror_glusterfs_upstream_trusty_components}
           architectures: amd64
-          gpgkeys:
-            - 3FE869A9
+          gpgkeys: ${_param:mirror_glusterfs_upstream_trusty_gpgkeys}
           publisher:
             component: glusterfs
             distributions:
-              - ubuntu-trusty/nightly
+              - ubuntu-trusty/nightly
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/grafana.yml b/aptly/server/mirror/ubuntu/trusty/grafana.yml
index 68ff86a..16c4124 100644
--- a/aptly/server/mirror/ubuntu/trusty/grafana.yml
+++ b/aptly/server/mirror/ubuntu/trusty/grafana.yml
@@ -1,14 +1,19 @@
 parameters:
+  _param:
+    mirror_grafana-trusty_source: https://packagecloud.io/grafana/stable/debian/
+    mirror_grafana-trusty_distribution: wheezy
+    mirror_grafana-trusty_components: main
+    mirror_grafana-trusty_gpgkeys:
+      - D59097AB
   aptly:
     server:
       mirror:
         grafana-trusty:
-          source: https://packagecloud.io/grafana/stable/debian/
-          distribution: wheezy
-          components: main
+          source: ${_param:mirror_grafana-trusty_source}
+          distribution: ${_param:mirror_grafana-trusty_distribution}
+          components: ${_param:mirror_grafana-trusty_components}
           architectures: amd64
-          gpgkeys:
-            - D59097AB
+          gpgkeys: ${_param:mirror_grafana-trusty_gpgkeys}
           publisher:
             component: grafana
             distributions:
diff --git a/aptly/server/mirror/ubuntu/trusty/haproxy.yml b/aptly/server/mirror/ubuntu/trusty/haproxy.yml
index 0b92cb2..ca4c9c5 100644
--- a/aptly/server/mirror/ubuntu/trusty/haproxy.yml
+++ b/aptly/server/mirror/ubuntu/trusty/haproxy.yml
@@ -1,14 +1,19 @@
 parameters:
+  _param:
+    mirror_haproxy-trusty_source: http://ppa.launchpad.net/vbernat/haproxy-1.5/ubuntu
+    mirror_haproxy-trusty_distribution: trusty
+    mirror_haproxy-trusty_components: main
+    mirror_haproxy-trusty_gpgkeys:
+      - 1C61B9CD
   aptly:
     server:
       mirror:
         haproxy-trusty:
-          source: http://ppa.launchpad.net/vbernat/haproxy-1.5/ubuntu
-          distribution: trusty
-          components: main
+          source: ${_param:mirror_haproxy-trusty_source}
+          distribution: ${_param:mirror_haproxy-trusty_distribution}
+          components: ${_param:mirror_haproxy-trusty_components}
           architectures: amd64
-          gpgkeys:
-            - 1C61B9CD
+          gpgkeys: ${_param:mirror_haproxy-trusty_gpgkeys}
           publisher:
             component: haproxy
             distributions:
diff --git a/aptly/server/mirror/ubuntu/trusty/influxdb.yml b/aptly/server/mirror/ubuntu/trusty/influxdb.yml
index 8d30a05..824cde6 100644
--- a/aptly/server/mirror/ubuntu/trusty/influxdb.yml
+++ b/aptly/server/mirror/ubuntu/trusty/influxdb.yml
@@ -1,14 +1,19 @@
 parameters:
+  _param:
+    mirror_influxdb-trusty_source: https://repos.influxdata.com/ubuntu/
+    mirror_influxdb-trusty_distribution: trusty
+    mirror_influxdb-trusty_components: stable
+    mirror_influxdb-trusty_gpgkeys:
+      - 2582E0C5
   aptly:
     server:
       mirror:
         influxdb-trusty:
-          source: https://repos.influxdata.com/ubuntu/
-          distribution: trusty
-          components: stable
+          source: ${_param:mirror_influxdb-trusty_source}
+          distribution: ${_param:mirror_influxdb-trusty_distribution}
+          components: ${_param:mirror_influxdb-trusty_components}
           architectures: amd64
-          gpgkeys:
-            - 2582E0C5
+          gpgkeys: ${_param:mirror_influxdb-trusty_gpgkeys}
           publisher:
             component: influxdb
             distributions:
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/extra.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/extra.yml
new file mode 100644
index 0000000..89e3da0
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/extra.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_trusty_extra_source: http://apt.mirantis.com/trusty/
+    mirror_mirantis_openstack_trusty_extra_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_trusty_extra_components: extra
+    mirror_mirantis_openstack_trusty_extra_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_trusty_extra_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_trusty_extra:
+          source: ${_param:mirror_mirantis_openstack_trusty_extra_source}
+          distribution: ${_param:mirror_mirantis_openstack_trusty_extra_distribution}
+          components: ${_param:mirror_mirantis_openstack_trusty_extra_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_trusty_extra_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_trusty_extra_gpgkeys}
+          publisher:
+            component: extra
+            distributions:
+              - ubuntu-trusty/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/init.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/init.yml
index 35ae854..a2a848e 100644
--- a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/init.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/init.yml
@@ -1,67 +1,8 @@
-parameters:
-  _param:
-    apt_mk_version: stable
-  aptly:
-    server:
-      mirror:
-        # required for opencontrail formulas
-        mcp_opencontrail_trusty_oc311:
-          source: http://apt-mk.mirantis.com/trusty/
-          distribution: ${_param:apt_mk_version}
-          components: oc311
-          architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
-          gpgkeys:
-            - A76882D3
-          publisher:
-            component: oc311
-            distributions:
-              - ubuntu-trusty/${_param:apt_mk_version}
-        mcp_opencontrail_trusty_oc31:
-          source: http://apt-mk.mirantis.com/trusty/
-          distribution: ${_param:apt_mk_version}
-          components: oc31
-          architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
-          gpgkeys:
-            - A76882D3
-          publisher:
-            component: oc31
-            distributions:
-              - ubuntu-trusty/${_param:apt_mk_version}
-        mcp_opencontrail_trusty_oc32:
-          source: http://apt-mk.mirantis.com/trusty/
-          distribution: ${_param:apt_mk_version}
-          components: oc32
-          architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
-          gpgkeys:
-            - A76882D3
-          publisher:
-            component: oc32
-            distributions:
-              - ubuntu-trusty/${_param:apt_mk_version}
-        mirantis_openstack_trusty_extra:
-          source: http://apt-mk.mirantis.com/trusty/
-          distribution: ${_param:apt_mk_version}
-          components: extra
-          architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
-          gpgkeys:
-            - A76882D3
-          publisher:
-            component: extra
-            distributions:
-              - ubuntu-trusty/${_param:apt_mk_version}
-        mirantis_openstack_trusty_salt:
-          source: http://apt-mk.mirantis.com/trusty/
-          distribution: ${_param:apt_mk_version}
-          components: salt
-          architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
-          gpgkeys:
-            - A76882D3
-          publisher:
-            component: salt
-            distributions:
-              - ubuntu-trusty/${_param:apt_mk_version}
+classes:
+- system.aptly.server.mirror.ubuntu.trusty.mcp.apt_mk.oc31
+- system.aptly.server.mirror.ubuntu.trusty.mcp.apt_mk.oc311
+- system.aptly.server.mirror.ubuntu.trusty.mcp.apt_mk.oc32
+- system.aptly.server.mirror.ubuntu.trusty.mcp.apt_mk.oc323
+- system.aptly.server.mirror.ubuntu.trusty.mcp.apt_mk.mitaka
+- system.aptly.server.mirror.ubuntu.trusty.mcp.apt_mk.extra
+- system.aptly.server.mirror.ubuntu.trusty.mcp.apt_mk.salt
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/mitaka.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/mitaka.yml
new file mode 100644
index 0000000..6ad0019
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/mitaka.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mk_openstack_xenial_mitaka_source: http://apt.mirantis.com/trusty/
+    mirror_mk_openstack_xenial_mitaka_distribution: ${_param:apt_mk_version}
+    mirror_mk_openstack_xenial_mitaka_components: mitaka
+    mirror_mk_openstack_xenial_mitaka_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mk_openstack_xenial_mitaka_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mk_openstack_xenial_mitaka:
+          source: ${_param:mirror_mk_openstack_xenial_mitaka_source}
+          distribution: ${_param:mirror_mk_openstack_xenial_mitaka_distribution}
+          components: ${_param:mirror_mk_openstack_xenial_mitaka_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mk_openstack_xenial_mitaka_key_url}
+          gpgkeys: ${_param:mirror_mk_openstack_xenial_mitaka_gpgkeys}
+          publisher:
+            component: mitaka
+            distributions:
+              - ubuntu-trusty/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc31.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc31.yml
new file mode 100644
index 0000000..5678d34
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc31.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mcp_opencontrail_trusty_oc31_source: http://apt.mirantis.com/trusty/
+    mirror_mcp_opencontrail_trusty_oc31_distribution: ${_param:apt_mk_version}
+    mirror_mcp_opencontrail_trusty_oc31_components: oc31
+    mirror_mcp_opencontrail_trusty_oc31_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mcp_opencontrail_trusty_oc31_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mcp_opencontrail_trusty_oc31:
+          source: ${_param:mirror_mcp_opencontrail_trusty_oc31_source}
+          distribution: ${_param:mirror_mcp_opencontrail_trusty_oc31_distribution}
+          components: ${_param:mirror_mcp_opencontrail_trusty_oc31_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mcp_opencontrail_trusty_oc31_key_url}
+          gpgkeys: ${_param:mirror_mcp_opencontrail_trusty_oc31_gpgkeys}
+          publisher:
+            component: oc31
+            distributions:
+              - ubuntu-trusty/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc311.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc311.yml
new file mode 100644
index 0000000..026abdc
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc311.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mcp_opencontrail_trusty_oc311_source: http://apt.mirantis.com/trusty/
+    mirror_mcp_opencontrail_trusty_oc311_distribution: ${_param:apt_mk_version}
+    mirror_mcp_opencontrail_trusty_oc311_components: oc311
+    mirror_mcp_opencontrail_trusty_oc311_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mcp_opencontrail_trusty_oc311_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mcp_opencontrail_trusty_oc311:
+          source: ${_param:mirror_mcp_opencontrail_trusty_oc311_source}
+          distribution: ${_param:mirror_mcp_opencontrail_trusty_oc311_distribution}
+          components: ${_param:mirror_mcp_opencontrail_trusty_oc311_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mcp_opencontrail_trusty_oc311_key_url}
+          gpgkeys: ${_param:mirror_mcp_opencontrail_trusty_oc311_gpgkeys}
+          publisher:
+            component: oc311
+            distributions:
+              - ubuntu-trusty/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc32.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc32.yml
new file mode 100644
index 0000000..a9f388b
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc32.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mcp_opencontrail_trusty_oc32_source: http://apt.mirantis.com/trusty/
+    mirror_mcp_opencontrail_trusty_oc32_distribution: ${_param:apt_mk_version}
+    mirror_mcp_opencontrail_trusty_oc32_components: oc32
+    mirror_mcp_opencontrail_trusty_oc32_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mcp_opencontrail_trusty_oc32_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mcp_opencontrail_trusty_oc32:
+          source: ${_param:mirror_mcp_opencontrail_trusty_oc32_source}
+          distribution: ${_param:mirror_mcp_opencontrail_trusty_oc32_distribution}
+          components: ${_param:mirror_mcp_opencontrail_trusty_oc32_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mcp_opencontrail_trusty_oc32_key_url}
+          gpgkeys: ${_param:mirror_mcp_opencontrail_trusty_oc32_gpgkeys}
+          publisher:
+            component: oc32
+            distributions:
+              - ubuntu-trusty/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc323.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc323.yml
new file mode 100644
index 0000000..10b503e
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc323.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mcp_opencontrail_trusty_oc323_source: http://apt.mirantis.com/trusty/
+    mirror_mcp_opencontrail_trusty_oc323_distribution: ${_param:apt_mk_version}
+    mirror_mcp_opencontrail_trusty_oc323_components: oc323
+    mirror_mcp_opencontrail_trusty_oc323_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mcp_opencontrail_trusty_oc323_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mcp_opencontrail_trusty_oc323:
+          source: ${_param:mirror_mcp_opencontrail_trusty_oc323_source}
+          distribution: ${_param:mirror_mcp_opencontrail_trusty_oc323_distribution}
+          components: ${_param:mirror_mcp_opencontrail_trusty_oc323_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mcp_opencontrail_trusty_oc323_key_url}
+          gpgkeys: ${_param:mirror_mcp_opencontrail_trusty_oc323_gpgkeys}
+          publisher:
+            component: oc323
+            distributions:
+              - ubuntu-trusty/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/salt.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/salt.yml
new file mode 100644
index 0000000..5e06a4e
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/salt.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_trusty_salt_source: http://apt.mirantis.com/trusty/
+    mirror_mirantis_openstack_trusty_salt_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_trusty_salt_components: salt
+    mirror_mirantis_openstack_trusty_salt_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_trusty_salt_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_trusty_salt:
+          source: ${_param:mirror_mirantis_openstack_trusty_salt_source}
+          distribution: ${_param:mirror_mirantis_openstack_trusty_salt_distribution}
+          components: ${_param:mirror_mirantis_openstack_trusty_salt_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_trusty_salt_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_trusty_salt_gpgkeys}
+          publisher:
+            component: salt
+            distributions:
+              - ubuntu-trusty/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/openstack_mitaka.yml b/aptly/server/mirror/ubuntu/trusty/mcp/openstack_mitaka.yml
index d9e54e5..8263ad1 100644
--- a/aptly/server/mirror/ubuntu/trusty/mcp/openstack_mitaka.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/openstack_mitaka.yml
@@ -1,41 +1,73 @@
 parameters:
+  _param:
+    mirror_mirantis_openstack_mitaka_trusty_source: http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty
+    mirror_mirantis_openstack_mitaka_trusty_distribution: mitaka
+    mirror_mirantis_openstack_mitaka_trusty_components: main restricted
+    mirror_mirantis_openstack_mitaka_trusty_key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty/archive-mcpmitaka.key"
+    mirror_mirantis_openstack_mitaka_trusty_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis_openstack_mitaka_hotfix_trusty_source: http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty
+    mirror_mirantis_openstack_mitaka_hotfix_trusty_distribution: mitaka-hotfix
+    mirror_mirantis_openstack_mitaka_hotfix_trusty_components: main restricted
+    mirror_mirantis_openstack_mitaka_hotfix_trusty_key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty/archive-mcpmitaka.key"
+    mirror_mirantis_openstack_mitaka_hotfix_trusty_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis_openstack_mitaka_security_trusty_source: http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty
+    mirror_mirantis_openstack_mitaka_security_trusty_distribution: mitaka-security
+    mirror_mirantis_openstack_mitaka_security_trusty_components: main restricted
+    mirror_mirantis_openstack_mitaka_security_trusty_key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty/archive-mcpmitaka.key"
+    mirror_mirantis_openstack_mitaka_security_trusty_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis_openstack_mitaka_updates_trusty_source: http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty
+    mirror_mirantis_openstack_mitaka_updates_trusty_distribution: mitaka-updates
+    mirror_mirantis_openstack_mitaka_updates_trusty_components: main restricted
+    mirror_mirantis_openstack_mitaka_updates_trusty_key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty/archive-mcpmitaka.key"
+    mirror_mirantis_openstack_mitaka_updates_trusty_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis_openstack_mitaka_holdback_trusty_source: http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty
+    mirror_mirantis_openstack_mitaka_holdback_trusty_distribution: mitaka-holdback
+    mirror_mirantis_openstack_mitaka_holdback_trusty_components: main restricted
+    mirror_mirantis_openstack_mitaka_holdback_trusty_key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty/archive-mcpmitaka.key"
+    mirror_mirantis_openstack_mitaka_holdback_trusty_gpgkeys:
+      - 1FA22B08
   aptly:
     server:
       mirror:
         mirantis_openstack_mitaka_trusty:
-          source: http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty
-          distribution: mitaka
-          components: main restricted
+          source: ${_param:mirror_mirantis_openstack_mitaka_trusty_source}
+          distribution: ${_param:mirror_mirantis_openstack_mitaka_trusty_distribution}
+          components: ${_param:mirror_mirantis_openstack_mitaka_trusty_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty/archive-mcpmitaka.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_mitaka_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_trusty_gpgkeys}
           publisher:
             component: main
             distributions:
               - ubuntu-trusty/mitaka
 
         mirantis_openstack_mitaka_hotfix_trusty:
-          source: http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty
-          distribution: mitaka-hotfix
-          components: main restricted
+          source: ${_param:mirror_mirantis_openstack_mitaka_hotfix_trusty_source}
+          distribution: ${_param:mirror_mirantis_openstack_mitaka_hotfix_trusty_distribution}
+          components: ${_param:mirror_mirantis_openstack_mitaka_hotfix_trusty_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty/archive-mcpmitaka.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_mitaka_hotfix_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_hotfix_trusty_gpgkeys}
           publisher:
             component: main
             distributions:
               - ubuntu-trusty/mitaka-hotfix
 
         mirantis_openstack_mitaka_security_trusty:
-          source: http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty
-          distribution: mitaka-security
-          components: main restricted
+          source: ${_param:mirror_mirantis_openstack_mitaka_security_trusty_source}
+          distribution: ${_param:mirror_mirantis_openstack_mitaka_security_trusty_distribution}
+          components: ${_param:mirror_mirantis_openstack_mitaka_security_trusty_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty/archive-mcpmitaka.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_mitaka_security_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_security_trusty_gpgkeys}
           publisher:
             component: main
             distributions:
@@ -43,13 +75,12 @@
 
         # required for alternative horizon plugins/etc..
         mirantis_openstack_mitaka_updates_trusty:
-          source: http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty
-          distribution: mitaka-updates
-          components:  main restricted
+          source: ${_param:mirror_mirantis_openstack_mitaka_updates_trusty_source}
+          distribution: ${_param:mirror_mirantis_openstack_mitaka_updates_trusty_distribution}
+          components:  ${_param:mirror_mirantis_openstack_mitaka_updates_trusty_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty/archive-mcpmitaka.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_mitaka_updates_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_updates_trusty_gpgkeys}
           publisher:
             component: main
             distributions:
@@ -57,15 +88,13 @@
 
         # required for salt formulas
         mirantis_openstack_mitaka_holdback_trusty:
-          source: http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty
-          distribution: mitaka-holdback
-          components: main restricted
+          source: ${_param:mirror_mirantis_openstack_mitaka_holdback_trusty_source}
+          distribution: ${_param:mirror_mirantis_openstack_mitaka_holdback_trusty_distribution}
+          components: ${_param:mirror_mirantis_openstack_mitaka_holdback_trusty_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/trusty/archive-mcpmitaka.key"
-          gpgkeys:
-          - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_mitaka_holdback_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_holdback_trusty_gpgkeys}
           publisher:
             component: main
             distributions:
-              - ubuntu-trusty/mitaka-holdback
-
+              - ubuntu-trusty/mitaka-holdback
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/mos8.yml b/aptly/server/mirror/ubuntu/trusty/mos8.yml
index c85363f..a9c1ce1 100644
--- a/aptly/server/mirror/ubuntu/trusty/mos8.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mos8.yml
@@ -1,14 +1,34 @@
 parameters:
+  _param:
+    mirror_mirantis-openstack-8.0-trusty_source: http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0-mu-3/
+    mirror_mirantis-openstack-8.0-trusty_distribution: mos8.0
+    mirror_mirantis-openstack-8.0-trusty_components: main restricted
+    mirror_mirantis-openstack-8.0-trusty_key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0-mu-3/archive-mos8.0.key"
+    mirror_mirantis-openstack-8.0-trusty_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis-openstack-8.0-proposed-trusty_source: http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0-mu-3/
+    mirror_mirantis-openstack-8.0-proposed-trusty_distribution: mos8.0-proposed
+    mirror_mirantis-openstack-8.0-proposed-trusty_components: main restricted
+    mirror_mirantis-openstack-8.0-proposed-trusty_key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0-mu-3/archive-mos8.0.key"
+    mirror_mirantis-openstack-8.0-proposed-trusty_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis-openstack-8.0-updates-trusty_source: http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0-mu-3/
+    mirror_mirantis-openstack-8.0-updates-trusty_distribution: mos8.0-updates
+    mirror_mirantis-openstack-8.0-updates-trusty_components: main restricted
+    mirror_mirantis-openstack-8.0-updates-trusty_key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0-mu-3/archive-mos8.0.key"
+    mirror_mirantis-openstack-8.0-updates-trusty_gpgkeys:
+      - 1FA22B08
   aptly:
     server:
       mirror:
         mirantis-openstack-8.0-trusty:
-          source: http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0-mu-3/
-          distribution: mos8.0
-          components: main restricted
+          source: ${_param:mirror_mirantis-openstack-8.0-trusty_source}
+          distribution: ${_param:mirror_mirantis-openstack-8.0-trusty_distribution}
+          components: ${_param:mirror_mirantis-openstack-8.0-trusty_components}
           architectures: amd64
-          gpgkeys:
-            - 1FA22B08
+          gpgkeys: ${_param:mirror_mirantis-openstack-8.0-trusty_gpgkeys}
           publisher:
             component: main
             distributions:
@@ -27,13 +47,12 @@
         #    distributions:
         #      - mos8/mos8.0-hotfix
         mirantis-openstack-8.0-proposed-trusty:
-          source: http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0-mu-3/
-          distribution: mos8.0-proposed
-          components: main restricted
+          source: ${_param:mirror_mirantis-openstack-8.0-proposed-trusty_source}
+          distribution: ${_param:mirror_mirantis-openstack-8.0-proposed-trusty_distribution}
+          components: ${_param:mirror_mirantis-openstack-8.0-proposed-trusty_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0-mu-3/archive-mos8.0.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis-openstack-8.0-proposed-trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis-openstack-8.0-proposed-trusty_gpgkeys}
           publisher:
             component: main
             distributions:
@@ -52,13 +71,12 @@
         #    distributions:
         #      - mos8/mos8.0-security
         mirantis-openstack-8.0-updates-trusty:
-          source: http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0-mu-3/
-          distribution: mos8.0-updates
-          components: main restricted
+          source: ${_param:mirror_mirantis-openstack-8.0-updates-trusty_source}
+          distribution: ${_param:mirror_mirantis-openstack-8.0-updates-trusty_distribution}
+          components: ${_param:mirror_mirantis-openstack-8.0-updates-trusty_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0-mu-3/archive-mos8.0.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis-openstack-8.0-updates-trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis-openstack-8.0-updates-trusty_gpgkeys}
           publisher:
             component: main
             distributions:
diff --git a/aptly/server/mirror/ubuntu/trusty/mos9.yml b/aptly/server/mirror/ubuntu/trusty/mos9.yml
index 29415ab..1d7b7a4 100644
--- a/aptly/server/mirror/ubuntu/trusty/mos9.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mos9.yml
@@ -1,14 +1,41 @@
 parameters:
+  _param:
+    mirror_mirantis-openstack-9.0-trusty_source: http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/
+    mirror_mirantis-openstack-9.0-trusty_distribution: mos9.0
+    mirror_mirantis-openstack-9.0-trusty_components: main restricted
+    mirror_mirantis-openstack-9.0-trusty_key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/archive-mos9.0.key"
+    mirror_mirantis-openstack-9.0-trusty_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis-openstack-9.0-proposed-trusty_source: http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/
+    mirror_mirantis-openstack-9.0-proposed-trusty_distribution: mos9.0-proposed
+    mirror_mirantis-openstack-9.0-proposed-trusty_components: main restricted
+    mirror_mirantis-openstack-9.0-proposed-trusty_key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/archive-mos9.0.key"
+    mirror_mirantis-openstack-9.0-proposed-trusty_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis-openstack-9.0-updates-trusty_source: http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/
+    mirror_mirantis-openstack-9.0-updates-trusty_distribution: mos9.0-updates
+    mirror_mirantis-openstack-9.0-updates-trusty_components: main restricted
+    mirror_mirantis-openstack-9.0-updates-trusty_key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/archive-mos9.0.key"
+    mirror_mirantis-openstack-9.0-updates-trusty_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis-openstack-9.0-extras-murano_source: http://mirror.fuel-infra.org/extras/murano-plugin-repos/release/1.2.0/ubuntu/9.0/
+    mirror_mirantis-openstack-9.0-extras-murano_distribution: mos9.0
+    mirror_mirantis-openstack-9.0-extras-murano_components: main restricted
+    mirror_mirantis-openstack-9.0-extras-murano_key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/archive-mos9.0.key"
+    mirror_mirantis-openstack-9.0-extras-murano_gpgkeys:
+      - 1FA22B08
   aptly:
     server:
       mirror:
         mirantis-openstack-9.0-trusty:
-          source: http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/
-          distribution: mos9.0
-          components: main restricted
+          source: ${_param:mirror_mirantis-openstack-9.0-trusty_source}
+          distribution: ${_param:mirror_mirantis-openstack-9.0-trusty_distribution}
+          components: ${_param:mirror_mirantis-openstack-9.0-trusty_components}
           architectures: amd64
-          gpgkeys:
-            - 1FA22B08
+          gpgkeys: ${_param:mirror_mirantis-openstack-9.0-trusty_gpgkeys}
           publisher:
             component: main
             distributions:
@@ -26,13 +53,12 @@
         #    distributions:
         #      - mos9/mos9.0-hotfix
         mirantis-openstack-9.0-proposed-trusty:
-          source: http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/
-          distribution: mos9.0-proposed
-          components: main restricted
+          source: ${_param:mirror_mirantis-openstack-9.0-proposed-trusty_source}
+          distribution: ${_param:mirror_mirantis-openstack-9.0-proposed-trusty_distribution}
+          components: ${_param:mirror_mirantis-openstack-9.0-proposed-trusty_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/archive-mos9.0.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis-openstack-9.0-proposed-trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis-openstack-9.0-proposed-trusty_gpgkeys}
           publisher:
             component: main
             distributions:
@@ -51,25 +77,23 @@
         #    distributions:
         #      - mos9/mos9.0-security
         mirantis-openstack-9.0-updates-trusty:
-          source: http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/
-          distribution: mos9.0-updates
-          components: main restricted
+          source: ${_param:mirror_mirantis-openstack-9.0-updates-trusty_source}
+          distribution: ${_param:mirror_mirantis-openstack-9.0-updates-trusty_distribution}
+          components: ${_param:mirror_mirantis-openstack-9.0-updates-trusty_}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/archive-mos9.0.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis-openstack-9.0-updates-trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis-openstack-9.0-updates-trusty_gpgkeys}
           publisher:
             component: main
             distributions:
               - mos9/mos9.0-updates
         mirantis-openstack-9.0-extras-murano:
-          source: http://mirror.fuel-infra.org/extras/murano-plugin-repos/release/1.2.0/ubuntu/9.0/
-          distribution: mos9.0
-          components: main restricted
+          source: ${_param:mirror_mirantis-openstack-9.0-extras-murano_source}
+          distribution: ${_param:mirror_mirantis-openstack-9.0-extras-murano_distribution}
+          components: ${_param:mirror_mirantis-openstack-9.0-extras-murano_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/archive-mos9.0.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis-openstack-9.0-extras-murano_key_url}
+          gpgkeys: ${_param:mirror_mirantis-openstack-9.0-extras-murano_gpgkeys}
           publisher:
             component: murano
             distributions:
diff --git a/aptly/server/mirror/ubuntu/trusty/rabbitmq.yml b/aptly/server/mirror/ubuntu/trusty/rabbitmq.yml
index 0b40092..5caa9b5 100644
--- a/aptly/server/mirror/ubuntu/trusty/rabbitmq.yml
+++ b/aptly/server/mirror/ubuntu/trusty/rabbitmq.yml
@@ -1,14 +1,19 @@
 parameters:
+  _param:
+    mirror_rabbitmq-testing-trusty_source: http://www.rabbitmq.com/debian/
+    mirror_rabbitmq-testing-trusty_distribution: testing
+    mirror_rabbitmq-testing-trusty_components: main
+    mirror_rabbitmq-testing-trusty_gpgkeys:
+      - 056E8E56
   aptly:
     server:
       mirror:
         rabbitmq-testing-trusty:
-          source: http://www.rabbitmq.com/debian/
-          distribution: testing
-          components: main
+          source: ${_param:mirror_rabbitmq-testing-trusty_source}
+          distribution: ${_param:mirror_rabbitmq-testing-trusty_distribution}
+          components: ${_param:mirror_rabbitmq-testing-trusty_components}
           architectures: amd64
-          gpgkeys:
-            - 056E8E56
+          gpgkeys: ${_param:mirror_rabbitmq-testing-trusty_gpgkeys}
           publisher:
             component: rabbitmq
             distributions:
diff --git a/aptly/server/mirror/ubuntu/trusty/salt.yml b/aptly/server/mirror/ubuntu/trusty/salt.yml
index 4c243b8..89bf1c5 100644
--- a/aptly/server/mirror/ubuntu/trusty/salt.yml
+++ b/aptly/server/mirror/ubuntu/trusty/salt.yml
@@ -1,16 +1,20 @@
 parameters:
   _param:
     apt_mk_version: stable
+    mirror_salt-2016-3-trusty_source: http://repo.saltstack.com/apt/ubuntu/14.04/amd64/2016.3
+    mirror_salt-2016-3-trusty_distribution: trusty
+    mirror_salt-2016-3-trusty_components: main
+    mirror_salt-2016-3-trusty_gpgkeys:
+      - DE57BFBE
   aptly:
     server:
       mirror:
         salt-2016.3-trusty:
-          source: http://repo.saltstack.com/apt/ubuntu/14.04/amd64/2016.3
-          distribution: trusty
-          components: main
+          source: ${_param:mirror_salt-2016-3-trusty_source}
+          distribution: ${_param:mirror_salt-2016-3-trusty_distribution}
+          components: ${_param:mirror_salt-2016-3-trusty_components}
           architectures: amd64
-          gpgkeys:
-            - DE57BFBE
+          gpgkeys: ${_param:mirror_salt-2016-3-trusty_gpgkeys}
           publisher:
             component: salt
             distributions:
diff --git a/aptly/server/mirror/ubuntu/trusty/sssd.yml b/aptly/server/mirror/ubuntu/trusty/sssd.yml
index 59436a0..3b23542 100644
--- a/aptly/server/mirror/ubuntu/trusty/sssd.yml
+++ b/aptly/server/mirror/ubuntu/trusty/sssd.yml
@@ -1,14 +1,19 @@
 parameters:
+  _param:
+    mirror_sssd-trusty_source: http://ppa.launchpad.net/sssd/updates/ubuntu
+    mirror_sssd-trusty_distribution: trusty
+    mirror_sssd-trusty_components: main
+    mirror_sssd-trusty_gpgkeys:
+      - CA45F42B
   aptly:
     server:
       mirror:
         sssd-trusty:
-          source: http://ppa.launchpad.net/sssd/updates/ubuntu
-          distribution: trusty
-          components: main
+          source: ${_param:mirror_sssd-trusty_source}
+          distribution: ${_param:mirror_sssd-trusty_distribution}
+          components: ${_param:mirror_sssd-trusty_components}
           architectures: amd64
-          gpgkeys:
-            - CA45F42B
+          gpgkeys: ${_param:mirror_sssd-trusty_gpgkeys}
           publisher:
             component: extra
             distributions:
diff --git a/aptly/server/mirror/ubuntu/trusty/tcpcloud.yml b/aptly/server/mirror/ubuntu/trusty/tcpcloud.yml
index c1196d7..08e2f54 100644
--- a/aptly/server/mirror/ubuntu/trusty/tcpcloud.yml
+++ b/aptly/server/mirror/ubuntu/trusty/tcpcloud.yml
@@ -2,78 +2,100 @@
   aptly:
     server:
       mirror:
+        mirror_tcpcloud-nightly-main-trusty_source: http://apt.tcpcloud.eu/nightly
+        mirror_tcpcloud-nightly-main-trusty_distribution: trusty
+        mirror_tcpcloud-nightly-main-trusty_components: main security
+        mirror_tcpcloud-nightly-main-trusty_key_url: "http://apt.tcpcloud.eu/public.gpg"
+        mirror_tcpcloud-nightly-main-trusty_gpgkeys:
+          - 3EF02D1C
 
+        mirror_tcpcloud-nightly-tcp-trusty_source: http://apt.tcpcloud.eu/nightly
+        mirror_tcpcloud-nightly-tcp-trusty_distribution: trusty
+        mirror_tcpcloud-nightly-tcp-trusty_components: tcp
+        mirror_tcpcloud-nightly-tcp-trusty_key_url: "http://apt.tcpcloud.eu/public.gpg"
+        mirror_tcpcloud-nightly-tcp-trusty_gpgkeys:
+          - 3EF02D1C
+
+        mirror_tcpcloud-nightly-extra-trusty_source: http://apt.tcpcloud.eu/nightly
+        mirror_tcpcloud-nightly-extra-trusty_distribution: trusty
+        mirror_tcpcloud-nightly-extra-trusty_components: extra
+        mirror_tcpcloud-nightly-tcp-trusty_key_url: "http://apt.tcpcloud.eu/public.gpg"
+        mirror_tcpcloud-nightly-extra-trusty_gpgkeys:
+          - 3EF02D1C
+
+        mirror_tcpcloud-nightly-salt-trusty_source: http://apt.tcpcloud.eu/nightly
+        mirror_tcpcloud-nightly-salt-trusty_distribution: trusty
+        mirror_tcpcloud-nightly-salt-trusty_components: tcp-salt
+        mirror_tcpcloud-nightly-tcp-trusty_key_url: "http://apt.tcpcloud.eu/public.gpg"
+        mirror_tcpcloud-nightly-salt-trusty_gpgkeys:
+          - 3EF02D1C
+
+        mirror_tcpcloud-nightly-oc30-trusty_source: http://apt.tcpcloud.eu/nightly
+        mirror_tcpcloud-nightly-oc30-trusty_distribution: trusty
+        mirror_tcpcloud-nightly-oc30-trusty_components: oc30
+        mirror_tcpcloud-nightly-tcp-trusty_key_url: "http://apt.tcpcloud.eu/public.gpg"
+        mirror_tcpcloud-nightly-oc30-trusty_gpgkeys:
+          - 3EF02D1C
+
+        mirror_tcpcloud-nightly-elastic-trusty_source: http://apt.tcpcloud.eu/nightly
+        mirror_tcpcloud-nightly-elastic-trusty_distribution: trusty
+        mirror_tcpcloud-nightly-elastic-trusty_components: elastic
+        mirror_tcpcloud-nightly-tcp-trusty_key_url: "http://apt.tcpcloud.eu/public.gpg"
+        mirror_tcpcloud-nightly-elastic-trusty_gpgkeys:
+          - 3EF02D1C
         #TOOD: 4x the lower below
-        #tcpcloud-[stable/testing]-xxx-[trusty/xenial]:
+        #tcpcloud-[stable/testing]-xxx-[trusty/trusty]:
         #
         # Other components
         # salt tcp-salt extra liberty mitaka oc30 security mitaka
 
         tcpcloud-nightly-main-trusty:
-          source: http://apt.tcpcloud.eu/nightly
-          distribution: trusty
+          source: ${_param:mirror_tcpcloud-nightly-main-trusty_source}
+          distribution: ${_param:mirror_tcpcloud-nightly-main-trusty_distribution}
             #TODO: extra component might not be needed; tcp is just for heka
-          components: main security
+          components: ${_param:mirror_tcpcloud-nightly-main-trusty_components}
           architectures: amd64
-          key_url: "http://apt.tcpcloud.eu/public.gpg"
-          gpgkeys:
-            - 3EF02D1C
+          key_url: ${_param:mirror_tcpcloud-nightly-main-trusty_key_url}
+          gpgkeys: ${_param:mirror_tcpcloud-nightly-main-trusty_gpgkeys}
           publisher:
             component: tcp-main
             distributions:
               - ubuntu-trusty/nightly
 
-        tcpcloud-nightly-main-trusty:
-          source: http://apt.tcpcloud.eu/nightly
-          distribution: trusty
+        tcpcloud-nightly-tcp-trusty:
+          source: ${_param:mirror_tcpcloud-nightly-tcp-trusty_source}
+          distribution: ${_param:mirror_tcpcloud-nightly-tcp-trusty_distribution}
             #TODO: extra component might not be needed; tcp is just for heka
-          components: tcp
+          components: ${_param:mirror_tcpcloud-nightly-tcp-trusty_components}
           architectures: amd64
-          key_url: "http://apt.tcpcloud.eu/public.gpg"
-          gpgkeys:
-            - 3EF02D1C
+          key_url: ${_param:mirror_tcpcloud-nightly-tcp-trusty_key_url}
+          gpgkeys: ${_param:mirror_tcpcloud-nightly-tcp-trusty_gpgkeys}
           publisher:
             component: tcp
             distributions:
               - ubuntu-trusty/nightly
 
         tcpcloud-nightly-extra-trusty:
-          source: http://apt.tcpcloud.eu/nightly
-          distribution: trusty
+          source: ${_param:mirror_tcpcloud-nightly-extra-trusty_source}
+          distribution: ${_param:mirror_tcpcloud-nightly-extra-trusty_distribution}
             #TODO: extra component might not be needed; tcp is just for heka
-          components: extra
+          components: ${_param:mirror_tcpcloud-nightly-extra-trusty_components}
           architectures: amd64
-          key_url: "http://apt.tcpcloud.eu/public.gpg"
-          gpgkeys:
-            - 3EF02D1C
+          key_url: ${_param:mirror_tcpcloud-nightly-extra-trusty_key_url}
+          gpgkeys: ${_param:mirror_tcpcloud-nightly-extra-trusty_gpgkeys}
           publisher:
             component: tcp-extra
             distributions:
               - ubuntu-trusty/nightly
 
-        # required for alternative horizon plugins/etc..
-        tcpcloud-nightly-liberty-trusty:
-          source: http://apt.tcpcloud.eu/nightly
-          distribution: trusty
-          components: liberty
-          architectures: amd64
-          key_url: "http://apt.tcpcloud.eu/public.gpg"
-          gpgkeys:
-            - 3EF02D1C
-          publisher:
-            component: tcp-liberty
-            distributions:
-              - ubuntu-trusty/nightly
-
         # required for salt formulas
         tcpcloud-nightly-salt-trusty:
-          source: http://apt.tcpcloud.eu/nightly
-          distribution: trusty
-          components: tcp-salt
+          source: ${_param:mirror_tcpcloud-nightly-salt-trusty_source}
+          distribution: ${_param:mirror_tcpcloud-nightly-salt-trusty_distribution}
+          components: ${_param:mirror_tcpcloud-nightly-salt-trusty_components}
           architectures: amd64
-          key_url: "http://apt.tcpcloud.eu/public.gpg"
-          gpgkeys:
-          - 3EF02D1C
+          key_url: ${_param:mirror_tcpcloud-nightly-salt-trusty_key_url}
+          gpgkeys: ${_param:mirror_tcpcloud-nightly-salt-trusty_gpgkeys}
           publisher:
             component: tcp-salt
             distributions:
@@ -81,13 +103,12 @@
 
         # required for opencontrail formulas
         tcpcloud-nightly-oc30-trusty:
-          source: http://apt.tcpcloud.eu/nightly
-          distribution: trusty
-          components: oc30
+          source: ${_param:mirror_tcpcloud-nightly-oc30-trusty_source}
+          distribution: ${_param:mirror_tcpcloud-nightly-oc30-trusty_distribution}
+          components: ${_param:mirror_tcpcloud-nightly-oc30-trusty_components}
           architectures: amd64
-          key_url: "http://apt.tcpcloud.eu/public.gpg"
-          gpgkeys:
-            - 3EF02D1C
+          key_url: ${_param:mirror_tcpcloud-nightly-oc30-trusty_key_url}
+          gpgkeys: ${_param:mirror_tcpcloud-nightly-oc30-trusty_gpgkeys}
           publisher:
             component: tcp-oc30
             distributions:
@@ -95,15 +116,13 @@
 
         # elastic, kibana is there
         tcpcloud-nightly-elastic-trusty:
-          source: http://apt.tcpcloud.eu/nightly
-          distribution: trusty
-          components: elastic
+          source: ${_param:mirror_tcpcloud-nightly-elastic-trusty_source}
+          distribution: ${_param:mirror_tcpcloud-nightly-elastic-trusty_distribution}
+          components: ${_param:mirror_tcpcloud-nightly-elastic-trusty_components}
           architectures: amd64
-          key_url: "http://apt.tcpcloud.eu/public.gpg"
-          gpgkeys:
-            - 3EF02D1C
+          key_url: ${_param:mirror_tcpcloud-nightly-elastic-trusty_key_url}
+          gpgkeys: ${_param:mirror_tcpcloud-nightly-elastic-trusty_gpgkeys}
           publisher:
             component: tcp-elastic
             distributions:
-              - ubuntu-trusty/nightly
-
+              - ubuntu-trusty/nightly
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu.yml
deleted file mode 100644
index 3cd7c7b..0000000
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu.yml
+++ /dev/null
@@ -1,276 +0,0 @@
-parameters:
-  _param:
-    linux_system_country_code: cz
-  aptly:
-    server:
-      mirror:
-        # trusty
-        trusty-main:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty
-          components: main
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: main
-            distributions:
-              - ubuntu/trusty
-        trusty-multiverse:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty
-          components: multiverse
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: multiverse
-            distributions:
-              - ubuntu/trusty
-        trusty-restricted:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty
-          components: restricted
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: restricted
-            distributions:
-              - ubuntu/trusty
-        trusty-universe:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty
-          components: universe
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: universe
-            distributions:
-              - ubuntu/trusty
-
-        # trusty-updates
-        trusty-updates-main:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty-updates
-          components: main
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: main
-            distributions:
-              - ubuntu/trusty-updates
-        trusty-updates-multiverse:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty-updates
-          components: multiverse
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: multiverse
-            distributions:
-              - ubuntu/trusty-updates
-        trusty-updates-restricted:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty-updates
-          components: restricted
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: restricted
-            distributions:
-              - ubuntu/trusty-updates
-        trusty-updates-universe:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty-updates
-          components: universe
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: universe
-            distributions:
-              - ubuntu/trusty-updates
-
-        #trusty-security:
-        trusty-security-main:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty-security
-          components: main
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: main
-            distributions:
-              - ubuntu/trusty-security
-        trusty-security-multiverse:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty-security
-          components: multiverse
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: multiverse
-            distributions:
-              - ubuntu/trusty-security
-        trusty-security-restricted:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty-security
-          components: restricted
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: restricted
-            distributions:
-              - ubuntu/trusty-security
-        trusty-security-universe:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty-security
-          components: universe
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: universe
-            distributions:
-              - ubuntu/trusty-security
-
-        #trusty-proposed:
-        trusty-proposed-main:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty-proposed
-          components: main
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: main
-            distributions:
-              - ubuntu/trusty-proposed
-        trusty-proposed-multiverse:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty-proposed
-          components: multiverse
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: multiverse
-            distributions:
-              - ubuntu/trusty-proposed
-        trusty-proposed-restricted:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty-proposed
-          components: restricted
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: restricted
-            distributions:
-              - ubuntu/trusty-proposed
-        trusty-proposed-universe:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty-proposed
-          components: universe
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: universe
-            distributions:
-              - ubuntu/trusty-proposed
-
-        #trusty-backports:
-        trusty-backports-main:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty-backports
-          components: main
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: main
-            distributions:
-              - ubuntu/trusty-backports
-        trusty-backports-multiverse:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty-backports
-          components: multiverse
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: multiverse
-            distributions:
-              - ubuntu/trusty-backports
-        trusty-backports-restricted:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty-backports
-          components: restricted
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: restricted
-            distributions:
-              - ubuntu/trusty-backports
-        trusty-backports-universe:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty-backports
-          components: universe
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: universe
-            distributions:
-              - ubuntu/trusty-backports
-
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/init.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/init.yml
new file mode 100644
index 0000000..802f17b
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/init.yml
@@ -0,0 +1,6 @@
+classes:
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-backports
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-proposed
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-security
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-updates
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/init.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/init.yml
new file mode 100644
index 0000000..45fb000
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/init.yml
@@ -0,0 +1,5 @@
+classes:
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-backports.main
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-backports.multiverse
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-backports.restricted
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-backports.universe
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/main.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/main.yml
new file mode 100644
index 0000000..3625d51
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/main.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-backports-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-backports-main_distribution: trusty-backports
+    mirror_trusty-backports-main_components: main
+    mirror_trusty-backports-main_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-backports-main:
+          source: ${_param:mirror_trusty-backports-main_source}
+          distribution: ${_param:mirror_trusty-backports-main_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-backports-main_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-backports-main_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu/trusty-backports
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/multiverse.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/multiverse.yml
new file mode 100644
index 0000000..96dc420
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/multiverse.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-backports-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-backports-multiverse_distribution: trusty-backports
+    mirror_trusty-backports-multiverse_components: multiverse
+    mirror_trusty-backports-multiverse_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-backports-multiverse:
+          source: ${_param:mirror_trusty-backports-multiverse_source}
+          distribution: ${_param:mirror_trusty-backports-multiverse_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-backports-multiverse_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-backports-multiverse_gpgkeys}
+          publisher:
+            component: multiverse
+            distributions:
+              - ubuntu/trusty-backports
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/restricted.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/restricted.yml
new file mode 100644
index 0000000..712bebc
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/restricted.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-backports-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-backports-restricted_distribution: trusty-backports
+    mirror_trusty-backports-restricted_components: restricted
+    mirror_trusty-backports-restricted_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-backports-restricted:
+          source: ${_param:mirror_trusty-backports-restricted_source}
+          distribution: ${_param:mirror_trusty-backports-restricted_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-backports-restricted_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-backports-restricted_gpgkeys}
+          publisher:
+            component: restricted
+            distributions:
+              - ubuntu/trusty-backports
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/universe.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/universe.yml
new file mode 100644
index 0000000..f18b504
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/universe.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-backports-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-backports-universe_distribution: trusty-backports
+    mirror_trusty-backports-universe_components: universe
+    mirror_trusty-backports-universe_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-backports-universe:
+          source: ${_param:mirror_trusty-backports-universe_source}
+          distribution: ${_param:mirror_trusty-backports-universe_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-backports-universe_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-backports-universe_gpgkeys}
+          publisher:
+            component: universe
+            distributions:
+              - ubuntu/trusty-backports
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/init.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/init.yml
new file mode 100644
index 0000000..e749de0
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/init.yml
@@ -0,0 +1,5 @@
+classes:
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-proposed.main
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-proposed.multiverse
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-proposed.restricted
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-proposed.universe
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/main.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/main.yml
new file mode 100644
index 0000000..7164628
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/main.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-proposed-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-proposed-main_distribution: trusty-proposed
+    mirror_trusty-proposed-main_components: main
+    mirror_trusty-proposed-main_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-proposed-main:
+          source: ${_param:mirror_trusty-proposed-main_source}
+          distribution: ${_param:mirror_trusty-proposed-main_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-proposed-main_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-proposed-main_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu/trusty-proposed
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/multiverse.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/multiverse.yml
new file mode 100644
index 0000000..9227036
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/multiverse.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-proposed-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-proposed-multiverse_distribution: trusty-proposed
+    mirror_trusty-proposed-multiverse_components: multiverse
+    mirror_trusty-proposed-multiverse_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-proposed-multiverse:
+          source: ${_param:mirror_trusty-proposed-multiverse_source}
+          distribution: ${_param:mirror_trusty-proposed-multiverse_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-proposed-multiverse_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-proposed-multiverse_gpgkeys}
+          publisher:
+            component: multiverse
+            distributions:
+              - ubuntu/trusty-proposed
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/restricted.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/restricted.yml
new file mode 100644
index 0000000..f5378b9
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/restricted.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-proposed-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-proposed-restricted_distribution: trusty-proposed
+    mirror_trusty-proposed-restricted_components: restricted
+    mirror_trusty-proposed-restricted_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-proposed-restricted:
+          source: ${_param:mirror_trusty-proposed-restricted_source}
+          distribution: ${_param:mirror_trusty-proposed-restricted_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-proposed-restricted_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-proposed-restricted_gpgkeys}
+          publisher:
+            component: restricted
+            distributions:
+              - ubuntu/trusty-proposed
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/universe.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/universe.yml
new file mode 100644
index 0000000..b6f321b
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/universe.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-proposed-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-proposed-universe_distribution: trusty-proposed
+    mirror_trusty-proposed-universe_components: universe
+    mirror_trusty-proposed-universe_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-proposed-universe:
+          source: ${_param:mirror_trusty-proposed-universe_source}
+          distribution: ${_param:mirror_trusty-proposed-universe_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-proposed-universe_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-proposed-universe_gpgkeys}
+          publisher:
+            component: universe
+            distributions:
+              - ubuntu/trusty-proposed
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/init.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/init.yml
new file mode 100644
index 0000000..3bf3204
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/init.yml
@@ -0,0 +1,5 @@
+classes:
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-security.main
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-security.multiverse
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-security.restricted
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-security.universe
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/main.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/main.yml
new file mode 100644
index 0000000..1a797f7
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/main.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-security-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-security-main_distribution: trusty-security
+    mirror_trusty-security-main_components: main
+    mirror_trusty-security-main_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-security-main:
+          source: ${_param:mirror_trusty-security-main_source}
+          distribution: ${_param:mirror_trusty-security-main_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-security-main_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-security-main_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu/trusty-security
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/multiverse.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/multiverse.yml
new file mode 100644
index 0000000..b38e42b
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/multiverse.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-security-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-security-multiverse_distribution: trusty-security
+    mirror_trusty-security-multiverse_components: multiverse
+    mirror_trusty-security-multiverse_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-security-multiverse:
+          source: ${_param:mirror_trusty-security-multiverse_source}
+          distribution: ${_param:mirror_trusty-security-multiverse_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-security-multiverse_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-security-multiverse_gpgkeys}
+          publisher:
+            component: multiverse
+            distributions:
+              - ubuntu/trusty-security
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/restricted.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/restricted.yml
new file mode 100644
index 0000000..76d2b4a
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/restricted.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-security-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-security-restricted_distribution: trusty-security
+    mirror_trusty-security-restricted_components: restricted
+    mirror_trusty-security-restricted_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-security-restricted:
+          source: ${_param:mirror_trusty-security-restricted_source}
+          distribution: ${_param:mirror_trusty-security-restricted_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-security-restricted_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-security-restricted_gpgkeys}
+          publisher:
+            component: restricted
+            distributions:
+              - ubuntu/trusty-security
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/universe.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/universe.yml
new file mode 100644
index 0000000..33d42f5
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/universe.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-security-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-security-universe_distribution: trusty-security
+    mirror_trusty-security-universe_components: universe
+    mirror_trusty-security-universe_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-security-universe:
+          source: ${_param:mirror_trusty-security-universe_source}
+          distribution: ${_param:mirror_trusty-security-universe_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-security-universe_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-security-universe_gpgkeys}
+          publisher:
+            component: universe
+            distributions:
+              - ubuntu/trusty-security
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/init.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/init.yml
new file mode 100644
index 0000000..0673363
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/init.yml
@@ -0,0 +1,5 @@
+classes:
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-updates.main
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-updates.multiverse
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-updates.restricted
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty-updates.universe
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/main.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/main.yml
new file mode 100644
index 0000000..d7db631
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/main.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-updates-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-updates-main_distribution: trusty-updates
+    mirror_trusty-updates-main_components: main
+    mirror_trusty-updates-main_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-updates-main:
+          source: ${_param:mirror_trusty-updates-main_source}
+          distribution: ${_param:mirror_trusty-updates-main_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-updates-main_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-updates-main_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu/trusty-updates
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/multiverse.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/multiverse.yml
new file mode 100644
index 0000000..518b0ff
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/multiverse.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-updates-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-updates-multiverse_distribution: trusty-updates
+    mirror_trusty-updates-multiverse_components: multiverse
+    mirror_trusty-updates-multiverse_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-updates-multiverse:
+          source: ${_param:mirror_trusty-updates-multiverse_source}
+          distribution: ${_param:mirror_trusty-updates-multiverse_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-updates-multiverse_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-updates-multiverse_gpgkeys}
+          publisher:
+            component: multiverse
+            distributions:
+              - ubuntu/trusty-updates
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/restricted.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/restricted.yml
new file mode 100644
index 0000000..1b7ea0f
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/restricted.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-updates-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-updates-restricted_distribution: trusty-updates
+    mirror_trusty-updates-restricted_components: restricted
+    mirror_trusty-updates-restricted_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-updates-restricted:
+          source: ${_param:mirror_trusty-updates-restricted_source}
+          distribution: ${_param:mirror_trusty-updates-restricted_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-updates-restricted_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-updates-restricted_gpgkeys}
+          publisher:
+            component: restricted
+            distributions:
+              - ubuntu/trusty-updates
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/universe.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/universe.yml
new file mode 100644
index 0000000..3f4d815
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/universe.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-updates-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-updates-universe_distribution: trusty-updates
+    mirror_trusty-updates-universe_components: universe
+    mirror_trusty-updates-universe_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-updates-universe:
+          source: ${_param:mirror_trusty-updates-universe_source}
+          distribution: ${_param:mirror_trusty-updates-universe_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-updates-universe_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-updates-universe_gpgkeys}
+          publisher:
+            component: universe
+            distributions:
+              - ubuntu/trusty-updates
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/init.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/init.yml
new file mode 100644
index 0000000..71ea5a0
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/init.yml
@@ -0,0 +1,5 @@
+classes:
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty.main
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty.multiverse
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty.restricted
+- system.aptly.server.mirror.ubuntu.trusty.ubuntu.trusty.universe
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/main.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/main.yml
new file mode 100644
index 0000000..3a054e7
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/main.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-main_distribution: trusty
+    mirror_trusty-main_components: main
+    mirror_trusty-main_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-main:
+          source: ${_param:mirror_trusty-main_source}
+          distribution: ${_param:mirror_trusty-main_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-main_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-main_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu/trusty
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/multiverse.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/multiverse.yml
new file mode 100644
index 0000000..37a0b05
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/multiverse.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-multiverse_distribution: trusty
+    mirror_trusty-multiverse_components: multiverse
+    mirror_trusty-multiverse_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-multiverse:
+          source: ${_param:mirror_trusty-multiverse_source}
+          distribution: ${_param:mirror_trusty-multiverse_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-multiverse_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-multiverse_gpgkeys}
+          publisher:
+            component: multiverse
+            distributions:
+              - ubuntu/trusty
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/restricted.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/restricted.yml
new file mode 100644
index 0000000..dca087a
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/restricted.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-restricted_distribution: trusty
+    mirror_trusty-restricted_components: restricted
+    mirror_trusty-restricted_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-restricted:
+          source: ${_param:mirror_trusty-restricted_source}
+          distribution: ${_param:mirror_trusty-restricted_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-restricted_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-restricted_gpgkeys}
+          publisher:
+            component: restricted
+            distributions:
+              - ubuntu/trusty
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/universe.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/universe.yml
new file mode 100644
index 0000000..a112b94
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/universe.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_trusty-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_trusty-universe_distribution: trusty
+    mirror_trusty-universe_components: universe
+    mirror_trusty-universe_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        trusty-universe:
+          source: ${_param:mirror_trusty-universe_source}
+          distribution: ${_param:mirror_trusty-universe_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
+          components: ${_param:mirror_trusty-universe_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_trusty-universe_gpgkeys}
+          publisher:
+            component: universe
+            distributions:
+              - ubuntu/trusty
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntucloud.yml b/aptly/server/mirror/ubuntu/trusty/ubuntucloud.yml
index b66d34c..e8d1f54 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntucloud.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntucloud.yml
@@ -1,4 +1,16 @@
 parameters:
+  _param:
+    mirror_trusty-updates-liberty_source: http://ubuntu-cloud.archive.canonical.com/ubuntu/
+    mirror_trusty-updates-liberty_distribution: trusty-updates/liberty
+    mirror_trusty-updates-liberty_components: main
+    mirror_trusty-updates-liberty_gpgkeys:
+      - EC4926EA
+
+    mirror_trusty-updates-mitaka_source: http://ubuntu-cloud.archive.canonical.com/ubuntu/
+    mirror_trusty-updates-mitaka_distribution: trusty-updates/mitaka
+    mirror_trusty-updates-mitaka_components: main
+    mirror_trusty-updates-mitaka_gpgkeys:
+      - EC4926EA
   aptly:
     server:
       mirror:
@@ -24,24 +36,25 @@
         #    component: kilo
         #    distributions:
         #      - trusty
+  aptly:
+    server:
+      mirror:
         trusty-updates-liberty:
-          source: http://ubuntu-cloud.archive.canonical.com/ubuntu/
-          distribution: trusty-updates/liberty
-          components: main
+          source: ${_param:mirror_trusty-updates-liberty_source}
+          distribution: ${_param:mirror_trusty-updates-liberty_distribution}
+          components: ${_param:mirror_trusty-updates-liberty_components}
           architectures: amd64
-          gpgkeys:
-            - EC4926EA
+          gpgkeys: ${_param:mirror_trusty-updates-liberty_gpgkeys}
           publisher:
             component: liberty
             distributions:
               - ubuntu-trusty/nightly
         trusty-updates-mitaka:
-          source: http://ubuntu-cloud.archive.canonical.com/ubuntu/
-          distribution: trusty-updates/mitaka
-          components: main
+          source: ${_param:mirror_trusty-updates-mitaka_source}
+          distribution: ${_param:mirror_trusty-updates-mitaka_distribution}
+          components: ${_param:mirror_trusty-updates-mitaka_components}
           architectures: amd64
-          gpgkeys:
-            - EC4926EA
+          gpgkeys: ${_param:mirror_trusty-updates-mitaka_gpgkeys}
           publisher:
             component: mitaka
             distributions:
diff --git a/aptly/server/mirror/ubuntu/xenial/ceph.yml b/aptly/server/mirror/ubuntu/xenial/ceph.yml
index efb1703..f3ade60 100644
--- a/aptly/server/mirror/ubuntu/xenial/ceph.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ceph.yml
@@ -1,15 +1,22 @@
 parameters:
+  _param:
+    ceph_version: luminous
+    apt_mk_version: stable
+    mirror_ceph-xenial_source: http://download.ceph.com/debian-${_param:ceph_version}
+    mirror_ceph-xenial_distribution: xenial
+    mirror_ceph-xenial_components: main
+    mirror_ceph-xenial_gpgkeys:
+      - 460F3994
   aptly:
     server:
       mirror:
         ceph-xenial:
-          source: http://download.ceph.com/debian-hammer
-          distribution: xenial
-          components: main
+          source: ${_param:mirror_ceph-xenial_source}
+          distribution: ${_param:mirror_ceph-xenial_distribution}
+          components: ${_param:mirror_ceph-xenial_components}
           architectures: amd64
-          gpgkeys:
-            - 460F3994
+          gpgkeys: ${_param:mirror_ceph-xenial_gpgkeys}
           publisher:
             component: ceph
             distributions:
-              - ubuntu-xenial/nightly
+              - ubuntu-xenial/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/xenial/ceph_mirantis.yml b/aptly/server/mirror/ubuntu/xenial/ceph_mirantis.yml
index eda0368..a2e28ee 100644
--- a/aptly/server/mirror/ubuntu/xenial/ceph_mirantis.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ceph_mirantis.yml
@@ -1,16 +1,20 @@
 parameters:
   _param:
     apt_mk_version: stable
+    mirror_ubuntu-xenial-ceph-mirantis_source: http://eu.mirror.fuel-infra.org/decapod/ceph/jewel-xenial
+    mirror_ubuntu-xenial-ceph-mirantis_distribution: jewel-xenial
+    mirror_ubuntu-xenial-ceph-mirantis_components: main
+    mirror_ubuntu-xenial-ceph-mirantis_gpgkeys:
+      - 460F3994
   aptly:
     server:
       mirror:
         ubuntu-xenial-ceph-mirantis:
-          source: http://eu.mirror.fuel-infra.org/decapod/ceph/jewel-xenial
-          distribution: jewel-xenial
-          components: main
+          source: ${_param:mirror_ubuntu-xenial-ceph-mirantis_source}
+          distribution: ${_param:mirror_ubuntu-xenial-ceph-mirantis_distribution}
+          components: ${_param:mirror_ubuntu-xenial-ceph-mirantis_components}
           architectures: amd64
-          gpgkeys:
-            - 460F3994
+          gpgkeys: ${_param:mirror_ubuntu-xenial-ceph-mirantis_gpgkeys}
           publisher:
             component: ceph-mirantis
             distributions:
diff --git a/aptly/server/mirror/ubuntu/xenial/docker.yml b/aptly/server/mirror/ubuntu/xenial/docker.yml
index 4334374..5c1f719 100644
--- a/aptly/server/mirror/ubuntu/xenial/docker.yml
+++ b/aptly/server/mirror/ubuntu/xenial/docker.yml
@@ -1,16 +1,19 @@
 parameters:
   _param:
-    apt_mk_version: stable
+    mirror_docker-xenial_source: 'https://download.docker.com/linux/ubuntu'
+    mirror_docker-xenial_distribution: xenial
+    mirror_docker-xenial_components: stable
+    mirror_docker-xenial_gpgkeys:
+      - 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
   aptly:
     server:
       mirror:
         docker-xenial:
-          source: https://apt.dockerproject.org/repo
-          distribution: ubuntu-xenial
-          components: main
+          source: ${_param:mirror_docker-xenial_source}
+          distribution: ${_param:mirror_docker-xenial_distribution}
+          components: ${_param:mirror_docker-xenial_components}
           architectures: amd64
-          gpgkeys:
-            - 58118E89F3A912897C070ADBF76221572C52609D
+          gpgkeys: ${_param:mirror_docker-xenial_gpgkeys}
           publisher:
             component: docker
             distributions:
diff --git a/aptly/server/mirror/ubuntu/xenial/docker_legacy.yml b/aptly/server/mirror/ubuntu/xenial/docker_legacy.yml
new file mode 100644
index 0000000..f58a974
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/docker_legacy.yml
@@ -0,0 +1,20 @@
+parameters:
+  _param:
+    mirror_docker-xenial_source: 'https://apt.dockerproject.org/repo'
+    mirror_docker-xenial_distribution: ubuntu-xenial
+    mirror_docker-xenial_components: main
+    mirror_docker-xenial_gpgkeys:
+      - 58118E89F3A912897C070ADBF76221572C52609D
+  aptly:
+    server:
+      mirror:
+        docker-xenial-legacy:
+          source: ${_param:mirror_docker-xenial_source}
+          distribution: ${_param:mirror_docker-xenial_distribution}
+          components: ${_param:mirror_docker-xenial_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_docker-xenial_gpgkeys}
+          publisher:
+            component: docker-legacy
+            distributions:
+              - ubuntu-xenial/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/glusterfs.yml b/aptly/server/mirror/ubuntu/xenial/glusterfs.yml
index 248de32..5ad4089 100644
--- a/aptly/server/mirror/ubuntu/xenial/glusterfs.yml
+++ b/aptly/server/mirror/ubuntu/xenial/glusterfs.yml
@@ -2,16 +2,20 @@
   _param:
     apt_mk_version: stable
     glusterfs_version: 3.8
+    mirror_glusterfs_upstream_xenial_source: http://ppa.launchpad.net/gluster/glusterfs-${_param:glusterfs_version}/ubuntu
+    mirror_glusterfs_upstream_xenial_distribution: xenial
+    mirror_glusterfs_upstream_xenial_components: main
+    mirror_glusterfs_upstream_xenial_gpgkeys:
+      - 3FE869A9
   aptly:
     server:
       mirror:
         glusterfs_upstream_xenial:
-          source: http://ppa.launchpad.net/gluster/glusterfs-${_param:glusterfs_version}/ubuntu
-          distribution: xenial
-          components: main
+          source: ${_param:mirror_glusterfs_upstream_xenial_source}
+          distribution: ${_param:mirror_glusterfs_upstream_xenial_distribution}
+          components: ${_param:mirror_glusterfs_upstream_xenial_components}
           architectures: amd64
-          gpgkeys:
-            - 3FE869A9
+          gpgkeys: ${_param:mirror_glusterfs_upstream_xenial_gpgkeys}
           publisher:
             component: glusterfs
             distributions:
diff --git a/aptly/server/mirror/ubuntu/xenial/grafana.yml b/aptly/server/mirror/ubuntu/xenial/grafana.yml
index 8dbb6ea..4ae2047 100644
--- a/aptly/server/mirror/ubuntu/xenial/grafana.yml
+++ b/aptly/server/mirror/ubuntu/xenial/grafana.yml
@@ -1,16 +1,20 @@
 parameters:
   _param:
     apt_mk_version: stable
+    mirror_grafana-xenial_source: https://packagecloud.io/grafana/stable/debian/
+    mirror_grafana-xenial_distribution: jessie
+    mirror_grafana-xenial_components: main
+    mirror_grafana-xenial_gpgkeys:
+      - D59097AB
   aptly:
     server:
       mirror:
         grafana-xenial:
-          source: https://packagecloud.io/grafana/stable/debian/
-          distribution: jessie
-          components: main
+          source: ${_param:mirror_grafana-xenial_source}
+          distribution: ${_param:mirror_grafana-xenial_distribution}
+          components: ${_param:mirror_grafana-xenial_components}
           architectures: amd64
-          gpgkeys:
-            - D59097AB
+          gpgkeys: ${_param:mirror_grafana-xenial_gpgkeys}
           publisher:
             component: grafana
             distributions:
diff --git a/aptly/server/mirror/ubuntu/xenial/hp.yml b/aptly/server/mirror/ubuntu/xenial/hp.yml
index 5b84417..9f5c6ef 100644
--- a/aptly/server/mirror/ubuntu/xenial/hp.yml
+++ b/aptly/server/mirror/ubuntu/xenial/hp.yml
@@ -1,17 +1,22 @@
 parameters:
+  _param:
+    mirror_hp-xenial_source: http://downloads.linux.hpe.com/SDR/repo/mcp/Ubuntu
+    mirror_hp-xenial_distribution: xenial/current
+    mirror_hp-xenial_components: non-free
+    mirror_hp-xenial_gpgkeys:
+      - 26C2B797
+      - B1275EA3
+      - 5CE2D476
+      - 2689B887
   aptly:
     server:
       mirror:
         hp-xenial:
-          source: http://downloads.linux.hpe.com/SDR/repo/mcp/Ubuntu
-          distribution: xenial/current
-          components: non-free
+          source: ${_param:mirror_hp-xenial_source}
+          distribution: ${_param:mirror_hp-xenial_distribution}
+          components: ${_param:mirror_hp-xenial_components}
           architectures: amd64
-          gpgkeys:
-            - 26C2B797
-            - B1275EA3
-            - 5CE2D476
-            - 2689B887
+          gpgkeys: ${_param:mirror_hp-xenial_gpgkeys}
           publisher:
             component: hp-non-free
             distributions:
diff --git a/aptly/server/mirror/ubuntu/xenial/influxdb.yml b/aptly/server/mirror/ubuntu/xenial/influxdb.yml
index a2ac597..2f61cb4 100644
--- a/aptly/server/mirror/ubuntu/xenial/influxdb.yml
+++ b/aptly/server/mirror/ubuntu/xenial/influxdb.yml
@@ -1,16 +1,20 @@
 parameters:
   _param:
     apt_mk_version: stable
+    mirror_influxdb-xenial_source: https://repos.influxdata.com/ubuntu/
+    mirror_influxdb-xenial_distribution: xenial
+    mirror_influxdb-xenial_components: stable
+    mirror_influxdb-xenial_gpgkeys:
+      - 2582E0C5
   aptly:
     server:
       mirror:
         influxdb-xenial:
-          source: https://repos.influxdata.com/ubuntu/
-          distribution: xenial
-          components: stable
+          source: ${_param:mirror_influxdb-xenial_source}
+          distribution: ${_param:mirror_influxdb-xenial_distribution}
+          components: ${_param:mirror_influxdb-xenial_components}
           architectures: amd64
-          gpgkeys:
-            - 2582E0C5
+          gpgkeys: ${_param:mirror_influxdb-xenial_gpgkeys}
           publisher:
             component: influxdb
             distributions:
diff --git a/aptly/server/mirror/ubuntu/xenial/maas.yml b/aptly/server/mirror/ubuntu/xenial/maas.yml
index 0e4a559..75cc04a 100644
--- a/aptly/server/mirror/ubuntu/xenial/maas.yml
+++ b/aptly/server/mirror/ubuntu/xenial/maas.yml
@@ -1,16 +1,20 @@
 parameters:
   _param:
     apt_mk_version: stable
+    mirror_maas-xenial_source: http://ppa.launchpad.net/maas/stable/ubuntu
+    mirror_maas-xenial_distribution: xenial
+    mirror_maas-xenial_components: main
+    mirror_maas-xenial_gpgkeys:
+      - 684D4A1C
   aptly:
     server:
       mirror:
         maas-xenial:
-          source: http://ppa.launchpad.net/maas/stable/ubuntu
-          distribution: xenial
-          components: main
+          source: ${_param:mirror_maas-xenial_source}
+          distribution: ${_param:mirror_maas-xenial_distribution}
+          components: ${_param:mirror_maas-xenial_components}
           architectures: amd64
-          gpgkeys:
-            - 684D4A1C
+          gpgkeys: ${_param:mirror_maas-xenial_gpgkeys}
           publisher:
             component: maas
             distributions:
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/extra.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/extra.yml
new file mode 100644
index 0000000..1f2b7d8
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/extra.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_xenial_extra_source: http://apt.mirantis.com/xenial/
+    mirror_mirantis_openstack_xenial_extra_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_extra_components: extra
+    mirror_mirantis_openstack_xenial_extra_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_extra_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_xenial_extra:
+          source: ${_param:mirror_mirantis_openstack_xenial_extra_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_extra_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_extra_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_xenial_extra_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_extra_gpgkeys}
+          publisher:
+            component: extra
+            distributions:
+              - ubuntu-xenial/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/init.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/init.yml
index a340a46..4e88f48 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/init.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/init.yml
@@ -1,67 +1,8 @@
-parameters:
-  _param:
-    apt_mk_version: stable
-  aptly:
-    server:
-      mirror:
-        # required for opencontrail formulas
-        mcp_opencontrail_xenial_oc311:
-          source: http://apt-mk.mirantis.com/xenial/
-          distribution: ${_param:apt_mk_version}
-          components: oc311
-          architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
-          gpgkeys:
-            - A76882D3
-          publisher:
-            component: oc311
-            distributions:
-              - ubuntu-xenial/${_param:apt_mk_version}
-        mcp_opencontrail_xenial_oc31:
-          source: http://apt-mk.mirantis.com/xenial/
-          distribution: ${_param:apt_mk_version}
-          components: oc31
-          architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
-          gpgkeys:
-            - A76882D3
-          publisher:
-            component: oc31
-            distributions:
-              - ubuntu-xenial/${_param:apt_mk_version}
-        mcp_opencontrail_xenial_oc32:
-          source: http://apt-mk.mirantis.com/xenial/
-          distribution: ${_param:apt_mk_version}
-          components: oc32
-          architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
-          gpgkeys:
-            - A76882D3
-          publisher:
-            component: oc32
-            distributions:
-              - ubuntu-xenial/${_param:apt_mk_version}
-        mirantis_openstack_xenial_extra:
-          source: http://apt-mk.mirantis.com/xenial/
-          distribution: ${_param:apt_mk_version}
-          components: extra
-          architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
-          gpgkeys:
-            - A76882D3
-          publisher:
-            component: extra
-            distributions:
-              - ubuntu-xenial/${_param:apt_mk_version}
-        mirantis_openstack_xenial_salt:
-          source: http://apt-mk.mirantis.com/xenial/
-          distribution: ${_param:apt_mk_version}
-          components: salt
-          architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
-          gpgkeys:
-            - A76882D3
-          publisher:
-            component: salt
-            distributions:
-              - ubuntu-xenial/${_param:apt_mk_version}
+classes:
+- system.aptly.server.mirror.ubuntu.xenial.mcp.apt_mk.oc31
+- system.aptly.server.mirror.ubuntu.xenial.mcp.apt_mk.oc311
+- system.aptly.server.mirror.ubuntu.xenial.mcp.apt_mk.oc32
+- system.aptly.server.mirror.ubuntu.xenial.mcp.apt_mk.oc323
+- system.aptly.server.mirror.ubuntu.xenial.mcp.apt_mk.ocata
+- system.aptly.server.mirror.ubuntu.xenial.mcp.apt_mk.extra
+- system.aptly.server.mirror.ubuntu.xenial.mcp.apt_mk.salt
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc31.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc31.yml
new file mode 100644
index 0000000..a2b64a0
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc31.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mcp_opencontrail_xenial_oc31_source: http://apt.mirantis.com/xenial/
+    mirror_mcp_opencontrail_xenial_oc31_distribution: ${_param:apt_mk_version}
+    mirror_mcp_opencontrail_xenial_oc31_components: oc31
+    mirror_mcp_opencontrail_xenial_oc31_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mcp_opencontrail_xenial_oc31_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mcp_opencontrail_xenial_oc31:
+          source: ${_param:mirror_mcp_opencontrail_xenial_oc31_source}
+          distribution: ${_param:mirror_mcp_opencontrail_xenial_oc31_distribution}
+          components: ${_param:mirror_mcp_opencontrail_xenial_oc31_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mcp_opencontrail_xenial_oc31_key_url}
+          gpgkeys: ${_param:mirror_mcp_opencontrail_xenial_oc31_gpgkeys}
+          publisher:
+            component: oc31
+            distributions:
+              - ubuntu-xenial/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc311.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc311.yml
new file mode 100644
index 0000000..c09a324
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc311.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mcp_opencontrail_xenial_oc311_source: http://apt.mirantis.com/xenial/
+    mirror_mcp_opencontrail_xenial_oc311_distribution: ${_param:apt_mk_version}
+    mirror_mcp_opencontrail_xenial_oc311_components: oc311
+    mirror_mcp_opencontrail_xenial_oc311_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mcp_opencontrail_xenial_oc311_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mcp_opencontrail_xenial_oc311:
+          source: ${_param:mirror_mcp_opencontrail_xenial_oc311_source}
+          distribution: ${_param:mirror_mcp_opencontrail_xenial_oc311_distribution}
+          components: ${_param:mirror_mcp_opencontrail_xenial_oc311_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mcp_opencontrail_xenial_oc311_key_url}
+          gpgkeys: ${_param:mirror_mcp_opencontrail_xenial_oc311_gpgkeys}
+          publisher:
+            component: oc311
+            distributions:
+              - ubuntu-xenial/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc32.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc32.yml
new file mode 100644
index 0000000..95f33e8
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc32.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mcp_opencontrail_xenial_oc32_source: http://apt.mirantis.com/xenial/
+    mirror_mcp_opencontrail_xenial_oc32_distribution: ${_param:apt_mk_version}
+    mirror_mcp_opencontrail_xenial_oc32_components: oc32
+    mirror_mcp_opencontrail_xenial_oc32_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mcp_opencontrail_xenial_oc32_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mcp_opencontrail_xenial_oc32:
+          source: ${_param:mirror_mcp_opencontrail_xenial_oc32_source}
+          distribution: ${_param:mirror_mcp_opencontrail_xenial_oc32_distribution}
+          components: ${_param:mirror_mcp_opencontrail_xenial_oc32_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mcp_opencontrail_xenial_oc32_key_url}
+          gpgkeys: ${_param:mirror_mcp_opencontrail_xenial_oc32_gpgkeys}
+          publisher:
+            component: oc32
+            distributions:
+              - ubuntu-xenial/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc323.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc323.yml
new file mode 100644
index 0000000..deceada
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc323.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mcp_opencontrail_xenial_oc323_source: http://apt.mirantis.com/xenial/
+    mirror_mcp_opencontrail_xenial_oc323_distribution: ${_param:apt_mk_version}
+    mirror_mcp_opencontrail_xenial_oc323_components: oc323
+    mirror_mcp_opencontrail_xenial_oc323_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mcp_opencontrail_xenial_oc323_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mcp_opencontrail_xenial_oc323:
+          source: ${_param:mirror_mcp_opencontrail_xenial_oc323_source}
+          distribution: ${_param:mirror_mcp_opencontrail_xenial_oc323_distribution}
+          components: ${_param:mirror_mcp_opencontrail_xenial_oc323_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mcp_opencontrail_xenial_oc323_key_url}
+          gpgkeys: ${_param:mirror_mcp_opencontrail_xenial_oc323_gpgkeys}
+          publisher:
+            component: oc323
+            distributions:
+              - ubuntu-xenial/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/ocata.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/ocata.yml
new file mode 100644
index 0000000..b42fdbe
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/ocata.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mk_openstack_xenial_ocata_source: http://apt.mirantis.com/xenial/
+    mirror_mk_openstack_xenial_ocata_distribution: ${_param:apt_mk_version}
+    mirror_mk_openstack_xenial_ocata_components: ocata
+    mirror_mk_openstack_xenial_ocata_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mk_openstack_xenial_ocata_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mk_openstack_xenial_ocata:
+          source: ${_param:mirror_mk_openstack_xenial_ocata_source}
+          distribution: ${_param:mirror_mk_openstack_xenial_ocata_distribution}
+          components: ${_param:mirror_mk_openstack_xenial_ocata_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mk_openstack_xenial_ocata_key_url}
+          gpgkeys: ${_param:mirror_mk_openstack_xenial_ocata_gpgkeys}
+          publisher:
+            component: ocata
+            distributions:
+              - ubuntu-xenial/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/salt.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/salt.yml
new file mode 100644
index 0000000..8e872b7
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/salt.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_xenial_salt_source: http://apt.mirantis.com/xenial/
+    mirror_mirantis_openstack_xenial_salt_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_salt_components: salt
+    mirror_mirantis_openstack_xenial_salt_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_salt_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_xenial_salt:
+          source: ${_param:mirror_mirantis_openstack_xenial_salt_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_salt_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_salt_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_xenial_salt_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_salt_gpgkeys}
+          publisher:
+            component: salt
+            distributions:
+              - ubuntu-xenial/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/openstack_mitaka.yml b/aptly/server/mirror/ubuntu/xenial/mcp/openstack_mitaka.yml
index 32254d5..b10e128 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/openstack_mitaka.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/openstack_mitaka.yml
@@ -1,41 +1,73 @@
 parameters:
+  _param:
+    mirror_mirantis_openstack_mitaka_xenial_source: http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial
+    mirror_mirantis_openstack_mitaka_xenial_distribution: mitaka
+    mirror_mirantis_openstack_mitaka_xenial_components: main restricted
+    mirror_mirantis_openstack_mitaka_xenial_key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial/archive-mcpmitaka.key"
+    mirror_mirantis_openstack_mitaka_xenial_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis_openstack_mitaka_hotfix_xenial_source: http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial
+    mirror_mirantis_openstack_mitaka_hotfix_xenial_distribution: mitaka-hotfix
+    mirror_mirantis_openstack_mitaka_hotfix_xenial_components: main restricted
+    mirror_mirantis_openstack_mitaka_hotfix_xenial_key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial/archive-mcpmitaka.key"
+    mirror_mirantis_openstack_mitaka_hotfix_xenial_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis_openstack_mitaka_security_xenial_source: http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial
+    mirror_mirantis_openstack_mitaka_security_xenial_distribution: mitaka-security
+    mirror_mirantis_openstack_mitaka_security_xenial_components: main restricted
+    mirror_mirantis_openstack_mitaka_security_xenial_key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial/archive-mcpmitaka.key"
+    mirror_mirantis_openstack_mitaka_security_xenial_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis_openstack_mitaka_updates_xenial_source: http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial
+    mirror_mirantis_openstack_mitaka_updates_xenial_distribution: mitaka-updates
+    mirror_mirantis_openstack_mitaka_updates_xenial_components: main restricted
+    mirror_mirantis_openstack_mitaka_updates_xenial_key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial/archive-mcpmitaka.key"
+    mirror_mirantis_openstack_mitaka_updates_xenial_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis_openstack_mitaka_holdback_xenial_source: http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial
+    mirror_mirantis_openstack_mitaka_holdback_xenial_distribution: mitaka-holdback
+    mirror_mirantis_openstack_mitaka_holdback_xenial_components: main restricted
+    mirror_mirantis_openstack_mitaka_holdback_xenial_key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial/archive-mcpmitaka.key"
+    mirror_mirantis_openstack_mitaka_holdback_xenial_gpgkeys:
+      - 1FA22B08
   aptly:
     server:
       mirror:
         mirantis_openstack_mitaka_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial
-          distribution: mitaka
-          components: main restricted
+          source: ${_param:mirror_mirantis_openstack_mitaka_xenial_source}
+          distribution: ${_param:mirror_mirantis_openstack_mitaka_xenial_distribution}
+          components: ${_param:mirror_mirantis_openstack_mitaka_xenial_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial/archive-mcpmitaka.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_mitaka_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_xenial_gpgkeys}
           publisher:
             component: main
             distributions:
               - ubuntu-xenial/mitaka
 
         mirantis_openstack_mitaka_hotfix_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial
-          distribution: mitaka-hotfix
-          components: main restricted
+          source: ${_param:mirror_mirantis_openstack_mitaka_hotfix_xenial_source}
+          distribution: ${_param:mirror_mirantis_openstack_mitaka_hotfix_xenial_distribution}
+          components: ${_param:mirror_mirantis_openstack_mitaka_hotfix_xenial_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial/archive-mcpmitaka.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_mitaka_hotfix_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_hotfix_xenial_gpgkeys}
           publisher:
             component: main
             distributions:
               - ubuntu-xenial/mitaka-hotfix
 
         mirantis_openstack_mitaka_security_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial
-          distribution: mitaka-security
-          components: main restricted
+          source: ${_param:mirror_mirantis_openstack_mitaka_security_xenial_source}
+          distribution: ${_param:mirror_mirantis_openstack_mitaka_security_xenial_distribution}
+          components: ${_param:mirror_mirantis_openstack_mitaka_security_xenial_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial/archive-mcpmitaka.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_mitaka_security_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_security_xenial_gpgkeys}
           publisher:
             component: main
             distributions:
@@ -43,13 +75,12 @@
 
         # required for alternative horizon plugins/etc..
         mirantis_openstack_mitaka_updates_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial
-          distribution: mitaka-updates
-          components:  main restricted
+          source: ${_param:mirror_mirantis_openstack_mitaka_updates_xenial_source}
+          distribution: ${_param:mirror_mirantis_openstack_mitaka_updates_xenial_distribution}
+          components:  ${_param:mirror_mirantis_openstack_mitaka_updates_xenial_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial/archive-mcpmitaka.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_mitaka_updates_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_updates_xenial_gpgkeys}
           publisher:
             component: main
             distributions:
@@ -57,13 +88,12 @@
 
         # required for salt formulas
         mirantis_openstack_mitaka_holdback_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial
-          distribution: mitaka-holdback
-          components: main restricted
+          source: ${_param:mirror_mirantis_openstack_mitaka_holdback_xenial_source}
+          distribution: ${_param:mirror_mirantis_openstack_mitaka_holdback_xenial_distribution}
+          components: ${_param:mirror_mirantis_openstack_mitaka_holdback_xenial_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/xenial/archive-mcpmitaka.key"
-          gpgkeys:
-          - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_mitaka_holdback_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_holdback_xenial_gpgkeys}
           publisher:
             component: main
             distributions:
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/openstack_newton.yml b/aptly/server/mirror/ubuntu/xenial/mcp/openstack_newton.yml
index 2f08b2c..aa10e46 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/openstack_newton.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/openstack_newton.yml
@@ -1,41 +1,73 @@
 parameters:
+  _param:
+    mirror_mirantis_openstack_newton_xenial_source: http://mirror.fuel-infra.org/mcp-repos/newton/xenial
+    mirror_mirantis_openstack_newton_xenial_distribution: newton
+    mirror_mirantis_openstack_newton_xenial_components: main restricted
+    mirror_mirantis_openstack_newton_xenial_key_url: "http://mirror.fuel-infra.org/mcp-repos/newton/xenial/archive-mcpnewton.key"
+    mirror_mirantis_openstack_newton_xenial_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis_openstack_newton_hotfix_xenial_source: http://mirror.fuel-infra.org/mcp-repos/newton/xenial
+    mirror_mirantis_openstack_newton_hotfix_xenial_distribution: newton-hotfix
+    mirror_mirantis_openstack_newton_hotfix_xenial_components: main restricted
+    mirror_mirantis_openstack_newton_hotfix_xenial_key_url: "http://mirror.fuel-infra.org/mcp-repos/newton/xenial/archive-mcpnewton.key"
+    mirror_mirantis_openstack_newton_hotfix_xenial_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis_openstack_newton_security_xenial_source: http://mirror.fuel-infra.org/mcp-repos/newton/xenial
+    mirror_mirantis_openstack_newton_security_xenial_distribution: newton-security
+    mirror_mirantis_openstack_newton_security_xenial_components: main restricted
+    mirror_mirantis_openstack_newton_security_xenial_key_url: "http://mirror.fuel-infra.org/mcp-repos/newton/xenial/archive-mcpnewton.key"
+    mirror_mirantis_openstack_newton_security_xenial_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis_openstack_newton_updates_xenial_source: http://mirror.fuel-infra.org/mcp-repos/newton/xenial
+    mirror_mirantis_openstack_newton_updates_xenial_distribution: newton-updates
+    mirror_mirantis_openstack_newton_updates_xenial_components: main restricted
+    mirror_mirantis_openstack_newton_updates_xenial_key_url: "http://mirror.fuel-infra.org/mcp-repos/newton/xenial/archive-mcpnewton.key"
+    mirror_mirantis_openstack_newton_updates_xenial_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis_openstack_newton_holdback_xenial_source: http://mirror.fuel-infra.org/mcp-repos/newton/xenial
+    mirror_mirantis_openstack_newton_holdback_xenial_distribution: newton-holdback
+    mirror_mirantis_openstack_newton_holdback_xenial_components: main restricted
+    mirror_mirantis_openstack_newton_holdback_xenial_key_url: "http://mirror.fuel-infra.org/mcp-repos/newton/xenial/archive-mcpnewton.key"
+    mirror_mirantis_openstack_newton_holdback_xenial_gpgkeys:
+      - 1FA22B08
   aptly:
     server:
       mirror:
         mirantis_openstack_newton_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/newton/xenial
-          distribution: newton
-          components: main restricted
+          source: ${_param:mirror_mirantis_openstack_newton_xenial_source}
+          distribution: ${_param:mirror_mirantis_openstack_newton_xenial_distribution}
+          components: ${_param:mirror_mirantis_openstack_newton_xenial_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/newton/xenial/archive-mcpnewton.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_newton_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_newton_xenial_gpgkeys}
           publisher:
             component: main
             distributions:
               - ubuntu-xenial/newton
 
         mirantis_openstack_newton_hotfix_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/newton/xenial
-          distribution: newton-hotfix
-          components: main restricted
+          source: ${_param:mirror_mirantis_openstack_newton_hotfix_xenial_source}
+          distribution: ${_param:mirror_mirantis_openstack_newton_hotfix_xenial_distribution}
+          components: ${_param:mirror_mirantis_openstack_newton_hotfix_xenial_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/newton/xenial/archive-mcpnewton.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_newton_hotfix_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_newton_hotfix_xenial_gpgkeys}
           publisher:
             component: main
             distributions:
               - ubuntu-xenial/newton-hotfix
 
         mirantis_openstack_newton_security_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/newton/xenial
-          distribution: newton-security
-          components: main restricted
+          source: ${_param:mirror_mirantis_openstack_newton_security_xenial_source}
+          distribution: ${_param:mirror_mirantis_openstack_newton_security_xenial_distribution}
+          components: ${_param:mirror_mirantis_openstack_newton_security_xenial_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/newton/xenial/archive-mcpnewton.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_newton_security_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_newton_security_xenial_gpgkeys}
           publisher:
             component: main
             distributions:
@@ -43,13 +75,12 @@
 
         # required for alternative horizon plugins/etc..
         mirantis_openstack_newton_updates_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/newton/xenial
-          distribution: newton-updates
-          components:  main restricted
+          source: ${_param:mirror_mirantis_openstack_newton_updates_xenial_source}
+          distribution: ${_param:mirror_mirantis_openstack_newton_updates_xenial_distribution}
+          components:  ${_param:mirror_mirantis_openstack_newton_updates_xenial_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/newton/xenial/archive-mcpnewton.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_newton_updates_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_newton_updates_xenial_gpgkeys}
           publisher:
             component: main
             distributions:
@@ -57,15 +88,13 @@
 
         # required for salt formulas
         mirantis_openstack_newton_holdback_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/newton/xenial
-          distribution: newton-holdback
-          components: main restricted
+          source: ${_param:mirror_mirantis_openstack_newton_holdback_xenial_source}
+          distribution: ${_param:mirror_mirantis_openstack_newton_holdback_xenial_distribution}
+          components: ${_param:mirror_mirantis_openstack_newton_holdback_xenial_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/newton/xenial/archive-mcpnewton.key"
-          gpgkeys:
-          - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_newton_holdback_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_newton_holdback_xenial_gpgkeys}
           publisher:
             component: main
             distributions:
-              - ubuntu-xenial/newton-holdback
-
+              - ubuntu-xenial/newton-holdback
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/openstack_ocata.yml b/aptly/server/mirror/ubuntu/xenial/mcp/openstack_ocata.yml
index 8c12ddc..45d1efe 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/openstack_ocata.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/openstack_ocata.yml
@@ -1,41 +1,73 @@
 parameters:
+  _param:
+    mirror_mirantis_openstack_ocata_xenial_source: http://mirror.fuel-infra.org/mcp-repos/ocata/xenial
+    mirror_mirantis_openstack_ocata_xenial_distribution: ocata
+    mirror_mirantis_openstack_ocata_xenial_components: main restricted
+    mirror_mirantis_openstack_ocata_xenial_key_url: "http://mirror.fuel-infra.org/mcp-repos/ocata/xenial/archive-mcpocata.key"
+    mirror_mirantis_openstack_ocata_xenial_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis_openstack_ocata_hotfix_xenial_source: http://mirror.fuel-infra.org/mcp-repos/ocata/xenial
+    mirror_mirantis_openstack_ocata_hotfix_xenial_distribution: ocata-hotfix
+    mirror_mirantis_openstack_ocata_hotfix_xenial_components: main restricted
+    mirror_mirantis_openstack_ocata_hotfix_xenial_key_url: "http://mirror.fuel-infra.org/mcp-repos/ocata/xenial/archive-mcpocata.key"
+    mirror_mirantis_openstack_ocata_hotfix_xenial_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis_openstack_ocata_security_xenial_source: http://mirror.fuel-infra.org/mcp-repos/ocata/xenial
+    mirror_mirantis_openstack_ocata_security_xenial_distribution: ocata-security
+    mirror_mirantis_openstack_ocata_security_xenial_components: main restricted
+    mirror_mirantis_openstack_ocata_security_xenial_key_url: "http://mirror.fuel-infra.org/mcp-repos/ocata/xenial/archive-mcpocata.key"
+    mirror_mirantis_openstack_ocata_security_xenial_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis_openstack_ocata_updates_xenial_source: http://mirror.fuel-infra.org/mcp-repos/ocata/xenial
+    mirror_mirantis_openstack_ocata_updates_xenial_distribution: ocata-updates
+    mirror_mirantis_openstack_ocata_updates_xenial_components: main restricted
+    mirror_mirantis_openstack_ocata_updates_xenial_key_url: "http://mirror.fuel-infra.org/mcp-repos/ocata/xenial/archive-mcpocata.key"
+    mirror_mirantis_openstack_ocata_updates_xenial_gpgkeys:
+      - 1FA22B08
+
+    mirror_mirantis_openstack_ocata_holdback_xenial_source: http://mirror.fuel-infra.org/mcp-repos/ocata/xenial
+    mirror_mirantis_openstack_ocata_holdback_xenial_distribution: ocata-holdback
+    mirror_mirantis_openstack_ocata_holdback_xenial_components: main restricted
+    mirror_mirantis_openstack_ocata_holdback_xenial_key_url: "http://mirror.fuel-infra.org/mcp-repos/ocata/xenial/archive-mcpocata.key"
+    mirror_mirantis_openstack_ocata_holdback_xenial_gpgkeys:
+      - 1FA22B08
   aptly:
     server:
       mirror:
         mirantis_openstack_ocata_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/ocata/xenial
-          distribution: ocata
-          components: main restricted
+          source: ${_param:mirror_mirantis_openstack_ocata_xenial_source}
+          distribution: ${_param:mirror_mirantis_openstack_ocata_xenial_distribution}
+          components: ${_param:mirror_mirantis_openstack_ocata_xenial_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/ocata/xenial/archive-mcpocata.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_ocata_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_ocata_xenial_gpgkeys}
           publisher:
             component: main
             distributions:
               - ubuntu-xenial/ocata
 
         mirantis_openstack_ocata_hotfix_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/ocata/xenial
-          distribution: ocata-hotfix
-          components: main restricted
+          source: ${_param:mirror_mirantis_openstack_ocata_hotfix_xenial_source}
+          distribution: ${_param:mirror_mirantis_openstack_ocata_hotfix_xenial_distribution}
+          components: ${_param:mirror_mirantis_openstack_ocata_hotfix_xenial_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/ocata/xenial/archive-mcpocata.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_ocata_hotfix_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_ocata_hotfix_xenial_gpgkeys}
           publisher:
             component: main
             distributions:
               - ubuntu-xenial/ocata-hotfix
 
         mirantis_openstack_ocata_security_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/ocata/xenial
-          distribution: ocata-security
-          components: main restricted
+          source: ${_param:mirror_mirantis_openstack_ocata_security_xenial_source}
+          distribution: ${_param:mirror_mirantis_openstack_ocata_security_xenial_distribution}
+          components: ${_param:mirror_mirantis_openstack_ocata_security_xenial_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/ocata/xenial/archive-mcpocata.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_ocata_security_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_ocata_security_xenial_gpgkeys}
           publisher:
             component: main
             distributions:
@@ -43,13 +75,12 @@
 
         # required for alternative horizon plugins/etc..
         mirantis_openstack_ocata_updates_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/ocata/xenial
-          distribution: ocata-updates
-          components:  main restricted
+          source: ${_param:mirror_mirantis_openstack_ocata_updates_xenial_source}
+          distribution: ${_param:mirror_mirantis_openstack_ocata_updates_xenial_distribution}
+          components:  ${_param:mirror_mirantis_openstack_ocata_updates_xenial_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/ocata/xenial/archive-mcpocata.key"
-          gpgkeys:
-            - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_ocata_updates_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_ocata_updates_xenial_gpgkeys}
           publisher:
             component: main
             distributions:
@@ -57,15 +88,13 @@
 
         # required for salt formulas
         mirantis_openstack_ocata_holdback_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/ocata/xenial
-          distribution: ocata-holdback
-          components: main restricted
+          source: ${_param:mirror_mirantis_openstack_ocata_holdback_xenial_source}
+          distribution: ${_param:mirror_mirantis_openstack_ocata_holdback_xenial_distribution}
+          components: ${_param:mirror_mirantis_openstack_ocata_holdback_xenial_components}
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/ocata/xenial/archive-mcpocata.key"
-          gpgkeys:
-          - 1FA22B08
+          key_url: ${_param:mirror_mirantis_openstack_ocata_holdback_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_ocata_holdback_xenial_gpgkeys}
           publisher:
             component: main
             distributions:
-              - ubuntu-xenial/ocata-holdback
-
+              - ubuntu-xenial/ocata-holdback
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/salt.yml b/aptly/server/mirror/ubuntu/xenial/salt.yml
index a100bde..7a01bb3 100644
--- a/aptly/server/mirror/ubuntu/xenial/salt.yml
+++ b/aptly/server/mirror/ubuntu/xenial/salt.yml
@@ -1,17 +1,21 @@
 parameters:
   _param:
     apt_mk_version: stable
+    mirror_salt-2016-3-xenial_source: http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.3/
+    mirror_salt-2016-3-xenial_distribution: xenial
+    mirror_salt-2016-3-xenial_components: main
+    mirror_salt-2016-3-xenial_gpgkeys:
+      - DE57BFBE
   aptly:
     server:
       mirror:
         salt-2016.3-xenial:
-          source: http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.3/
-          distribution: xenial
-          components: main
+          source: ${_param:mirror_salt-2016-3-xenial_source}
+          distribution: ${_param:mirror_salt-2016-3-xenial_distribution}
+          components: ${_param:mirror_salt-2016-3-xenial_components}
           architectures: amd64
-          gpgkeys:
-            - DE57BFBE
+          gpgkeys: ${_param:mirror_salt-2016-3-xenial_gpgkeys}
           publisher:
             component: salt
             distributions:
-              - ubuntu-xenial/${_param:apt_mk_version}
+              - ubuntu-xenial/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/tcpcloud.yml b/aptly/server/mirror/ubuntu/xenial/tcpcloud.yml
index 740fa7b..a6c0a85 100644
--- a/aptly/server/mirror/ubuntu/xenial/tcpcloud.yml
+++ b/aptly/server/mirror/ubuntu/xenial/tcpcloud.yml
@@ -2,7 +2,47 @@
   aptly:
     server:
       mirror:
+        mirror_tcpcloud-nightly-main-xenial_source: http://apt.tcpcloud.eu/nightly
+        mirror_tcpcloud-nightly-main-xenial_distribution: xenial
+        mirror_tcpcloud-nightly-main-xenial_components: main security
+        mirror_tcpcloud-nightly-main-xenial_key_url: "http://apt.tcpcloud.eu/public.gpg"
+        mirror_tcpcloud-nightly-main-xenial_gpgkeys:
+          - 3EF02D1C
 
+        mirror_tcpcloud-nightly-tcp-xenial_source: http://apt.tcpcloud.eu/nightly
+        mirror_tcpcloud-nightly-tcp-xenial_distribution: xenial
+        mirror_tcpcloud-nightly-tcp-xenial_components: tcp
+        mirror_tcpcloud-nightly-tcp-xenial_key_url: "http://apt.tcpcloud.eu/public.gpg"
+        mirror_tcpcloud-nightly-tcp-xenial_gpgkeys:
+          - 3EF02D1C
+
+        mirror_tcpcloud-nightly-extra-xenial_source: http://apt.tcpcloud.eu/nightly
+        mirror_tcpcloud-nightly-extra-xenial_distribution: xenial
+        mirror_tcpcloud-nightly-extra-xenial_components: extra
+        mirror_tcpcloud-nightly-tcp-xenial_key_url: "http://apt.tcpcloud.eu/public.gpg"
+        mirror_tcpcloud-nightly-extra-xenial_gpgkeys:
+          - 3EF02D1C
+
+        mirror_tcpcloud-nightly-salt-xenial_source: http://apt.tcpcloud.eu/nightly
+        mirror_tcpcloud-nightly-salt-xenial_distribution: xenial
+        mirror_tcpcloud-nightly-salt-xenial_components: tcp-salt
+        mirror_tcpcloud-nightly-tcp-xenial_key_url: "http://apt.tcpcloud.eu/public.gpg"
+        mirror_tcpcloud-nightly-salt-xenial_gpgkeys:
+          - 3EF02D1C
+
+        mirror_tcpcloud-nightly-oc30-xenial_source: http://apt.tcpcloud.eu/nightly
+        mirror_tcpcloud-nightly-oc30-xenial_distribution: xenial
+        mirror_tcpcloud-nightly-oc30-xenial_components: oc30
+        mirror_tcpcloud-nightly-tcp-xenial_key_url: "http://apt.tcpcloud.eu/public.gpg"
+        mirror_tcpcloud-nightly-oc30-xenial_gpgkeys:
+          - 3EF02D1C
+
+        mirror_tcpcloud-nightly-elastic-xenial_source: http://apt.tcpcloud.eu/nightly
+        mirror_tcpcloud-nightly-elastic-xenial_distribution: xenial
+        mirror_tcpcloud-nightly-elastic-xenial_components: elastic
+        mirror_tcpcloud-nightly-tcp-xenial_key_url: "http://apt.tcpcloud.eu/public.gpg"
+        mirror_tcpcloud-nightly-elastic-xenial_gpgkeys:
+          - 3EF02D1C
         #TOOD: 4x the lower below
         #tcpcloud-[stable/testing]-xxx-[xenial/xenial]:
         #
@@ -10,44 +50,39 @@
         # salt tcp-salt extra liberty mitaka oc30 security mitaka
 
         tcpcloud-nightly-main-xenial:
-          source: http://apt.tcpcloud.eu/nightly
-          distribution: xenial
+          source: ${_param:mirror_tcpcloud-nightly-main-xenial_source}
+          distribution: ${_param:mirror_tcpcloud-nightly-main-xenial_distribution}
             #TODO: extra component might not be needed; tcp is just for heka
-          components: main security
+          components: ${_param:mirror_tcpcloud-nightly-main-xenial_components}
           architectures: amd64
-          key_url: "http://apt.tcpcloud.eu/public.gpg"
-          gpgkeys:
-            - 3EF02D1C
+          key_url: ${_param:mirror_tcpcloud-nightly-main-xenial_key_url}
+          gpgkeys: ${_param:mirror_tcpcloud-nightly-main-xenial_gpgkeys}
           publisher:
             component: tcp-main
             distributions:
               - ubuntu-xenial/nightly
 
-
         tcpcloud-nightly-tcp-xenial:
-          source: http://apt.tcpcloud.eu/nightly
-          distribution: xenial
+          source: ${_param:mirror_tcpcloud-nightly-tcp-xenial_source}
+          distribution: ${_param:mirror_tcpcloud-nightly-tcp-xenial_distribution}
             #TODO: extra component might not be needed; tcp is just for heka
-          components: tcp
+          components: ${_param:mirror_tcpcloud-nightly-tcp-xenial_components}
           architectures: amd64
-          key_url: "http://apt.tcpcloud.eu/public.gpg"
-          gpgkeys:
-            - 3EF02D1C
+          key_url: ${_param:mirror_tcpcloud-nightly-tcp-xenial_key_url}
+          gpgkeys: ${_param:mirror_tcpcloud-nightly-tcp-xenial_gpgkeys}
           publisher:
             component: tcp
             distributions:
               - ubuntu-xenial/nightly
 
-
         tcpcloud-nightly-extra-xenial:
-          source: http://apt.tcpcloud.eu/nightly
-          distribution: xenial
+          source: ${_param:mirror_tcpcloud-nightly-extra-xenial_source}
+          distribution: ${_param:mirror_tcpcloud-nightly-extra-xenial_distribution}
             #TODO: extra component might not be needed; tcp is just for heka
-          components: extra
+          components: ${_param:mirror_tcpcloud-nightly-extra-xenial_components}
           architectures: amd64
-          key_url: "http://apt.tcpcloud.eu/public.gpg"
-          gpgkeys:
-            - 3EF02D1C
+          key_url: ${_param:mirror_tcpcloud-nightly-extra-xenial_key_url}
+          gpgkeys: ${_param:mirror_tcpcloud-nightly-extra-xenial_gpgkeys}
           publisher:
             component: tcp-extra
             distributions:
@@ -55,13 +90,12 @@
 
         # required for salt formulas
         tcpcloud-nightly-salt-xenial:
-          source: http://apt.tcpcloud.eu/nightly
-          distribution: xenial
-          components: tcp-salt
+          source: ${_param:mirror_tcpcloud-nightly-salt-xenial_source}
+          distribution: ${_param:mirror_tcpcloud-nightly-salt-xenial_distribution}
+          components: ${_param:mirror_tcpcloud-nightly-salt-xenial_components}
           architectures: amd64
-          key_url: "http://apt.tcpcloud.eu/public.gpg"
-          gpgkeys:
-          - 3EF02D1C
+          key_url: ${_param:mirror_tcpcloud-nightly-salt-xenial_key_url}
+          gpgkeys: ${_param:mirror_tcpcloud-nightly-salt-xenial_gpgkeys}
           publisher:
             component: tcp-salt
             distributions:
@@ -69,13 +103,12 @@
 
         # required for opencontrail formulas
         tcpcloud-nightly-oc30-xenial:
-          source: http://apt.tcpcloud.eu/nightly
-          distribution: xenial
-          components: oc30
+          source: ${_param:mirror_tcpcloud-nightly-oc30-xenial_source}
+          distribution: ${_param:mirror_tcpcloud-nightly-oc30-xenial_distribution}
+          components: ${_param:mirror_tcpcloud-nightly-oc30-xenial_components}
           architectures: amd64
-          key_url: "http://apt.tcpcloud.eu/public.gpg"
-          gpgkeys:
-            - 3EF02D1C
+          key_url: ${_param:mirror_tcpcloud-nightly-oc30-xenial_key_url}
+          gpgkeys: ${_param:mirror_tcpcloud-nightly-oc30-xenial_gpgkeys}
           publisher:
             component: tcp-oc30
             distributions:
@@ -83,15 +116,13 @@
 
         # elastic, kibana is there
         tcpcloud-nightly-elastic-xenial:
-          source: http://apt.tcpcloud.eu/nightly
-          distribution: xenial
-          components: elastic
+          source: ${_param:mirror_tcpcloud-nightly-elastic-xenial_source}
+          distribution: ${_param:mirror_tcpcloud-nightly-elastic-xenial_distribution}
+          components: ${_param:mirror_tcpcloud-nightly-elastic-xenial_components}
           architectures: amd64
-          key_url: "http://apt.tcpcloud.eu/public.gpg"
-          gpgkeys:
-            - 3EF02D1C
+          key_url: ${_param:mirror_tcpcloud-nightly-elastic-xenial_key_url}
+          gpgkeys: ${_param:mirror_tcpcloud-nightly-elastic-xenial_gpgkeys}
           publisher:
             component: tcp-elastic
             distributions:
-              - ubuntu-xenial/nightly
-
+              - ubuntu-xenial/nightly
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu.yml
deleted file mode 100644
index 4675063..0000000
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu.yml
+++ /dev/null
@@ -1,292 +0,0 @@
-parameters:
-  _param:
-    linux_system_country_code_default: cz
-    linux_system_country_code: ${_param:linux_system_country_code_default}
-  aptly:
-    server:
-      mirror:
-        # xenial
-        xenial-main:
-          sources: true
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial
-          components: main
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: main
-            distributions:
-              - ubuntu/xenial
-        xenial-multiverse:
-          sources: true
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial
-          components: multiverse
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: multiverse
-            distributions:
-              - ubuntu/xenial
-        xenial-restricted:
-          sources: true
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial
-          components: restricted
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: restricted
-            distributions:
-              - ubuntu/xenial
-        xenial-universe:
-          sources: true
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial
-          components: universe
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: universe
-            distributions:
-              - ubuntu/xenial
-
-        # xenial-updates
-        xenial-updates-main:
-          sources: true
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial-updates
-          components: main
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: main
-            distributions:
-              - ubuntu/xenial-updates
-        xenial-updates-multiverse:
-          sources: true
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial-updates
-          components: multiverse
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: multiverse
-            distributions:
-              - ubuntu/xenial-updates
-        xenial-updates-restricted:
-          sources: true
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial-updates
-          components: restricted
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: restricted
-            distributions:
-              - ubuntu/xenial-updates
-        xenial-updates-universe:
-          sources: true
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial-updates
-          components: universe
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: universe
-            distributions:
-              - ubuntu/xenial-updates
-
-        #xenial-security:
-        xenial-security-main:
-          sources: true
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial-security
-          components: main
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: main
-            distributions:
-              - ubuntu/xenial-security
-        xenial-security-multiverse:
-          sources: true
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial-security
-          components: multiverse
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: multiverse
-            distributions:
-              - ubuntu/xenial-security
-        xenial-security-restricted:
-          sources: true
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial-security
-          components: restricted
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: restricted
-            distributions:
-              - ubuntu/xenial-security
-        xenial-security-universe:
-          sources: true
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial-security
-          components: universe
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: universe
-            distributions:
-              - ubuntu/xenial-security
-
-        #xenial-proposed:
-        xenial-proposed-main:
-          sources: true
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial-proposed
-          components: main
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: main
-            distributions:
-              - ubuntu/xenial-proposed
-        xenial-proposed-multiverse:
-          sources: true
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial-proposed
-          components: multiverse
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: multiverse
-            distributions:
-              - ubuntu/xenial-proposed
-        xenial-proposed-restricted:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial-proposed
-          components: restricted
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: restricted
-            distributions:
-              - ubuntu/xenial-proposed
-        xenial-proposed-universe:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial-proposed
-          components: universe
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: universe
-            distributions:
-              - ubuntu/xenial-proposed
-
-        #xenial-backports:
-        xenial-backports-main:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial-backports
-          components: main
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: main
-            distributions:
-              - ubuntu/xenial-backports
-        xenial-backports-multiverse:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial-backports
-          components: multiverse
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: multiverse
-            distributions:
-              - ubuntu/xenial-backports
-        xenial-backports-restricted:
-          sources: true
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial-backports
-          components: restricted
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: restricted
-            distributions:
-              - ubuntu/xenial-backports
-        xenial-backports-universe:
-          sources: true
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: xenial-backports
-          components: universe
-          architectures: amd64
-          gpgkeys:
-            - 40976EAF437D05B5
-            - 437D05B5
-            - C0B21F32
-          publisher:
-            component: universe
-            distributions:
-              - ubuntu/xenial-backports
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/init.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/init.yml
new file mode 100644
index 0000000..4d8dc20
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/init.yml
@@ -0,0 +1,6 @@
+classes:
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-backports
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-proposed
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-security
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-updates
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/init.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/init.yml
new file mode 100644
index 0000000..a211387
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/init.yml
@@ -0,0 +1,5 @@
+classes:
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-backports.main
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-backports.multiverse
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-backports.restricted
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-backports.universe
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/main.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/main.yml
new file mode 100644
index 0000000..f9ad68e
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/main.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-backports-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-backports-main_distribution: xenial-backports
+    mirror_xenial-backports-main_components: main
+    mirror_xenial-backports-main_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-backports-main:
+          source: ${_param:mirror_xenial-backports-main_source}
+          distribution: ${_param:mirror_xenial-backports-main_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-backports-main_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-backports-main_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu/xenial-backports
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/multiverse.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/multiverse.yml
new file mode 100644
index 0000000..3ef9908
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/multiverse.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-backports-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-backports-multiverse_distribution: xenial-backports
+    mirror_xenial-backports-multiverse_components: multiverse
+    mirror_xenial-backports-multiverse_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-backports-multiverse:
+          source: ${_param:mirror_xenial-backports-multiverse_source}
+          distribution: ${_param:mirror_xenial-backports-multiverse_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-backports-multiverse_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-backports-multiverse_gpgkeys}
+          publisher:
+            component: multiverse
+            distributions:
+              - ubuntu/xenial-backports
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/restricted.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/restricted.yml
new file mode 100644
index 0000000..5a32ee2
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/restricted.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-backports-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-backports-restricted_distribution: xenial-backports
+    mirror_xenial-backports-restricted_components: restricted
+    mirror_xenial-backports-restricted_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-backports-restricted:
+          source: ${_param:mirror_xenial-backports-restricted_source}
+          distribution: ${_param:mirror_xenial-backports-restricted_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-backports-restricted_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-backports-restricted_gpgkeys}
+          publisher:
+            component: restricted
+            distributions:
+              - ubuntu/xenial-backports
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/universe.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/universe.yml
new file mode 100644
index 0000000..aca402e
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/universe.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-backports-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-backports-universe_distribution: xenial-backports
+    mirror_xenial-backports-universe_components: universe
+    mirror_xenial-backports-universe_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-backports-universe:
+          source: ${_param:mirror_xenial-backports-universe_source}
+          distribution: ${_param:mirror_xenial-backports-universe_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-backports-universe_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-backports-universe_gpgkeys}
+          publisher:
+            component: universe
+            distributions:
+              - ubuntu/xenial-backports
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/init.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/init.yml
new file mode 100644
index 0000000..257d7cf
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/init.yml
@@ -0,0 +1,5 @@
+classes:
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-proposed.main
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-proposed.multiverse
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-proposed.restricted
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-proposed.universe
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/main.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/main.yml
new file mode 100644
index 0000000..920a16f
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/main.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-proposed-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-proposed-main_distribution: xenial-proposed
+    mirror_xenial-proposed-main_components: main
+    mirror_xenial-proposed-main_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-proposed-main:
+          source: ${_param:mirror_xenial-proposed-main_source}
+          distribution: ${_param:mirror_xenial-proposed-main_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-proposed-main_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-proposed-main_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu/xenial-proposed
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/multiverse.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/multiverse.yml
new file mode 100644
index 0000000..aa6cf27
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/multiverse.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-proposed-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-proposed-multiverse_distribution: xenial-proposed
+    mirror_xenial-proposed-multiverse_components: multiverse
+    mirror_xenial-proposed-multiverse_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-proposed-multiverse:
+          source: ${_param:mirror_xenial-proposed-multiverse_source}
+          distribution: ${_param:mirror_xenial-proposed-multiverse_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-proposed-multiverse_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-proposed-multiverse_gpgkeys}
+          publisher:
+            component: multiverse
+            distributions:
+              - ubuntu/xenial-proposed
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/restricted.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/restricted.yml
new file mode 100644
index 0000000..78aef0b
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/restricted.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-proposed-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-proposed-restricted_distribution: xenial-proposed
+    mirror_xenial-proposed-restricted_components: restricted
+    mirror_xenial-proposed-restricted_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-proposed-restricted:
+          source: ${_param:mirror_xenial-proposed-restricted_source}
+          distribution: ${_param:mirror_xenial-proposed-restricted_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-proposed-restricted_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-proposed-restricted_gpgkeys}
+          publisher:
+            component: restricted
+            distributions:
+              - ubuntu/xenial-proposed
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/universe.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/universe.yml
new file mode 100644
index 0000000..618e4e8
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/universe.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-proposed-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-proposed-universe_distribution: xenial-proposed
+    mirror_xenial-proposed-universe_components: universe
+    mirror_xenial-proposed-universe_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-proposed-universe:
+          source: ${_param:mirror_xenial-proposed-universe_source}
+          distribution: ${_param:mirror_xenial-proposed-universe_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-proposed-universe_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-proposed-universe_gpgkeys}
+          publisher:
+            component: universe
+            distributions:
+              - ubuntu/xenial-proposed
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/init.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/init.yml
new file mode 100644
index 0000000..ebf0830
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/init.yml
@@ -0,0 +1,5 @@
+classes:
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-security.main
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-security.multiverse
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-security.restricted
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-security.universe
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/main.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/main.yml
new file mode 100644
index 0000000..dc1309a
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/main.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-security-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-security-main_distribution: xenial-security
+    mirror_xenial-security-main_components: main
+    mirror_xenial-security-main_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-security-main:
+          source: ${_param:mirror_xenial-security-main_source}
+          distribution: ${_param:mirror_xenial-security-main_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-security-main_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-security-main_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu/xenial-security
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/multiverse.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/multiverse.yml
new file mode 100644
index 0000000..77fcd1c
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/multiverse.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-security-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-security-multiverse_distribution: xenial-security
+    mirror_xenial-security-multiverse_components: multiverse
+    mirror_xenial-security-multiverse_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-security-multiverse:
+          source: ${_param:mirror_xenial-security-multiverse_source}
+          distribution: ${_param:mirror_xenial-security-multiverse_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-security-multiverse_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-security-multiverse_gpgkeys}
+          publisher:
+            component: multiverse
+            distributions:
+              - ubuntu/xenial-security
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/restricted.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/restricted.yml
new file mode 100644
index 0000000..b6046ff
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/restricted.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-security-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-security-restricted_distribution: xenial-security
+    mirror_xenial-security-restricted_components: restricted
+    mirror_xenial-security-restricted_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-security-restricted:
+          source: ${_param:mirror_xenial-security-restricted_source}
+          distribution: ${_param:mirror_xenial-security-restricted_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-security-restricted_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-security-restricted_gpgkeys}
+          publisher:
+            component: restricted
+            distributions:
+              - ubuntu/xenial-security
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/universe.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/universe.yml
new file mode 100644
index 0000000..0a41112
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/universe.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-security-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-security-universe_distribution: xenial-security
+    mirror_xenial-security-universe_components: universe
+    mirror_xenial-security-universe_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-security-universe:
+          source: ${_param:mirror_xenial-security-universe_source}
+          distribution: ${_param:mirror_xenial-security-universe_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-security-universe_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-security-universe_gpgkeys}
+          publisher:
+            component: universe
+            distributions:
+              - ubuntu/xenial-security
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/init.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/init.yml
new file mode 100644
index 0000000..2e3f8b5
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/init.yml
@@ -0,0 +1,5 @@
+classes:
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-updates.main
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-updates.multiverse
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-updates.restricted
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial-updates.universe
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/main.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/main.yml
new file mode 100644
index 0000000..a97dcc4
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/main.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-updates-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-updates-main_distribution: xenial-updates
+    mirror_xenial-updates-main_components: main
+    mirror_xenial-updates-main_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-updates-main:
+          source: ${_param:mirror_xenial-updates-main_source}
+          distribution: ${_param:mirror_xenial-updates-main_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-updates-main_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-updates-main_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu/xenial-updates
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/multiverse.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/multiverse.yml
new file mode 100644
index 0000000..2373c56
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/multiverse.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-updates-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-updates-multiverse_distribution: xenial-updates
+    mirror_xenial-updates-multiverse_components: multiverse
+    mirror_xenial-updates-multiverse_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-updates-multiverse:
+          source: ${_param:mirror_xenial-updates-multiverse_source}
+          distribution: ${_param:mirror_xenial-updates-multiverse_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-updates-multiverse_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-updates-multiverse_gpgkeys}
+          publisher:
+            component: multiverse
+            distributions:
+              - ubuntu/xenial-updates
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/restricted.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/restricted.yml
new file mode 100644
index 0000000..74aba0b
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/restricted.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-updates-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-updates-restricted_distribution: xenial-updates
+    mirror_xenial-updates-restricted_components: restricted
+    mirror_xenial-updates-restricted_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-updates-restricted:
+          source: ${_param:mirror_xenial-updates-restricted_source}
+          distribution: ${_param:mirror_xenial-updates-restricted_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-updates-restricted_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-updates-restricted_gpgkeys}
+          publisher:
+            component: restricted
+            distributions:
+              - ubuntu/xenial-updates
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/universe.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/universe.yml
new file mode 100644
index 0000000..cf8c817
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/universe.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-updates-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-updates-universe_distribution: xenial-updates
+    mirror_xenial-updates-universe_components: universe
+    mirror_xenial-updates-universe_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-updates-universe:
+          source: ${_param:mirror_xenial-updates-universe_source}
+          distribution: ${_param:mirror_xenial-updates-universe_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-updates-universe_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-updates-universe_gpgkeys}
+          publisher:
+            component: universe
+            distributions:
+              - ubuntu/xenial-updates
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/init.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/init.yml
new file mode 100644
index 0000000..1b81ba1
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/init.yml
@@ -0,0 +1,5 @@
+classes:
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial.main
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial.multiverse
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial.restricted
+- system.aptly.server.mirror.ubuntu.xenial.ubuntu.xenial.universe
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/main.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/main.yml
new file mode 100644
index 0000000..4d9db03
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/main.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-main_distribution: xenial
+    mirror_xenial-main_components: main
+    mirror_xenial-main_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-main:
+          source: ${_param:mirror_xenial-main_source}
+          distribution: ${_param:mirror_xenial-main_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-main_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-main_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu/xenial
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/multiverse.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/multiverse.yml
new file mode 100644
index 0000000..a74c520
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/multiverse.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-multiverse_distribution: xenial
+    mirror_xenial-multiverse_components: multiverse
+    mirror_xenial-multiverse_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-multiverse:
+          source: ${_param:mirror_xenial-multiverse_source}
+          distribution: ${_param:mirror_xenial-multiverse_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-multiverse_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-multiverse_gpgkeys}
+          publisher:
+            component: multiverse
+            distributions:
+              - ubuntu/xenial
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/restricted.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/restricted.yml
new file mode 100644
index 0000000..bde6b36
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/restricted.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-restricted_distribution: xenial
+    mirror_xenial-restricted_components: restricted
+    mirror_xenial-restricted_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-restricted:
+          source: ${_param:mirror_xenial-restricted_source}
+          distribution: ${_param:mirror_xenial-restricted_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-restricted_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-restricted_gpgkeys}
+          publisher:
+            component: restricted
+            distributions:
+              - ubuntu/xenial
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/universe.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/universe.yml
new file mode 100644
index 0000000..b24cc1a
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/universe.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    mirror_xenial-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    mirror_xenial-universe_distribution: xenial
+    mirror_xenial-universe_components: universe
+    mirror_xenial-universe_gpgkeys:
+      - 40976EAF437D05B5
+      - 437D05B5
+      - C0B21F32
+  aptly:
+    server:
+      mirror:
+        xenial-universe:
+          source: ${_param:mirror_xenial-universe_source}
+          distribution: ${_param:mirror_xenial-universe_distribution}
+          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
+          components: ${_param:mirror_xenial-universe_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_xenial-universe_gpgkeys}
+          publisher:
+            component: universe
+            distributions:
+              - ubuntu/xenial
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntucloud.yml b/aptly/server/mirror/ubuntu/xenial/ubuntucloud.yml
index 509c65a..7183d13 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntucloud.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntucloud.yml
@@ -1,25 +1,35 @@
 parameters:
+  _param:
+    mirror_xenial-updates-newton_source: http://ubuntu-cloud.archive.canonical.com/ubuntu/
+    mirror_xenial-updates-newton_distribution: xenial-updates/newton
+    mirror_xenial-updates-newton_components: main
+    mirror_xenial-updates-newton_gpgkeys:
+      - EC4926EA
+
+    mirror_xenial-updates-ocata_source: http://ubuntu-cloud.archive.canonical.com/ubuntu/
+    mirror_xenial-updates-ocata_distribution: xenial-updates/ocata
+    mirror_xenial-updates-ocata_components: main
+    mirror_xenial-updates-ocata_gpgkeys:
+      - EC4926EA
   aptly:
     server:
       mirror:
         xenial-updates-newton:
-          source: http://ubuntu-cloud.archive.canonical.com/ubuntu/
-          distribution: xenial-updates/newton
-          components: main
+          source: ${_param:mirror_xenial-updates-newton_source}
+          distribution: ${_param:mirror_xenial-updates-newton_distribution}
+          components: ${_param:mirror_xenial-updates-newton_components}
           architectures: amd64
-          gpgkeys:
-            - EC4926EA
+          gpgkeys: ${_param:mirror_xenial-updates-newton_gpgkeys}
           publisher:
             component: newton
             distributions:
               - ubuntu-xenial/nightly
         xenial-updates-ocata:
-          source: http://ubuntu-cloud.archive.canonical.com/ubuntu/
-          distribution: xenial-updates/ocata
-          components: main
+          source: ${_param:mirror_xenial-updates-ocata_source}
+          distribution: ${_param:mirror_xenial-updates-ocata_distribution}
+          components: ${_param:mirror_xenial-updates-ocata_components}
           architectures: amd64
-          gpgkeys:
-            - EC4926EA
+          gpgkeys: ${_param:mirror_xenial-updates-ocata_gpgkeys}
           publisher:
             component: ocata
             distributions:
diff --git a/aptly/server/single.yml b/aptly/server/single.yml
index 8b71974..e8da341 100644
--- a/aptly/server/single.yml
+++ b/aptly/server/single.yml
@@ -6,6 +6,8 @@
   _param:
     nginx_aptly_server_host: ${linux:network:fqdn}
     aptly_server_secure: true
+    aptly_server_mirror_sources: false
+    aptly_server_mirror_ubuntu_sources: ${_param:aptly_server_mirror_sources}
   iptables:
     service:
       enabled: true
diff --git a/artifactory/client/init.yml b/artifactory/client/init.yml
index 9aea48b..05c05be 100644
--- a/artifactory/client/init.yml
+++ b/artifactory/client/init.yml
@@ -7,16 +7,130 @@
         server:
           host: ${_param:artifactory_server_host}
           port: ${_param:artifactory_server_port}
+          proto: ${_param:artifactory_server_proto}
+          ssl_verify: ${_param:artifactory_server_verify_ssl}
           user: ${_param:artifactory_client_user}
           password: ${_param:artifactory_client_password}
-          ssl_verify: False
+          license_key: ${_param:artifactory_license_key}
+          ldap_server: ${_param:artifactory_security_ldap_server}
+          ldap_account_base: ${_param:artifactory_security_ldap_root_dn}
+          ldap_searchFilter: ${_param:artifactory_security_ldap_searchFilter}
         repo:
-          local_artifactory_repo:
-            name: local_artifactory_repo
-            package_type: generic
+          _genericRepository-local:
+            description: "Used by Jimbo"
             repo_type: local
-          remote_artifactory_repo:
-            name: remote_artifactory_repo
             package_type: generic
+          binary-dev-local:
+            description: "None"
+            repo_type: local
+            package_type: generic
+          binary-prod-local:
+            repo_type: local
+            package_type: generic
+          docker-dev-local:
+            repo_type: local
+            package_type: docker
+          docker-prod-local:
+            repo_type: local
+            package_type: docker
+          k8s-tests-images:
+            repo_type: local
+            package_type: docker
+          maven-local:
+            description: "Hosts Java libraries needed to build Docker images"
+            repo_type: local
+            package_type: maven
+          mcp-ci-images:
+            repo_type: local
+            package_type: docker
+          vm-images:
+            repo_type: local
+            package_type: generic
+          _genericRepository-remote:
+            description: "Used by Jimbo"
             repo_type: remote
-            url: "http://artifactory.mcp.mirantis.net/"
+            package_type: generic
+            url: http://localhost
+          apk-remote:
+            repo_type: remote
+            package_type: generic
+            url: http://dl-cdn.alpinelinux.org/alpine/
+          apt-docker-project:
+            repo_type: remote
+            package_type: debian
+            url: https://apt.dockerproject.org/repo
+          artifactory-pro-debian:
+            repo_type: remote
+            package_type: debian
+            url: https://jfrog.bintray.com/artifactory-pro-debs
+          debian-mariadb-remote:
+            repo_type: remote
+            package_type: debian
+            url: http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.1/debian/
+          debian-nginx:
+            repo_type: remote
+            package_type: debian
+            url: http://nginx.org/packages/debian/
+          debian-percona-remote:
+            repo_type: remote
+            package_type: debian
+            url: http://repo.percona.com/apt
+          debian-rabbitmq-remote:
+            repo_type: remote
+            package_type: debian
+            url: http://www.rabbitmq.com/debian/
+          debian-remote:
+            repo_type: remote
+            package_type: debian
+            url: http://ftp.us.debian.org/debian
+          debian-security-remote:
+            repo_type: remote
+            package_type: debian
+            url: http://security.debian.org/
+          docker-remote:
+            description: "Remote repository for DockerHub"
+            repo_type: remote
+            package_type: docker
+            url: https://registry-1.docker.io/
+          gcs-remote:
+            description: "Has zero downloads. Can be removed."
+            repo_type: remote
+            package_type: generic
+            url: https://storage.googleapis.com
+          gerrit-plugins:
+            description: "Overlaps with maven-local. We should resolve overlap and remove this repo."
+            repo_type: remote
+            package_type: generic
+            url: http://builds.quelltextlich.at/gerrit/nightly
+          jcenter:
+            repo_type: remote
+            package_type: maven
+            url: https://jcenter.bintray.com
+          jenkins-deb-pkgs:
+            repo_type: remote
+            package_type: generic
+            url: https://pkg.jenkins.io/debian-stable/binary
+          jenkins-plugins:
+            repo_type: remote
+            package_type: generic
+            url: http://mirrors.jenkins-ci.org/plugins
+          jenkins-plugins-jars:
+            repo_type: remote
+            package_type: maven
+            url: https://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/
+          jenkins-updates:
+            repo_type: remote
+            package_type: generic
+            url: https://updates.jenkins.io/
+          mysql-connector-java:
+            repo_type: remote
+            package_type: maven
+            url: http://repo.jfrog.org/artifactory/remote-repos/mysql/mysql-connector-java/
+          pypi-remote:
+            repo_type: remote
+            package_type: pypi
+            url: https://pypi.python.org
+          ubuntu-remote:
+            repo_type: remote
+            package_type: debian
+            url: http://us.archive.ubuntu.com/ubuntu/
diff --git a/barbican/server/cluster.yml b/barbican/server/cluster.yml
new file mode 100644
index 0000000..5b5bc5e
--- /dev/null
+++ b/barbican/server/cluster.yml
@@ -0,0 +1,3 @@
+classes:
+- service.barbican.server.cluster
+- system.haproxy.proxy.listen.openstack.barbican
\ No newline at end of file
diff --git a/barbican/server/single.yml b/barbican/server/single.yml
new file mode 100644
index 0000000..eb2b30b
--- /dev/null
+++ b/barbican/server/single.yml
@@ -0,0 +1,2 @@
+classes:
+- service.barbican.server.single
diff --git a/ceilometer/server/cluster.yml b/ceilometer/server/cluster.yml
index cfe54f9..11488fb 100644
--- a/ceilometer/server/cluster.yml
+++ b/ceilometer/server/cluster.yml
@@ -1,8 +1,8 @@
 classes:
 - service.ceilometer.server.cluster
+- service.haproxy.proxy.single
 - system.haproxy.proxy.listen.openstack.ceilometer
 - system.keepalived.cluster.instance.openstack_telemetry_vip
-- service.haproxy.proxy.single
 parameters:
   ceilometer:
     server:
diff --git a/ceph/client/container.yml b/ceph/client/container.yml
index d200a1d..8c6afaf 100644
--- a/ceph/client/container.yml
+++ b/ceph/client/container.yml
@@ -3,3 +3,26 @@
 parameters:
   _param:
     ceph_client_prefix_dir: /srv/volumes/ceph
+    ceph_auth_client_required: cephx
+  ceph:
+    client:
+      config:
+        global:
+          fsid: ${_param:ceph_fsid}
+          mon_initial_members: ${_param:ceph_mon_initial_members}
+          mon_host: ${_param:ceph_mon_host}
+          auth_client_required: ${_param:ceph_auth_client_required}
+          public_network: ${_param:ceph_public_network}
+          cluster_network: ${_param:ceph_cluster_network}
+          osd_fs_mount_options_xfs: rw,noatime
+          osd_fs_type: xfs
+        osd:
+          filestore_xattr_use_omap: True
+          osd_journal_size: 7500
+        mon:
+          mon_debug_dump_transactions: False
+        client:
+          rbd_cache_size: 268435456
+          rbd_cache_max_dirty: 134217728
+          rbd_cache_max_dirty_age: 5
+          rbd_cache: True
diff --git a/ceph/common/cluster.yml b/ceph/common/cluster.yml
new file mode 100644
index 0000000..6f0b9c8
--- /dev/null
+++ b/ceph/common/cluster.yml
@@ -0,0 +1,2 @@
+classes:
+- service.ceph.common.cluster
diff --git a/ceph/common/single.yml b/ceph/common/single.yml
new file mode 100644
index 0000000..66b798c
--- /dev/null
+++ b/ceph/common/single.yml
@@ -0,0 +1,2 @@
+classes:
+- service.ceph.common.single
diff --git a/ceph/mgr/cluster.yml b/ceph/mgr/cluster.yml
new file mode 100644
index 0000000..5ba2d72
--- /dev/null
+++ b/ceph/mgr/cluster.yml
@@ -0,0 +1,2 @@
+classes:
+- service.ceph.mgr.cluster
diff --git a/ceph/mgr/single.yml b/ceph/mgr/single.yml
new file mode 100644
index 0000000..daf42de
--- /dev/null
+++ b/ceph/mgr/single.yml
@@ -0,0 +1,2 @@
+classes:
+- service.ceph.mgr.single
diff --git a/ceph/mon/cluster.yml b/ceph/mon/cluster.yml
new file mode 100644
index 0000000..35d5596
--- /dev/null
+++ b/ceph/mon/cluster.yml
@@ -0,0 +1,2 @@
+classes:
+- service.ceph.mon.cluster
diff --git a/ceph/mon/cluster_init.yml b/ceph/mon/cluster_init.yml
new file mode 100644
index 0000000..0b36e17
--- /dev/null
+++ b/ceph/mon/cluster_init.yml
@@ -0,0 +1,19 @@
+classes:
+- service.ceph.setup.single
+parameters:
+  ceph:
+    common:
+      keyring:
+        admin:
+          caps:
+            mds: "allow *"
+            mgr: "allow *"
+            mon: "allow *"
+            osd: "allow *"
+    mon:
+      enabled: true
+      keyring:
+        mon:
+          caps:
+            mon: "allow *"
+
diff --git a/ceph/osd/cluster.yml b/ceph/osd/cluster.yml
new file mode 100644
index 0000000..9e98f91
--- /dev/null
+++ b/ceph/osd/cluster.yml
@@ -0,0 +1,2 @@
+classes:
+- service.ceph.osd.cluster
diff --git a/ceph/radosgw/single.yml b/ceph/radosgw/single.yml
index 31bdc7d..d6b9bf7 100644
--- a/ceph/radosgw/single.yml
+++ b/ceph/radosgw/single.yml
@@ -1,3 +1,4 @@
+# LEGACY - use rgw.cluster or rgw.single instead
 parameters:
   _param:
     radosgw_keyring_path: /etc/ceph/ceph.client.radosgw.keyring
diff --git a/ceph/rgw/cluster.yml b/ceph/rgw/cluster.yml
new file mode 100644
index 0000000..31aae9a
--- /dev/null
+++ b/ceph/rgw/cluster.yml
@@ -0,0 +1,5 @@
+classes:
+- system.haproxy.proxy.single
+- system.haproxy.proxy.listen.radosgw
+- service.keepalived.cluster.single
+- service.ceph.radosgw.cluster
diff --git a/ceph/rgw/keystone.yml b/ceph/rgw/keystone.yml
new file mode 100644
index 0000000..4340d62
--- /dev/null
+++ b/ceph/rgw/keystone.yml
@@ -0,0 +1,20 @@
+parameters:
+  _param:
+    ceph_radosgw_keystone_host: 127.0.0.1
+    ceph_radosgw_keystone_user: admin
+    ceph_radosgw_keystone_api_version: 3
+    ceph_radosgw_keystone_project: admin
+    ceph_radosgw_keystone_domain: default
+    ceph_radosgw_keystone_port: 5000
+  ceph:
+    radosgw:
+      identity:
+        engine: keystone
+        api_version: ${_param:ceph_radosgw_keystone_api_version}
+        host: ${_param:ceph_radosgw_keystone_host}
+        port: ${_param:ceph_radosgw_keystone_port}
+        user: ${_param:ceph_radosgw_keystone_user}
+        password: ${_param:ceph_radosgw_keystone_password}
+        tenant: ${_param:ceph_radosgw_keystone_project}
+        project: ${_param:ceph_radosgw_keystone_project}
+        domain: ${_param:ceph_radosgw_keystone_domain}
diff --git a/ceph/rgw/single.yml b/ceph/rgw/single.yml
new file mode 100644
index 0000000..c140ec8
--- /dev/null
+++ b/ceph/rgw/single.yml
@@ -0,0 +1,2 @@
+classes:
+- service.ceph.radosgw.single
diff --git a/cinder/control/backend/ceph.yml b/cinder/control/backend/ceph.yml
index 1026f68..47846ae 100644
--- a/cinder/control/backend/ceph.yml
+++ b/cinder/control/backend/ceph.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cinder_storage_client_key: ''
   cinder:
     controller:
       default_volume_type: standard-iops
@@ -11,3 +13,4 @@
           user: ${_param:cinder_storage_user}
           secret_uuid: ${_param:cinder_storage_secret_uuid}
           client_cinder_key: ${_param:cinder_storage_client_key}
+          host: ceph
diff --git a/cinder/control/cluster.yml b/cinder/control/cluster.yml
index 868b71e..c130e97 100644
--- a/cinder/control/cluster.yml
+++ b/cinder/control/cluster.yml
@@ -4,6 +4,12 @@
 - service.keepalived.cluster.single
 - system.haproxy.proxy.listen.openstack.cinder
 parameters:
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   cinder:      
     volume:
       enabled: false
diff --git a/cinder/control/single.yml b/cinder/control/single.yml
index 58156cb..2d7f179 100644
--- a/cinder/control/single.yml
+++ b/cinder/control/single.yml
@@ -1,6 +1,12 @@
 classes:
 - service.cinder.control.single
 parameters:
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   cinder:
     volume:
       enabled: false
diff --git a/cinder/volume/backend/ceph.yml b/cinder/volume/backend/ceph.yml
index 6560add..6b41224 100644
--- a/cinder/volume/backend/ceph.yml
+++ b/cinder/volume/backend/ceph.yml
@@ -1,7 +1,9 @@
 parameters:
+  _param:
+    cinder_storage_client_key: ''
   cinder:
     volume:
-      message_queue: 
+      message_queue:
         ha_queues: true
       enabled: true
       notification: true
@@ -15,3 +17,4 @@
           user: ${_param:cinder_storage_user}
           secret_uuid: ${_param:cinder_storage_secret_uuid}
           client_cinder_key: ${_param:cinder_storage_client_key}
+          host: ceph
diff --git a/cinder/volume/single.yml b/cinder/volume/single.yml
index 9c8f7c2..de468ba 100644
--- a/cinder/volume/single.yml
+++ b/cinder/volume/single.yml
@@ -1,6 +1,12 @@
 classes:
 - service.cinder.volume.single
 parameters:
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   cinder:
     volume:
       enabled: True
diff --git a/designate/server/backend/bind.yml b/designate/server/backend/bind.yml
index c057eb7..823d52d 100644
--- a/designate/server/backend/bind.yml
+++ b/designate/server/backend/bind.yml
@@ -1,3 +1,5 @@
+classes:
+- service.bind.server.single
 parameters:
   _param:
     designate_bind9_rndc_algorithm: hmac-sha512
@@ -30,7 +32,7 @@
       enabled: true
       option:
         default:
-          server: 127.0.0.1
+          server: ${_param:single_address}
           port: 953
           key: designate
       key:
diff --git a/designate/server/backend/pdns.yml b/designate/server/backend/pdns.yml
index 50ec3a2..45ad0b7 100644
--- a/designate/server/backend/pdns.yml
+++ b/designate/server/backend/pdns.yml
@@ -1,3 +1,5 @@
+classes:
+- service.powerdns.server.single
 parameters:
   designate:
     server:
@@ -7,7 +9,6 @@
           api_endpoint: ${_param:designate_pdns_api_endpoint}
   powerdns:
     server:
-      enabled: true
       bind:
         address: ${_param:single_address}
         port: 53
diff --git a/designate/server/cluster.yml b/designate/server/cluster.yml
index 33eb632..eb6a5b6 100644
--- a/designate/server/cluster.yml
+++ b/designate/server/cluster.yml
@@ -4,6 +4,12 @@
 - system.haproxy.proxy.listen.openstack.designate
 - service.haproxy.proxy.single
 parameters:
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   designate:
     _support:
       sensu:
diff --git a/designate/server/single.yml b/designate/server/single.yml
index 623c357..b658f8b 100644
--- a/designate/server/single.yml
+++ b/designate/server/single.yml
@@ -1,6 +1,12 @@
 classes:
 - service.designate.server.single
 parameters:
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   designate:
     server:
       enabled: true
diff --git a/devops_portal/service/elasticsearch.yml b/devops_portal/service/elasticsearch.yml
index 647c4ef..ddf4a6c 100644
--- a/devops_portal/service/elasticsearch.yml
+++ b/devops_portal/service/elasticsearch.yml
@@ -4,7 +4,12 @@
       service:
         elasticsearch:
           configure_proxy: true
+          resolve_hostname: true
+          proxy_connect_timeout: 300
+          proxy_send_timeout: 300
+          proxy_read_timeout: 300
+          send_timeout: 300
           endpoint:
-            address: ${_param:haproxy_elasticsearch_bind_host}
-            port: ${_param:haproxy_elasticsearch_http_bind_port}
-            https: ${_param:haproxy_elasticsearch_ssl:enabled}
+            address: ${_param:elasticsearch_bind_host}
+            port: ${_param:elasticsearch_http_bind_port}
+            https: ${_param:elasticsearch_ssl:enabled}
diff --git a/devops_portal/service/grafana.yml b/devops_portal/service/grafana.yml
new file mode 100644
index 0000000..402604a
--- /dev/null
+++ b/devops_portal/service/grafana.yml
@@ -0,0 +1,14 @@
+parameters:
+  _param:
+    grafana_ssl:
+      enabled: false
+  devops_portal:
+    config:
+      service:
+        grafana:
+          configure_proxy: false
+          enabled: true
+          endpoint:
+            address: ${_param:grafana_address}
+            port: ${_param:grafana_port}
+            https: ${_param:grafana_ssl:enabled}
diff --git a/devops_portal/service/janitor_monkey.yml b/devops_portal/service/janitor_monkey.yml
index 73f2e7c..8544645 100644
--- a/devops_portal/service/janitor_monkey.yml
+++ b/devops_portal/service/janitor_monkey.yml
@@ -4,7 +4,12 @@
       service:
         janitormonkey:
           configure_proxy: true
+          resolve_hostname: true
+          proxy_connect_timeout: 300
+          proxy_send_timeout: 300
+          proxy_read_timeout: 300
+          send_timeout: 300
           endpoint:
-            address: ${_param:haproxy_janitor_monkey_bind_host}
-            port: ${_param:haproxy_janitor_monkey_bind_port}
-            https: ${_param:haproxy_janitor_monkey_ssl:enabled}
+            address: ${_param:janitor_monkey_bind_host}
+            port: ${_param:janitor_monkey_bind_port}
+            https: ${_param:janitor_monkey_ssl:enabled}
diff --git a/devops_portal/service/jenkins.yml b/devops_portal/service/jenkins.yml
index 349a707..ee00912 100644
--- a/devops_portal/service/jenkins.yml
+++ b/devops_portal/service/jenkins.yml
@@ -1,9 +1,20 @@
 parameters:
+  _param:
+    oss_jenkins_user: admin
+    oss_jenkins_password: password
   devops_portal:
     config:
       service:
         jenkins:
+          configure_proxy: true
+          proxy_connect_timeout: 300
+          proxy_send_timeout: 300
+          proxy_read_timeout: 300
+          send_timeout: 300
           endpoint:
             address: ${_param:haproxy_jenkins_bind_host}
             port: ${_param:haproxy_jenkins_bind_port}
             https: ${_param:haproxy_jenkins_ssl:enabled}
+          credentials:
+            username: ${_param:oss_jenkins_user}
+            password: ${_param:oss_jenkins_password}
diff --git a/devops_portal/service/pushkin.yml b/devops_portal/service/pushkin.yml
index 82a073c..f2a240b 100644
--- a/devops_portal/service/pushkin.yml
+++ b/devops_portal/service/pushkin.yml
@@ -4,7 +4,12 @@
       service:
         pushkin:
           configure_proxy: true
+          resolve_hostname: true
+          proxy_connect_timeout: 300
+          proxy_send_timeout: 300
+          proxy_read_timeout: 300
+          send_timeout: 300
           endpoint:
-            address: ${_param:haproxy_pushkin_bind_host}
-            port: ${_param:haproxy_pushkin_bind_port}
-            https: ${_param:haproxy_pushkin_ssl:enabled}
+            address: ${_param:pushkin_bind_host}
+            port: ${_param:pushkin_bind_port}
+            https: ${_param:pushkin_ssl:enabled}
diff --git a/devops_portal/service/rundeck.yml b/devops_portal/service/rundeck.yml
index 82fd764..542974e 100644
--- a/devops_portal/service/rundeck.yml
+++ b/devops_portal/service/rundeck.yml
@@ -1,13 +1,22 @@
 parameters:
+  _param:
+    oss_rundeck_user: ${_param:rundeck_admin_username}
+    oss_rundeck_password: ${_param:rundeck_admin_password}
+    oss_rundeck_token: ${_param:rundeck_admin_token}
   devops_portal:
     config:
       service:
         rundeck:
           configure_proxy: true
+          resolve_hostname: false
+          proxy_connect_timeout: 300
+          proxy_send_timeout: 300
+          proxy_read_timeout: 300
+          send_timeout: 300
           credentials:
-            username: ${_param:rundeck_admin_username}
-            password: ${_param:rundeck_admin_password}
-            token: ${_param:rundeck_admin_token}
+            username: ${_param:oss_rundeck_user}
+            password: ${_param:oss_rundeck_password}
+            token: ${_param:oss_rundeck_token}
           endpoint:
             address: ${_param:haproxy_rundeck_bind_host}
             port: ${_param:haproxy_rundeck_bind_port}
diff --git a/devops_portal/service/security_monkey.yml b/devops_portal/service/security_monkey.yml
index ba5fe81..36b79f6 100644
--- a/devops_portal/service/security_monkey.yml
+++ b/devops_portal/service/security_monkey.yml
@@ -1,13 +1,21 @@
 parameters:
+  _param:
+    oss_security_monkey_user: ${_param:security_monkey_user}
+    oss_security_monkey_password: ${_param:security_monkey_password}
   devops_portal:
     config:
       service:
         securitymonkey:
           configure_proxy: true
+          resolve_hostname: true
+          proxy_connect_timeout: 600
+          proxy_send_timeout: 600
+          proxy_read_timeout: 600
+          send_timeout: 600
           endpoint:
-            address: ${_param:haproxy_security_monkey_bind_host}
-            port: ${_param:haproxy_security_monkey_bind_port}
-            https: ${_param:haproxy_security_monkey_ssl:enabled}
+            address: ${_param:security_monkey_bind_host}
+            port: ${_param:security_monkey_bind_port}
+            https: ${_param:security_monkey_ssl:enabled}
           credentials:
-            username: ${_param:security_monkey_user}
-            password: ${_param:security_monkey_password}
+            username: ${_param:oss_security_monkey_user}
+            password: ${_param:oss_security_monkey_password}
diff --git a/devops_portal/service/stacklight-grafana.yml b/devops_portal/service/stacklight-grafana.yml
new file mode 100644
index 0000000..00f0990
--- /dev/null
+++ b/devops_portal/service/stacklight-grafana.yml
@@ -0,0 +1,14 @@
+parameters:
+  _param:
+    grafana_ssl:
+      enabled: false
+  devops_portal:
+    config:
+      service:
+        stacklight-grafana:
+          configure_proxy: false
+          enabled: true
+          endpoint:
+            address: ${_param:grafana_address}
+            port: ${_param:grafana_port}
+            https: ${_param:grafana_ssl:enabled}
diff --git a/devops_portal/service/stacklight-kibana.yml b/devops_portal/service/stacklight-kibana.yml
new file mode 100644
index 0000000..9fa86ae
--- /dev/null
+++ b/devops_portal/service/stacklight-kibana.yml
@@ -0,0 +1,11 @@
+parameters:
+  devops_portal:
+    config:
+      service:
+        stacklight-kibana:
+          configure_proxy: true
+          enabled: true
+          endpoint:
+            address: ${_param:haproxy_kibana_bind_host}
+            port: ${_param:haproxy_kibana_bind_port}
+            https: ${_param:haproxy_kibana_ssl:enabled}
diff --git a/devops_portal/service/stacklight-prometheus.yml b/devops_portal/service/stacklight-prometheus.yml
new file mode 100644
index 0000000..119c13f
--- /dev/null
+++ b/devops_portal/service/stacklight-prometheus.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    grafana_prometheus_ssl:
+      enabled: false
+  devops_portal:
+    config:
+      service:
+        stacklight-prometheus:
+          configure_proxy: false
+          enabled: true
+          endpoint:
+            address: ${_param:grafana_prometheus_address}
+            custom_path: alerts
+            port: ${_param:stacklight_prometheus_port}
+            https: ${_param:grafana_prometheus_ssl:enabled}
diff --git a/docker/client.yml b/docker/client.yml
index 4691ddb..df11493 100644
--- a/docker/client.yml
+++ b/docker/client.yml
@@ -1,10 +1,12 @@
 classes:
   - service.docker.client
 parameters:
+  _param:
+    docker_image_compose: docker/compose:1.8.0
   docker:
     client:
       enabled: true
       compose:
         source:
           engine: docker
-          image: "docker/compose:1.8.0"
+          image: ${_param:docker_image_compose}
diff --git a/docker/host.yml b/docker/host.yml
index f7649b5..7e5fb8c 100644
--- a/docker/host.yml
+++ b/docker/host.yml
@@ -1,9 +1,11 @@
 classes:
   - service.docker.host
-  - system.linux.system.repo.docker
 parameters:
   docker:
     host:
+      pkgs:
+        - docker-ce
+        - python-docker
       experimental: true
       insecure_registries:
         - ${_param:cluster_vip_address}:5000
diff --git a/docker/init.yml b/docker/init.yml
new file mode 100644
index 0000000..8ef5e2c
--- /dev/null
+++ b/docker/init.yml
@@ -0,0 +1,6 @@
+parameters:
+  _param:
+    http_proxy: ""
+    docker_http_proxy: ${_param:http_proxy}
+    docker_https_proxy: ${_param:docker_http_proxy}
+    docker_no_proxy: ""
diff --git a/docker/swarm/manager.yml b/docker/swarm/manager.yml
index 25a7fbe..12bfc0c 100644
--- a/docker/swarm/manager.yml
+++ b/docker/swarm/manager.yml
@@ -3,9 +3,11 @@
 parameters:
   _param:
     docker_gwbridge_subnet: 10.20.0.0/16
+    docker_swarm_master_port: 2377
   docker:
     swarm:
       role: manager
       advertise_addr: ${_param:single_address}
       master:
         host: ${_param:cluster_node01_address}
+        port: ${_param:docker_swarm_master_port}
diff --git a/docker/swarm/network/oss_backend.yml b/docker/swarm/network/oss_backend.yml
new file mode 100644
index 0000000..daa628e
--- /dev/null
+++ b/docker/swarm/network/oss_backend.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    docker_oss_network_subnet: 10.50.0.0/24
+  docker:
+    client:
+      network:
+        oss_backend:
+          subnet: ${_param:docker_oss_network_subnet}
+          driver: overlay
+          attachable: true
\ No newline at end of file
diff --git a/docker/swarm/network/runbook.yml b/docker/swarm/network/runbook.yml
deleted file mode 100644
index 557b852..0000000
--- a/docker/swarm/network/runbook.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-parameters:
-  _param:
-    docker_runbook_subnet: 10.40.0.0/24
-  docker:
-    client:
-      network:
-        runbook:
-          subnet: ${_param:docker_runbook_subnet}
-          driver: overlay
-          attachable: true
diff --git a/docker/swarm/service/aptly.yml b/docker/swarm/service/aptly.yml
deleted file mode 100644
index 5f6de6e..0000000
--- a/docker/swarm/service/aptly.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-parameters:
-  _param:
-    docker_image_aptly:
-      api: tcpcloud/aptly-api
-      public: tcpcloud/aptly-public
-  docker:
-    client:
-      service:
-        aptly-api:
-          environment:
-            EMAIL_ADDRESS: ${_param:admin_email}
-          restart:
-            condition: any
-          image: ${_param:docker_image_aptly:api}
-          ports:
-            - 18084:8080
-          volume:
-            site:
-              type: bind
-              source: /srv/volumes/aptly
-              destination: /var/lib/aptly
-        aptly-public:
-          replicas: 3
-          restart:
-            condition: any
-          image: ${_param:docker_image_aptly:public}
-          ports:
-            - 18085:80
-          volume:
-            site:
-              type: bind
-              source: /srv/volumes/aptly/public
-              destination: /var/www/html
diff --git a/docker/swarm/service/artifactory.yml b/docker/swarm/service/artifactory.yml
deleted file mode 100644
index d7f8626..0000000
--- a/docker/swarm/service/artifactory.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-parameters:
-  docker:
-    client:
-      service:
-        artifactory:
-          environment:
-            MYSQL_HOST: ${_param:cluster_vip_address}
-            MYSQL_USERNAME: artifactory
-            MYSQL_PASSWORD: ${_param:mysql_artifactory_password}
-            MYSQL_DATABASE: artifactory
-          restart:
-            condition: any
-          image: ${_param:docker_image_repository:cicd}/artifactory
-          ports:
-            - 18082:8081
-          volume:
-            data:
-              type: bind
-              source: /srv/volumes/artifactory/data
-              destination: /var/opt/jfrog/artifactory/data
-            backup:
-              type: bind
-              source: /srv/volumes/artifactory/backup
-              destination: /var/opt/jfrog/artifactory/backup
-            etc:
-              type: bind
-              source: /srv/volumes/artifactory/etc
-              destination: /var/opt/jfrog/artifactory/etc
-            logs:
-              type: bind
-              source: /srv/volumes/artifactory/logs
-              destination: /var/opt/jfrog/artifactory/logs
diff --git a/docker/swarm/service/devops_portal.yml b/docker/swarm/service/devops_portal.yml
deleted file mode 100644
index 6a82aa5..0000000
--- a/docker/swarm/service/devops_portal.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-parameters:
-  _param:
-    docker_devops_portal_replicas: 1
-    docker_image_devops_portal: docker-sandbox.sandbox.mirantis.net/ikharin/oss/devops-portal:latest
-  docker:
-    client:
-      service:
-        devops-portal:
-          replicas: ${_param:docker_devops_portal_replicas}
-          image: ${_param:docker_image_devops_portal}
-          restart:
-            condition: any
-          ports:
-            - 18800:8000
-          volume:
-            nginx:
-              type: bind
-              source: /srv/volumes/devops_portal/nginx/
-              destination: /etc/nginx/config
-            config:
-              type: bind
-              source: /srv/volumes/devops_portal/config/
-              destination: /opt/devops-portal/config
diff --git a/docker/swarm/service/docker.yml b/docker/swarm/service/docker.yml
deleted file mode 100644
index d20b4db..0000000
--- a/docker/swarm/service/docker.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-parameters:
-  _param:
-    docker_image_registry: registry:2
-  docker:
-    client:
-      service:
-        registry:
-          replica: 3
-          environment:
-            REGISTRY_HTTP_SECRET: ${_param:docker_registry_http_secret}
-          restart:
-            condition: any
-          image: ${_param:docker_image_registry}
-          ports:
-            - 15000:5000
-          volume:
-            site:
-              type: bind
-              source: /srv/volumes/registry
-              destination: /var/lib/registry
diff --git a/docker/swarm/service/elasticsearch.yml b/docker/swarm/service/elasticsearch.yml
deleted file mode 100644
index 4d49494..0000000
--- a/docker/swarm/service/elasticsearch.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-parameters:
-  _param:
-    elasticsearch_replicas: 1
-    docker_image_oss_elasticsearch: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/elasticsearch:latest
-  docker:
-    client:
-      service:
-        elasticsearch:
-          replicas: ${_param:elasticsearch_replicas}
-          image: ${_param:docker_image_oss_elasticsearch}
-          restart:
-            condition: any
-          ports:
-            - ${_param:haproxy_elasticsearch_exposed_port}:${_param:haproxy_elasticsearch_bind_port}
-          volume:
-            elasticsearch:
-              type: bind
-              source: /srv/volumes/elasticsearch
-              destination: /usr/share/elasticsearch/data
diff --git a/docker/swarm/service/gerrit.yml b/docker/swarm/service/gerrit.yml
deleted file mode 100644
index 10e0629..0000000
--- a/docker/swarm/service/gerrit.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-parameters:
-  _param:
-    docker_image_gerrit: tcpcloud/gerrit:2.13.6
-    gerrit_ldap_server: ""
-    gerrit_ldap_bind_user: ""
-    gerrit_ldap_bind_password: ""
-    gerrit_ldap_account_base: ""
-    gerrit_ldap_group_base: ""
-
-  docker:
-    client:
-      service:
-        gerrit:
-          environment:
-            #GERRIT_INIT_ARGS: ""
-            DATABASE_TYPE: "mysql"
-            DB_PORT_3306_TCP_ADDR: ${_param:cluster_vip_address}
-            DB_ENV_MYSQL_USER: gerrit
-            DB_ENV_MYSQL_PASSWORD: ${_param:mysql_gerrit_password}
-            DB_ENV_MYSQL_DB: gerrit
-            AUTH_TYPE: ${_param:gerrit_auth_type}
-            LDAP_SERVER: ${_param:gerrit_ldap_server}
-            LDAP_ACCOUNTPATTERN: 'uid={username}'
-            LDAP_ACCOUNTBASE: ${_param:gerrit_ldap_account_base}
-            LDAP_GROUPBASE: ${_param:gerrit_ldap_group_base}
-            LDAP_USERNAME: ${_param:gerrit_ldap_bind_user}
-            LDAP_PASSWORD: ${_param:gerrit_ldap_bind_password}
-            WEBURL: ${_param:gerrit_public_host}
-            GERRIT_ADMIN_SSH_PUBLIC: ${_param:gerrit_admin_public_key}
-            GERRIT_ADMIN_PWD: ${_param:gerrit_admin_password}
-            GERRIT_ADMIN_EMAIL: ${_param:gerrit_admin_email}
-            CANLOADINIFRAME: "true"
-          restart:
-            condition: any
-          image: ${_param:docker_image_gerrit}
-          ports:
-            - 18083:8080
-            - 29417:29418
-          volume:
-            site:
-              type: bind
-              source: /srv/volumes/gerrit
-              destination: /var/gerrit/review_site
diff --git a/docker/swarm/service/jenkins.yml b/docker/swarm/service/jenkins.yml
deleted file mode 100644
index a39b7a4..0000000
--- a/docker/swarm/service/jenkins.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-parameters:
-  _param:
-    docker_image_jenkins: tcpcloud/jenkins:2.63
-  docker:
-    client:
-      service:
-        jenkins:
-          environment:
-            JAVA_OPTS: "-Djenkins.install.runSetupWizard=false -Dhudson.DNSMultiCast.disabled=true -Dhudson.udp=-1 -Dhudson.footerURL=https://www.mirantis.com"
-            JENKINS_NUM_EXECUTORS: 4
-          restart:
-            condition: any
-          image: ${_param:docker_image_jenkins}
-          ports:
-            - 18081:8080
-            - 50001:50000
-          volume:
-            home:
-              type: bind
-              source: /srv/volumes/jenkins
-              destination: /var/jenkins_home
-            cacerts:
-              type: bind
-              source: /etc/ssl/certs/java/cacerts
-              destination: /etc/ssl/certs/java/cacerts
diff --git a/docker/swarm/service/mysql.yml b/docker/swarm/service/mysql.yml
deleted file mode 100644
index f94cf4d..0000000
--- a/docker/swarm/service/mysql.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-parameters:
-  _param:
-    docker_image_mysql: mysql:5.6
-  docker:
-    client:
-      service:
-        mysql:
-          environment:
-            MYSQL_USER: gerrit
-            MYSQL_PASSWORD: ${_param:mysql_gerrit_password}
-            MYSQL_DATABASE: gerrit
-            MYSQL_ROOT_PASSWORD: ${_param:mysql_admin_password}
-          restart:
-            condition: any
-          image: "${_param:docker_image_mysql}"
-          ports:
-            - 13306:3306
-          volume:
-            data:
-              type: bind
-              source: /srv/volumes/mysql
-              destination: /var/lib/mysql
diff --git a/docker/swarm/service/openldap.yml b/docker/swarm/service/openldap.yml
deleted file mode 100644
index f7f12e2..0000000
--- a/docker/swarm/service/openldap.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-parameters:
-  _param:
-    docker_image_openldap: osixia/openldap:1.1.8
-  docker:
-    client:
-      service:
-        openldap:
-          restart:
-            condition: any
-          image: ${_param:docker_image_openldap}
-          hostname: ldap01.${_param:openldap_domain}
-          hosts:
-            ldap01:
-              name: ldap01.${_param:openldap_domain}
-              address: 127.0.0.1
-          environment:
-            HOSTNAME: ldap01.${_param:openldap_domain}
-            LDAP_ORGANISATION: "${_param:openldap_organisation}"
-            LDAP_DOMAIN: "${_param:openldap_domain}"
-            LDAP_ADMIN_PASSWORD: ${_param:openldap_admin_password}
-            LDAP_CONFIG_PASSWORD: ${_param:openldap_config_password}
-            LDAP_TLS: "false"
-          ports:
-            - 1389:389
-            - 1636:636
-          volume:
-            database:
-              type: bind
-              source: /srv/volumes/openldap/database
-              destination: /var/lib/ldap
-            config:
-              type: bind
-              source: /srv/volumes/openldap/config
-              destination: /etc/ldap/slapd.d
diff --git a/docker/swarm/service/phpldapadmin.yml b/docker/swarm/service/phpldapadmin.yml
deleted file mode 100644
index 72b109f..0000000
--- a/docker/swarm/service/phpldapadmin.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-parameters:
-  _param:
-    docker_image_phpldapadmin: tcpcloud/phpldapadmin:0.6.12
-  docker:
-    client:
-      service:
-        phpldapadmin:
-          restart:
-            condition: any
-          image: ${_param:docker_image_phpldapadmin}
-          hosts:
-            ldap:
-              name: ldap.${_param:openldap_domain}
-              address: ${_param:cluster_vip_address}
-          environment:
-            PHPLDAPADMIN_LDAP_HOSTS: "#PYTHON2BASH:[{'${_param:cluster_public_host}': [{'server': [{'tls': False}]},{'login': [{'bind_id': 'cn=admin,${_param:openldap_dn}'},{'bind_pass': '${_param:openldap_admin_password}'}]}]}]"
-            PHPLDAPADMIN_HTTPS: false
-            PHPLDAPADMIN_TRUST_PROXY_SSL: true
-            PHPLDAPADMIN_SERVER_ADMIN: ${_param:admin_email}
-            PHPLDAPADMIN_THEME: mirantis
-          ports:
-            - 18089:80
diff --git a/docker/swarm/service/pushkin.yml b/docker/swarm/service/pushkin.yml
deleted file mode 100644
index d01842d..0000000
--- a/docker/swarm/service/pushkin.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-parameters:
-  _param:
-    docker_pushkin_replicas: 1
-    docker_image_pushkin: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/pushkin:latest
-    pushkin_db_password: pushkin
-    pushkin_db_user: pushkin
-    pushkin_db: pushkin
-  docker:
-    client:
-      service:
-        pushkin-backend:
-          environment:
-            POSTGRES_USER: ${_param:pushkin_db_user}
-            POSTGRES_PASSWORD: ${_param:pushkin_db_password}
-            POSTGRES_DB: ${_param:pushkin_db}
-            PUSHKINDBHOST: ${_param:haproxy_pushkin_db_bind_host}
-            PUSHKINELASTICHOST: ${_param:haproxy_elasticsearch_bind_host}
-          replicas: ${_param:docker_pushkin_replicas}
-          image: ${_param:docker_image_pushkin}
-          restart:
-            condition: any
-          ports:
-            - ${_param:haproxy_pushkin_exposed_port}:${_param:haproxy_pushkin_bind_port}
-          volume:
-            pushkin:
-              type: bind
-              source: /srv/volumes/pushkin/logs
-              destination: /var/log/pushkin
\ No newline at end of file
diff --git a/docker/swarm/service/pushkin_db.yml b/docker/swarm/service/pushkin_db.yml
deleted file mode 100644
index 9b81778..0000000
--- a/docker/swarm/service/pushkin_db.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-parameters:
-  _param:
-    docker_pushkin_db_replicas: 1
-    docker_image_pushkin_db: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/pushkindb:latest
-    pushkin_db_password: pushkin
-    pushkin_db_user: pushkin
-    pushkin_db: pushkin
-  docker:
-    client:
-      service:
-        pushkin-db:
-          environment:
-            POSTGRES_USER: ${_param:pushkin_db_user}
-            POSTGRES_PASSWORD: ${_param:pushkin_db_password}
-            POSTGRES_DB: ${_param:pushkin_db}
-          replicas: ${_param:docker_pushkin_db_replicas}
-          image: ${_param:docker_image_pushkin_db}
-          restart:
-            condition: any
-          ports:
-            - ${_param:haproxy_pushkin_db_exposed_port}:${_param:haproxy_pushkin_db_bind_port}
-          volume:
-            pushkin:
-              type: bind
-              source: /srv/volumes/pushkin/data
-              destination: /var/lib/postgresql/data
-
diff --git a/docker/swarm/service/rundeck.yml b/docker/swarm/service/rundeck.yml
deleted file mode 100644
index cc871dd..0000000
--- a/docker/swarm/service/rundeck.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-parameters:
-  _param:
-    docker_rundeck_replicas: 1
-    docker_image_rundeck: docker-sandbox.sandbox.mirantis.net/ikharin/oss/rundeck:devel
-  docker:
-    client:
-      service:
-        rundeck:
-          environment:
-            SERVER_URL: "http://${_param:haproxy_rundeck_bind_host}:${_param:haproxy_rundeck_bind_port}"
-            RUNDECK_ADMIN_PASSWORD: ${_param:rundeck_admin_password}
-          replicas: ${_param:docker_rundeck_replicas}
-          image: ${_param:docker_image_rundeck}
-          restart:
-            condition: any
-          ports:
-            - 14440:4440
-          volume:
-            framework.properties:
-              type: bind
-              source: /srv/volumes/rundeck/config/framework.properties
-              destination: /etc/rundeck/framework.properties
-            tokens.properties:
-              type: bind
-              source: /srv/volumes/rundeck/config/tokens.properties
-              destination: /etc/rundeck/tokens.properties
-            rundeck:
-              type: bind
-              source: /srv/volumes/rundeck/rundeck
-              destination: /var/rundeck
-            mysql:
-              type: bind
-              source: /srv/volumes/rundeck/mysql
-              destination: /var/lib/mysql
-            log:
-              type: bind
-              source: /srv/volumes/rundeck/log
-              destination: /var/log/rundeck
-            logs:
-              type: bind
-              source: /srv/volumes/rundeck/logs
-              destination: /var/lib/rundeck/logs
-            plugins:
-              type: bind
-              source: /srv/volumes/rundeck/plugins
-              destination: /opt/rundeck-plugins
-            storage:
-              type: bind
-              source: /srv/volumes/rundeck/storage
-              destination: /var/lib/rundeck/var/storage
diff --git a/docker/swarm/service/visualizer.yml b/docker/swarm/service/visualizer.yml
deleted file mode 100644
index 8519363..0000000
--- a/docker/swarm/service/visualizer.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-parameters:
-  _param:
-    docker_image_visualizer: manomarks/visualizer
-  docker:
-    client:
-      service:
-        visualizer:
-          restart:
-            condition: any
-          image: ${_param:docker_image_visualizer}
-          constraint: "node.role==manager"
-          ports:
-            - 18090:8080
-          volume:
-            docker:
-              type: bind
-              source: /var/run/docker.sock
-              destination: /var/run/docker.sock
diff --git a/docker/swarm/stack/aptly.yml b/docker/swarm/stack/aptly.yml
index 5570c40..36c719b 100644
--- a/docker/swarm/stack/aptly.yml
+++ b/docker/swarm/stack/aptly.yml
@@ -1,3 +1,5 @@
+classes:
+- system.docker
 parameters:
   _param:
     docker_image_aptly:
@@ -9,6 +11,8 @@
         aptly:
           environment:
             EMAIL_ADDRESS: ${_param:admin_email}
+            https_proxy: ${_param:docker_https_proxy}
+            http_proxy: ${_param:docker_http_proxy}
           service:
             api:
               deploy:
diff --git a/docker/swarm/stack/artifactory.yml b/docker/swarm/stack/artifactory.yml
index 411b22e..caab0ee 100644
--- a/docker/swarm/stack/artifactory.yml
+++ b/docker/swarm/stack/artifactory.yml
@@ -21,3 +21,4 @@
                 - /srv/volumes/artifactory/backup:/var/opt/jfrog/artifactory/backup
                 - /srv/volumes/artifactory/etc:/var/opt/jfrog/artifactory/etc
                 - /srv/volumes/artifactory/logs:/var/opt/jfrog/artifactory/logs
+                - /srv/volumes/artifactory/keys:/var/opt/jfrog/artifactory/access/etc/keys
diff --git a/docker/swarm/stack/dashboard.yml b/docker/swarm/stack/dashboard.yml
index 2ee123b..62a3e14 100644
--- a/docker/swarm/stack/dashboard.yml
+++ b/docker/swarm/stack/dashboard.yml
@@ -1,3 +1,5 @@
+classes:
+- service.grafana.support
 parameters:
   _param:
     docker_grafana_replicas: 1
diff --git a/docker/swarm/stack/devops_portal.yml b/docker/swarm/stack/devops_portal.yml
index f553114..f8f89f9 100644
--- a/docker/swarm/stack/devops_portal.yml
+++ b/docker/swarm/stack/devops_portal.yml
@@ -18,3 +18,9 @@
               volumes:
                 - /srv/volumes/devops_portal/nginx:/etc/nginx/config
                 - /srv/volumes/devops_portal/config:/opt/devops-portal/config
+          network:
+            default:
+              external:
+                name: oss_backend
+            frontend:
+              driver: overlay
\ No newline at end of file
diff --git a/docker/swarm/stack/elasticsearch.yml b/docker/swarm/stack/elasticsearch.yml
index 5ee295c..fe7c35e 100644
--- a/docker/swarm/stack/elasticsearch.yml
+++ b/docker/swarm/stack/elasticsearch.yml
@@ -2,8 +2,14 @@
   _param:
     elasticsearch_replicas: 1
     docker_image_elasticsearch: docker.elastic.co/elasticsearch/elasticsearch:5.4.1
+    elasticsearch_bind_host: elasticsearch-cluster
+    elasticsearch_http_bind_port: ${_param:haproxy_elasticsearch_http_bind_port}
+    elasticsearch_binary_bind_port: ${_param:haproxy_elasticsearch_binary_bind_port}
+    elasticsearch_ssl:
+      enabled: false
     elasticsearch_cluster_name: oss-cluster
     elasticsearch_xpack_security_enabled: 'false'
+    elasticsearch_xpack_monitoring_enabled: 'false'
     elasticsearch_discovery_zen_minimum_master_nodes: 1
     elasticsearch_discovery_type: single-node
   docker:
@@ -13,17 +19,22 @@
           environment:
             cluster.name: ${_param:elasticsearch_cluster_name}
             xpack.security.enabled: ${_param:elasticsearch_xpack_security_enabled}
+            xpack.monitoring.enabled: ${_param:elasticsearch_xpack_monitoring_enabled}
             discovery.zen.minimum_master_nodes: ${_param:elasticsearch_discovery_zen_minimum_master_nodes}
             discovery.type: ${_param:elasticsearch_discovery_type}
           service:
-            cluster:
+            elasticsearch-cluster:
               image: ${_param:docker_image_elasticsearch}
               deploy:
                 replicas: ${_param:elasticsearch_replicas}
                 restart_policy:
                   condition: any
+              volumes:
+                - /srv/volumes/elasticsearch:/usr/share/elasticsearch/data
               ports:
                 - ${_param:haproxy_elasticsearch_http_exposed_port}:${_param:haproxy_elasticsearch_http_bind_port}
                 - ${_param:haproxy_elasticsearch_binary_exposed_port}:${_param:haproxy_elasticsearch_binary_bind_port}
-              volumes:
-                - /srv/volumes/elasticsearch:/usr/share/elasticsearch/data
+          network:
+            default:
+              external:
+                name: oss_backend
diff --git a/docker/swarm/stack/gerrit.yml b/docker/swarm/stack/gerrit.yml
index b59172a..49d0a11 100644
--- a/docker/swarm/stack/gerrit.yml
+++ b/docker/swarm/stack/gerrit.yml
@@ -1,3 +1,5 @@
+classes:
+- system.docker
 parameters:
   _param:
     docker_image_gerrit: tcpcloud/gerrit:2.13.6
@@ -7,7 +9,8 @@
     gerrit_ldap_bind_password: ""
     gerrit_ldap_account_base: ""
     gerrit_ldap_group_base: ""
-
+    gerrit_http_listen_url: http://*:8080/
+    gerrit_extra_opts: ""
   docker:
     client:
       stack:
@@ -40,10 +43,15 @@
                 LDAP_USERNAME: ${_param:gerrit_ldap_bind_user}
                 LDAP_PASSWORD: ${_param:gerrit_ldap_bind_password}
                 WEBURL: ${_param:gerrit_public_host}
+                HTTPD_LISTENURL: ${_param:gerrit_http_listen_url}
                 GERRIT_ADMIN_SSH_PUBLIC: ${_param:gerrit_admin_public_key}
                 GERRIT_ADMIN_PWD: ${_param:gerrit_admin_password}
                 GERRIT_ADMIN_EMAIL: ${_param:gerrit_admin_email}
                 CANLOADINIFRAME: "true"
+                JAVA_OPTIONS: ${_param:gerrit_extra_opts}
+                https_proxy: ${_param:docker_https_proxy}
+                http_proxy: ${_param:docker_http_proxy}
+                no_proxy: ${_param:docker_no_proxy}
             db:
               environment:
                 MYSQL_USER: gerrit
diff --git a/docker/swarm/stack/influxdb.yml b/docker/swarm/stack/influxdb.yml
new file mode 100644
index 0000000..f9b1f58
--- /dev/null
+++ b/docker/swarm/stack/influxdb.yml
@@ -0,0 +1,30 @@
+classes:
+- system.influxdb.server.container
+- system.influxdb.server.tmpfs_wal
+- system.telegraf.agent.remote.input.influxdb
+parameters:
+  _param:
+    docker_influxdb_replicas: 1
+    docker_influxdb_dir: /srv/volumes/influxdb
+  docker:
+    client:
+      stack:
+        influxdb:
+          service:
+            server:
+              deploy:
+                replicas: ${_param:docker_influxdb_replicas}
+                restart_policy:
+                  condition: any
+              environment:
+                INFLUXDB_CONFIG_PATH: /etc/influxdb/influxdb.conf
+                INFLUXDB_DATA_DIR: /var/lib/influxdb/data
+                INFLUXDB_META_DIR: /var/lib/influxdb/meta
+                INFLUXDB_DATA_WAL_DIR: /tmp/wal
+              image: ${_param:docker_influxdb_image}
+              ports:
+              - 15016:8086
+              volumes:
+              - ${influxdb:server:prefix_dir}/etc/influxdb:/etc/influxdb
+              - ${_param:docker_influxdb_dir}:/var/lib/influxdb
+              - ${influxdb:server:data:wal_dir}:/tmp/wal
diff --git a/docker/swarm/stack/janitor_monkey.yml b/docker/swarm/stack/janitor_monkey.yml
index 95095e4..2e5698a 100644
--- a/docker/swarm/stack/janitor_monkey.yml
+++ b/docker/swarm/stack/janitor_monkey.yml
@@ -4,24 +4,37 @@
     docker_image_mongodb: library/mongo:3.4
     docker_mongodb_admin_username: admin
     docker_mongodb_admin_password: password
-    docker_image_janitor_monkey: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/janitor_monkey:6040
+    docker_image_janitor_monkey: docker-prod-local.artifactory.mirantis.com/mirantis/oss/janitor-monkey
+    janitor_monkey_bind_host: cleanup-service-api
+    janitor_monkey_bind_port: 8080
+    janitor_monkey_ssl:
+      enabled: false
     janitor_monkey_enabled: true
     janitor_monkey_dryrun_mode: false
-    janitor_monkey_base_url: http://${_param:haproxy_janitor_monkey_bind_host}:${_param:haproxy_janitor_monkey_bind_port}
-    janitor_monkey_mongodb_host: ${_param:haproxy_mongodb_bind_host}
+    janitor_monkey_mongodb_host: cleanup-service-mongodb
     janitor_monkey_mongodb_port: ${_param:haproxy_mongodb_bind_port}
+    mongodb_ssl:
+      enabled: false
+    janitor_monkey_base_url: http://${_param:janitor_monkey_mongodb_host}:${_param:janitor_monkey_mongodb_port}
     janitor_monkey_mongodb_db: mcp_cloud
     janitor_monkey_mongodb_username: janitor
     janitor_monkey_mongodb_password: password
-    janitor_monkey_elasticsearch: ${_param:haproxy_elasticsearch_bind_host}:${_param:haproxy_elasticsearch_binary_bind_port}
+    janitor_monkey_elasticsearch: ${_param:elasticsearch_bind_host}:${_param:elasticsearch_binary_bind_port}
     janitor_monkey_cloudfire_region: RegionOne
     janitor_monkey_cis_clustername: ${_param:elasticsearch_cluster_name}
+    janitor_monkey_instance_age_threshold: 15
+    janitor_monkey_notification_oss_url: http://${_param:haproxy_pushkin_bind_host}:${_param:haproxy_pushkin_bind_port}/post_notification_json
+    janitor_monkey_notification_oss_login_id: 12
+    janitor_monkey_notification_oss_application_id: 2
     janitor_monkey_openstack:
       project_domain_name: default
       project_name: admin
-      username: ""
-      password: ""
-      auth_url: ""
+      auth_url: http://yourcloud.com:5000/v3/auth/tokens
+      username: admin
+      password: password
+      ssl_verify: False
+      source_credentials: /srv/volumes/rundeck/storage/content/cis/openstack
+      service_credentials: /opt/os_creds
   docker:
     client:
       stack:
@@ -47,8 +60,14 @@
             simianarmy.client.cloudfire.secretKey: ${_param:janitor_monkey_openstack:password}
             simianarmy.client.cloudfire.domain: ${_param:janitor_monkey_openstack:project_domain_name}
             simianarmy.client.cloudfire.project: ${_param:janitor_monkey_openstack:project_name}
+            simianarmy.client.cloudfire.SSLVerify: ${_param:janitor_monkey_openstack:ssl_verify}
+            simianarmy.client.cloudfire.cafile: ${_param:janitor_monkey_openstack:service_credentials}/cert.pem
+            simianarmy.janitor.rule.stoppedInstanceRule.instanceAgeThreshold: ${_param:janitor_monkey_instance_age_threshold}
+            simianarmy.janitor.notification.oss.url: ${_param:janitor_monkey_notification_oss_url}
+            simianarmy.janitor.notification.oss.login_id: ${_param:janitor_monkey_notification_oss_login_id}
+            simianarmy.janitor.notification.oss.application_id: ${_param:janitor_monkey_notification_oss_application_id}
           service:
-            mongodb:
+            cleanup-service-mongodb:
               image: ${_param:docker_image_mongodb}
               deploy:
                 replicas: ${_param:docker_janitor_monkey_replicas}
@@ -58,11 +77,17 @@
                 - ${_param:haproxy_mongodb_exposed_port}:${_param:haproxy_mongodb_bind_port}
               volumes:
                 - /srv/volumes/mongodb:/data/db
-            api:
+            cleanup-service-api:
               image: ${_param:docker_image_janitor_monkey}
               deploy:
                 replicas: ${_param:docker_janitor_monkey_replicas}
                 restart_policy:
                   condition: any
               ports:
-                - ${_param:haproxy_janitor_monkey_exposed_port}:8080
+                - ${_param:haproxy_janitor_monkey_exposed_port}:${_param:janitor_monkey_bind_port}
+              volumes:
+                - ${_param:janitor_monkey_openstack:source_credentials}:${_param:janitor_monkey_openstack:service_credentials}:ro
+          network:
+            default:
+              external:
+                name: oss_backend
diff --git a/docker/swarm/stack/jenkins/master.yml b/docker/swarm/stack/jenkins/master.yml
index 54b0093..1237fe3 100644
--- a/docker/swarm/stack/jenkins/master.yml
+++ b/docker/swarm/stack/jenkins/master.yml
@@ -1,6 +1,11 @@
+classes:
+- system.docker
 parameters:
   _param:
-    docker_image_jenkins: tcpcloud/jenkins:2.63
+    docker_image_jenkins: tcpcloud/jenkins:2.89
+    jenkins_master_extra_opts: ""
+    jenkins_master_executors_num: 4
+    jenkins_master_max_concurent_requests: 40
   docker:
     client:
       stack:
@@ -8,8 +13,13 @@
           service:
             master:
               environment:
-                JAVA_OPTS: "-Djenkins.install.runSetupWizard=false -Dhudson.DNSMultiCast.disabled=true -Dhudson.udp=-1 -Dhudson.footerURL=https://www.mirantis.com"
-                JENKINS_NUM_EXECUTORS: 4
+                JENKINS_HOME: /var/jenkins_home
+                JAVA_OPTS: " -server -XX:+AlwaysPreTouch -Xloggc:$JENKINS_HOME/gc-%t.log -XX:NumberOfGCLogFiles=5 -XX:+UseGCLogFileRotation -XX:GCLogFileSize=20m -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCCause -XX:+PrintTenuringDistribution -XX:+PrintReferenceGC -XX:+PrintAdaptiveSizePolicy -XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 -XX:+UnlockDiagnosticVMOptions -XX:G1SummarizeRSetStatsPeriod=1 -Djenkins.install.runSetupWizard=false -Dhudson.DNSMultiCast.disabled=true -Dhudson.udp=-1 -Dhudson.footerURL=https://www.mirantis.com ${_param:jenkins_master_extra_opts}"
+                JENKINS_NUM_EXECUTORS: ${_param:jenkins_master_executors_num}
+                JENKINS_OPTS: " --handlerCountMax=${_param:jenkins_master_max_concurent_requests}"
+                https_proxy: ${_param:docker_https_proxy}
+                http_proxy: ${_param:docker_http_proxy}
+                no_proxy: ${_param:docker_no_proxy}
               deploy:
                 restart_policy:
                   condition: any
diff --git a/docker/swarm/stack/jenkins/slave.yml b/docker/swarm/stack/jenkins/slave.yml
index fc281b7..12a14d4 100644
--- a/docker/swarm/stack/jenkins/slave.yml
+++ b/docker/swarm/stack/jenkins/slave.yml
@@ -1,3 +1,5 @@
+classes:
+- system.docker
 parameters:
   _param:
     docker_image_jenkins_slave: tcpcloud/jnlp-slave
@@ -7,6 +9,7 @@
     jenkins_master_url: http://${_param:jenkins_master_host}:${_param:jenkins_master_port}
     jenkins_slave_user: ${_param:jenkins_client_user}
     jenkins_slave_password: ${_param:jenkins_client_password}
+    jenkins_slave_extra_opts: ""
   docker:
     client:
       stack:
@@ -19,6 +22,10 @@
                 JENKINS_UPDATE_SLAVE: 'true'
                 JENKINS_LOGIN: ${_param:jenkins_slave_user}
                 JENKINS_PASSWORD: ${_param:jenkins_slave_password}
+                JAVA_OPTS: ${_param:jenkins_slave_extra_opts}
+                https_proxy: ${_param:docker_https_proxy}
+                http_proxy: ${_param:docker_http_proxy}
+                no_proxy: ${_param:docker_no_proxy}
               deploy:
                 restart_policy:
                   condition: any
@@ -39,6 +46,10 @@
                 JENKINS_UPDATE_SLAVE: 'true'
                 JENKINS_LOGIN: ${_param:jenkins_slave_user}
                 JENKINS_PASSWORD: ${_param:jenkins_slave_password}
+                JAVA_OPTS: ${_param:jenkins_slave_extra_opts}
+                https_proxy: ${_param:docker_https_proxy}
+                http_proxy: ${_param:docker_http_proxy}
+                no_proxy: ${_param:docker_no_proxy}
               deploy:
                 restart_policy:
                   condition: any
@@ -59,6 +70,10 @@
                 JENKINS_UPDATE_SLAVE: 'true'
                 JENKINS_LOGIN: ${_param:jenkins_slave_user}
                 JENKINS_PASSWORD: ${_param:jenkins_slave_password}
+                JAVA_OPTS: ${_param:jenkins_slave_extra_opts}
+                https_proxy: ${_param:docker_https_proxy}
+                http_proxy: ${_param:docker_http_proxy}
+                no_proxy: ${_param:docker_no_proxy}
               deploy:
                 restart_policy:
                   condition: any
diff --git a/docker/swarm/stack/monitoring/init.yml b/docker/swarm/stack/monitoring/init.yml
index 97b9ac3..6efe125 100644
--- a/docker/swarm/stack/monitoring/init.yml
+++ b/docker/swarm/stack/monitoring/init.yml
@@ -15,6 +15,22 @@
               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
@@ -30,12 +46,13 @@
               ports:
                 - 15015:${prometheus:remote_storage_adapter:bind:port}
               environment:
-                bind_port: ${prometheus:remote_storage_adapter:bind:port}
-                bind_address: ${prometheus:remote_storage_adapter:bind:address}
-                influxdb_url: ${_param:prometheus_influxdb_url}
-                influxdb_db: ${_param:prometheus_influxdb_db}
-                influxdb_username: ${_param:prometheus_influxdb_username}
-                influxdb_password: ${_param:prometheus_influxdb_password}
+                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
@@ -54,11 +71,12 @@
                 - ${prometheus:alertmanager:dir:config}:${_param:prometheus_alertmanager_config_directory}
                 - ${prometheus:alertmanager:dir:data}:${_param:prometheus_alertmanager_data_directory}
               environment:
-                config_dir: ${_param:prometheus_alertmanager_config_directory}
-                data_dir: ${_param:prometheus_alertmanager_data_directory}
-                bind_port: ${prometheus:alertmanager:bind:port}
-                bind_address: ${prometheus:alertmanager:bind:address}
-                discovery_domain: 'monitoring_alertmanager'
+                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
@@ -69,8 +87,8 @@
                 restart_policy:
                   condition: any
               environment:
-                bind_port: ${prometheus:pushgateway:bind:port}
-                bind_address: ${prometheus:pushgateway:bind:address}
+                PUSHGATEWAY_BIND_PORT: ${prometheus:pushgateway:bind:port}
+                PUSHGATEWAY_BIND_ADDRESS: ${prometheus:pushgateway:bind:address}
               labels:
                 com.mirantis.monitoring: "pushgateway"
               image: ${_param:docker_image_pushgateway}
@@ -80,7 +98,7 @@
               networks:
                 - monitoring
               deploy:
-                replicas: 1
+                replicas: 2
                 labels:
                   com.mirantis.monitoring: "prometheus"
                 restart_policy:
@@ -94,11 +112,12 @@
                 - ${prometheus:server:dir:config}:${_param:prometheus_server_config_directory}
                 - ${prometheus:server:dir:data}:${_param:prometheus_server_data_directory}
               environment:
-                config_dir: ${_param:prometheus_server_config_directory}
-                data_dir: ${_param:prometheus_server_data_directory}
-                bind_port: ${prometheus:server:bind:port}
-                bind_address: ${prometheus:server:bind:address}
-                storage_local_engine: ${prometheus:server:storage:local:engine}
-                storage_local_retention: ${prometheus:server:storage:local:retention}
-                storage_local_target_heap_size: ${prometheus:server:storage:local:target_heap_size}
-                storage_local_num_fingerprint_mutexes: ${prometheus:server:storage:local:num_fingerprint_mutexes}
+                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_ENGINE: ${prometheus:server:storage:local:engine}
+                PROMETHEUS_STORAGE_LOCAL_RETENTION: ${prometheus:server:storage:local:retention}
+                PROMETHEUS_STORAGE_LOCAL_TARGET_HEAP_SIZE: ${prometheus:server:storage:local:target_heap_size}
+                PROMETHEUS_STORAGE_LOCAL_NUM_FINGERPRINT_MUTEXES: ${prometheus:server:storage:local:num_fingerprint_mutexes}
+                PROMETHEUS_EXTERNAL_URL: "http://${_param:stacklight_monitor_address}:15010"
diff --git a/docker/swarm/stack/postgresql.yml b/docker/swarm/stack/postgresql.yml
index 7ae4052..42ebf8f 100644
--- a/docker/swarm/stack/postgresql.yml
+++ b/docker/swarm/stack/postgresql.yml
@@ -2,6 +2,10 @@
   _param:
     docker_postgresql_replicas: 1
     docker_image_postgresql: library/postgres:9.6
+    postgresql_bind_host: postgresql-db
+    postgresql_bind_port: ${_param:haproxy_postgresql_bind_port}
+    postgresql_ssl:
+      enabled: false
     postgresql_admin_user: postgres
     postgresql_admin_user_password: postgrespassword
   docker:
@@ -12,13 +16,17 @@
             POSTGRES_USER: ${_param:postgresql_admin_user}
             POSTGRES_PASSWORD: ${_param:postgresql_admin_user_password}
           service:
-            db:
+            postgresql-db:
               image: ${_param:docker_image_postgresql}
               deploy:
                 replicas: ${_param:docker_postgresql_replicas}
                 restart_policy:
                   condition: any
-              ports:
-                - ${_param:haproxy_postgresql_exposed_port}:${_param:haproxy_postgresql_bind_port}
               volumes:
                 - /srv/volumes/postgresql/data:/var/lib/postgresql/data
+              ports:
+                - ${_param:haproxy_postgresql_exposed_port}:${_param:haproxy_postgresql_bind_port}
+          network:
+            default:
+              external:
+                name: oss_backend
\ No newline at end of file
diff --git a/docker/swarm/stack/pushkin.yml b/docker/swarm/stack/pushkin.yml
index dde8541..d0a3bce 100644
--- a/docker/swarm/stack/pushkin.yml
+++ b/docker/swarm/stack/pushkin.yml
@@ -1,8 +1,28 @@
 parameters:
   _param:
     docker_pushkin_replicas: 1
-    docker_image_pushkin: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/pushkin:latest
+    docker_image_pushkin: docker-prod-local.artifactory.mirantis.com/mirantis/oss/pushkin
+    pushkin_bind_host: pushkin-api
+    pushkin_bind_port: ${_param:haproxy_pushkin_bind_port}
+    pushkin_elasticsearch: ${_param:elasticsearch_bind_host}
+    pushkin_ssl:
+      enabled: false
     pushkin_db: pushkin
+    pushkin_db_host: ${_param:haproxy_postgresql_bind_host}
+    pushkin_smtp_host: smtp.gmail.com
+    pushkin_smtp_port: 587
+    webhook_from: your_sender@mail.com
+    pushkin_email_sender_password: your_sender_password
+    webhook_recipients: "recepient1@mail.com,recepient2@mail.com"
+    webhook_login_id: 13
+    webhook_application_id: 24
+    sfdc_auth_url: https://login.salesforce.com/services/oauth2/token
+    sfdc_username: user@example.net
+    sfdc_password: secret
+    sfdc_consumer_key: example_consumer_key
+    sfdc_consumer_secret: example_consumer_secret
+    sfdc_organization_id: example_organization_id
+    sfdc_sandbox_enabled: true
   docker:
     client:
       stack:
@@ -12,14 +32,23 @@
             POSTGRES_PASSWORD: ${_param:pushkin_db_user_password}
             POSTGRES_DB: ${_param:pushkin_db}
             PUSHKINDBHOST: ${_param:pushkin_db_host}
-            PUSHKINELASTICHOST: ${_param:haproxy_elasticsearch_bind_host}
+            PUSHKINELASTICHOST: ${_param:pushkin_elasticsearch}
             WEBHOOK_FROM: ${_param:webhook_from}
+            EMAIL_SENDER_PASSWORD: ${_param:pushkin_email_sender_password}
+            SMTP_HOST: ${_param:pushkin_smtp_host}
+            SMTP_PORT: ${_param:pushkin_smtp_port}
             WEBHOOK_RECIPIENTS: ${_param:webhook_recipients}
             WEBHOOK_LOGIN_ID: ${_param:webhook_login_id}
             WEBHOOK_APPLICATION_ID: ${_param:webhook_application_id}
-            WEBHOOK_SFDC_USERNAME: ${_param:webhook_sfdc_username}
+            SFDC_AUTH_URL: ${_param:sfdc_auth_url}
+            SFDC_USERNAME: ${_param:sfdc_username}
+            SFDC_PASSWORD: ${_param:sfdc_password}
+            SFDC_CONSUMER_KEY: ${_param:sfdc_consumer_key}
+            SFDC_CONSUMER_SECRET: ${_param:sfdc_consumer_secret}
+            SFDC_ORGANIZATION_ID: ${_param:sfdc_organization_id}
+            SFDC_SANDBOX_ENABLED: ${_param:sfdc_sandbox_enabled}
           service:
-            api:
+            pushkin-api:
               image: ${_param:docker_image_pushkin}
               deploy:
                 replicas: ${_param:docker_pushkin_replicas}
@@ -28,4 +57,8 @@
               ports:
                 - ${_param:haproxy_pushkin_exposed_port}:${_param:haproxy_pushkin_bind_port}
               volumes:
-                - /srv/volumes/pushkin/api:/var/log/pushkin
\ No newline at end of file
+                - /srv/volumes/pushkin/api:/var/log/pushkin
+          network:
+            default:
+              external:
+                name: oss_backend
diff --git a/docker/swarm/stack/rundeck.yml b/docker/swarm/stack/rundeck.yml
index 216415c..8ab0554 100644
--- a/docker/swarm/stack/rundeck.yml
+++ b/docker/swarm/stack/rundeck.yml
@@ -2,19 +2,23 @@
   _param:
     docker_rundeck_replicas: 1
     docker_image_rundeck: docker-prod-local.artifactory.mirantis.com/mirantis/oss/rundeck:latest
+    rundeck_bind_host: rundeck-api
+    rundeck_bind_port: ${_param:haproxy_rundeck_bind_port}
+    rundeck_ssl:
+      enabled: false
   docker:
     client:
       stack:
         rundeck:
           service:
-            rundeck:
+            rundeck-api:
               image: ${_param:docker_image_rundeck}
               deploy:
                 replicas: ${_param:docker_rundeck_replicas}
                 restart_policy:
                   condition: any
               ports:
-                - 14440:4440
+                - ${_param:haproxy_rundeck_exposed_port}:${_param:haproxy_rundeck_bind_port}
               volumes:
                 - /srv/volumes/rundeck/etc/framework.properties:/etc/rundeck/framework.properties
                 - /srv/volumes/rundeck/etc/tokens.properties:/etc/rundeck/tokens.properties
@@ -25,3 +29,7 @@
                 - /srv/volumes/rundeck/logs:/var/lib/rundeck/logs
                 - /srv/volumes/rundeck/plugins:/opt/rundeck-plugins
                 - /srv/volumes/rundeck/storage:/var/lib/rundeck/var/storage
+          network:
+            default:
+              external:
+                name: oss_backend
diff --git a/docker/swarm/stack/security_monkey.yml b/docker/swarm/stack/security_monkey.yml
index a2249c6..b5a1100 100644
--- a/docker/swarm/stack/security_monkey.yml
+++ b/docker/swarm/stack/security_monkey.yml
@@ -2,28 +2,36 @@
   _param:
     docker_security_monkey_api_replicas: 1
     docker_security_monkey_scheduler_replicas: 1
-    docker_image_security_monkey_api: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/security-monkey-api:6700
-    docker_image_security_monkey_scheduler: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/security-monkey-scheduler:6700
+    docker_image_security_monkey_api: docker-prod-local.artifactory.mirantis.com/mirantis/oss/security-monkey-api
+    docker_image_security_monkey_scheduler: docker-prod-local.artifactory.mirantis.com/mirantis/oss/security-monkey-scheduler
+    security_monkey_bind_host: security-audit-api
+    security_monkey_bind_port: ${_param:haproxy_security_monkey_bind_port}
+    security_monkey_ssl:
+      enabled: false
     security_monkey_db: secmonkey
-    notification_service_url: http://${_param:haproxy_pushkin_bind_host}:${_param:haproxy_pushkin_bind_port}/post_notification_json
+    notification_service_url: http://${_param:pushkin_bind_host}:${_param:haproxy_pushkin_bind_port}/post_notification_json
     security_monkey_user: devopsportal@devopsportal.local
     security_monkey_password: devopsportal
     security_monkey_role: Justify
-    security_monkey_fqdn: ${_param:haproxy_security_monkey_bind_host}
-    security_monkey_web_port: ${_param:haproxy_security_monkey_bind_port}
-    security_monkey_api_port: ${_param:haproxy_security_monkey_bind_port}
-    security_monkey_nginx_port: ${_param:haproxy_security_monkey_bind_port}
+    security_monkey_fqdn: ${_param:security_monkey_bind_host}
+    security_monkey_web_port: ${_param:security_monkey_bind_port}
+    security_monkey_api_port: ${_param:security_monkey_bind_port}
+    security_monkey_nginx_port: ${_param:security_monkey_bind_port}
     devops_portal_sm_wtf_csrf_enabled: False
     security_monkey_sync_interval: 15
     security_monkey_openstack:
       os_account_id: mcp_cloud
       os_account_name: mcp_cloud
-      username: ""
-      password: ""
-      auth_url: ""
+      auth_url: http://yourcloud.com:5000/v3/auth/tokens
+      username: admin
+      password: password
       project_domain_name: Default
       project_name: admin
       user_domain_name: Default
+      source_credentials: /srv/volumes/rundeck/storage/content/cis/openstack
+      service_credentials: /opt/os_creds
+      endpoint_type: public
+      ssl_verify: False
   docker:
     client:
       stack:
@@ -32,7 +40,7 @@
             SECURITY_MONKEY_POSTGRES_USER: ${_param:secmonkey_db_user}
             SECURITY_MONKEY_POSTGRES_PASSWORD: ${_param:secmonkey_db_user_password}
             SECURITY_MONKEY_POSTGRES_HOST: ${_param:secmonkey_db_host}
-            SECURITY_MONKEY_POSTGRES_PORT: ${_param:haproxy_postgresql_bind_port}
+            SECURITY_MONKEY_POSTGRES_PORT: ${_param:postgresql_bind_port}
             SECURITY_MONKEY_FQDN: ${_param:security_monkey_fqdn}
             WEB_PORT: ${_param:security_monkey_web_port}
             API_PORT: ${_param:security_monkey_api_port}
@@ -48,13 +56,16 @@
             OS_AUTH_URL: ${_param:security_monkey_openstack:auth_url}
             OS_PROJECT_DOMAIN_NAME: ${_param:security_monkey_openstack:project_domain_name}
             OS_PROJECT_NAME: ${_param:security_monkey_openstack:project_name}
+            OS_SSL_VERIFY: ${_param:security_monkey_openstack:ssl_verify}
+            OS_ENDPOINT_TYPE: ${_param:security_monkey_openstack:endpoint_type}
+            CACERT_PATH: ${_param:security_monkey_openstack:service_credentials}/cert.pem
             USER_DOMAIN_NAME: ${_param:security_monkey_openstack:user_domain_name}
             SM_WTF_CSRF_ENABLED: ${_param:devops_portal_sm_wtf_csrf_enabled}
             SECURITY_MONKEY_SYNC_INTERVAL: ${_param:security_monkey_sync_interval}
             SQLALCHEMY_DATABASE_URI: postgresql://${_param:secmonkey_db_user}:${_param:secmonkey_db_user_password}@${_param:secmonkey_db_host}:${_param:haproxy_postgresql_bind_port}/${_param:security_monkey_db}
             SQLALCHEMY_POOL_RECYCLE: 14400
           service:
-            api:
+            security-audit-api:
               image: ${_param:docker_image_security_monkey_api}
               deploy:
                 replicas: ${_param:docker_security_monkey_api_replicas}
@@ -64,7 +75,8 @@
                 - ${_param:haproxy_security_monkey_exposed_port}:${_param:haproxy_security_monkey_bind_port}
               volumes:
                 - /srv/volumes/security_monkey/logs:/var/log/security_monkey/logs
-            scheduler:
+                - ${_param:security_monkey_openstack:source_credentials}:${_param:security_monkey_openstack:service_credentials}:ro
+            security-audit-scheduler:
               image: ${_param:docker_image_security_monkey_scheduler}
               deploy:
                 replicas: ${_param:docker_security_monkey_scheduler_replicas}
@@ -72,3 +84,8 @@
                   condition: any
               volumes:
                 - /srv/volumes/security_monkey/logs:/var/log/security_monkey/logs
+                - ${_param:security_monkey_openstack:source_credentials}:${_param:security_monkey_openstack:service_credentials}:ro
+          network:
+            default:
+              external:
+                name: oss_backend
diff --git a/docker/swarm/worker.yml b/docker/swarm/worker.yml
index 643b207..4bed790 100644
--- a/docker/swarm/worker.yml
+++ b/docker/swarm/worker.yml
@@ -3,9 +3,11 @@
 parameters:
   _param:
     docker_gwbridge_subnet: 10.20.0.0/16
+    docker_swarm_master_port: 2377
   docker:
     swarm:
       role: worker
       advertise_addr: ${_param:single_address}
       master:
         host: ${_param:cluster_node01_address}
+        port: ${_param:docker_swarm_master_port}
diff --git a/elasticsearch/client/init.yml b/elasticsearch/client/init.yml
index d0710ca..061cd6e 100644
--- a/elasticsearch/client/init.yml
+++ b/elasticsearch/client/init.yml
@@ -7,4 +7,4 @@
       enabled: true
       server:
         host: ${_param:elasticsearch_client_host}
-        port: ${_param:elasticsearch_client_port}
\ No newline at end of file
+        port: ${_param:elasticsearch_client_port}
diff --git a/elasticsearch/client/single.yml b/elasticsearch/client/single.yml
index d9ce432..41a3b57 100644
--- a/elasticsearch/client/single.yml
+++ b/elasticsearch/client/single.yml
@@ -1,8 +1,12 @@
 classes:
 - service.elasticsearch.client
 parameters:
+  _param:
+    elasticsearch_client_host: ${_param:stacklight_log_address}
+    elasticsearch_client_port: 9200
   elasticsearch:
     client:
       enabled: true
       server:
-        host: ${_param:stacklight_log_address}
+        host: ${_param:elasticsearch_client_host}
+        port: ${_param:elasticsearch_client_port}
diff --git a/elasticsearch/server/cluster.yml b/elasticsearch/server/cluster.yml
index 8f53f21..9be44ed 100644
--- a/elasticsearch/server/cluster.yml
+++ b/elasticsearch/server/cluster.yml
@@ -5,6 +5,7 @@
   _param:
     java_environment_version: "8"
     java_environment_platform: openjdk
+    elasticsearch_cluster_name: elasticsearch
   linux:
     system:
       sysctl:
@@ -15,6 +16,7 @@
       headless: true
   elasticsearch:
     server:
+      name: ${_param:elasticsearch_cluster_name}
       enabled: true
       master: true
       data: true
diff --git a/galera/server/cluster.yml b/galera/server/cluster.yml
index f1c3a48..ba2a3ff 100644
--- a/galera/server/cluster.yml
+++ b/galera/server/cluster.yml
@@ -1,4 +1,4 @@
 classes:
 - service.keepalived.cluster.single
 - service.haproxy.proxy.single
-- system.haproxy.proxy.listen.openstack.galera
\ No newline at end of file
+- system.haproxy.proxy.listen.openstack.galera
diff --git a/galera/server/clustercheck.yml b/galera/server/clustercheck.yml
new file mode 100644
index 0000000..a5d7137
--- /dev/null
+++ b/galera/server/clustercheck.yml
@@ -0,0 +1,18 @@
+parameters:
+  _param:
+    galera_clustercheck_password: clustercheck
+  galera:
+    clustercheck:
+      enabled: True
+      user: clustercheck
+      password: ${_param:galera_clustercheck_password}
+      port: 9200
+      available_when_donor: 0
+      available_when_readonly: 0
+  mysql:
+    server:
+      users:
+      - name: clustercheck
+        password: ${_param:galera_clustercheck_password}
+        database: '*.*'
+        grants: PROCESS
diff --git a/galera/server/database/barbican.yml b/galera/server/database/barbican.yml
new file mode 100644
index 0000000..4759439
--- /dev/null
+++ b/galera/server/database/barbican.yml
@@ -0,0 +1,15 @@
+parameters:
+  mysql:
+    server:
+      database:
+        barbican:
+          encoding: utf8
+          users:
+          - name: barbican
+            password: ${_param:mysql_barbican_password}
+            host: '%'
+            rights: all
+          - name: barbican
+            password: ${_param:mysql_barbican_password}
+            host: ${_param:cluster_vip_address}
+            rights: all
diff --git a/gerrit/client/project/ci.yml b/gerrit/client/project/ci.yml
index 86ff699..3e36556 100644
--- a/gerrit/client/project/ci.yml
+++ b/gerrit/client/project/ci.yml
@@ -1,11 +1,15 @@
 parameters:
+  _param:
+    gerrit_pipeline_library_repo: https://github.com/Mirantis/pipeline-library
+    gerrit_mk_pipelines_repo: https://github.com/Mirantis/mk-pipelines
+    gerrit_decapod_pipelines_repo: https://github.com/mateuszlos/decapod-pipelines
   gerrit:
     client:
       project:
         mcp-ci/pipeline-library:
           enabled: true
           description: Jenkins pipeline libraries
-          upstream: https://github.com/Mirantis/pipeline-library
+          upstream: ${_param:gerrit_pipeline_library_repo}
           access: ${gerrit:client:default_access}
           require_change_id: true
           require_agreement: false
@@ -13,7 +17,7 @@
         mk/mk-pipelines:
           enabled: true
           description: Jenkins pipelines
-          upstream: https://github.com/Mirantis/mk-pipelines
+          upstream: ${_param:gerrit_mk_pipelines_repo}
           access: ${gerrit:client:default_access}
           require_change_id: true
           require_agreement: false
@@ -21,7 +25,7 @@
         mk/decapod-pipelines:
           enabled: true
           description: Decapod jenkins pipelines
-          upstream: https://github.com/mateuszlos/decapod-pipelines
+          upstream: ${_param:gerrit_decapod_pipelines_repo}
           access: ${gerrit:client:default_access}
           require_change_id: true
           require_agreement: false
diff --git a/git/server/single.yml b/git/server/single.yml
new file mode 100644
index 0000000..788a5a8
--- /dev/null
+++ b/git/server/single.yml
@@ -0,0 +1,20 @@
+parameters:
+  _param:
+    git_server_host: git.${_param:cluster_domain}
+    git_server_port: 8088
+  git:
+    server:
+      enabled: True
+  nginx:
+    server:
+      enabled: True
+      site:
+        git_server:
+          enabled: True
+          name: git_server
+          type: git
+          root: /srv/git
+          client_max_body_size: 0
+          host:
+            name: ${_param:git_server_host}
+            port: ${_param:git_server_port}
\ No newline at end of file
diff --git a/glance/client/image/cirros.yml b/glance/client/image/cirros.yml
new file mode 100644
index 0000000..d9f3f33
--- /dev/null
+++ b/glance/client/image/cirros.yml
@@ -0,0 +1,22 @@
+classes:
+- system.glance.client
+parameters:
+  _param:
+    cirros_image_url: "http://apt.mirantis.com/images/cirros-x64-20170828.qcow2"
+    cirros_image_name:  "cirros-0.3.0-x86_64"
+  glance:
+    client:
+      identity:
+        admin_identity:
+          endpoint_type: internalURL
+          image:
+            cirros:
+              name: ${_param:cirros_image_name}
+              location: ${_param:cirros_image_url}
+              import_from_format: 'qcow2'
+              container_format: 'bare'
+              disk_format: 'qcow2'
+              tags:
+                - 'cirros'
+              visibility: public
+              wait_timeout: 1000
diff --git a/glance/client/image/ubuntu_trusty.yml b/glance/client/image/ubuntu_trusty.yml
new file mode 100644
index 0000000..be9effc
--- /dev/null
+++ b/glance/client/image/ubuntu_trusty.yml
@@ -0,0 +1,23 @@
+classes:
+- system.glance.client
+parameters:
+  _param:
+    ubuntu_trusty_image_url: "http://apt.mirantis.com/images/ubuntu-14-04-x64-mcp1.1.qcow2"
+    ubuntu_trusty_image_name:  "ubuntu-14-04-x64-mcp1.1"
+  glance:
+    client:
+      identity:
+        admin_identity:
+          endpoint_type: internalURL
+          image:
+            ubuntu_14_04_x64_mcp1.1:
+              name: ${_param:ubuntu_trusty_image_name}
+              location: ${_param:ubuntu_trusty_image_url}
+              import_from_format: 'qcow2'
+              container_format: 'bare'
+              disk_format: 'qcow2'
+              tags:
+                - 'ubuntu'
+                - 'trusty'
+              visibility: public
+              wait_timeout: 1000
diff --git a/glance/client/image/ubuntu_xenial.yml b/glance/client/image/ubuntu_xenial.yml
new file mode 100644
index 0000000..4206584
--- /dev/null
+++ b/glance/client/image/ubuntu_xenial.yml
@@ -0,0 +1,23 @@
+classes:
+- system.glance.client
+parameters:
+  _param:
+    ubuntu_xenial_image_url: "http://apt.mirantis.com/images/ubuntu-16-04-x64-mcp1.1.qcow2"
+    ubuntu_xenial_image_name:  "ubuntu-16-04-amd64-cloudimg"
+  glance:
+    client:
+      identity:
+        admin_identity:
+          endpoint_type: internalURL
+          image:
+            ubuntu_16_04_amd64_cloudimg:
+              name: ${_param:ubuntu_xenial_image_name}
+              location: ${_param:ubuntu_xenial_image_url}
+              import_from_format: 'qcow2'
+              container_format: 'bare'
+              disk_format: 'qcow2'
+              tags:
+                - 'ubuntu'
+                - 'xenial'
+              visibility: public
+              wait_timeout: 1000
diff --git a/glance/control/cluster.yml b/glance/control/cluster.yml
index 6402721..bb87f16 100644
--- a/glance/control/cluster.yml
+++ b/glance/control/cluster.yml
@@ -4,6 +4,12 @@
 - service.haproxy.proxy.single
 - system.haproxy.proxy.listen.openstack.glance
 parameters:
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   glance:
     server:
       enabled: true
diff --git a/glance/control/single.yml b/glance/control/single.yml
index 458cd37..b285d38 100644
--- a/glance/control/single.yml
+++ b/glance/control/single.yml
@@ -1,6 +1,12 @@
 classes:
 - service.glance.control.single
 parameters:
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   glance:
     server:
       database:
diff --git a/glusterfs/client/volume/artifactory.yml b/glusterfs/client/volume/artifactory.yml
index 878131f..f8104a1 100644
--- a/glusterfs/client/volume/artifactory.yml
+++ b/glusterfs/client/volume/artifactory.yml
@@ -10,4 +10,4 @@
         artifactory:
           path: /srv/volumes/artifactory
           server: ${_param:artifactory_glusterfs_service_host}
-          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address},direct-io-mode=disable"
diff --git a/glusterfs/client/volume/glance.yml b/glusterfs/client/volume/glance.yml
index ec593b9..e84ff06 100644
--- a/glusterfs/client/volume/glance.yml
+++ b/glusterfs/client/volume/glance.yml
@@ -13,3 +13,20 @@
           user: glance
           group: glance
           opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
+  linux:
+    system:
+      user:
+        glance:
+          enabled: true
+          name: glance
+          uid: 302
+          gid: 302
+          home: /var/lib/glance
+          shell: /bin/false
+          system: True
+      group:
+        glance:
+          enabled: true
+          name: glance
+          gid: 302
+          system: True
diff --git a/glusterfs/client/volume/prometheus.yml b/glusterfs/client/volume/influxdb.yml
similarity index 67%
rename from glusterfs/client/volume/prometheus.yml
rename to glusterfs/client/volume/influxdb.yml
index 3fae59b..4edcf4b 100644
--- a/glusterfs/client/volume/prometheus.yml
+++ b/glusterfs/client/volume/influxdb.yml
@@ -1,13 +1,13 @@
 parameters:
   _param:
-    prometheus_glusterfs_service_host: ${_param:glusterfs_service_host}
+    influxdb_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:
-        prometheus:
-          path: /srv/volumes/prometheus
-          server: ${_param:prometheus_glusterfs_service_host}
+        influxdb:
+          path: /srv/volumes/influxdb
+          server: ${_param:influxdb_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/keystone.yml b/glusterfs/client/volume/keystone.yml
index 822b61f..39c5619 100644
--- a/glusterfs/client/volume/keystone.yml
+++ b/glusterfs/client/volume/keystone.yml
@@ -19,3 +19,20 @@
           user: keystone
           group: keystone
           opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
+  linux:
+    system:
+      user:
+        keystone:
+          enabled: true
+          name: keystone
+          home: /var/lib/keystone
+          uid: 301
+          gid: 301
+          shell: /bin/false
+          system: True
+      group:
+        keystone:
+          enabled: true
+          name: keystone
+          gid: 301
+          system: True
diff --git a/glusterfs/server/volume/aptly.yml b/glusterfs/server/volume/aptly.yml
index db01638..9c9e518 100644
--- a/glusterfs/server/volume/aptly.yml
+++ b/glusterfs/server/volume/aptly.yml
@@ -15,3 +15,4 @@
             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/artifactory.yml b/glusterfs/server/volume/artifactory.yml
index a19115e..f70d2f0 100644
--- a/glusterfs/server/volume/artifactory.yml
+++ b/glusterfs/server/volume/artifactory.yml
@@ -15,3 +15,4 @@
             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/decapod.yml b/glusterfs/server/volume/decapod.yml
index e4b80df..e8f4c99 100644
--- a/glusterfs/server/volume/decapod.yml
+++ b/glusterfs/server/volume/decapod.yml
@@ -15,3 +15,4 @@
             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/devops_portal.yml b/glusterfs/server/volume/devops_portal.yml
index 0b71b62..a2f00ba 100644
--- a/glusterfs/server/volume/devops_portal.yml
+++ b/glusterfs/server/volume/devops_portal.yml
@@ -15,3 +15,4 @@
             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/elasticsearch.yml b/glusterfs/server/volume/elasticsearch.yml
index 73f35c1..65cf76e 100644
--- a/glusterfs/server/volume/elasticsearch.yml
+++ b/glusterfs/server/volume/elasticsearch.yml
@@ -15,3 +15,4 @@
             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/gerrit.yml b/glusterfs/server/volume/gerrit.yml
index 6667f93..b959f82 100644
--- a/glusterfs/server/volume/gerrit.yml
+++ b/glusterfs/server/volume/gerrit.yml
@@ -15,3 +15,4 @@
             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/glance.yml b/glusterfs/server/volume/glance.yml
index 8276a44..d0dfdf1 100644
--- a/glusterfs/server/volume/glance.yml
+++ b/glusterfs/server/volume/glance.yml
@@ -14,4 +14,5 @@
             nfs.disable: On
             network.remote-dio: On
             diagnostics.client-log-level: WARNING
-            diagnostics.brick-log-level: WARNING
\ No newline at end of file
+            diagnostics.brick-log-level: WARNING
+            cluster.favorite-child-policy: mtime
diff --git a/glusterfs/server/volume/influxdb.yml b/glusterfs/server/volume/influxdb.yml
new file mode 100644
index 0000000..9a75a2f
--- /dev/null
+++ b/glusterfs/server/volume/influxdb.yml
@@ -0,0 +1,18 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        influxdb:
+          storage: /srv/glusterfs/influxdb
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/influxdb
+            - ${_param:cluster_node02_address}:/srv/glusterfs/influxdb
+            - ${_param:cluster_node03_address}:/srv/glusterfs/influxdb
+          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/jenkins.yml b/glusterfs/server/volume/jenkins.yml
index 5c077d0..9a2582a 100644
--- a/glusterfs/server/volume/jenkins.yml
+++ b/glusterfs/server/volume/jenkins.yml
@@ -15,3 +15,4 @@
             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/keystone.yml b/glusterfs/server/volume/keystone.yml
index 2515fca..81e14be 100644
--- a/glusterfs/server/volume/keystone.yml
+++ b/glusterfs/server/volume/keystone.yml
@@ -15,6 +15,7 @@
             network.remote-dio: On
             diagnostics.client-log-level: WARNING
             diagnostics.brick-log-level: WARNING
+            cluster.favorite-child-policy: mtime
         keystone-credential-keys:
           storage: /srv/glusterfs/keystone-credential-keys
           replica: 3
@@ -28,3 +29,4 @@
             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/mongodb.yml b/glusterfs/server/volume/mongodb.yml
index a9c69f7..f694ad7 100644
--- a/glusterfs/server/volume/mongodb.yml
+++ b/glusterfs/server/volume/mongodb.yml
@@ -15,3 +15,4 @@
             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/mysql.yml b/glusterfs/server/volume/mysql.yml
index 0e7367c..c473de6 100644
--- a/glusterfs/server/volume/mysql.yml
+++ b/glusterfs/server/volume/mysql.yml
@@ -14,4 +14,5 @@
             nfs.disable: On
             network.remote-dio: On
             diagnostics.client-log-level: WARNING
-            diagnostics.brick-log-level: WARNING
\ No newline at end of file
+            diagnostics.brick-log-level: WARNING
+            cluster.favorite-child-policy: mtime
diff --git a/glusterfs/server/volume/openldap.yml b/glusterfs/server/volume/openldap.yml
index d507b44..84619c0 100644
--- a/glusterfs/server/volume/openldap.yml
+++ b/glusterfs/server/volume/openldap.yml
@@ -15,3 +15,4 @@
             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/postgresql.yml b/glusterfs/server/volume/postgresql.yml
index 26290f8..c48d833 100644
--- a/glusterfs/server/volume/postgresql.yml
+++ b/glusterfs/server/volume/postgresql.yml
@@ -15,3 +15,4 @@
             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/privatebin.yml b/glusterfs/server/volume/privatebin.yml
index 8be5a76..e2eba2d 100644
--- a/glusterfs/server/volume/privatebin.yml
+++ b/glusterfs/server/volume/privatebin.yml
@@ -15,3 +15,4 @@
             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/prometheus.yml b/glusterfs/server/volume/prometheus.yml
deleted file mode 100644
index 144847a..0000000
--- a/glusterfs/server/volume/prometheus.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-parameters:
-  glusterfs:
-    server:
-      volumes:
-        prometheus:
-          storage: /srv/glusterfs/prometheus
-          replica: 3
-          bricks:
-            - ${_param:cluster_node01_address}:/srv/glusterfs/prometheus
-            - ${_param:cluster_node02_address}:/srv/glusterfs/prometheus
-            - ${_param:cluster_node03_address}:/srv/glusterfs/prometheus
-          options:
-            cluster.readdir-optimize: On
-            nfs.disable: On
-            network.remote-dio: On
-            diagnostics.client-log-level: WARNING
-            diagnostics.brick-log-level: WARNING
diff --git a/glusterfs/server/volume/pushkin.yml b/glusterfs/server/volume/pushkin.yml
index 52d393e..2d6a249 100644
--- a/glusterfs/server/volume/pushkin.yml
+++ b/glusterfs/server/volume/pushkin.yml
@@ -15,3 +15,4 @@
             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/registry.yml b/glusterfs/server/volume/registry.yml
index 5df7d8a..474ce7b 100644
--- a/glusterfs/server/volume/registry.yml
+++ b/glusterfs/server/volume/registry.yml
@@ -15,3 +15,4 @@
             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/rundeck.yml b/glusterfs/server/volume/rundeck.yml
index 22e5563..c0ced5b 100644
--- a/glusterfs/server/volume/rundeck.yml
+++ b/glusterfs/server/volume/rundeck.yml
@@ -15,3 +15,4 @@
             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/salt.yml b/glusterfs/server/volume/salt.yml
index f87b029..e14701d 100644
--- a/glusterfs/server/volume/salt.yml
+++ b/glusterfs/server/volume/salt.yml
@@ -15,3 +15,4 @@
             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/salt_pki.yml b/glusterfs/server/volume/salt_pki.yml
index 7af39da..9a26bdb 100644
--- a/glusterfs/server/volume/salt_pki.yml
+++ b/glusterfs/server/volume/salt_pki.yml
@@ -15,3 +15,4 @@
             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/security_monkey.yml b/glusterfs/server/volume/security_monkey.yml
index 478aec3..e730c90 100644
--- a/glusterfs/server/volume/security_monkey.yml
+++ b/glusterfs/server/volume/security_monkey.yml
@@ -15,3 +15,4 @@
             network.remote-dio: On
             diagnostics.client-log-level: WARNING
             diagnostics.brick-log-level: WARNING
+            cluster.favorite-child-policy: mtime
diff --git a/grafana/client/datasource/prometheus.yml b/grafana/client/datasource/prometheus.yml
index c4835ef..681b9df 100644
--- a/grafana/client/datasource/prometheus.yml
+++ b/grafana/client/datasource/prometheus.yml
@@ -2,6 +2,7 @@
   _param:
     grafana_prometheus_is_default: true
     grafana_prometheus_ds_name: prometheus
+    grafana_prometheus_address: ${_param:stacklight_monitor_address}
   grafana:
     client:
       datasource:
diff --git a/haproxy/proxy/listen/cicd/aptly.yml b/haproxy/proxy/listen/cicd/aptly.yml
index fb24c1f..682e0d3 100644
--- a/haproxy/proxy/listen/cicd/aptly.yml
+++ b/haproxy/proxy/listen/cicd/aptly.yml
@@ -14,6 +14,9 @@
             - httpclose
             - httplog
           balance: source
+          timeout:
+            server: 10m
+            client: 10m
           binds:
             - address: ${_param:haproxy_aptly_api_bind_host}
               port: ${_param:haproxy_aptly_api_bind_port}
@@ -21,15 +24,7 @@
             - name: ${_param:cluster_node01_name}
               host: ${_param:cluster_node01_address}
               port: 18084
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 18084
-              params: backup check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 18084
-              params: backup check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
         aptly-public:
           mode: http
           options:
@@ -42,14 +37,6 @@
               port: ${_param:haproxy_aptly_public_bind_port}
           servers:
             - name: ${_param:cluster_node01_name}
-              host: ${_param:cluster_node01_address}
+              host: localhost
               port: 18085
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 18085
-              params: check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 18085
-              params: check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/cicd/artifactory.yml b/haproxy/proxy/listen/cicd/artifactory.yml
index 5bf9bda..ff4d5c4 100644
--- a/haproxy/proxy/listen/cicd/artifactory.yml
+++ b/haproxy/proxy/listen/cicd/artifactory.yml
@@ -16,23 +16,23 @@
             - httpclose
             - httplog
           balance: source
+          acl:
+            is_docker: "path_beg /v1/ /v2/"
+            has_prefix: "path_beg /artifactory"
           http_request:
+            - action: "add-header X-Artifactory-Override-Base-Url https://%[req.hdr(host)]/artifactory"
             - action: "add-header X-Forwarded-Proto https"
               condition: "if { ssl_fc }"
+            - action: "set-path /artifactory/api/docker/%[req.hdr(host),lower,field(1,'.')]%[path]"
+              condition: "if is_docker"
+            - action: "set-path /artifactory%[path]"
+              condition: "if !is_docker !has_prefix"
           binds:
             - address: ${_param:haproxy_artifactory_bind_host}
               port: ${_param:haproxy_artifactory_bind_port}
               ssl: ${_param:haproxy_artifactory_ssl}
           servers:
             - name: ${_param:cluster_node01_name}
-              host: ${_param:cluster_node01_address}
+              host: localhost
               port: 18082
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 18082
-              params: backup check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 18082
-              params: backup check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
\ No newline at end of file
diff --git a/haproxy/proxy/listen/cicd/gerrit.yml b/haproxy/proxy/listen/cicd/gerrit.yml
index 51d494b..f6ded20 100644
--- a/haproxy/proxy/listen/cicd/gerrit.yml
+++ b/haproxy/proxy/listen/cicd/gerrit.yml
@@ -26,17 +26,9 @@
               ssl: ${_param:haproxy_gerrit_ssl}
           servers:
             - name: ${_param:cluster_node01_name}
-              host: ${_param:cluster_node01_address}
+              host: localhost
               port: 18083
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 18083
-              params: backup check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 18083
-              params: backup check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
         gerrit_ssh:
           mode: tcp
           balance: source
@@ -45,14 +37,7 @@
               port: ${_param:haproxy_gerrit_ssh_bind_port}
           servers:
             - name: ${_param:cluster_node01_name}
-              host: ${_param:cluster_node01_address}
+              host: localhost
               port: 29417
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 29417
-              params: backup check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 29417
-              params: backup check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+
diff --git a/haproxy/proxy/listen/cicd/jenkins.yml b/haproxy/proxy/listen/cicd/jenkins.yml
index eda12f8..93a9fdd 100644
--- a/haproxy/proxy/listen/cicd/jenkins.yml
+++ b/haproxy/proxy/listen/cicd/jenkins.yml
@@ -13,7 +13,7 @@
           mode: http
           options:
             - forwardfor
-#            - httpchk
+            - httpchk get /login
             - httpclose
             - httplog
           balance: source
@@ -28,17 +28,9 @@
               ssl: ${_param:haproxy_jenkins_ssl}
           servers:
             - name: ${_param:cluster_node01_name}
-              host: ${_param:cluster_node01_address}
+              host: localhost
               port: 18081
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 18081
-              params: backup check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 18081
-              params: backup check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
         jenkins_jnlp:
           mode: tcp
           balance: source
@@ -47,14 +39,6 @@
               port: ${_param:haproxy_jenkins_jnlp_bind_port}
           servers:
             - name: ${_param:cluster_node01_name}
-              host: ${_param:cluster_node01_address}
+              host: localhost
               port: 50001
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 50001
-              params: backup check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 50001
-              params: backup check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/docker/registry.yml b/haproxy/proxy/listen/docker/registry.yml
index 8d45e97..e0f63e8 100644
--- a/haproxy/proxy/listen/docker/registry.yml
+++ b/haproxy/proxy/listen/docker/registry.yml
@@ -23,14 +23,7 @@
               ssl: ${_param:haproxy_docker_registry_ssl}
           servers:
             - name: ${_param:cluster_node01_name}
-              host: ${_param:cluster_node01_address}
+              host: localhost
               port: 15000
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 15000
-              params: check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 15000
-              params: check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+
diff --git a/haproxy/proxy/listen/docker/visualizer.yml b/haproxy/proxy/listen/docker/visualizer.yml
index 409815c..d4e74bb 100644
--- a/haproxy/proxy/listen/docker/visualizer.yml
+++ b/haproxy/proxy/listen/docker/visualizer.yml
@@ -17,14 +17,6 @@
               port: ${_param:haproxy_docker_visualizer_listen_port}
           servers:
             - name: ${_param:cluster_node01_name}
-              host: ${_param:cluster_node01_address}
+              host: localhost
               port: 18090
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 18090
-              params: check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 18090
-              params: check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
\ No newline at end of file
diff --git a/haproxy/proxy/listen/kubernetes/apiserver.yml b/haproxy/proxy/listen/kubernetes/apiserver.yml
index b35d1be..8dfcb35 100644
--- a/haproxy/proxy/listen/kubernetes/apiserver.yml
+++ b/haproxy/proxy/listen/kubernetes/apiserver.yml
@@ -12,15 +12,15 @@
           servers:
           - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
-            port: 443
+            port: 6443
             params: check
           - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
-            port: 443
+            port: 6443
             params: check
           - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
-            port: 443
+            port: 6443
             params: check
           timeout:
             server: 10m
diff --git a/haproxy/proxy/listen/opencontrail/tor.yml b/haproxy/proxy/listen/opencontrail/tor.yml
new file mode 100644
index 0000000..0595ccd
--- /dev/null
+++ b/haproxy/proxy/listen/opencontrail/tor.yml
@@ -0,0 +1,19 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        contrail_tor01:
+          type: contrail-tor
+          service_name: contrail
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: 6631
+          servers:
+          - name: sw01
+            host: ${_param:cluster_node01_address}
+            port: 6632
+            params: check
+          - name: sw02
+            host: ${_param:cluster_node02_address}
+            port: 6632
+            params: check backup
diff --git a/haproxy/proxy/listen/openstack/keystone.yml b/haproxy/proxy/listen/openstack/barbican.yml
similarity index 79%
copy from haproxy/proxy/listen/openstack/keystone.yml
copy to haproxy/proxy/listen/openstack/barbican.yml
index 17e537e..04251d9 100644
--- a/haproxy/proxy/listen/openstack/keystone.yml
+++ b/haproxy/proxy/listen/openstack/barbican.yml
@@ -2,41 +2,41 @@
   haproxy:
     proxy:
       listen:
-        keystone_public_api:
+        barbican-api:
           type: openstack-service
-          service_name: keystone
+          service_name: barbican
           binds:
           - address: ${_param:cluster_vip_address}
-            port: 5000
+            port: 9311
           servers:
           - name: ctl01
             host: ${_param:cluster_node01_address}
-            port: 5000
+            port: 9311
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
           - name: ctl02
             host: ${_param:cluster_node02_address}
-            port: 5000
+            port: 9311
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
           - name: ctl03
             host: ${_param:cluster_node03_address}
-            port: 5000
+            port: 9311
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-        keystone_admin_api:
+        barbican-admin-api:
           type: openstack-service
-          service_name: keystone
+          service_name: barbican
           binds:
           - address: ${_param:cluster_vip_address}
-            port: 35357
+            port: 9312
           servers:
           - name: ctl01
             host: ${_param:cluster_node01_address}
-            port: 35357
+            port: 9312
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
           - name: ctl02
             host: ${_param:cluster_node02_address}
-            port: 35357
+            port: 9312
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
           - name: ctl03
             host: ${_param:cluster_node03_address}
-            port: 35357
+            port: 9312
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
\ No newline at end of file
diff --git a/haproxy/proxy/listen/openstack/galera/clustercheck.yml b/haproxy/proxy/listen/openstack/galera/clustercheck.yml
new file mode 100644
index 0000000..f09e404
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/galera/clustercheck.yml
@@ -0,0 +1,12 @@
+parameters:
+  _param:
+    haproxy_params_check: 'check port 9200'
+  haproxy:
+    proxy:
+      listen:
+        mysql_cluster:
+          # mysql clustercheck service at port 9200 is in conflict
+          # with regular haproxy mysql-check option on port 3306
+          health-check:
+            mysql:
+              enabled: False
diff --git a/haproxy/proxy/listen/openstack/galera.yml b/haproxy/proxy/listen/openstack/galera/init.yml
similarity index 67%
rename from haproxy/proxy/listen/openstack/galera.yml
rename to haproxy/proxy/listen/openstack/galera/init.yml
index 7298cfc..c9bd41c 100644
--- a/haproxy/proxy/listen/openstack/galera.yml
+++ b/haproxy/proxy/listen/openstack/galera/init.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    haproxy_params_check: 'check'
   haproxy:
     proxy:
       timeout:
@@ -19,12 +21,12 @@
           - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 3306
-            params: check inter 20s fastinter 2s downinter 2s rise 3 fall 3
+            params: ${_param:haproxy_params_check} inter 20s fastinter 2s downinter 2s rise 3 fall 3
           - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 3306
-            params: backup check inter 20s fastinter 2s downinter 2s rise 3 fall 3
+            params: backup ${_param:haproxy_params_check} inter 20s fastinter 2s downinter 2s rise 3 fall 3
           - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 3306
-            params: backup check inter 20s fastinter 2s downinter 2s rise 3 fall 3
+            params: backup ${_param:haproxy_params_check} inter 20s fastinter 2s downinter 2s rise 3 fall 3
diff --git a/haproxy/proxy/listen/openstack/keystone.yml b/haproxy/proxy/listen/openstack/keystone/init.yml
similarity index 90%
rename from haproxy/proxy/listen/openstack/keystone.yml
rename to haproxy/proxy/listen/openstack/keystone/init.yml
index 17e537e..4359f60 100644
--- a/haproxy/proxy/listen/openstack/keystone.yml
+++ b/haproxy/proxy/listen/openstack/keystone/init.yml
@@ -3,8 +3,6 @@
     proxy:
       listen:
         keystone_public_api:
-          type: openstack-service
-          service_name: keystone
           binds:
           - address: ${_param:cluster_vip_address}
             port: 5000
@@ -22,8 +20,6 @@
             port: 5000
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
         keystone_admin_api:
-          type: openstack-service
-          service_name: keystone
           binds:
           - address: ${_param:cluster_vip_address}
             port: 35357
@@ -39,4 +35,4 @@
           - name: ctl03
             host: ${_param:cluster_node03_address}
             port: 35357
-            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
\ No newline at end of file
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/openstack/keystone/standalone.yml b/haproxy/proxy/listen/openstack/keystone/standalone.yml
new file mode 100644
index 0000000..c454583
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/keystone/standalone.yml
@@ -0,0 +1,12 @@
+classes:
+- system.haproxy.proxy.listen.openstack.keystone
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        keystone_public_api:
+          type: openstack-service
+          service_name: keystone
+        keystone_admin_api:
+          type: openstack-service
+          service_name: keystone
diff --git a/haproxy/proxy/listen/openstack/keystone/wsgi.yml b/haproxy/proxy/listen/openstack/keystone/wsgi.yml
new file mode 100644
index 0000000..efefe8b
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/keystone/wsgi.yml
@@ -0,0 +1,29 @@
+classes:
+- system.haproxy.proxy.listen.openstack.keystone
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        keystone_public_api:
+          mode: http
+          options:
+            - httpchk
+            - httpclose
+            - httplog
+          sticks:
+            - stick on src
+            - stick-table type ip size 200k expire 2m
+        keystone_admin_api:
+          mode: http
+          options:
+            - httpchk
+            - httpclose
+            - httplog
+          sticks:
+            - stick on src
+            - stick-table type ip size 200k expire 2m
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: 35357
+            ssl:
+              enabled: false
diff --git a/haproxy/proxy/listen/openstack/nova.yml b/haproxy/proxy/listen/openstack/nova.yml
index 3865a82..efffee0 100644
--- a/haproxy/proxy/listen/openstack/nova.yml
+++ b/haproxy/proxy/listen/openstack/nova.yml
@@ -2,26 +2,6 @@
   haproxy:
     proxy:
       listen:
-        nova_ec2_api:
-          type: general-service
-          service_name: nova
-          check: false
-          binds:
-          - address: ${_param:cluster_vip_address}
-            port: 8773
-          servers:
-          - name: ctl01
-            host: ${_param:cluster_node01_address}
-            port: 8773
-            params: check
-          - name: ctl02
-            host: ${_param:cluster_node02_address}
-            port: 8773
-            params: check
-          - name: ctl03
-            host: ${_param:cluster_node03_address}
-            port: 8773
-            params: check
         nova_api:
           type: openstack-service
           service_name: nova
diff --git a/haproxy/proxy/listen/oss/elasticsearch.yml b/haproxy/proxy/listen/oss/elasticsearch.yml
index 3a4c98e..b3b7e64 100644
--- a/haproxy/proxy/listen/oss/elasticsearch.yml
+++ b/haproxy/proxy/listen/oss/elasticsearch.yml
@@ -60,4 +60,4 @@
             - name: ${_param:cluster_node03_name}
               host: ${_param:cluster_node03_address}
               port: ${_param:haproxy_elasticsearch_binary_exposed_port}
-              params: backup check
\ No newline at end of file
+              params: backup check
diff --git a/haproxy/proxy/listen/oss/rundeck.yml b/haproxy/proxy/listen/oss/rundeck.yml
index fbabb38..120a9ea 100644
--- a/haproxy/proxy/listen/oss/rundeck.yml
+++ b/haproxy/proxy/listen/oss/rundeck.yml
@@ -2,6 +2,7 @@
   _param:
     haproxy_rundeck_bind_host: ${_param:haproxy_bind_address}
     haproxy_rundeck_bind_port: 4440
+    haproxy_rundeck_exposed_port: 14440
     haproxy_rundeck_ssl:
       enabled: false
   haproxy:
@@ -25,13 +26,13 @@
           servers:
             - name: ${_param:cluster_node01_name}
               host: ${_param:cluster_node01_address}
-              port: 14440
+              port: ${_param:haproxy_rundeck_exposed_port}
               params: check
             - name: ${_param:cluster_node02_name}
               host: ${_param:cluster_node02_address}
-              port: 14440
+              port: ${_param:haproxy_rundeck_exposed_port}
               params: backup check
             - name: ${_param:cluster_node03_name}
               host: ${_param:cluster_node03_address}
-              port: 14440
+              port: ${_param:haproxy_rundeck_exposed_port}
               params: backup check
diff --git a/haproxy/proxy/listen/radosgw.yml b/haproxy/proxy/listen/radosgw.yml
index 369306b..ecdeb6b 100644
--- a/haproxy/proxy/listen/radosgw.yml
+++ b/haproxy/proxy/listen/radosgw.yml
@@ -19,8 +19,8 @@
             - name: ${_param:cluster_node02_hostname}
               host: ${_param:cluster_node02_address}
               port: ${_param:haproxy_radosgw_source_port}
-              params: backup check
+              params: check
             - name: ${_param:cluster_node03_hostname}
               host: ${_param:cluster_node03_address}
               port: ${_param:haproxy_radosgw_source_port}
-              params: backup check
+              params: check
diff --git a/haproxy/proxy/listen/stacklight/elasticsearch.yml b/haproxy/proxy/listen/stacklight/elasticsearch.yml
index 531d647..582de6a 100644
--- a/haproxy/proxy/listen/stacklight/elasticsearch.yml
+++ b/haproxy/proxy/listen/stacklight/elasticsearch.yml
@@ -1,4 +1,10 @@
 parameters:
+  _param:
+    haproxy_elasticsearch_bind_host: ${_param:cluster_vip_address}
+    haproxy_elasticsearch_http_bind_port: 9200
+    haproxy_elasticsearch_http_exposed_port: 9200
+    haproxy_elasticsearch_binary_bind_port: 9300
+    haproxy_elasticsearch_binary_exposed_port: 9300
   haproxy:
     proxy:
       listen:
@@ -11,18 +17,40 @@
             - dontlog-normal
           balance: roundrobin
           binds:
-            - address: ${_param:cluster_vip_address}
-              port: 9200
+            - address: ${_param:haproxy_elasticsearch_bind_host}
+              port: ${_param:haproxy_elasticsearch_http_bind_port}
           servers:
             - name: ${_param:cluster_node01_hostname}
               host: ${_param:cluster_node01_address}
-              port: 9200
+              port: ${_param:haproxy_elasticsearch_http_exposed_port}
               params: 'check inter 10s fastinter 2s downinter 3s rise 3 fall 3'
             - name: ${_param:cluster_node02_hostname}
               host: ${_param:cluster_node02_address}
-              port: 9200
+              port: ${_param:haproxy_elasticsearch_http_exposed_port}
               params: 'check inter 10s fastinter 2s downinter 3s rise 3 fall 3'
             - name: ${_param:cluster_node03_hostname}
               host: ${_param:cluster_node03_address}
-              port: 9200
+              port: ${_param:haproxy_elasticsearch_http_exposed_port}
               params: 'check inter 10s fastinter 2s downinter 3s rise 3 fall 3'
+        elasticsearch_binary:
+          mode: tcp
+          options:
+            - tcpka
+            - tcplog
+          balance: source
+          binds:
+            - address: ${_param:cluster_vip_address}
+              port: ${_param:haproxy_elasticsearch_binary_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_hostname}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_elasticsearch_binary_exposed_port}
+              params: 'check'
+            - name: ${_param:cluster_node02_hostname}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_elasticsearch_binary_exposed_port}
+              params: 'check'
+            - name: ${_param:cluster_node03_hostname}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_elasticsearch_binary_exposed_port}
+              params: 'check'
diff --git a/haproxy/proxy/listen/stacklight/influxdb_relay.yml b/haproxy/proxy/listen/stacklight/influxdb_relay.yml
new file mode 100644
index 0000000..bb3dd81
--- /dev/null
+++ b/haproxy/proxy/listen/stacklight/influxdb_relay.yml
@@ -0,0 +1,53 @@
+parameters:
+  _param:
+    cluster_influxdb_port: 8086
+  haproxy:
+    proxy:
+      listen:
+        influxdb_relay:
+          mode: http
+          format: end
+          binds:
+            - address: ${_param:cluster_vip_address}
+              port: ${_param:cluster_influxdb_port}
+          acls:
+            - name: influxdb
+              conditions:
+                - type:  path_beg
+                  condition: /query
+                  # InfluxDB backends for read requests
+              options:
+                - "httpchk GET /ping"
+                - httplog
+                - dontlog-normal
+              servers:
+                - name: ${_param:cluster_node01_hostname}
+                  host: ${_param:cluster_node01_address}
+                  port: 8086
+                  params: 'check'
+                - name: ${_param:cluster_node02_hostname}
+                  host: ${_param:cluster_node02_address}
+                  port: 8086
+                  params: 'check'
+                - name: ${_param:cluster_node03_hostname}
+                  host: ${_param:cluster_node03_address}
+                  port: 8086
+                  params: 'check'
+          options:
+            - "httpchk GET /ping"
+            - httplog
+            - dontlog-normal
+          # InfluxDB relay backends for write requests
+          servers:
+            - name: ${_param:cluster_node01_hostname}
+              host: ${_param:cluster_node01_address}
+              port: 9096
+              params: 'check'
+            - name: ${_param:cluster_node02_hostname}
+              host: ${_param:cluster_node02_address}
+              port: 9096
+              params: 'check'
+            - name: ${_param:cluster_node03_hostname}
+              host: ${_param:cluster_node03_address}
+              port: 9096
+              params: 'check'
diff --git a/haproxy/proxy/listen/stacklight/kibana.yml b/haproxy/proxy/listen/stacklight/kibana.yml
index e92e38a..e244fb1 100644
--- a/haproxy/proxy/listen/stacklight/kibana.yml
+++ b/haproxy/proxy/listen/stacklight/kibana.yml
@@ -1,4 +1,10 @@
 parameters:
+  _param:
+    haproxy_kibana_bind_host: ${_param:cluster_vip_address}
+    haproxy_kibana_bind_port: ${_param:cluster_kibana_port}
+    haproxy_kibana_exposed_port: ${_param:cluster_kibana_port}
+    haproxy_kibana_ssl:
+      enabled: false
   haproxy:
     proxy:
       listen:
@@ -10,19 +16,23 @@
             - prefer-last-server
             - dontlog-normal
           balance: roundrobin
+          http_request:
+            - action: "add-header X-Forwarded-Proto https"
+              condition: "if { ssl_fc }"
           binds:
-            - address: ${_param:cluster_vip_address}
-              port: 5601
+            - address: ${_param:haproxy_kibana_bind_host}
+              port: ${_param:haproxy_kibana_bind_port}
+              ssl: ${_param:haproxy_kibana_ssl}
           servers:
             - name: ${_param:cluster_node01_hostname}
               host: ${_param:cluster_node01_address}
-              port: 5601
+              port: ${_param:haproxy_kibana_exposed_port}
               params: 'check inter 10s fastinter 2s downinter 3s rise 3 fall 3'
             - name: ${_param:cluster_node02_hostname}
               host: ${_param:cluster_node02_address}
-              port: 5601
+              port: ${_param:haproxy_kibana_exposed_port}
               params: 'check inter 10s fastinter 2s downinter 3s rise 3 fall 3'
             - name: ${_param:cluster_node03_hostname}
               host: ${_param:cluster_node03_address}
-              port: 5601
+              port: ${_param:haproxy_kibana_exposed_port}
               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 ee5df33..8e38f4f 100644
--- a/heat/server/cluster.yml
+++ b/heat/server/cluster.yml
@@ -6,6 +6,12 @@
 parameters:
   _param:
     cluster_public_protocol: https
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   heat:
     server:
       stack_domain_admin:
diff --git a/heat/server/single.yml b/heat/server/single.yml
index d097605..cd548bf 100644
--- a/heat/server/single.yml
+++ b/heat/server/single.yml
@@ -1,6 +1,12 @@
 classes:
 - service.heat.server.single
 parameters:
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   heat:
     server:
       stack_domain_admin:
diff --git a/helm/analytics_pipeline/hdfs.yml b/helm/analytics_pipeline/hdfs.yml
new file mode 100644
index 0000000..64e0cef
--- /dev/null
+++ b/helm/analytics_pipeline/hdfs.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    analytics_hdfs_release: ${_param:analytics_release_prefix}hdfs
+    analytics_hdfs_address: hdfs-namenode-${_param:analytics_hdfs_release}-0.hdfs-namenode-${_param:analytics_hdfs_release}
+  helm:
+    client:
+      releases:
+        analytics-pipeline-hdfs:
+          enabled: ${_param:analytics_enabled}
+          name: ${_param:analytics_hdfs_release}
+          chart: ${_param:analytics_repo}/hdfs
+          values:
+            datanode:
+              replicas: 3
+              antiAffinity: soft
diff --git a/helm/analytics_pipeline/init.yml b/helm/analytics_pipeline/init.yml
new file mode 100644
index 0000000..f994efa
--- /dev/null
+++ b/helm/analytics_pipeline/init.yml
@@ -0,0 +1,19 @@
+classes:
+- system.helm.analytics_pipeline.zookeeper
+- system.helm.analytics_pipeline.kafka
+- system.helm.analytics_pipeline.spark
+- system.helm.analytics_pipeline.hdfs
+- system.helm.analytics_pipeline.tweepub
+- system.helm.analytics_pipeline.tweetics
+- system.helm.analytics_pipeline.tweeviz
+- service.helm.client
+parameters:
+  _param:
+    analytics_enabled: true
+    analytics_repo: mirantisworkloads
+    analytics_release_prefix: analytics-pipeline-
+    analytics_kafka_replicas: 3
+  helm:
+    client:
+      repos:
+        mirantisworkloads: https://mirantisworkloads.storage.googleapis.com/
diff --git a/helm/analytics_pipeline/kafka.yml b/helm/analytics_pipeline/kafka.yml
new file mode 100644
index 0000000..3c88299
--- /dev/null
+++ b/helm/analytics_pipeline/kafka.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    analytics_kafka_release: ${_param:analytics_release_prefix}kafka
+    analytics_kafka_address: kafka-${_param:analytics_kafka_release}-0.kafka-${_param:analytics_kafka_release}:9092,kafka-${_param:analytics_kafka_release}-1.kafka-${_param:analytics_kafka_release}:9092,kafka-${_param:analytics_kafka_release}-2.kafka-${_param:analytics_kafka_release}:9092
+  helm:
+    client:
+      releases:
+        analytics-pipeline-kafka:
+          enabled: ${_param:analytics_enabled}
+          name: ${_param:analytics_kafka_release}
+          chart: ${_param:analytics_repo}/kafka
+          values:
+            replicas: ${_param:analytics_kafka_replicas}
+            antiAffinity: soft
+            zookeeper:
+              deployChart: false
+              externalAddress: ${_param:analytics_zookeeper_address}
diff --git a/helm/analytics_pipeline/spark.yml b/helm/analytics_pipeline/spark.yml
new file mode 100644
index 0000000..aeb2856
--- /dev/null
+++ b/helm/analytics_pipeline/spark.yml
@@ -0,0 +1,20 @@
+parameters:
+  _param:
+    analytics_spark_release: ${_param:analytics_release_prefix}spark
+    analytics_spark_address: spark-master-${_param:analytics_spark_release}-0.spark-master-${_param:analytics_spark_release}:7077,spark-master-${_param:analytics_spark_release}-1.spark-master-${_param:analytics_spark_release}:7077
+  helm:
+    client:
+      releases:
+        analytics-pipeline-spark:
+          enabled: ${_param:analytics_enabled}
+          name: ${_param:analytics_spark_release}
+          chart: ${_param:analytics_repo}/spark
+          values:
+            spark:
+              master:
+                replicas: 1
+              worker:
+                replicas: 3
+            zookeeper:
+              deployChart: false
+              externalAddress: ${_param:analytics_zookeeper_address}
diff --git a/helm/analytics_pipeline/tweepub.yml b/helm/analytics_pipeline/tweepub.yml
new file mode 100644
index 0000000..42678a3
--- /dev/null
+++ b/helm/analytics_pipeline/tweepub.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    analytics_tweepub_release: ${_param:analytics_release_prefix}tweepub
+  helm:
+    client:
+      releases:
+        analytics-pipeline-tweepub:
+          enabled: ${_param:analytics_enabled}
+          name: ${_param:analytics_tweepub_release}
+          chart: ${_param:analytics_repo}/tweepub
+          values:
+            twitter:
+              appKey: ${_param:analytics_twitter_app_key}
+              appSecret: ${_param:analytics_twitter_app_secret}
+              tokenKey: ${_param:analytics_twitter_token_key}
+              tokenSecret: ${_param:analytics_twitter_token_secret}
+
+              # San Francisco, Boston, New York
+              locations: -71.4415,41.9860,-70.4747,42.9041,-122.75,36.8,-121.75,37.8,-74,40,-73,41
+            kafka:
+              deployChart: false
+              externalAddress: ${_param:analytics_kafka_address}
+              topic: twitter-stream
diff --git a/helm/analytics_pipeline/tweetics.yml b/helm/analytics_pipeline/tweetics.yml
new file mode 100644
index 0000000..de438bf
--- /dev/null
+++ b/helm/analytics_pipeline/tweetics.yml
@@ -0,0 +1,27 @@
+parameters:
+  _param:
+    analytics_tweetics_release: ${_param:analytics_release_prefix}tweetics
+  helm:
+    client:
+      releases:
+        analytics-pipeline-tweetics:
+          enabled: ${_param:analytics_enabled}
+          name: ${_param:analytics_tweetics_release}
+          chart: ${_param:analytics_repo}/tweetics
+          values:
+            minHashtagCounts: 0
+            zookeeper:
+              deployChart: false
+              externalAddress: ${_param:analytics_zookeeper_address}
+            kafka:
+              deployChart: false
+              externalAddress: ${_param:analytics_kafka_address}
+              topic: twitter-stream
+            spark:
+              deployChart: false
+              externalAddress: ${_param:analytics_spark_address}
+            storage: hdfs
+            hdfs:
+              deployChart: false
+              externalAddress: ${_param:analytics_hdfs_address}
+              path: /twitter
diff --git a/helm/analytics_pipeline/tweeviz.yml b/helm/analytics_pipeline/tweeviz.yml
new file mode 100644
index 0000000..d8f7aef
--- /dev/null
+++ b/helm/analytics_pipeline/tweeviz.yml
@@ -0,0 +1,19 @@
+parameters:
+  _param:
+    analytics_tweeviz_release: ${_param:analytics_release_prefix}tweeviz
+  helm:
+    client:
+      releases:
+        analytics-pipeline-tweeviz:
+          enabled: ${_param:analytics_enabled}
+          name: ${_param:analytics_tweeviz_release}
+          chart: ${_param:analytics_repo}/tweeviz
+          values:
+            minPopularity: 1
+            topListSize: 25
+            storage: hdfs
+            hdfs:
+              deployChart: false
+              externalAddress: ${_param:analytics_hdfs_address}
+              path: /
+              externalPort: 8020
diff --git a/helm/analytics_pipeline/zookeeper.yml b/helm/analytics_pipeline/zookeeper.yml
new file mode 100644
index 0000000..698510d
--- /dev/null
+++ b/helm/analytics_pipeline/zookeeper.yml
@@ -0,0 +1,14 @@
+parameters:
+  _param:
+    analytics_zookeeper_release: ${_param:analytics_release_prefix}zookeeper
+    analytics_zookeeper_address: zk-${_param:analytics_zookeeper_release}-0.zk-${_param:analytics_zookeeper_release}:2181,zk-${_param:analytics_zookeeper_release}-1.zk-${_param:analytics_zookeeper_release}:2181,zk-${_param:analytics_zookeeper_release}-2.zk-${_param:analytics_zookeeper_release}:2181
+  helm:
+    client:
+      releases:
+        analytics-pipeline-zookeeper:
+          enabled: ${_param:analytics_enabled}
+          name: ${_param:analytics_zookeeper_release}
+          chart: ${_param:analytics_repo}/zookeeper
+          values:
+            replicas: 3
+            antiAffinity: soft
diff --git a/influxdb/client/database/ceilometer.yml b/influxdb/client/database/ceilometer.yml
new file mode 100644
index 0000000..88d6a07
--- /dev/null
+++ b/influxdb/client/database/ceilometer.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    influxdb_ceilometer_rp_duration: 30d
+  influxdb:
+    client:
+      database:
+        ceilometer:
+          enabled: true
+          name: ceilometer
+          retention_policy:
+            - name: ceilometer
+              is_default: true
+              duration: ${_param:influxdb_ceilometer_rp_duration}
+              replication: 1
+      user:
+        ceilometer:
+          enabled: true
+          name: ceilometer
+          password: ${_param:ceilometer_influxdb_password}
+      grant:
+        ceilometer_all:
+          enabled: true
+          user: ceilometer
+          database: ceilometer
+          privilege: all
diff --git a/influxdb/client/database/prometheus.yml b/influxdb/client/database/prometheus.yml
new file mode 100644
index 0000000..991fbd2
--- /dev/null
+++ b/influxdb/client/database/prometheus.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    influxdb_prometheus_rp_duration: 30d
+  influxdb:
+    client:
+      database:
+        prometheus:
+          enabled: true
+          name: prometheus
+          retention_policy:
+          - name: lma
+            is_default: true
+            duration: ${_param:influxdb_prometheus_rp_duration}
+            replication: 1
+      user:
+        lma:
+          enabled: true
+          name: lma
+          password: ${_param:influxdb_stacklight_password}
+      grant:
+        lma_all_on_prometheus:
+          enabled: true
+          user: lma
+          database: prometheus
+          privilege: all
diff --git a/influxdb/client/database/stacklight.yml b/influxdb/client/database/stacklight.yml
new file mode 100644
index 0000000..76b8e60
--- /dev/null
+++ b/influxdb/client/database/stacklight.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    influxdb_stacklight_rp_duration: 30d
+  influxdb:
+    client:
+      database:
+        lma:
+          enabled: true
+          name: lma
+          retention_policy:
+          - name: lma
+            is_default: true
+            duration: ${_param:influxdb_stacklight_rp_duration}
+            replication: 1
+      user:
+        lma:
+          enabled: true
+          name: lma
+          password: ${_param:influxdb_stacklight_password}
+      grant:
+        lma_all_on_lma:
+          enabled: true
+          user: lma
+          database: lma
+          privilege: all
diff --git a/influxdb/client/init.yml b/influxdb/client/init.yml
new file mode 100644
index 0000000..8c66f1b
--- /dev/null
+++ b/influxdb/client/init.yml
@@ -0,0 +1,13 @@
+classes:
+- service.influxdb.client
+parameters:
+  _param:
+    influxdb_client_port: 8086
+  influxdb:
+    client:
+      server:
+        protocol: http
+        host: ${_param:influxdb_client_host}
+        port: ${_param:influxdb_client_port}
+        user: root
+        password: ${_param:influxdb_client_password}
diff --git a/influxdb/database/prometheus.yml b/influxdb/database/prometheus.yml
new file mode 100644
index 0000000..3e3d63b
--- /dev/null
+++ b/influxdb/database/prometheus.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    influxdb_prometheus_database_retention: 30d
+  influxdb:
+    server:
+      database:
+        prometheus:
+          enabled: true
+          name: prometheus
+          retention_policy:
+          - name: lma
+            is_default: true
+            duration: ${_param:influxdb_prometheus_database_retention}
+            replication: 1
+      user:
+        lma:
+          enabled: true
+          name: lma
+          password: ${_param:influxdb_stacklight_password}
+      grant:
+        grant_lma_all_on_prometheus:
+          enabled: true
+          user: lma
+          database: prometheus
+          privilege: all
diff --git a/influxdb/database/stacklight.yml b/influxdb/database/stacklight.yml
index d741380..9eb2eb0 100644
--- a/influxdb/database/stacklight.yml
+++ b/influxdb/database/stacklight.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    influxdb_lma_database_retention: 30d
   influxdb:
     server:
       database:
@@ -8,7 +10,7 @@
           retention_policy:
           - name: lma
             is_default: true
-            duration: 30d
+            duration: ${_param:influxdb_lma_database_retention}
             replication: 1
       user:
         lma:
@@ -16,7 +18,7 @@
           name: lma
           password: ${_param:influxdb_stacklight_password}
       grant:
-        grant_lma_all:
+        grant_lma_all_on_lma:
           enabled: true
           user: lma
           database: lma
diff --git a/influxdb/relay/cluster.yml b/influxdb/relay/cluster.yml
new file mode 100644
index 0000000..03639e1
--- /dev/null
+++ b/influxdb/relay/cluster.yml
@@ -0,0 +1,2 @@
+classes:
+- service.influxdb.relay.cluster
diff --git a/influxdb/server/container.yml b/influxdb/server/container.yml
new file mode 100644
index 0000000..d7e7df7
--- /dev/null
+++ b/influxdb/server/container.yml
@@ -0,0 +1,19 @@
+classes:
+- service.influxdb.server.container
+parameters:
+  influxdb:
+    server:
+      enabled: true
+      prefix_dir: /srv/volumes/local/influxdb
+      http:
+        enabled: true
+        bind:
+          port: 8086
+      admin:
+        enabled: true
+        bind:
+          port: 8083
+        user:
+          enabled: true
+          name: 'root'
+          password: ${_param:influxdb_admin_password}
diff --git a/ironic/api/cluster.yml b/ironic/api/cluster.yml
index c3a7901..5522f3f 100644
--- a/ironic/api/cluster.yml
+++ b/ironic/api/cluster.yml
@@ -1,6 +1,12 @@
 classes:
 - service.ironic.api.cluster
 parameters:
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   ironic:
     api:
       enabled: true
diff --git a/ironic/api/single.yml b/ironic/api/single.yml
index 0800579..ed73e90 100644
--- a/ironic/api/single.yml
+++ b/ironic/api/single.yml
@@ -1,6 +1,12 @@
 classes:
 - service.ironic.api.single
 parameters:
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   ironic:
     api:
       bind:
diff --git a/ironic/conductor/cluster.yml b/ironic/conductor/cluster.yml
index ba0c538..063719c 100644
--- a/ironic/conductor/cluster.yml
+++ b/ironic/conductor/cluster.yml
@@ -1,6 +1,12 @@
 classes:
 - service.ironic.conductor.cluster
 parameters:
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   ironic:
     conductor:
       api_url: 'http://${_param:cluster_baremetal_vip_address}:6385'
diff --git a/ironic/conductor/single.yml b/ironic/conductor/single.yml
index 69e6c20..d827129 100644
--- a/ironic/conductor/single.yml
+++ b/ironic/conductor/single.yml
@@ -1,6 +1,12 @@
 classes:
 - service.ironic.conductor.single
 parameters:
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   ironic:
     conductor:
       enabled: true
diff --git a/jenkins/client/approved_scripts.yml b/jenkins/client/approved_scripts.yml
index 4fa5de0..daafadd 100644
--- a/jenkins/client/approved_scripts.yml
+++ b/jenkins/client/approved_scripts.yml
@@ -12,6 +12,9 @@
         - method groovy.json.JsonSlurperClassic parseText java.lang.String
         - method groovy.lang.GString getBytes
         - method groovy.lang.GroovyObject getProperty java.lang.String
+        - method groovy.util.Node attributes
+        - method groovy.util.XmlParser parse java.io.File
+        - method groovy.util.XmlParser parseText java.lang.String
         - method hudson.PluginManager getPlugins
         - method hudson.PluginWrapper getShortName
         - method hudson.model.Item getName
@@ -46,6 +49,7 @@
         - method java.net.URLConnection setRequestProperty java.lang.String java.lang.String
         - method java.util.Collection remove java.lang.Object
         - method java.util.Collection stream
+        - method java.util.Date getTime
         - method java.util.LinkedHashMap$LinkedHashIterator hasNext
         - method java.util.List subList int int
         - method java.util.Map remove java.lang.Object
@@ -56,6 +60,9 @@
         - method java.util.regex.Matcher matches
         - method java.util.regex.Pattern matcher java.lang.CharSequence
         - method java.util.stream.Stream collect java.util.stream.Collector
+        - method java.util.Calendar add int int
+        - method java.util.Calendar getTime
+        - method java.util.Date before java.util.Date
         - method jenkins.model.Jenkins getItemByFullName java.lang.String
         - method jenkins.model.Jenkins getPluginManager
         - method org.jenkinsci.plugins.workflow.job.WorkflowRun doStop
@@ -65,6 +72,7 @@
         - new groovy.json.JsonBuilder
         - new groovy.json.JsonBuilder java.lang.Object
         - new groovy.json.JsonSlurperClassic
+        - new groovy.util.XmlParser
         - new java.io.File java.lang.String
         - new java.io.IOException java.lang.String
         - new java.io.OutputStreamWriter java.io.OutputStream
@@ -79,6 +87,7 @@
         - new java.util.HashMap
         - staticField groovy.io.FileType FILES
         - staticMethod com.cloudbees.plugins.credentials.CredentialsProvider lookupCredentials java.lang.Class hudson.model.ItemGroup
+        - staticMethod java.lang.Double parseDouble java.lang.String
         - staticMethod java.lang.Integer valueOf int
         - staticMethod java.lang.Integer valueOf java.lang.String
         - staticMethod java.lang.Math min int int
@@ -91,6 +100,7 @@
         - staticMethod java.util.regex.Pattern quote java.lang.String
         - staticMethod java.util.stream.Collectors joining java.lang.CharSequence
         - staticMethod jenkins.model.Jenkins getInstance
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods asBoolean java.util.regex.Matcher
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods collect java.util.Map groovy.lang.Closure
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods eachFile java.io.File groovy.io.FileType groovy.lang.Closure
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods find java.util.Collection groovy.lang.Closure
@@ -115,10 +125,12 @@
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods takeRight java.util.List int
         - staticMethod org.codehaus.groovy.runtime.EncodingGroovyMethods encodeBase64 byte[]
         - staticMethod org.codehaus.groovy.runtime.ScriptBytecodeAdapter bitwiseNegate java.lang.Object
-        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods split java.lang.String
-        - staticMethod java.lang.Integer valueOf int
-        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods leftShift java.lang.StringBuffer java.lang.Object
-        - new java.lang.StringBuilder
-        - new java.lang.StringBuilder int
-        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods sort java.util.Collection
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods toBoolean java.lang.Boolean
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getAt java.lang.Object java.lang.String
+        - method java.io.File listFiles
+        - method java.lang.String concat java.lang.String
+        - method org.jenkinsci.plugins.workflow.steps.FlowInterruptedException getCauses
+        - method org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper getRawBuild
+        - method hudson.model.Actionable getAction java.lang.Class
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods toSorted java.lang.Iterable
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods intersect java.util.List java.lang.Iterable
diff --git a/jenkins/client/init.yml b/jenkins/client/init.yml
index b37c48f..5e3f4a1 100644
--- a/jenkins/client/init.yml
+++ b/jenkins/client/init.yml
@@ -16,7 +16,6 @@
         username: ${_param:jenkins_client_user}
         password: ${_param:jenkins_client_password}
       plugin:
-        ansicolor: {}
         artifactory: {}
         build-blocker-plugin: {}
         build-monitor-plugin: {}
@@ -31,6 +30,7 @@
         gerrit-trigger: {}
         git: {}
         heavy-job: {}
+        jobConfigHistory: {}
         ldap: {}
         matrix-auth: {}
         monitoring: {}
@@ -39,7 +39,6 @@
         simple-theme-plugin: {}
         slack: {}
         test-stability: {}
-        timestamper: {}
         workflow-cps: {}
         workflow-remote-loader: {}
         workflow-scm-step:
diff --git a/jenkins/client/job/aptly.yml b/jenkins/client/job/aptly.yml
index c6a5755..256c04a 100644
--- a/jenkins/client/job/aptly.yml
+++ b/jenkins/client/job/aptly.yml
@@ -75,6 +75,9 @@
               RECREATE:
                 type: boolean
                 default: 'false'
+              DUMP_PUBLISH:
+                type: boolean
+                default: 'true'
               DIFF_ONLY:
                 type: boolean
                 default: '{{diff_only}}'
diff --git a/jenkins/client/job/ceph/add-node.yml b/jenkins/client/job/ceph/add-node.yml
new file mode 100644
index 0000000..9fee51e
--- /dev/null
+++ b/jenkins/client/job/ceph/add-node.yml
@@ -0,0 +1,34 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        ceph-add-node:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Ceph - add node"
+          discard:
+            build:
+              keep_num: 50
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: ceph-add-node.groovy
+          param:
+            # general parameters
+            SALT_MASTER_URL:
+              type: string
+              description: URL of Salt master
+              default: "http://${_param:salt_master_host}:6969"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              description: Credentials for login to Salt API
+              default: salt
+            HOST:
+              type: string
+              description: OSD HOST that will be added to Ceph cluster (rgw04*)
+              default: 'rgw04*'
+            HOST_TYPE:
+              type: string
+              description: Type of Ceph node to be added. Valid values are mon/osd/rgw
+              default: 'rgw'
diff --git a/jenkins/client/job/ceph/backend-migration.yml b/jenkins/client/job/ceph/backend-migration.yml
new file mode 100644
index 0000000..a8736a2
--- /dev/null
+++ b/jenkins/client/job/ceph/backend-migration.yml
@@ -0,0 +1,57 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        ceph-backend-migration:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Ceph - backend migration"
+          discard:
+            build:
+              keep_num: 50
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: ceph-backend-migration.groovy
+          param:
+            # general parameters
+            SALT_MASTER_URL:
+              type: string
+              description: URL of Salt master
+              default: "http://${_param:salt_master_host}:6969"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              description: Credentials for login to Salt API
+              default: salt
+            TARGET:
+              type: string
+              description: OSD hosts (minion ids) to be targeted
+              default: 'osd*'
+            OSD:
+              type: string
+              description: OSD ids to be migrated (comma-separated list - 1,2,3)
+              default: '*'
+            ADMIN_HOST:
+              type: string
+              description: Host with admin keyring and access to cluster management
+              default: 'cmn01*'
+            CLUSTER_FLAGS:
+              type: string
+              description: Flags to be aplied before pipeline and after pipeline (comma-separated list)
+            WAIT_FOR_HEALTHY:
+              type: boolean
+              default: 'true'
+              description: Wait for healthy during pipeline
+            PER_OSD_CONTROL:
+              type: boolean
+              default: 'true'
+              description: Set to true if Ceph status verification after every osd disk migration is desired
+            PER_OSD_HOST_CONTROL:
+              type: boolean
+              default: 'true'
+              description: Set to true if Ceph status verificaton after whole OSD host migration is desired
+            ORIGIN_BACKEND:
+              type: string
+              description: Ceph backend before migration
+              default: 'filestore'
diff --git a/jenkins/client/job/ceph/init.yml b/jenkins/client/job/ceph/init.yml
new file mode 100644
index 0000000..19bafca
--- /dev/null
+++ b/jenkins/client/job/ceph/init.yml
@@ -0,0 +1,7 @@
+classes:
+- system.jenkins.client.job.ceph.remove-osd
+- system.jenkins.client.job.ceph.replace-failed-osd
+- system.jenkins.client.job.ceph.add-node
+- system.jenkins.client.job.ceph.remove-node
+- system.jenkins.client.job.ceph.upgrade
+- system.jenkins.client.job.ceph.backend-migration
diff --git a/jenkins/client/job/ceph/remove-node.yml b/jenkins/client/job/ceph/remove-node.yml
new file mode 100644
index 0000000..4a5efe3
--- /dev/null
+++ b/jenkins/client/job/ceph/remove-node.yml
@@ -0,0 +1,46 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        ceph-remove-node:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Ceph - remove node"
+          discard:
+            build:
+              keep_num: 50
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: ceph-remove-node.groovy
+          param:
+            # general parameters
+            SALT_MASTER_URL:
+              type: string
+              description: URL of Salt master
+              default: "http://${_param:salt_master_host}:6969"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              description: Credentials for login to Salt API
+              default: salt
+            HOST:
+              type: string
+              description: OSD HOST that will be removed from Ceph cluster (rgw04*)
+              default: 'rgw04*'
+            HOST_TYPE:
+              type: string
+              description: Type of Ceph node to be removed. Valid values are mon/osd/rgw
+              default: 'rgw'
+            ADMIN_HOST:
+              type: string
+              description: Host with admin keyring and access to cluster management
+              default: 'cmn01*'
+            GENERATE_CRUSHMAP:
+              type: boolean
+              default: 'false'
+              description: Only if removing OSD host. Set to true if crush map file should be updated. Enforce has to happen manually unless it is specifically set to be enforced in pillar.
+            WAIT_FOR_HEALTHY:
+              type: boolean
+              default: 'false'
+              description: Wait for healthy during pipeline
diff --git a/jenkins/client/job/ceph/remove-osd.yml b/jenkins/client/job/ceph/remove-osd.yml
new file mode 100644
index 0000000..af3b9ed
--- /dev/null
+++ b/jenkins/client/job/ceph/remove-osd.yml
@@ -0,0 +1,44 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        ceph-remove-osd:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Ceph - remove OSD"
+          discard:
+            build:
+              keep_num: 50
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: ceph-remove-osd.groovy
+          param:
+            # general parameters
+            SALT_MASTER_URL:
+              type: string
+              description: URL of Salt master
+              default: "http://${_param:salt_master_host}:6969"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              description: Credentials for login to Salt API
+              default: salt
+            HOST:
+              type: string
+              description: OSDs on this HOST will be removed from cluster
+            OSD:
+              type: string
+              description: These OSDs at HOST will be removed (comma-separated list)
+              default: '*'
+            ADMIN_HOST:
+              type: string
+              description: Host with admin keyring and access to cluster management
+              default: 'cmn01*'
+            CLUSTER_FLAGS:
+              type: string
+              description: Flags to be aplied before pipeline and after pipeline (comma-separated list)
+            WAIT_FOR_HEALTHY:
+              type: boolean
+              default: 'false'
+              description: Wait for healthy during pipeline
diff --git a/jenkins/client/job/ceph/replace-failed-osd.yml b/jenkins/client/job/ceph/replace-failed-osd.yml
new file mode 100644
index 0000000..57081ec
--- /dev/null
+++ b/jenkins/client/job/ceph/replace-failed-osd.yml
@@ -0,0 +1,49 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        ceph-replace-failed-osd:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Ceph - replace failed OSD"
+          discard:
+            build:
+              keep_num: 50
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: ceph-replace-failed-osd.groovy
+          param:
+            # general parameters
+            SALT_MASTER_URL:
+              type: string
+              description: URL of Salt master
+              default: "http://${_param:salt_master_host}:6969"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              description: Credentials for login to Salt API
+              default: salt
+            HOST:
+              type: string
+              description: Failed OSDs on this HOST will replaced
+            OSD:
+              type: string
+              description: These OSD IDs at HOST will be replaced (comma-separated list - 1,2,3)
+            DEVICE:
+              type: string
+              description: Comma separated list of failed devices that will be replaced at HOST (/dev/sdb,/dev/sdc)
+            JOURNAL_OR_BLOCKDB_PARTITION:
+              type: string
+              description: Comma separated list of partitions where journal or block_db for the failed devices on this HOST were stored (/dev/sdh2,/dev/sdh3)
+            ADMIN_HOST:
+              type: string
+              description: Host with admin keyring and correct crushmap file in /etc/ceph/crushmap
+              default: 'cmn01*'
+            WAIT_FOR_HEALTHY:
+              type: boolean
+              default: 'false'
+              description: Wait for healthy during pipeline
+            CLUSTER_FLAGS:
+              type: string
+              description: Flags to be aplied before pipeline and after pipeline (comma-separated list)
diff --git a/jenkins/client/job/ceph/upgrade.yml b/jenkins/client/job/ceph/upgrade.yml
new file mode 100644
index 0000000..9b58f3b
--- /dev/null
+++ b/jenkins/client/job/ceph/upgrade.yml
@@ -0,0 +1,74 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        ceph-upgrade:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Ceph - upgrade"
+          discard:
+            build:
+              keep_num: 50
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: ceph-upgrade.groovy
+          param:
+            # general parameters
+            SALT_MASTER_URL:
+              type: string
+              description: URL of Salt master
+              default: "http://${_param:salt_master_host}:6969"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              description: Credentials for login to Salt API
+              default: salt
+            ADMIN_HOST:
+              type: string
+              description: Host with admin keyring and correct crushmap file in /etc/ceph/crushmap
+              default: 'cmn01*'
+            WAIT_FOR_HEALTHY:
+              type: boolean
+              default: 'true'
+              description: Wait for healthy during pipeline
+            CLUSTER_FLAGS:
+              type: string
+              default: 'sortbitwise,noout'
+              description: Flags to be aplied before pipeline and after pipeline (comma-separated list)
+            ORIGIN_RELEASE:
+              type: string
+              description: Ceph release version before upgrade
+              default: 'jewel'
+            TARGET_RELEASE:
+              type: string
+              description: Ceph release version after upgrade
+              default: 'luminous'
+            STAGE_UPGRADE_MON:
+              type: boolean
+              default: 'true'
+              description: Set to True if Ceph mon nodes upgrade is desired
+            STAGE_UPGRADE_MGR:
+              type: boolean
+              default: 'true'
+              description: Set to True if Ceph mgr nodes upgrade or new deploy is desired
+            STAGE_UPGRADE_OSD:
+              type: boolean
+              default: 'true'
+              description: Set to True if Ceph osd nodes upgrade is desired
+            STAGE_UPGRADE_RGW:
+              type: boolean
+              default: 'true'
+              description: Set to True if Ceph rgw nodes upgrade is desired
+            STAGE_UPGRADE_CLIENT:
+              type: boolean
+              default: 'true'
+              description: Set to True if Ceph client nodes upgrade is desired (includes for example ctl/cmp nodes)
+            STAGE_FINALIZE:
+              type: boolean
+              default: 'true'
+              description: Set to True if configs recommended for TARGET_RELEASE should be set after upgrade is done
+            BACKUP_ENABLED:
+              type: boolean
+              default: 'true'
+              description: Set to True if disks of Ceph VMs should be copied before upgrade
diff --git a/jenkins/client/job/custompatches.yml b/jenkins/client/job/custompatches.yml
new file mode 100644
index 0000000..e7a7eed
--- /dev/null
+++ b/jenkins/client/job/custompatches.yml
@@ -0,0 +1,43 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        custompatches:
+          concurrent: true
+          discard:
+            build:
+              keep_num: 20
+          display_name: Custom Patches - find and upload to review
+          name: custom-patches
+          param:
+            GERRIT_URI:
+              type: string
+              default: ''
+              description: "Gerrit URI to the projec"
+            GERRIT_CREDENTIALS:
+              default: mcp-ci-gerrit
+              type: string
+              description: "Name of creadentials to use when connecting to gerrit"
+            TARGET_GERRIT_URI:
+              default: ''
+              type: string
+              description: "Link to the target on gerrit, if not set GERRIT_URI is picked"
+            OLD_BRANCH:
+              default: ''
+              type: string
+              description: "Old branch on GERRIT_URI to take patches from, tupically previous release"
+            NEW_BRANCH:
+              default: ''
+              type: string
+              description: "New branch to compare with and push patches to, tupically current release"
+            DRY_RUN:
+              default: 'false'
+              type: boolean
+              description: "Do not upload custom patches on review, just log them"
+          scm:
+            script: custompatches.groovy
+            type: git
+            url: "${_param:jenkins_gerrit_url}/openstack-ci/openstack-pipelines"
+            credentials: "gerrit"
+          type: workflow-scm
+
diff --git a/jenkins/client/job/debian/packages/extra.yml b/jenkins/client/job/debian/packages/extra.yml
index 7371d3b..13ee191 100644
--- a/jenkins/client/job/debian/packages/extra.yml
+++ b/jenkins/client/job/debian/packages/extra.yml
@@ -97,6 +97,14 @@
               dist: trusty
               build: jmx-exporter
               branch: master
+            - package: python-bitstring
+              dist: trusty
+              build: pipeline
+              branch: debian/trusty
+            - package: libvirt-exporter
+              dist: trusty
+              build: libvirt-exporter
+              branch: master
             - package: librdkafka
               dist: xenial
               build: pipeline
@@ -161,6 +169,26 @@
               dist: xenial
               build: jmx-exporter
               branch: master
+            - package: influxdb-relay
+              dist: xenial
+              build: influxdb-relay
+              branch: master
+            - package: prometheus-relay
+              dist: trusty
+              build: prometheus-relay
+              branch: master
+            - package: prometheus-relay
+              dist: xenial
+              build: prometheus-relay
+              branch: master
+            - package: python-datrie
+              dist: xenial
+              build: pipeline
+              branch: debian/xenial
+            - package: contrail-api-cli
+              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 a57a8ab..322afde 100644
--- a/jenkins/client/job/debian/packages/salt-multi.yml
+++ b/jenkins/client/job/debian/packages/salt-multi.yml
@@ -6,44 +6,64 @@
           name: build-debian-salt-formula-{{name}}-ubuntu-{{dist}}
           jobs:
             - name: ceilometer
+              upload_source_package: false
               dist: trusty
             - name: cinder
+              upload_source_package: false
               dist: trusty
             - name: glance
+              upload_source_package: false
               dist: trusty
             - name: heat
+              upload_source_package: false
               dist: trusty
             - name: horizon
+              upload_source_package: false
               dist: trusty
             - name: keystone
+              upload_source_package: false
               dist: trusty
             - name: kubernetes
+              upload_source_package: false
               dist: trusty
             - name: neutron
+              upload_source_package: false
               dist: trusty
             - name: nova
+              upload_source_package: false
               dist: trusty
             - name: swift
+              upload_source_package: false
               dist: trusty
             - name: ceilometer
+              upload_source_package: true
               dist: xenial
             - name: cinder
+              upload_source_package: true
               dist: xenial
             - name: glance
+              upload_source_package: true
               dist: xenial
             - name: heat
+              upload_source_package: true
               dist: xenial
             - name: horizon
+              upload_source_package: true
               dist: xenial
             - name: keystone
+              upload_source_package: true
               dist: xenial
             - name: kubernetes
+              upload_source_package: true
               dist: xenial
             - name: neutron
+              upload_source_package: true
               dist: xenial
             - name: nova
+              upload_source_package: true
               dist: xenial
             - name: swift
+              upload_source_package: true
               dist: xenial
           template:
             discard:
@@ -117,4 +137,4 @@
                 default: 'true'
               UPLOAD_APTLY:
                 type: boolean
-                default: 'true'
+                default: '{{upload_source_package}}'
diff --git a/jenkins/client/job/debian/packages/salt.yml b/jenkins/client/job/debian/packages/salt.yml
index 1e59811..79fa3ca 100644
--- a/jenkins/client/job/debian/packages/salt.yml
+++ b/jenkins/client/job/debian/packages/salt.yml
@@ -6,404 +6,621 @@
           name: build-debian-salt-formula-{{name}}-ubuntu-{{dist}}
           jobs:
             - name: aodh
+              upload_source_package: false
               dist: trusty
             - name: apache
+              upload_source_package: false
               dist: trusty
             - name: aptcacher
+              upload_source_package: false
               dist: trusty
             - name: aptly
+              upload_source_package: false
               dist: trusty
             - name: artifactory
+              upload_source_package: false
               dist: trusty
             - name: avinetworks
+              upload_source_package: false
               dist: trusty
             - name: backupninja
+              upload_source_package: false
               dist: trusty
             - name: baremetal-simulator
+              upload_source_package: false
               dist: trusty
             - name: billometer
+              upload_source_package: false
               dist: trusty
             - name: bind
+              upload_source_package: false
               dist: trusty
             - name: bird
+              upload_source_package: false
               dist: trusty
             - name: cadf
+              upload_source_package: false
               dist: trusty
             - name: calico
+              upload_source_package: false
               dist: trusty
             - name: cassandra
+              upload_source_package: false
               dist: trusty
             - name: ccp
+              upload_source_package: false
               dist: trusty
             - name: ceph
+              upload_source_package: false
               dist: trusty
             - name: chrony
+              upload_source_package: false
               dist: trusty
             - name: collectd
+              upload_source_package: false
               dist: trusty
             - name: dekapod
+              upload_source_package: false
               dist: trusty
             - name: designate
+              upload_source_package: false
               dist: trusty
             - name: devops-portal
+              upload_source_package: false
               dist: trusty
             - name: docker
+              upload_source_package: false
+              dist: trusty
+            - name: dogtag
+              upload_source_package: false
               dist: trusty
             - name: dovecot
+              upload_source_package: false
               dist: trusty
             - name: elasticsearch
+              upload_source_package: false
               dist: trusty
             - name: etcd
+              upload_source_package: false
+              dist: trusty
+            - name: fluentbit
+              upload_source_package: false
+              dist: trusty
+            - name: fluentd
+              upload_source_package: false
               dist: trusty
             - name: foreman
+              upload_source_package: false
               dist: trusty
             - name: freeipa
+              upload_source_package: false
               dist: trusty
             - name: galera
+              upload_source_package: false
               dist: trusty
             - name: gerrit
+              upload_source_package: false
               dist: trusty
             - name: git
+              upload_source_package: false
               dist: trusty
             - name: gitlab
+              upload_source_package: false
               dist: trusty
             - name: glusterfs
+              upload_source_package: false
               dist: trusty
             - name: grafana
+              upload_source_package: false
               dist: trusty
             - name: graphite
+              upload_source_package: false
               dist: trusty
             - name: haproxy
+              upload_source_package: false
               dist: trusty
             - name: heka
+              upload_source_package: false
               dist: trusty
             - name: influxdb
+              upload_source_package: false
               dist: trusty
             - name: iptables
+              upload_source_package: false
               dist: trusty
             - name: ironic
+              upload_source_package: false
               dist: trusty
             - name: isc-dhcp
+              upload_source_package: false
               dist: trusty
             - name: java
+              upload_source_package: false
               dist: trusty
             - name: jenkins
+              upload_source_package: false
               dist: trusty
             - name: kedb
+              upload_source_package: false
               dist: trusty
             - name: keepalived
+              upload_source_package: false
               dist: trusty
             - name: kibana
+              upload_source_package: false
               dist: trusty
             - name: letsencrypt
+              upload_source_package: false
               dist: trusty
             - name: libvirt
+              upload_source_package: false
               dist: trusty
             - name: linux
+              upload_source_package: false
               dist: trusty
             - name: lldp
+              upload_source_package: false
               dist: trusty
             - name: logrotate
+              upload_source_package: false
               dist: trusty
             - name: maas
+              upload_source_package: false
               dist: trusty
             - name: magnum
+              upload_source_package: false
               dist: trusty
             - name: memcached
+              upload_source_package: false
               dist: trusty
             - name: midonet
+              upload_source_package: false
               dist: trusty
             - name: monasca
+              upload_source_package: false
               dist: trusty
             - name: mongodb
+              upload_source_package: false
               dist: trusty
             - name: murano
+              upload_source_package: false
               dist: trusty
             - name: mysql
+              upload_source_package: false
               dist: trusty
             - name: nagios
+              upload_source_package: false
               dist: trusty
             - name: network
+              upload_source_package: false
               dist: trusty
             - name: nfs
+              upload_source_package: false
               dist: trusty
             - name: nginx
+              upload_source_package: false
               dist: trusty
             - name: nodejs
+              upload_source_package: false
               dist: trusty
             - name: ntp
+              upload_source_package: false
               dist: trusty
             - name: octavia
+              upload_source_package: false
               dist: trusty
             - name: opencontrail
+              upload_source_package: false
               dist: trusty
             - name: openldap
+              upload_source_package: false
               dist: trusty
             - name: openssh
+              upload_source_package: false
               dist: trusty
             - name: openvpn
+              upload_source_package: false
               dist: trusty
             - name: openvstorage
+              upload_source_package: false
               dist: trusty
             - name: owncloud
+              upload_source_package: false
               dist: trusty
             - name: postfix
+              upload_source_package: false
               dist: trusty
             - name: postgresql
+              upload_source_package: false
               dist: trusty
             - name: powerdns
+              upload_source_package: false
               dist: trusty
             - name: pritunl
+              upload_source_package: false
               dist: trusty
             - name: prometheus
+              upload_source_package: false
               dist: trusty
             - name: python
+              upload_source_package: false
               dist: trusty
             - name: rabbitmq
+              upload_source_package: false
               dist: trusty
             - name: reclass
+              upload_source_package: false
               dist: trusty
             - name: redis
+              upload_source_package: false
               dist: trusty
             - name: roundcube
+              upload_source_package: false
               dist: trusty
             - name: rsync
+              upload_source_package: false
               dist: trusty
             - name: rsyslog
+              upload_source_package: false
               dist: trusty
             - name: rundeck
+              upload_source_package: false
               dist: trusty
             - name: sahara
+              upload_source_package: false
               dist: trusty
             - name: salt
+              upload_source_package: false
               dist: trusty
             - name: sensu
+              upload_source_package: false
               dist: trusty
             - name: sentry
+              upload_source_package: false
               dist: trusty
             - name: sphinx
+              upload_source_package: false
               dist: trusty
             - name: spinnaker
+              upload_source_package: false
               dist: trusty
             - name: statsd
+              upload_source_package: false
               dist: trusty
             - name: supervisor
+              upload_source_package: false
               dist: trusty
             - name: taiga
+              upload_source_package: false
               dist: trusty
             - name: telegraf
+              upload_source_package: false
               dist: trusty
             - name: tftpd-hpa
+              upload_source_package: false
               dist: trusty
             - name: varnish
+              upload_source_package: false
               dist: trusty
             - name: xtrabackup
+              upload_source_package: false
               dist: trusty
             - name: zookeeper
+              upload_source_package: false
               dist: trusty
             - name: aodh
+              upload_source_package: true
               dist: xenial
             - name: apache
+              upload_source_package: true
               dist: xenial
             - name: aptcacher
+              upload_source_package: true
               dist: xenial
             - name: aptly
+              upload_source_package: true
               dist: xenial
             - name: artifactory
+              upload_source_package: true
               dist: xenial
             - name: avinetworks
+              upload_source_package: true
+              dist: xenial
+            - name: barbican
+              upload_source_package: true
               dist: xenial
             - name: baremetal-simulator
+              upload_source_package: true
               dist: xenial
             - name: backupninja
+              upload_source_package: true
               dist: xenial
             - name: billometer
+              upload_source_package: true
               dist: xenial
             - name: bind
+              upload_source_package: true
               dist: xenial
             - name: bird
+              upload_source_package: true
               dist: xenial
             - name: cadf
+              upload_source_package: true
               dist: xenial
             - name: calico
+              upload_source_package: true
               dist: xenial
             - name: cassandra
+              upload_source_package: true
               dist: xenial
             - name: ccp
+              upload_source_package: true
               dist: xenial
             - name: ceph
+              upload_source_package: true
               dist: xenial
             - name: chrony
+              upload_source_package: true
               dist: xenial
             - name: collectd
+              upload_source_package: true
               dist: xenial
             - name: dekapod
+              upload_source_package: true
               dist: xenial
             - name: designate
+              upload_source_package: true
               dist: xenial
             - name: devops-portal
+              upload_source_package: true
               dist: xenial
             - name: docker
+              upload_source_package: true
+              dist: xenial
+            - name: dogtag
+              upload_source_package: true
               dist: xenial
             - name: dovecot
+              upload_source_package: true
               dist: xenial
             - name: elasticsearch
+              upload_source_package: true
               dist: xenial
             - name: etcd
+              upload_source_package: true
+              dist: xenial
+            - name: fluentbit
+              upload_source_package: true
               dist: xenial
             - name: foreman
+              upload_source_package: true
               dist: xenial
             - name: freeipa
+              upload_source_package: true
               dist: xenial
             - name: galera
+              upload_source_package: true
               dist: xenial
             - name: gerrit
+              upload_source_package: true
               dist: xenial
             - name: git
+              upload_source_package: true
               dist: xenial
             - name: gitlab
+              upload_source_package: true
               dist: xenial
             - name: glusterfs
+              upload_source_package: true
               dist: xenial
             - name: gnocchi
+              upload_source_package: true
               dist: xenial
             - name: grafana
+              upload_source_package: true
               dist: xenial
             - name: graphite
+              upload_source_package: true
               dist: xenial
             - name: haproxy
+              upload_source_package: true
               dist: xenial
             - name: heka
+              upload_source_package: true
               dist: xenial
             - name: helm
+              upload_source_package: true
               dist: xenial
             - name: influxdb
+              upload_source_package: true
               dist: xenial
             - name: iptables
+              upload_source_package: true
               dist: xenial
             - name: ironic
+              upload_source_package: true
               dist: xenial
             - name: isc-dhcp
+              upload_source_package: true
               dist: xenial
             - name: java
+              upload_source_package: true
               dist: xenial
             - name: jenkins
+              upload_source_package: true
               dist: xenial
             - name: kedb
+              upload_source_package: true
               dist: xenial
             - name: keepalived
+              upload_source_package: true
               dist: xenial
             - name: kibana
+              upload_source_package: true
               dist: xenial
             - name: letsencrypt
+              upload_source_package: true
               dist: xenial
             - name: libvirt
+              upload_source_package: true
               dist: xenial
             - name: linux
+              upload_source_package: true
               dist: xenial
             - name: lldp
+              upload_source_package: true
               dist: xenial
             - name: logrotate
+              upload_source_package: true
               dist: xenial
             - name: maas
+              upload_source_package: true
               dist: xenial
             - name: magnum
+              upload_source_package: true
               dist: xenial
             - name: memcached
+              upload_source_package: true
               dist: xenial
             - name: midonet
+              upload_source_package: true
               dist: xenial
             - name: monasca
+              upload_source_package: true
               dist: xenial
             - name: mongodb
+              upload_source_package: true
               dist: xenial
             - name: murano
+              upload_source_package: true
               dist: xenial
             - name: mysql
+              upload_source_package: true
               dist: xenial
             - name: nagios
+              upload_source_package: true
               dist: xenial
             - name: network
+              upload_source_package: true
               dist: xenial
             - name: nfs
+              upload_source_package: true
               dist: xenial
             - name: nginx
+              upload_source_package: true
               dist: xenial
             - name: nodejs
+              upload_source_package: true
               dist: xenial
             - name: ntp
+              upload_source_package: true
               dist: xenial
             - name: octavia
+              upload_source_package: true
               dist: xenial
             - name: opencontrail
+              upload_source_package: true
               dist: xenial
             - name: openldap
+              upload_source_package: true
               dist: xenial
             - name: openssh
+              upload_source_package: true
               dist: xenial
             - name: openvpn
+              upload_source_package: true
               dist: xenial
             - name: openvstorage
+              upload_source_package: true
               dist: xenial
             - name: owncloud
+              upload_source_package: true
               dist: xenial
             - name: panko
+              upload_source_package: true
               dist: xenial
             - name: postfix
+              upload_source_package: true
               dist: xenial
             - name: postgresql
+              upload_source_package: true
               dist: xenial
             - name: pritunl
+              upload_source_package: true
               dist: xenial
             - name: prometheus
+              upload_source_package: true
               dist: xenial
             - name: powerdns
+              upload_source_package: true
               dist: xenial
             - name: python
+              upload_source_package: true
               dist: xenial
             - name: rabbitmq
+              upload_source_package: true
               dist: xenial
             - name: reclass
+              upload_source_package: true
               dist: xenial
             - name: redis
+              upload_source_package: true
               dist: xenial
             - name: roundcube
+              upload_source_package: true
               dist: xenial
             - name: rsync
+              upload_source_package: true
               dist: xenial
             - name: rundeck
+              upload_source_package: true
               dist: xenial
             - name: rsyslog
+              upload_source_package: true
               dist: xenial
             - name: sahara
+              upload_source_package: true
               dist: xenial
             - name: salt
+              upload_source_package: true
               dist: xenial
             - name: sensu
+              upload_source_package: true
               dist: xenial
             - name: sentry
+              upload_source_package: true
               dist: xenial
             - name: sphinx
+              upload_source_package: true
               dist: xenial
             - name: spinnaker
+              upload_source_package: true
               dist: xenial
             - name: statsd
+              upload_source_package: true
               dist: xenial
             - name: supervisor
+              upload_source_package: true
               dist: xenial
             - name: taiga
+              upload_source_package: true
               dist: xenial
             - name: telegraf
+              upload_source_package: true
               dist: xenial
             - name: tinyproxy
               dist: xenial
             - name: tftpd-hpa
+              upload_source_package: true
               dist: xenial
             - name: varnish
+              upload_source_package: true
               dist: xenial
             - name: xtrabackup
+              upload_source_package: true
               dist: xenial
             - name: zookeeper
+              upload_source_package: true
               dist: xenial
           template:
             discard:
@@ -473,7 +690,7 @@
                 default: "salt-formulas/ppa"
               UPLOAD_PPA:
                 type: boolean
-                default: 'true'
+                default: '{{upload_source_package}}'
               UPLOAD_APTLY:
                 type: boolean
                 default: 'true'
diff --git a/jenkins/client/job/decapod/add_mon.yml b/jenkins/client/job/decapod/add_mon.yml
new file mode 100644
index 0000000..03daed2
--- /dev/null
+++ b/jenkins/client/job/decapod/add_mon.yml
@@ -0,0 +1,30 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        decapod_add_mon:
+          type: workflow-scm
+          name: decapod-add_mon
+          display_name: "Decapod - add monitors"
+          discard:
+            build:
+              keep_num: 20
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/decapod-pipelines"
+            credentials: "gerrit"
+            script: add-mon.groovy
+          param:
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            SALT_MASTER_IP:
+              type: string
+              default: "${_param:infra_config_address}"
+            SALT_MASTER_PORT:
+              type: string
+              default: "${_param:salt_master_api_port}"
+            ASK_ON_ERROR:
+              type: boolean
+              default: 'false'
\ No newline at end of file
diff --git a/jenkins/client/job/decapod/add_osd.yml b/jenkins/client/job/decapod/add_osd.yml
new file mode 100644
index 0000000..f0a4333
--- /dev/null
+++ b/jenkins/client/job/decapod/add_osd.yml
@@ -0,0 +1,30 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        decapod_add_osd:
+          type: workflow-scm
+          name: decapod-add_osd
+          display_name: "Decapod - add new osd"
+          discard:
+            build:
+              keep_num: 20
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/decapod-pipelines"
+            credentials: "gerrit"
+            script: add-osd.groovy
+          param:
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            SALT_MASTER_IP:
+              type: string
+              default: "${_param:infra_config_address}"
+            SALT_MASTER_PORT:
+              type: string
+              default: "${_param:salt_master_api_port}"
+            ASK_ON_ERROR:
+              type: boolean
+              default: 'false'
\ No newline at end of file
diff --git a/jenkins/client/job/decapod/del_mon.yml b/jenkins/client/job/decapod/del_mon.yml
new file mode 100644
index 0000000..d858431
--- /dev/null
+++ b/jenkins/client/job/decapod/del_mon.yml
@@ -0,0 +1,30 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        decapod_del_mon:
+          type: workflow-scm
+          name: decapod-del_mon
+          display_name: "Decapod - del monitors"
+          discard:
+            build:
+              keep_num: 20
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/decapod-pipelines"
+            credentials: "gerrit"
+            script: del-mon.groovy
+          param:
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            SALT_MASTER_IP:
+              type: string
+              default: "${_param:infra_config_address}"
+            SALT_MASTER_PORT:
+              type: string
+              default: "${_param:salt_master_api_port}"
+            ASK_ON_ERROR:
+              type: boolean
+              default: 'false'
diff --git a/jenkins/client/job/decapod/del_osd.yml b/jenkins/client/job/decapod/del_osd.yml
new file mode 100644
index 0000000..b432762
--- /dev/null
+++ b/jenkins/client/job/decapod/del_osd.yml
@@ -0,0 +1,30 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        decapod_del_osd:
+          type: workflow-scm
+          name: decapod-del_osd
+          display_name: "Decapod - del osd"
+          discard:
+            build:
+              keep_num: 20
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/decapod-pipelines"
+            credentials: "gerrit"
+            script: del-osd.groovy
+          param:
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            SALT_MASTER_IP:
+              type: string
+              default: "${_param:infra_config_address}"
+            SALT_MASTER_PORT:
+              type: string
+              default: "${_param:salt_master_api_port}"
+            ASK_ON_ERROR:
+              type: boolean
+              default: 'false'
\ No newline at end of file
diff --git a/jenkins/client/job/decapod/monitoring.yml b/jenkins/client/job/decapod/monitoring.yml
new file mode 100644
index 0000000..ea6a5c2
--- /dev/null
+++ b/jenkins/client/job/decapod/monitoring.yml
@@ -0,0 +1,30 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        decapod_monitoring:
+          type: workflow-scm
+          name: decapod-monitoring
+          display_name: "Decapod - monitoring"
+          discard:
+            build:
+              keep_num: 20
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/decapod-pipelines"
+            credentials: "gerrit"
+            script: monitoring.groovy
+          param:
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            SALT_MASTER_IP:
+              type: string
+              default: "${_param:infra_config_address}"
+            SALT_MASTER_PORT:
+              type: string
+              default: "${_param:salt_master_api_port}"
+            ASK_ON_ERROR:
+              type: boolean
+              default: 'false'
\ No newline at end of file
diff --git a/jenkins/client/job/deploy/lab/mk/cleanup.yml b/jenkins/client/job/deploy/lab/cleanup.yml
similarity index 98%
rename from jenkins/client/job/deploy/lab/mk/cleanup.yml
rename to jenkins/client/job/deploy/lab/cleanup.yml
index 626dd4e..4d2a179 100644
--- a/jenkins/client/job/deploy/lab/mk/cleanup.yml
+++ b/jenkins/client/job/deploy/lab/cleanup.yml
@@ -74,7 +74,7 @@
             script: delete-broken-stacks-pipeline.groovy
           trigger:
             timer:
-              spec: "0 H * * *"
+              spec: "0 0 * * *"
           param:
             # openstack api
             OPENSTACK_API_URL:
diff --git a/jenkins/client/job/deploy/lab/component/aaa.yml b/jenkins/client/job/deploy/lab/component/aaa.yml
new file mode 100644
index 0000000..1c640d5
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/component/aaa.yml
@@ -0,0 +1,11 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      - stack_name: aaa_ha_freeipa
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core,aaa
+        stack_test: ""
+        job_timer: ""
diff --git a/jenkins/client/job/deploy/lab/component/ceph.yml b/jenkins/client/job/deploy/lab/component/ceph.yml
new file mode 100644
index 0000000..e9e3d64
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/component/ceph.yml
@@ -0,0 +1,17 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      - stack_name: ceph_ha
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core,ceph
+        stack_test: "ceph"
+        job_timer: ""
+      - stack_name: ceph_ha
+        stack_env: devcloud
+        stack_type: aws
+        stack_install: core,ceph
+        stack_test: "ceph"
+        job_timer: "H H * * *"
diff --git a/jenkins/client/job/deploy/lab/component/drivetrain.yml b/jenkins/client/job/deploy/lab/component/drivetrain.yml
new file mode 100644
index 0000000..945ac4a
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/component/drivetrain.yml
@@ -0,0 +1,17 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      - stack_name: drivetrain_ha
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core
+        stack_test: ""
+        job_timer: ""
+      - stack_name: drivetrain_ha_clusters
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core
+        stack_test: ""
+        job_timer: ""
diff --git a/jenkins/client/job/deploy/lab/component/kubernetes.yml b/jenkins/client/job/deploy/lab/component/kubernetes.yml
new file mode 100644
index 0000000..62526f7
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/component/kubernetes.yml
@@ -0,0 +1,41 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      - stack_name: k8s_aio_calico
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core,k8s,calico
+        stack_test: ""
+        job_timer: ""
+      - stack_name: k8s_aio_contrail
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core,k8s,contrail
+        stack_test: ""
+        job_timer: ""
+      - stack_name: k8s_ha_calico
+        stack_env: devcloud
+        stack_type: aws
+        stack_install: core,k8s,calico
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+      - stack_name: k8s_ha_calico
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core,k8s,calico
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+      - stack_name: k8s_ha_contrail
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core,k8s,contrail
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+      - stack_name: k8s_ha_calico_sm
+        stack_env: devcloud
+        stack_type: aws
+        stack_install: core,k8s,calico
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
diff --git a/jenkins/client/job/deploy/lab/component/openstack.yml b/jenkins/client/job/deploy/lab/component/openstack.yml
new file mode 100644
index 0000000..0e526c6
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/component/openstack.yml
@@ -0,0 +1,34 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      - stack_name: os_aio_contrail
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core,openstack,contrail
+        stack_test: ""
+        job_timer: ""
+      - stack_name: os_aio_ovs
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core,openstack,ovs
+        job_timer: ""
+      - stack_name: os_ha_contrail
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core,openstack,contrail
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+      - stack_name: os_ha_contrail_ironic
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core,openstack,contrail
+        stack_test: ""
+        job_timer: ""
+      - stack_name: os_ha_ovs
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core,openstack,ovs
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
diff --git a/jenkins/client/job/deploy/lab/component/stacklight.yml b/jenkins/client/job/deploy/lab/component/stacklight.yml
new file mode 100644
index 0000000..94ccce2
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/component/stacklight.yml
@@ -0,0 +1,23 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      - stack_name: stacklight_k8s_calico
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core,k8s,calico,stacklight
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+      - stack_name: stacklight_os_contrail
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core,openstack,contrail,stacklight
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+      - stack_name: stacklight_os_ovs
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core,openstack,ovs,stacklight
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
diff --git a/jenkins/client/job/deploy/lab/mk/init.yml b/jenkins/client/job/deploy/lab/deploy.yml
similarity index 64%
rename from jenkins/client/job/deploy/lab/mk/init.yml
rename to jenkins/client/job/deploy/lab/deploy.yml
index b9d486d..108e30d 100644
--- a/jenkins/client/job/deploy/lab/mk/init.yml
+++ b/jenkins/client/job/deploy/lab/deploy.yml
@@ -1,39 +1,63 @@
 parameters:
   _param:
-    jenkins_deploy_lab_mk_jobs: []
+    jenkins_deploy_jobs: []
   jenkins:
     client:
       job_template:
-        deploy_heat_template:
-          name: deploy-{{stack_type}}-{{lab}}
-          jobs: ${_param:jenkins_deploy_lab_mk_jobs}
+        deploy_template:
+          name: deploy-{{stack_type}}-{{stack_name}}
+          jobs: ${_param:jenkins_deploy_jobs}
           template:
             type: workflow-scm
             discard:
               build:
                 keep_num: 20
             concurrent: true
-            display_name: "Deploy - {{lab}} {{stack_type}} lab"
+            display_name: "Deploy - {{stack_name}} {{stack_type}}"
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
               credentials: "gerrit"
-              script: lab-pipeline.groovy
+              script: cloud-deploy-pipeline.groovy
             trigger:
               timer:
-                spec: "{{timer}}"
+                spec: "{{job_timer}}"
             param:
-              # deployments and test settings
+              # general parameters
+              ASK_ON_ERROR:
+                type: boolean
+                default: 'false'
+              SLAVE_NODE:
+                type: string
+                default: 'python'
+
+              # deployments
+              STACK_NAME:
+                type: string
+                description: Heat stack name. Will be generated if missing.
               STACK_TYPE:
                 type: string
                 default: "{{stack_type}}"
               STACK_INSTALL:
                 type: string
-                default: "{{install}}"
+                default: "{{stack_install}}"
               STACK_TEST:
                 type: string
-                default: "{{test}}"
+                default: "{{stack_test}}"
+              STACK_REUSE:
+                type: boolean
+                default: 'false'
+              STACK_DELETE:
+                type: boolean
+                default: 'true'
+                description: "Don't enable it if you need to use the lab after"
+              STACK_COMPUTE_COUNT:
+                type: string
+                default: '2'
 
+              STACK_TEMPLATE:
+                type: string
+                default: "{{stack_name}}"
               STACK_TEMPLATE_URL:
                 type: string
                 default: "${_param:jenkins_gerrit_url}/mk/heat-templates"
@@ -43,40 +67,51 @@
               STACK_TEMPLATE_BRANCH:
                 type: string
                 default: "master"
-              STACK_NAME:
-                type: string
-                description: Heat stack name. Will be generated if missing.
-              STACK_TEMPLATE:
-                type: string
-                default: "{{lab}}"
-              STACK_DELETE:
-                type: boolean
-                default: 'true'
-                description: "Don't enable it if you need to use the lab after"
-              STACK_REUSE:
-                type: boolean
-                default: 'false'
               STACK_CLEANUP_JOB:
                 type: string
                 default: 'deploy-stack-cleanup'
-              # heat
-              HEAT_STACK_ENVIRONMENT:
-                type: string
-                default: "devcloud"
-              HEAT_STACK_ZONE:
-                type: string
-                default: "mcp-mk"
-              HEAT_STACK_PUBLIC_NET:
-                type: string
-                default: "public"
 
-              # salt master
+              STACK_RECLASS_BRANCH:
+                type: string
+                default: ""
+
+              # salt
               SALT_MASTER_CREDENTIALS:
                 type: string
                 default: "salt-qa-credentials"
               SALT_MASTER_URL:
                 type: string
                 default: ""
+              SALT_OVERRIDES:
+                type: text
+                default: ""
+                description: "YAML with overrides for Salt deployment"
+              FORMULA_PKG_REVISION:
+                type: string
+                default: ""
+                description: "Formulas revision to install on Salt Master bootstrap stage"
+
+              # aws api
+              AWS_STACK_REGION:
+                type: string
+                default: "us-west-2"
+              AWS_API_CREDENTIALS:
+                type: string
+                default: "aws-credentials"
+              AWS_SSH_KEY:
+                type: string
+                default: "jenkins-mk"
+
+              # heat
+              HEAT_STACK_ENVIRONMENT:
+                type: string
+                default: "{{stack_env}}"
+              HEAT_STACK_ZONE:
+                type: string
+                default: "mcp-mk"
+              HEAT_STACK_PUBLIC_NET:
+                type: string
+                default: "public"
 
               # openstack api
               OPENSTACK_API_URL:
@@ -88,52 +123,45 @@
               OPENSTACK_API_PROJECT:
                 type: string
                 default: "mcp-mk"
-              OPENSTACK_API_CLIENT:
-                type: string
-                default: ""
-              OPENSTACK_API_VERSION:
-                type: string
-                default: "3"
               OPENSTACK_API_PROJECT_DOMAIN:
                 type: string
                 default: "default"
               OPENSTACK_API_PROJECT_ID:
                 type: string
                 default: ""
-              OPENSTACK_USER_DOMAIN:
-                type: string
-                default: "default"
               OPENSTACK_API_USER_DOMAIN:
                 type: string
                 default: "default"
 
-              # k8s setttings
-              K8S_API_SERVER:
+              OPENSTACK_API_CLIENT:
+                type: string
+                default: ""
+              OPENSTACK_API_VERSION:
+                type: string
+                default: "3"
+
+              # test
+              TEST_K8S_API_SERVER:
                 type: string
                 default: "http://127.0.0.1:8080"
-              K8S_CONFORMANCE_IMAGE:
+              TEST_K8S_CONFORMANCE_IMAGE:
                 type: string
-                default: "docker-dev-virtual.docker.mirantis.net/mirantis/kubernetes/k8s-conformance:v1.5.1-3_1482332392819"
+                default: "docker-dev-virtual.docker.mirantis.net/mirantis/kubernetes/k8s-conformance:v1.7.5-2_1504192939316"
 
-              # Tempest settings
-              TEMPEST_IMAGE:
+              TEST_TEMPEST_IMAGE:
                 type: string
-                description: "Tempest image link"
-                default: "sandbox-docker-prod-local.docker.mirantis.net/mirantis/rally_tempest:0.1"
-              TARGET_TEST_NODE:
+                description: "Tempest docker image"
+                default: "docker-prod-local.artifactory.mirantis.com/mirantis/oscore/rally-tempest"
+              TEST_TEMPEST_TARGET:
                 type: string
                 description: "Node to run tests"
                 default: ""
-              DOCKER_INSTALL:
+              TEST_DOCKER_INSTALL:
                 type: boolean
                 description: "Install docker on the target if true"
                 default: "true"
-              PATTERN:
+              TEST_TEMPEST_PATTERN:
                 type: string
                 description: "Run tests matched to pattern only"
                 default: ""
 
-              ASK_ON_ERROR:
-                type: boolean
-                default: 'false'
-
diff --git a/jenkins/client/job/deploy/lab/init.yml b/jenkins/client/job/deploy/lab/init.yml
index 6b0d5ab..52ec947 100644
--- a/jenkins/client/job/deploy/lab/init.yml
+++ b/jenkins/client/job/deploy/lab/init.yml
@@ -1,11 +1,18 @@
 classes:
-  - system.jenkins.client.job.deploy.lab.mk.physical
-  - system.jenkins.client.job.deploy.lab.mk.virtual
-  - system.jenkins.client.job.deploy.lab.mk.cleanup
-  - system.jenkins.client.job.deploy.lab.mk.cloud
   - system.jenkins.client.job.deploy.lab.cicd
-  - system.jenkins.client.job.deploy.lab.test-cicd
+  - system.jenkins.client.job.deploy.lab.test-devops-portal-cicd
   - system.jenkins.client.job.deploy.lab.demo
+  - system.jenkins.client.job.deploy.lab.cleanup
+  - system.jenkins.client.job.deploy.lab.release.mcp05
+  - system.jenkins.client.job.deploy.lab.release.mcp10
+  - system.jenkins.client.job.deploy.lab.release.mcp11
+  - system.jenkins.client.job.deploy.lab.component.aaa
+  - system.jenkins.client.job.deploy.lab.component.ceph
+  - system.jenkins.client.job.deploy.lab.component.drivetrain
+  - system.jenkins.client.job.deploy.lab.component.kubernetes
+  - system.jenkins.client.job.deploy.lab.component.openstack
+  - system.jenkins.client.job.deploy.lab.component.stacklight
+  - system.jenkins.client.job.deploy.lab.ironic
 
 parameters:
   jenkins:
diff --git a/jenkins/client/job/deploy/lab/ironic.yml b/jenkins/client/job/deploy/lab/ironic.yml
new file mode 100644
index 0000000..8c397cf
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/ironic.yml
@@ -0,0 +1,79 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        ironic_node_provision:
+          concurrent: true
+          discard:
+            build:
+              keep_num: 20
+          display_name: Ironic - provision nodes
+          name: ironic-provision-nodes
+          param:
+            ASK_ON_ERROR:
+              default: 'false'
+              type: boolean
+            HEAT_STACK_ZONE:
+              default: mcp-mk
+              type: string
+            OPENSTACK_API_CLIENT:
+              default: ''
+              type: string
+            OPENSTACK_API_CREDENTIALS:
+              default: openstack-devcloud-credentials
+              type: string
+            OPENSTACK_API_PROJECT:
+              default: mcp-mk
+              type: string
+            OPENSTACK_API_PROJECT_DOMAIN:
+              default: default
+              type: string
+            OPENSTACK_API_PROJECT_ID:
+              default: ''
+              type: string
+            OPENSTACK_API_URL:
+              default: https://cloud-cz.bud.mirantis.net:5000
+              type: string
+            OPENSTACK_API_USER_DOMAIN:
+              default: default
+              type: string
+            OPENSTACK_API_USER_DOMAIN_ID:
+              default: default
+              type: string
+            OPENSTACK_API_VERSION:
+              default: '3'
+              type: string
+            ENV_NAME:
+              type: string
+            SALT_MASTER_CREDENTIALS:
+              default: salt-qa-credentials
+              type: string
+            SALT_MASTER_URL:
+              default: ''
+              type: string
+            STACK_TYPE:
+              default: heat
+              type: string
+            IRONIC_AUTHORIZATION_PROFILE:
+              default: admin_identity
+              type: string
+            IRONIC_DEPLOY_NODES:
+              default: ''
+              type: string
+            IRONIC_DEPLOY_PROFILE:
+              default: ''
+              type: string
+            IRONIC_DEPLOY_TIMEOUT:
+              default: '60'
+              type: string
+            IRONIC_DEPLOY_PARTITION_PROFILE:
+              default: ''
+              type: string
+            RUN_TARGET:
+              default: 'I@ironic:client and *01*'
+              type: string
+          scm:
+            script: ironic-node-provision-pipeline.groovy
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+          type: workflow-scm
diff --git a/jenkins/client/job/deploy/lab/mk/cloud.yml b/jenkins/client/job/deploy/lab/mk/cloud.yml
deleted file mode 100644
index d92c607..0000000
--- a/jenkins/client/job/deploy/lab/mk/cloud.yml
+++ /dev/null
@@ -1,227 +0,0 @@
-parameters:
-  _param:
-    jenkins_cloud_deploy_pipelines:
-      # Identity AAA
-      - stack_name: aaa_ha_freeipa
-        stack_type: heat
-        stack_install: core,aaa
-        stack_test: ""
-        job_timer: ""
-        extra_formulas: ""
-      - stack_name: k8s_calico
-        stack_type: aws
-        stack_install: core,k8s,calico
-        stack_test: ""
-        job_timer: "H H * * *"
-      - stack_name: ceph_ha
-        stack_type: heat
-        stack_install: core,ceph
-        stack_test: "ceph"
-        job_timer: ""
-#      - stack_name: drivetrain_ha
-#        stack_type: heat
-#        stack_install: core
-#        stack_test: ""
-#        job_timer: ""
-#      - stack_name: drivetrain_ha_clusters
-#        stack_type: heat
-#        stack_install: core
-#        stack_test: ""
-#        job_timer: ""
-      - stack_name: k8s_aio_calico
-        stack_type: heat
-        stack_install: core,k8s,calico
-        stack_test: ""
-        job_timer: ""
-      - stack_name: k8s_aio_contrail
-        stack_type: heat
-        stack_install: core,k8s,contrail
-        stack_test: ""
-        job_timer: ""
-      - stack_name: k8s_ha_calico
-        stack_type: heat
-        stack_install: core,k8s,calico
-        stack_test: ""
-        job_timer: ""
-      - stack_name: k8s_ha_contrail
-        stack_type: heat
-        stack_install: core,k8s,contrail
-        stack_test: ""
-        job_timer: ""
-      - stack_name: os_aio_contrail
-        stack_type: heat
-        stack_install: core,openstack,contrail
-        stack_test: ""
-        job_timer: ""
-      - stack_name: os_aio_ovs
-        stack_type: heat
-        stack_install: core,openstack,ovs
-        job_timer: ""
-      - stack_name: os_ha_contrail
-        stack_type: heat
-        stack_install: core,openstack,contrail
-        stack_test: ""
-        job_timer: ""
-      - stack_name: os_ha_ovs
-        stack_type: heat
-        stack_install: core,openstack,ovs
-        stack_test: ""
-        job_timer: ""
-      - stack_name: stacklight_k8s_calico
-        stack_type: heat
-        stack_install: core,k8s,calico,stacklight
-        stack_test: ""
-        job_timer: ""
-      - stack_name: stacklight_os_contrail
-        stack_type: heat
-        stack_install: core,openstack,contrail,stacklight
-        stack_test: ""
-        job_timer: ""
-      - stack_name: stacklight_os_ovs
-        stack_type: heat
-        stack_install: core,openstack,ovs,stacklight
-        stack_test: ""
-        job_timer: ""
-  jenkins:
-    client:
-      job_template:
-        cloud_deploy_heat_template:
-          name: deploy-{{stack_type}}-{{stack_name}}
-          jobs: ${_param:jenkins_cloud_deploy_pipelines}
-          template:
-            type: workflow-scm
-            discard:
-              build:
-                keep_num: 20
-            concurrent: true
-            display_name: "Deploy - {{stack_name}} {{stack_type}}"
-            scm:
-              type: git
-              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
-              credentials: "gerrit"
-              script: cloud-deploy-pipeline.groovy
-            trigger:
-              timer:
-                spec: "{{job_timer}}"
-            param:
-              # general parameters
-              ASK_ON_ERROR:
-                type: boolean
-                default: 'false'
-
-              # deployments
-              STACK_NAME:
-                type: string
-                description: Heat stack name. Will be generated if missing.
-              STACK_TEMPLATE:
-                type: string
-                default: "{{stack_name}}"
-              STACK_TYPE:
-                type: string
-                default: "{{stack_type}}"
-              STACK_INSTALL:
-                type: string
-                default: "{{stack_install}}"
-              STACK_TEST:
-                type: string
-                default: "{{stack_test}}"
-              STACK_DELETE:
-                type: boolean
-                default: 'true'
-                description: "Don't enable it if you need to use the lab after"
-              STACK_REUSE:
-                type: boolean
-                default: 'false'
-              STACK_COMPUTE_COUNT:
-                type: string
-                default: '2'
-
-              STACK_TEMPLATE_URL:
-                type: string
-                default: "${_param:jenkins_gerrit_url}/mk/heat-templates"
-              STACK_TEMPLATE_CREDENTIALS:
-                type: string
-                default: "gerrit"
-              STACK_TEMPLATE_BRANCH:
-                type: string
-                default: "master"
-              STACK_CLEANUP_JOB:
-                type: string
-                default: 'deploy-stack-cleanup'
-
-              # salt master
-              SALT_MASTER_CREDENTIALS:
-                type: string
-                default: "salt-qa-credentials"
-              SALT_MASTER_URL:
-                type: string
-                default: ""
-              SALT_OVERRIDES:
-                type: text
-                default: ""
-
-              # aws api
-              AWS_STACK_REGION:
-                type: string
-                default: "us-west-2"
-              AWS_API_CREDENTIALS:
-                type: string
-                default: "aws-credentials"
-              AWS_SSH_KEY:
-                type: string
-                default: "jenkins-mk"
-
-
-              # 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-mk"
-              OPENSTACK_API_CLIENT:
-                type: string
-                default: ""
-              OPENSTACK_API_VERSION:
-                type: string
-                default: "3"
-              OPENSTACK_API_PROJECT_DOMAIN:
-                type: string
-                default: "default"
-              OPENSTACK_API_USER_DOMAIN_ID:
-                type: string
-                default: "default"
-              OPENSTACK_API_PROJECT_ID:
-                type: string
-                default: ""
-              OPENSTACK_API_USER_DOMAIN:
-                type: string
-                default: "default"
-
-              # heat
-              HEAT_STACK_ENVIRONMENT:
-                type: string
-                default: "devcloud"
-              HEAT_STACK_ZONE:
-                type: string
-                default: "mcp-mk"
-              HEAT_STACK_PUBLIC_NET:
-                type: string
-                default: "public"
-
-              # k8s setttings
-              K8S_API_SERVER:
-                type: string
-                default: "http://127.0.0.1:8080"
-              K8S_CONFORMANCE_IMAGE:
-                type: string
-                default: "docker-dev-virtual.docker.mirantis.net/mirantis/kubernetes/k8s-conformance:v1.5.1-3_1482332392819"
-
-              # openstack settings
-              TEMPEST_IMAGE:
-                type: string
-                default: "sandbox-docker-prod-local.docker.mirantis.net/mirantis/rally_tempest:0.1"
-
diff --git a/jenkins/client/job/deploy/lab/mk/physical.yml b/jenkins/client/job/deploy/lab/mk/physical.yml
deleted file mode 100644
index 8e6d498..0000000
--- a/jenkins/client/job/deploy/lab/mk/physical.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-classes:
-  - system.jenkins.client.job.deploy.lab.mk
-parameters:
-  _param:
-    jenkins_deploy_lab_mk_jobs:
-      - lab: mcp10_contrail
-        install: core,kvm,openstack,contrail
-        stack_type: physical
-        test: openstack
-        timer: ""
-      - lab: mcp10_opencontrail_nfv
-        install: core,kvm,openstack,nfv
-        stack_type: physical
-        test: openstack
-        timer: ""
-      - lab: mcp10_dvr
-        install: core,kvm,openstack,dvr
-        stack_type: physical
-        test: openstack
-        timer: ""
-      - lab: mcp10_non_dvr
-        install: core,kvm,openstack
-        stack_type: physical
-        test: openstack
-        timer: ""
diff --git a/jenkins/client/job/deploy/lab/mk/virtual.yml b/jenkins/client/job/deploy/lab/mk/virtual.yml
deleted file mode 100644
index dd273ed..0000000
--- a/jenkins/client/job/deploy/lab/mk/virtual.yml
+++ /dev/null
@@ -1,125 +0,0 @@
-classes:
-  - system.jenkins.client.job.deploy.lab.mk
-parameters:
-  _param:
-    jenkins_deploy_lab_mk_jobs:
-      # mk20
-      - lab: virtual_mk20_advanced
-        install: core,openstack
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      - lab: virtual_mk20_basic
-        install: core,openstack
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      # mk22
-      - lab: virtual_mk22_advanced
-        install: core,openstack
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      - lab: virtual_mk22_basic
-        install: core,openstack
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      # mcp05
-      - lab: virtual_mcp05_dvr
-        install: core,openstack,dvr
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      - lab: virtual_mcp05_ovs
-        install: core,openstack,ovs
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      # mcp10
-      - lab: virtual_mcp10_contrail
-        install: core,openstack,contrail
-        stack_type: heat
-        test: openstack
-        timer: "H H(0-6) * * *"
-        extra_formulas: ""
-      - lab: virtual_mcp10_dvr
-        install: core,openstack,dvr
-        stack_type: heat
-        test: openstack
-        timer: "H H(0-6) * * *"
-        extra_formulas: ""
-      - lab: virtual_mcp10_ovs
-        install: core,openstack,ovs
-        stack_type: heat
-        test: openstack
-        timer: "H H(0-6) * * *"
-        extra_formulas: ""
-      # mcp11
-      - lab: virtual_mcp11_contrail
-        install: core,openstack,contrail
-        stack_type: heat
-        test: openstack
-        extra_formulas: ""
-        timer: ""
-      - lab: virtual_mcp11_dvr
-        install: core,openstack,dvr
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      - lab: virtual_mcp11_ovs
-        install: core,openstack,ovs
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      - lab: virtual_mcp11_ironic_small
-        install: core,openstack
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      - lab: virtual_mcp11_aio
-        install: core,openstack
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      - lab: virtual_mcp11_k8s_calico
-        install: core,k8s,calico
-        stack_type: heat
-        test: k8s
-        timer: "H H(0-6) * * *"
-        extra_formulas: ""
-      - lab: virtual_mcp11_k8s_contrail
-        install: core,k8s,contrail
-        stack_type: heat
-        test: k8s
-        timer: "H H(0-6) * * *"
-        extra_formulas: ""
-      - lab: virtual_mcp11_contrail_nfv
-        install: core,openstack,contrail
-        stack_type: heat
-        test: openstack
-        timer: "H H(0-6) * * *"
-        extra_formulas: ""
-      - lab: virtual_mcp11_ovs_dpdk
-        install: core,openstack,ovs
-        stack_type: heat
-        test: openstack
-        timer: "H H(0-6) * * *"
-        extra_formulas: ""
-      # Identity AAA
-      - lab: virtual_aaa_freeipa
-        install: core,aaa
-        stack_type: heat
-        test: ""
-        timer: ""
-        extra_formulas: ""
diff --git a/jenkins/client/job/deploy/lab/release/mcp05.yml b/jenkins/client/job/deploy/lab/release/mcp05.yml
new file mode 100644
index 0000000..61d5399
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/release/mcp05.yml
@@ -0,0 +1,17 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      - stack_name: virtual_mcp05_ovs_dvr
+        stack_env: devcloud_virtual_mcp05_dvr
+        stack_install: core,openstack,dvr
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mcp05_ovs
+        stack_env: devcloud
+        stack_install: core,openstack,ovs
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
diff --git a/jenkins/client/job/deploy/lab/release/mcp10.yml b/jenkins/client/job/deploy/lab/release/mcp10.yml
new file mode 100644
index 0000000..34fb940
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/release/mcp10.yml
@@ -0,0 +1,50 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      # physical
+      - stack_name: mcp10_contrail
+        stack_env: devcloud
+        stack_install: core,kvm,openstack,contrail
+        stack_type: physical
+        stack_test: openstack
+        job_timer: ""
+      - stack_name: mcp10_opencontrail_nfv
+        stack_env: devcloud
+        stack_install: core,kvm,openstack,nfv
+        stack_type: physical
+        stack_test: openstack
+        job_timer: ""
+      - stack_name: mcp10_dvr
+        stack_env: devcloud
+        stack_install: core,kvm,openstack,dvr
+        stack_type: physical
+        stack_test: openstack
+        job_timer: ""
+      - stack_name: mcp10_non_dvr
+        stack_env: devcloud
+        stack_install: core,kvm,openstack
+        stack_type: physical
+        stack_test: openstack
+        job_timer: ""
+
+      # virtual
+      - stack_name: virtual_mcp10_contrail
+        stack_env: devcloud_virtual_mcp10_contrail
+        stack_install: core,openstack,contrail
+        stack_type: heat
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+      - stack_name: virtual_mcp10_ovs_dvr
+        stack_env: devcloud_virtual_mcp10_dvr
+        stack_install: core,openstack,dvr
+        stack_type: heat
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+      - stack_name: virtual_mcp10_ovs
+        stack_env: devcloud_virtual_mcp10_ovs
+        stack_install: core,openstack,ovs
+        stack_type: heat
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
diff --git a/jenkins/client/job/deploy/lab/release/mcp11.yml b/jenkins/client/job/deploy/lab/release/mcp11.yml
new file mode 100644
index 0000000..0a3127c
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/release/mcp11.yml
@@ -0,0 +1,59 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      - stack_name: virtual_mcp11_contrail
+        stack_env: devcloud_virtual_mcp11_contrail
+        stack_install: core,openstack,contrail
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mcp11_ovs_dvr
+        stack_env: devcloud_virtual_mcp11_dvr
+        stack_install: core,openstack,dvr
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mcp11_ovs
+        stack_env: devcloud_virtual_mcp11_ovs
+        stack_install: core,openstack,ovs
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mcp11_ironic_small
+        stack_env: devcloud
+        stack_install: core,openstack
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mcp11_aio
+        stack_env: devcloud
+        stack_install: core,openstack,ovs
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mcp11_k8s_calico
+        stack_env: devcloud
+        stack_install: core,k8s,calico
+        stack_type: heat
+        stack_test: k8s
+        job_timer: "H H(0-6) * * *"
+      - stack_name: virtual_mcp11_k8s_contrail
+        stack_env: devcloud
+        stack_install: core,k8s,contrail
+        stack_type: heat
+        stack_test: k8s
+        job_timer: "H H(0-6) * * *"
+      - stack_name: virtual_mcp11_contrail_nfv
+        stack_env: devcloud_virtual_mcp11_contrail_nfv
+        stack_install: core,openstack,contrail
+        stack_type: heat
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+      - stack_name: virtual_mcp11_ovs_dpdk
+        stack_env: devcloud_virtual_mcp11_ovs_dpdk
+        stack_install: core,openstack,ovs
+        stack_type: heat
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
diff --git a/jenkins/client/job/deploy/lab/release/mk.yml b/jenkins/client/job/deploy/lab/release/mk.yml
new file mode 100644
index 0000000..453e632
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/release/mk.yml
@@ -0,0 +1,31 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      # mk20
+      - stack_name: virtual_mk20_advanced
+        stack_env: devcloud_virtual_mk20_advanced
+        stack_install: core,openstack
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mk20_basic
+        stack_env: devcloud_virtual_mk20_basic
+        stack_install: core,openstack
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      # mk22
+      - stack_name: virtual_mk22_advanced
+        stack_env: devcloud_virtual_mk22_advanced
+        stack_install: core,openstack
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mk22_basic
+        stack_env: devcloud_virtual_mk22_basic
+        stack_install: core,openstack
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
diff --git a/jenkins/client/job/deploy/lab/test-cicd.yml b/jenkins/client/job/deploy/lab/test-devops-portal-cicd.yml
similarity index 92%
rename from jenkins/client/job/deploy/lab/test-cicd.yml
rename to jenkins/client/job/deploy/lab/test-devops-portal-cicd.yml
index 0205223..8dfc70e 100644
--- a/jenkins/client/job/deploy/lab/test-cicd.yml
+++ b/jenkins/client/job/deploy/lab/test-devops-portal-cicd.yml
@@ -13,11 +13,23 @@
             display_name: "Deploy {{name}} heat stack"
             scm:
               type: git
-              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
               credentials: "gerrit"
-              script: cicd-lab-pipeline.groovy
+              script: test-func-devops-portal-pipeline.groovy
             param:
               # heat
+              HEAT_STACK_DELETE:
+                type: boolean
+                default: 'true'
+                description: "Delete heat stack at the end of job"
+              HEAT_STACK_REUSE:
+                type: boolean
+                default: 'false'
+                description: "Reuse existing stack and only orchestrate deployment"
+              HEAT_STACK_KEEP_INTACT:
+                type: boolean
+                default: 'false'
+                description: "Save current deployment status without re-orchestrating"
               HEAT_TEMPLATE_URL:
                 type: string
                 default: "${_param:jenkins_gerrit_url}/mk/heat-templates"
@@ -42,14 +54,6 @@
               HEAT_STACK_PUBLIC_NET:
                 type: string
                 default: "public"
-              HEAT_STACK_DELETE:
-                type: boolean
-                default: 'true'
-                description: "Delete heat stack at the end of job"
-              HEAT_STACK_REUSE:
-                type: boolean
-                default: 'false'
-                description: "Reuse existing stack and only orchestrate deployment"
 
               # salt master
               SALT_MASTER_CREDENTIALS:
diff --git a/jenkins/client/job/deploy/openstack.yml b/jenkins/client/job/deploy/openstack.yml
index c2eb71b..f316ab4 100644
--- a/jenkins/client/job/deploy/openstack.yml
+++ b/jenkins/client/job/deploy/openstack.yml
@@ -14,7 +14,7 @@
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
             credentials: "gerrit"
-            script: lab-pipeline.groovy
+            script: cloud-deploy-pipeline.groovy
           param:
             # deployments and test settings
             STACK_TYPE:
@@ -53,4 +53,4 @@
             TARGET_SERVERS:
               type: string
               default: ""
-              description: "Salt compound target to match nodes to be updated [*, G@osfamily:debian]."
\ No newline at end of file
+              description: "Salt compound target to match nodes to be updated [*, G@osfamily:debian]."
diff --git a/jenkins/client/job/deploy/rollout.yml b/jenkins/client/job/deploy/rollout.yml
new file mode 100644
index 0000000..93f5167
--- /dev/null
+++ b/jenkins/client/job/deploy/rollout.yml
@@ -0,0 +1,92 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        deploy_rollout_config_change:
+          name: deploy-rollout-config-change
+          type: workflow-scm
+          discard:
+            build:
+              keep_num: 20
+          concurrent: true
+          display_name: "Deploy - Rollout change"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: rollout-config-change.groovy
+          param:
+            TST_SALT_MASTER_CREDENTIALS:
+              type: string
+            TST_SALT_MASTER_URL:
+              type: string
+            PRD_SALT_MASTER_CREDENTIALS:
+              type: string
+            PRD_SALT_MASTER_URL:
+              type: string
+            MODEL_REPO_URL:
+              type: string
+            MODEL_REPO_CREDENTIALS:
+              type: string
+              default: "gerrit"
+            MODEL_REPO_SOURCE_BRANCH:
+              type: string
+            MODEL_REPO_TARGET_BRANCH:
+              type: string
+            TARGET_SERVERS:
+              type: string
+            TARGET_STATES:
+              type: string
+            TARGET_SUBSET_TEST:
+              type: string
+            TARGET_SUBSET_LIVE:
+              type: string
+            TARGET_BATCH_LIVE:
+              type: string
+              # test
+            TEST_SERVICE:
+              type: string
+            TEST_K8S_API_SERVER:
+              type: string
+              default: "http://127.0.0.1:8080"
+            TEST_K8S_CONFORMANCE_IMAGE:
+              type: string
+              default: "docker-dev-virtual.docker.mirantis.net/mirantis/kubernetes/k8s-conformance:v1.7.5-2_1504192939316"
+            TEST_TEMPEST_IMAGE:
+              type: string
+              description: "Tempest docker image"
+              default: "docker-prod-local.artifactory.mirantis.com/mirantis/oscore/rally-tempest"
+            TEST_TEMPEST_TARGET:
+              type: string
+              description: "Node to run tests"
+              default: ""
+            TEST_DOCKER_INSTALL:
+              type: boolean
+              description: "Install docker on the target if true"
+              default: "true"
+            TEST_TEMPEST_PATTERN:
+              type: string
+              description: "Run tests matched to pattern only"
+        git_merge_branches:
+          name: git-merge-branches
+          type: workflow-scm
+          discard:
+            build:
+              keep_num: 20
+          concurrent: true
+          display_name: "Git - Merge branches"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: git-merge-branches-pipeline.groovy
+          param:
+            REPO_URL:
+              type: string
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            SOURCE_BRANCH:
+              type: string
+            TARGET_BRANCH:
+              type: string
diff --git a/jenkins/client/job/deploy/test.yml b/jenkins/client/job/deploy/test.yml
new file mode 100644
index 0000000..9b99ee5
--- /dev/null
+++ b/jenkins/client/job/deploy/test.yml
@@ -0,0 +1,59 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        test_service_job:
+          name: deploy-test-service
+          type: workflow-scm
+          discard:
+            build:
+              keep_num: 20
+          concurrent: true
+          display_name: "Deploy - Test services in environment"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: test-service.groovy
+          param:
+
+            # salt
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt-qa-credentials"
+            SALT_MASTER_URL:
+              type: string
+              default: ""
+
+            # test
+            TEST_K8S_API_SERVER:
+              type: string
+              default: "http://127.0.0.1:8080"
+            TEST_K8S_CONFORMANCE_IMAGE:
+              type: string
+              default: "docker-dev-virtual.docker.mirantis.net/mirantis/kubernetes/k8s-conformance:v1.7.5-2_1504192939316"
+
+            TEST_TEMPEST_IMAGE:
+              type: string
+              description: "Tempest docker image"
+              default: "docker-prod-local.artifactory.mirantis.com/mirantis/oscore/rally-tempest"
+            TEST_TEMPEST_TARGET:
+              type: string
+              description: "Node to run tests. use FQDN for ctl01 e.g. ctl01.deploy-heat-os_ha_contrail-17.bud-mk.local"
+              default: ""
+            TEST_DOCKER_INSTALL:
+              type: boolean
+              description: "Install docker on the target if true"
+              default: "true"
+            TEST_TEMPEST_PATTERN:
+              type: string
+              description: "Run tests matched to pattern only e.g. tempest.api.identity"
+              default: "false"
+            TEST_SERVICE:
+              type: string
+              description: "openstack or k8s"
+              default: "openstack"
+            TEST_JUNIT_RATIO:
+              type: string
+              description: "The amplification factor to apply to test failures when computing the test result contribution to the build health score."
+              default: "1.0"
diff --git a/jenkins/client/job/deploy/update/config.yml b/jenkins/client/job/deploy/update/config.yml
index 9beabfb..e956736 100644
--- a/jenkins/client/job/deploy/update/config.yml
+++ b/jenkins/client/job/deploy/update/config.yml
@@ -42,4 +42,7 @@
             TARGET_BATCH_LIVE:
               type: string
               description: Batch size for the complete live config changes on all nodes, empty string means apply to all targetted nodes.
-
+            PULL_MODEL:
+              type: boolean
+              default: 'true'
+              description: Pull the latest reclass cluster model before applying the states.
diff --git a/jenkins/client/job/deploy/update/init.yml b/jenkins/client/job/deploy/update/init.yml
index 8816a66..4d77c7b 100644
--- a/jenkins/client/job/deploy/update/init.yml
+++ b/jenkins/client/job/deploy/update/init.yml
@@ -2,6 +2,8 @@
   - system.jenkins.client.job.deploy.update.package
   - system.jenkins.client.job.deploy.update.config
   - system.jenkins.client.job.deploy.update.saltenv
+  - system.jenkins.client.job.deploy.update.update_salt_environment
+  - system.jenkins.client.job.deploy.update.update_mirror_image
   - system.jenkins.client.job.deploy.update.upgrade
   - system.jenkins.client.job.deploy.update.upgrade_compute
   - system.jenkins.client.job.deploy.update.upgrade_ovs_gateway
diff --git a/jenkins/client/job/deploy/update/package.yml b/jenkins/client/job/deploy/update/package.yml
index a4e7fc0..55a9ef0 100644
--- a/jenkins/client/job/deploy/update/package.yml
+++ b/jenkins/client/job/deploy/update/package.yml
@@ -29,7 +29,7 @@
               description: Salt compound target to match nodes to be updated [*, G@osfamily:debian].
             TARGET_PACKAGES:
               type: string
-              description: Space delimited list of packages to be updates [package1=version package2=version], empty string means all updating all packages to the latest version.
+              description: Space delimited list of packages to be updated, empty string means updating all packages to the latest version e.g. [package1=version package2=version] or [package1 package2].
             TARGET_SUBSET_TEST:
               type: string
               description: Number of nodes to list package updates, empty string means all targetted nodes.
diff --git a/jenkins/client/job/deploy/update/update_mirror_image.yml b/jenkins/client/job/deploy/update/update_mirror_image.yml
new file mode 100644
index 0000000..75363db
--- /dev/null
+++ b/jenkins/client/job/deploy/update/update_mirror_image.yml
@@ -0,0 +1,25 @@
+#
+# Jobs to update Salt master environment (formulas and models)
+#
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      job:
+        deploy-update-mirror-image:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - update mirror image"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: update-mirror-image.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
\ No newline at end of file
diff --git a/jenkins/client/job/deploy/update/update_salt_environment.yml b/jenkins/client/job/deploy/update/update_salt_environment.yml
new file mode 100644
index 0000000..9efd6c5
--- /dev/null
+++ b/jenkins/client/job/deploy/update/update_salt_environment.yml
@@ -0,0 +1,28 @@
+#
+# Jobs to update Salt master environment (formulas and models)
+#
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      job:
+        deploy-update-salt-environment:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - update Salt environment"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: update-salt-environment.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            UPDATE_FORMULAS:
+              type: boolean
+              default: 'true'
\ No newline at end of file
diff --git a/jenkins/client/job/deploy/update/utils.yml b/jenkins/client/job/deploy/update/utils.yml
new file mode 100644
index 0000000..fa6ce14
--- /dev/null
+++ b/jenkins/client/job/deploy/update/utils.yml
@@ -0,0 +1,70 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        reclass_metadata_update:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - Update reclass metadata"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: update-reclass-metadata.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "http://127.0.0.1:8000"
+              description: Full Salt API address [https://127.0.0.1:8000].
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+              description: Credentials to the Salt API.
+            TARGET_SERVERS:
+              type: string
+              default: "I@reclass:storage"
+              description: Salt compound target to match nodes to be updated.
+        salt_master_formula_update:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - Update salt master formulas"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: update-salt-master-formulas.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "http://127.0.0.1:8000"
+              description: Full Salt API address [https://127.0.0.1:8000].
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+              description: Credentials to the Salt API.
+            TARGET_SERVERS:
+              type: string
+              default: "I@reclass:storage"
+              description: Salt compound target to match nodes to be updated.
+        jenkins_master_job_update:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - Update jenkins master jobs"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: update-jenkins-master-jobs.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "http://127.0.0.1:8000"
+              description: Full Salt API address [https://127.0.0.1:8000].
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+              description: Credentials to the Salt API.
+            TARGET_SERVERS:
+              type: string
+              default: "I@reclass:storage"
+              description: Salt compound target to match nodes to be updated.
diff --git a/jenkins/client/job/docker/build-images.yml b/jenkins/client/job/docker/build-images.yml
index ca1d058..a953d95 100644
--- a/jenkins/client/job/docker/build-images.yml
+++ b/jenkins/client/job/docker/build-images.yml
@@ -11,6 +11,8 @@
               repo: mk
             - name: prometheus
               repo: mcp
+            - name: opencontrail
+              repo: mk
           template:
             discard:
               build:
@@ -26,7 +28,7 @@
             trigger:
               gerrit:
                 project:
-                  "mk/docker-{{name}}":
+                  "{{repo}}/docker-{{name}}":
                     branches:
                       - master
                 event:
@@ -54,3 +56,6 @@
               DOCKER_GIT_TAG:
                 type: boolean
                 default: "true"
+              EXTRA_REPO_URL:
+                type: string
+                default: "${_param:jenkins_aptly_url}"
diff --git a/jenkins/client/job/docker/cleanup.yml b/jenkins/client/job/docker/cleanup.yml
new file mode 100644
index 0000000..eff5754
--- /dev/null
+++ b/jenkins/client/job/docker/cleanup.yml
@@ -0,0 +1,35 @@
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+    jenkins_salt_model_name: "salt"
+  jenkins:
+    client:
+      job:
+        docker-cleanup-pipeline:
+          name: docker-cleanup
+          discard:
+            build:
+              keep_num: 3
+            artifact:
+              keep_num: 3
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: docker-cleanup-pipeline.groovy
+          trigger:
+            timer:
+              spec: "H H * * *"
+          param:
+              SALT_MASTER_URL:
+                type: string
+                default: "${_param:jenkins_salt_api_url}"
+              SALT_MASTER_CREDENTIALS:
+                type: string
+                default: "salt"
+              TEST_DATE_STRING:
+                type: string
+                default: "yesterday"
+                description: "Date string for comparison determining deletion of docker container"
diff --git a/jenkins/client/job/docker/init.yml b/jenkins/client/job/docker/init.yml
index 1da507c..63c3f27 100644
--- a/jenkins/client/job/docker/init.yml
+++ b/jenkins/client/job/docker/init.yml
@@ -19,16 +19,16 @@
               tags: "2.13.6 latest"
               dockerfile: "Dockerfile"
             - name: jenkins
+              branch: "master"
+              tags: ""
+              dockerfile: "Dockerfile"
+            - name: jenkins
               branch: "2.32.3"
               tags: "2.32"
               dockerfile: "Dockerfile"
             - name: jenkins
-              branch: "2.52"
-              tags: "2.52 latest"
-              dockerfile: "Dockerfile"
-            - name: jenkins
-              branch: "2.70"
-              tags: "2.70 latest"
+              branch: "2.73"
+              tags: "2.73 latest"
               dockerfile: "Dockerfile"
             - name: phpldapadmin
               branch: "master"
@@ -42,6 +42,10 @@
               branch: "master"
               tags: "5.6 latest"
               dockerfile: "5.6/Dockerfile"
+            - name: jnlp-slave
+              branch: "master"
+              tags: "latest"
+              dockerfile: "Dockerfile"
           template:
             discard:
               build:
diff --git a/jenkins/client/job/docker/oss/init.yml b/jenkins/client/job/docker/oss/init.yml
index 1157bd3..386ea75 100644
--- a/jenkins/client/job/docker/oss/init.yml
+++ b/jenkins/client/job/docker/oss/init.yml
@@ -3,4 +3,9 @@
   - system.jenkins.client.job.docker.oss.devops-portal
   - system.jenkins.client.job.docker.oss.janitor-monkey-codebase
   - system.jenkins.client.job.docker.oss.janitor-monkey-docker
+  - system.jenkins.client.job.docker.oss.pushkin-docker
+  - system.jenkins.client.job.docker.oss.pushkin-codebase
+  - system.jenkins.client.job.docker.oss.pushkin-codebase-ext
   - system.jenkins.client.job.docker.oss.rundeck
+  - system.jenkins.client.job.docker.oss.security-monkey-docker
+  - system.jenkins.client.job.docker.oss.security-monkey-codebase-openstack
diff --git a/jenkins/client/job/docker/oss/janitor-monkey-docker.yml b/jenkins/client/job/docker/oss/janitor-monkey-docker.yml
index 083d086..78167bd 100644
--- a/jenkins/client/job/docker/oss/janitor-monkey-docker.yml
+++ b/jenkins/client/job/docker/oss/janitor-monkey-docker.yml
@@ -58,10 +58,4 @@
               default: "Dockerfile"
             CONTEXT_PATH:
               type: string
-              default: "."
-            CI_BUILD_ARG_JANITOR_MONKEY_REPO:
-              type: string
-              default: ""
-            CI_BUILD_ARG_JANITOR_MONKEY_REF:
-              type: string
-              default: ""
\ No newline at end of file
+              default: "."
\ No newline at end of file
diff --git a/jenkins/client/job/docker/oss/pushkin-codebase-ext.yml b/jenkins/client/job/docker/oss/pushkin-codebase-ext.yml
new file mode 100644
index 0000000..1a5b5b6
--- /dev/null
+++ b/jenkins/client/job/docker/oss/pushkin-codebase-ext.yml
@@ -0,0 +1,73 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        docker-build-images-pushkin-codebase-ext:
+          name: docker-build-images-pushkin-codebase-ext
+          discard:
+            build:
+              keep_num: 25
+            artifact:
+              keep_num: 25
+          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:
+                "oss/pushkin-extensions":
+                  branches:
+                    - master
+              skip_vote:
+                - successful
+                - failed
+                - unstable
+                - not_built
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeNoCodeChange: false
+                change:
+                  - merged
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: 'rebuild'
+          param:
+            IMAGE_NAME:
+              type: string
+              default: "pushkin"
+            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: "oss"
+            DOCKERFILE_PATH:
+              type: string
+              default: "Dockerfile"
+            CONTEXT_PATH:
+              type: string
+              default: "."
+            CUSTOM_GERRIT_PROJECT:
+              type: string
+              default: oss/docker-pushkin
+            CUSTOM_GERRIT_BRANCH:
+              type: string
+              default: master
+            CI_BUILD_ARG_PUSHKIN_EXT_REPO:
+              type: string
+              default: ""
+            CI_BUILD_ARG_PUSHKIN_EXT_REF:
+              type: string
+              default: ""
diff --git a/jenkins/client/job/docker/oss/pushkin-codebase.yml b/jenkins/client/job/docker/oss/pushkin-codebase.yml
new file mode 100644
index 0000000..f40bde3
--- /dev/null
+++ b/jenkins/client/job/docker/oss/pushkin-codebase.yml
@@ -0,0 +1,73 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        docker-build-images-pushkin-codebase:
+          name: docker-build-images-pushkin-codebase
+          discard:
+            build:
+              keep_num: 25
+            artifact:
+              keep_num: 25
+          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:
+                "oss/pushkin":
+                  branches:
+                    - devel
+              skip_vote:
+                - successful
+                - failed
+                - unstable
+                - not_built
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeNoCodeChange: false
+                change:
+                  - merged
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: 'rebuild'
+          param:
+            IMAGE_NAME:
+              type: string
+              default: "pushkin"
+            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: "oss"
+            DOCKERFILE_PATH:
+              type: string
+              default: "Dockerfile"
+            CONTEXT_PATH:
+              type: string
+              default: "."
+            CUSTOM_GERRIT_PROJECT:
+              type: string
+              default: oss/docker-pushkin
+            CUSTOM_GERRIT_BRANCH:
+              type: string
+              default: master
+            CI_BUILD_ARG_PUSHKIN_REPO:
+              type: string
+              default: ""
+            CI_BUILD_ARG_PUSHKIN_REF:
+              type: string
+              default: ""
diff --git a/jenkins/client/job/docker/oss/pushkin-docker.yml b/jenkins/client/job/docker/oss/pushkin-docker.yml
new file mode 100644
index 0000000..e77e99b
--- /dev/null
+++ b/jenkins/client/job/docker/oss/pushkin-docker.yml
@@ -0,0 +1,61 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        docker-build-images-pushkin-docker:
+          name: docker-build-images-pushkin-docker
+          discard:
+            build:
+              keep_num: 25
+            artifact:
+              keep_num: 25
+          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:
+                "oss/docker-pushkin":
+                  branches:
+                    - master
+              skip_vote:
+                - successful
+                - failed
+                - unstable
+                - not_built
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeNoCodeChange: false
+                change:
+                  - merged
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: 'rebuild'
+          param:
+            IMAGE_NAME:
+              type: string
+              default: "pushkin"
+            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: "oss"
+            DOCKERFILE_PATH:
+              type: string
+              default: "Dockerfile"
+            CONTEXT_PATH:
+              type: string
+              default: "."
\ No newline at end of file
diff --git a/jenkins/client/job/docker/oss/security-monkey-codebase-openstack.yml b/jenkins/client/job/docker/oss/security-monkey-codebase-openstack.yml
new file mode 100644
index 0000000..a135df8
--- /dev/null
+++ b/jenkins/client/job/docker/oss/security-monkey-codebase-openstack.yml
@@ -0,0 +1,73 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        docker-build-images-security-monkey-codebase-openstack:
+          name: docker-build-images-security-monkey-codebase-openstack 
+          discard:
+            build:
+              keep_num: 25
+            artifact:
+              keep_num: 25
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
+            credentials: "gerrit"
+            script: docker-build-image-security-monkey-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                "oss/security-monkey-openstack":
+                  branches:
+                    - master
+              skip_vote:
+                - successful
+                - failed
+                - unstable
+                - not_built
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeNoCodeChange: false
+                change:
+                  - merged
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: 'rebuild'
+          param:
+            IMAGE_NAME:
+              type: string
+              default: "security-monkey"
+            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: "oss"
+            DOCKERFILE_PATH:
+              type: string
+              default: "security-monkey/Dockerfile"
+            CONTEXT_PATH:
+              type: string
+              default: "."
+            CUSTOM_GERRIT_PROJECT:
+              type: string
+              default: oss/docker-security-monkey
+            CUSTOM_GERRIT_BRANCH:
+              type: string
+              default: master
+            CI_BUILD_ARG_SECURITY_MONKEY_OPENSTACK_REPO:
+              type: string
+              default: ""
+            CI_BUILD_ARG_SECURITY_MONKEY_OPENSTACK_REF:
+              type: string
+              default: ""
diff --git a/jenkins/client/job/docker/oss/security-monkey-docker.yml b/jenkins/client/job/docker/oss/security-monkey-docker.yml
new file mode 100644
index 0000000..b9d4512
--- /dev/null
+++ b/jenkins/client/job/docker/oss/security-monkey-docker.yml
@@ -0,0 +1,61 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        docker-build-images-security-monkey-docker:
+          name: docker-build-images-security-monkey-docker
+          discard:
+            build:
+              keep_num: 25
+            artifact:
+              keep_num: 25
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
+            credentials: "gerrit"
+            script: docker-build-image-security-monkey-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                "oss/docker-security-monkey":
+                  branches:
+                    - master
+              skip_vote:
+                - successful
+                - failed
+                - unstable
+                - not_built
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeNoCodeChange: false
+                change:
+                  - merged
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: 'rebuild'
+          param:
+            IMAGE_NAME:
+              type: string
+              default: "security-monkey"
+            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: "oss"
+            DOCKERFILE_PATH:
+              type: string
+              default: "security-monkey/Dockerfile"
+            CONTEXT_PATH:
+              type: string
+              default: "."
\ No newline at end of file
diff --git a/jenkins/client/job/gating.yml b/jenkins/client/job/gating.yml
index d0f2149..db2033e 100644
--- a/jenkins/client/job/gating.yml
+++ b/jenkins/client/job/gating.yml
@@ -25,9 +25,9 @@
           template:
             discard:
               build:
-                keep_num: 5
+                keep_num: 25
               artifact:
-                keep_num: 5
+                keep_num: 25
             type: workflow-scm
             concurrent: true
             scm:
diff --git a/jenkins/client/job/git-mirrors/downstream/debian-packages.yml b/jenkins/client/job/git-mirrors/downstream/debian-packages.yml
index dde7d9a..eb899dc 100644
--- a/jenkins/client/job/git-mirrors/downstream/debian-packages.yml
+++ b/jenkins/client/job/git-mirrors/downstream/debian-packages.yml
@@ -15,3 +15,7 @@
         downstream: debian/gophercloud
         upstream: "https://github.com/gophercloud/gophercloud.git"
         branches: master
+      - name: debian-influxdb-relay
+        downstream: debian/influxdb-relay
+        upstream: "https://github.com/influxdata/influxdb-relay.git"
+        branches: master
diff --git a/jenkins/client/job/git-mirrors/upstream/init.yml b/jenkins/client/job/git-mirrors/upstream/init.yml
index e11e63c..cc267d9 100644
--- a/jenkins/client/job/git-mirrors/upstream/init.yml
+++ b/jenkins/client/job/git-mirrors/upstream/init.yml
@@ -25,7 +25,8 @@
                 project:
                   "{{downstream}}":
                     branches:
-                      - master
+                      - compare_type: "REG_EXP"
+                        name: "(.*?)"
                 message:
                   build_successful: "Build successful"
                   build_unstable: "Build unstable"
diff --git a/jenkins/client/job/image/centos.yml b/jenkins/client/job/image/centos.yml
index 2524163..d478ccc 100644
--- a/jenkins/client/job/image/centos.yml
+++ b/jenkins/client/job/image/centos.yml
@@ -38,7 +38,7 @@
               default: ""
             UPLOAD_URL:
               type: string
-              default: "http://jenkins:eyoocaiG3ADireK3Eef8gae1roh5oox010.10.100.85:8088/"
+              default: "${_param:jenkins_packer_upload_url}"
             SKIP_UPLOAD:
               type: boolean
               default: "false"
diff --git a/jenkins/client/job/image/debian.yml b/jenkins/client/job/image/debian.yml
index 2c92f80..31c46b3 100644
--- a/jenkins/client/job/image/debian.yml
+++ b/jenkins/client/job/image/debian.yml
@@ -38,7 +38,7 @@
               default: ""
             UPLOAD_URL:
               type: string
-              default: "http://jenkins:eyoocaiG3ADireK3Eef8gae1roh5oox0@10.10.100.85:8088/"
+              default: "${_param:jenkins_packer_upload_url}"
             SKIP_UPLOAD:
               type: boolean
               default: "false"
diff --git a/jenkins/client/job/image/ubuntu.yml b/jenkins/client/job/image/ubuntu.yml
index 350d2d7..fa84813 100644
--- a/jenkins/client/job/image/ubuntu.yml
+++ b/jenkins/client/job/image/ubuntu.yml
@@ -45,7 +45,7 @@
               default: ""
             UPLOAD_URL:
               type: string
-              default: "http://jenkins:eyoocaiG3ADireK3Eef8gae1roh5oox0@10.10.100.85:8088/"
+              default: "${_param:jenkins_packer_upload_url}"
             SKIP_UPLOAD:
               type: boolean
               default: "false"
@@ -111,7 +111,7 @@
               default: ""
             UPLOAD_URL:
               type: string
-              default: "http://jenkins:eyoocaiG3ADireK3Eef8gae1roh5oox0@10.10.100.85:8088/"
+              default: "${_param:jenkins_packer_upload_url}"
             SKIP_UPLOAD:
               type: boolean
               default: "false"
diff --git a/jenkins/client/job/k8s-test/init.yml b/jenkins/client/job/k8s-test/init.yml
new file mode 100644
index 0000000..0cdaa09
--- /dev/null
+++ b/jenkins/client/job/k8s-test/init.yml
@@ -0,0 +1,3 @@
+classes:
+- system.jenkins.client.job.k8s-test.mcp-k8s-test-pipeline
+- system.jenkins.client.job.k8s-test.mcp-k8s-merge-pipeline
\ No newline at end of file
diff --git a/jenkins/client/job/k8s-test/mcp-k8s-merge-pipeline.yml b/jenkins/client/job/k8s-test/mcp-k8s-merge-pipeline.yml
new file mode 100644
index 0000000..f209aa2
--- /dev/null
+++ b/jenkins/client/job/k8s-test/mcp-k8s-merge-pipeline.yml
@@ -0,0 +1,36 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        mcp_k8s_merge_pipeline:
+          type: workflow-scm
+          name: mcp-k8s-merge-pipeline
+          display_name: "Kubernetes merge pipeline"
+          discard:
+            build:
+              keep_num: 20
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/kubernetes-ci/kubernetes-pipelines"
+            credentials: "gerrit"
+            script: pipelines/mcp-k8s-test-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                kubernetes/kubernetes:
+                  branches:
+                    - compare_type: "ANT"
+                      name: "**mcp**"
+              message:
+                build_successful: "Build successful"
+                build_unstable: "Build unstable"
+                build_failure: "Build failed"
+              event:
+                change:
+                  - merged
+          param:
+            KUBE_DOCKER_REGISTRY:
+              type: string
+              default: 'docker-dev-local.docker.mirantis.net'
+              description: 'Docker registry for binaries and images'
diff --git a/jenkins/client/job/k8s-test/mcp-k8s-test-pipeline.yml b/jenkins/client/job/k8s-test/mcp-k8s-test-pipeline.yml
new file mode 100644
index 0000000..8490ee7
--- /dev/null
+++ b/jenkins/client/job/k8s-test/mcp-k8s-test-pipeline.yml
@@ -0,0 +1,69 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        mcp_k8s_test_pipeline:
+          type: workflow-scm
+          name: mcp-k8s-test-pipeline
+          display_name: "Kubernetes tests pipeline"
+          discard:
+            build:
+              keep_num: 20
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/kubernetes-ci/kubernetes-pipelines"
+            credentials: "gerrit"
+            script: pipelines/mcp-k8s-test-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                kubernetes/kubernetes:
+                  branches:
+                    - compare_type: "ANT"
+                      name: "**"
+              message:
+                build_successful: "Build successful"
+                build_unstable: "Build unstable"
+                build_failure: "Build failed"
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeTrivialRebase: false
+                      excludeNoCodeChange: false
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: '(recheck|reverify)'
+              override-votes:
+                gerritBuildUnstableVerifiedValue: 1
+                gerritBuildUnstableCodeReviewValue: 1
+          param:
+            KUBE_DOCKER_REGISTRY:
+              type: string
+              default: 'docker-dev-local.docker.mirantis.net'
+              description: 'Docker registry for binaries and images'
+            CALICO_DOCKER_REGISTRY:
+              type: string
+              default: 'docker-prod-virtual.docker.mirantis.net'
+              description: 'Docker registry for published Calico images'
+            K8S_BASE_IMAGE:
+              type: string
+              default: 'mirantis/base-images/debian-base:20161223134732'
+              description: 'Base Docker image to build k8s'
+            CALICO_CNI_IMAGE_REPO:
+              type: string
+              default: 'calico/cni'
+              description: 'Custom calico/cni image repository'
+            CALICO_CNI_IMAGE_TAG:
+              type: string
+              default: 'v1.5.1'
+              description: 'Custom calico/cni image tag'
+            CALICO_DOWNSTREAM:
+              type: boolean
+              default: 'true'
+              description: 'Use Calico downstream'
+            CALICO_VER:
+              type: string
+              default: 'mcp'
+              description: 'Custom Calico version'
diff --git a/jenkins/client/job/opencontrail/build/dpdk-extra.yml b/jenkins/client/job/opencontrail/build/dpdk-extra.yml
index 156cedb..0a152f1 100644
--- a/jenkins/client/job/opencontrail/build/dpdk-extra.yml
+++ b/jenkins/client/job/opencontrail/build/dpdk-extra.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    jenkins_contrail_dpdk_kernel_modules_dkms: "${_param:jenkins_gerrit_url}/contrail/contrail-dpdk-kernel-modules-dkms"
   jenkins:
     client:
       job_template:
@@ -84,3 +86,65 @@
                 description: "binary packages to create"
                 type: string
                 default: "{{binary}}"
+        build-opencontrail-dpdk-kernel-modules-dkms:
+          name: build-opencontrail-dpdk-kernel-modules-dkms-{{os}}-{{dist}}-{{dpdk}}
+          jobs:
+            - os: ubuntu
+              dist: xenial
+              branch: contrail_dpdk_2_1
+              dpdk: "21"
+              aptly_repo: ubuntu-xenial-mitaka
+            - os: ubuntu
+              dist: xenial
+              dpdk: "1702"
+              branch: contrail_dpdk_17_02
+              aptly_repo: ubuntu-xenial-oc40-dpdk1702
+          template:
+            discard:
+             build:
+               keep_num: 5
+             artifact:
+               keep_num: 5
+            type: workflow-scm
+            concurrent: false
+            quiet_period: 120
+            scm:
+              type: git
+              url: "${_param:jenkins_contrail_dpdk_kernel_modules_dkms}"
+              credentials: "gerrit"
+              branch: "{{branch}}"
+            trigger:
+              gerrit:
+                project:
+                  contrail/contrail-dpdk:
+                    branches:
+                      - "{{branch}}"
+                message:
+                  build_successful: "Build successful"
+                  build_unstable: "Build unstable"
+                  build_failure: "Build failed"
+                event:
+                  ref:
+                    - updated
+            param:
+              SOURCE_BRANCH:
+                type: string
+                default: "{{branch}}"
+              SOURCE_CREDENTIALS:
+                type: string
+                default: "gerrit"
+              APTLY_URL:
+                type: string
+                default: "${_param:jenkins_aptly_api_url}"
+              APTLY_REPO:
+                type: string
+                default: "{{aptly_repo}}"
+              OS:
+                type: string
+                default: "{{os}}"
+              DIST:
+                type: string
+                default: "{{dist}}"
+              ARCH:
+                type: string
+                default: "amd64"
diff --git a/jenkins/client/job/opencontrail/build/generic.yml b/jenkins/client/job/opencontrail/build/generic.yml
index 9643254..699222e 100644
--- a/jenkins/client/job/opencontrail/build/generic.yml
+++ b/jenkins/client/job/opencontrail/build/generic.yml
@@ -14,6 +14,7 @@
               ppa: mirantis-opencontrail/opencontrail-3.0.3
               upload_source_package: false
               dpdk: contrail_dpdk_2_1
+              build_trigger: ""
             - buildname: oc31
               os: ubuntu
               dist: trusty
@@ -21,6 +22,7 @@
               ppa: mirantis-opencontrail/opencontrail-3.1
               upload_source_package: true
               dpdk: contrail_dpdk_2_1
+              build_trigger: ""
             - buildname: oc31
               os: ubuntu
               dist: xenial
@@ -28,6 +30,7 @@
               ppa: mirantis-opencontrail/opencontrail-3.1
               upload_source_package: true
               dpdk: contrail_dpdk_2_1
+              build_trigger: ""
             - buildname: oc311
               os: ubuntu
               dist: trusty
@@ -35,6 +38,7 @@
               ppa: mirantis-opencontrail/opencontrail-3.1.1
               upload_source_package: true
               dpdk: contrail_dpdk_2_1
+              build_trigger: ""
             - buildname: oc311
               os: ubuntu
               dist: xenial
@@ -42,6 +46,7 @@
               ppa: mirantis-opencontrail/opencontrail-3.1.1
               upload_source_package: true
               dpdk: contrail_dpdk_2_1
+              build_trigger: ""
             - buildname: oc32
               os: ubuntu
               dist: trusty
@@ -49,6 +54,7 @@
               ppa: mirantis-opencontrail/opencontrail-3.2
               upload_source_package: true
               dpdk: contrail_dpdk_2_1
+              build_trigger: ""
             - buildname: oc32
               os: ubuntu
               dist: xenial
@@ -56,6 +62,7 @@
               ppa: mirantis-opencontrail/opencontrail-3.2
               upload_source_package: true
               dpdk: contrail_dpdk_2_1
+              build_trigger: ""
             - buildname: oc323
               os: ubuntu
               dist: trusty
@@ -63,6 +70,7 @@
               ppa: mirantis-opencontrail/opencontrail-3.2.3
               upload_source_package: true
               dpdk: contrail_dpdk_2_1
+              build_trigger: ""
             - buildname: oc323
               os: ubuntu
               dist: xenial
@@ -70,46 +78,55 @@
               ppa: mirantis-opencontrail/opencontrail-3.2.3
               upload_source_package: true
               dpdk: contrail_dpdk_2_1
+              build_trigger: ""
             - buildname: oc40
               os: ubuntu
               dist: trusty
               branch: R4.0
               ppa: mirantis-opencontrail/opencontrail-4.0
               upload_source_package: true
-              dpdk: contrail_dpdk_2_1
+              dpdk: contrail_dpdk_17_02
+              build_trigger: "H H(20-23) */3 * *"
             - buildname: oc40
               os: ubuntu
               dist: xenial
               branch: R4.0
               ppa: mirantis-opencontrail/opencontrail-4.0
               upload_source_package: true
-              dpdk: contrail_dpdk_2_1
-            - buildname: oc40-dpdk1702
+              dpdk: contrail_dpdk_17_02
+              build_trigger: "H H(20-23) */3 * *"
+            - buildname: oc41
               os: ubuntu
               dist: trusty
-              branch: R4.0
-              ppa: mirantis-opencontrail/opencontrail-4.0-dpdk-17-02
-              upload_source_package: false
+              branch: R4.1
+              ppa: mirantis-opencontrail/opencontrail-4.1
+              upload_source_package: true
               dpdk: contrail_dpdk_17_02
-            - buildname: oc40-dpdk1702
+              build_trigger: "H H(20-23) */7 * *"
+            - buildname: oc41
               os: ubuntu
               dist: xenial
-              branch: R4.0
-              ppa: mirantis-opencontrail/opencontrail-4.0-dpdk-17-02
-              upload_source_package: false
+              branch: R4.1
+              ppa: mirantis-opencontrail/opencontrail-4.1
+              upload_source_package: true
               dpdk: contrail_dpdk_17_02
+              build_trigger: "H H(20-23) */7 * *"
             - buildname: oc666
               os: ubuntu
               dist: trusty
               branch: master
               ppa: mirantis-opencontrail/opencontrail-master
-              upload_source_package: false
+              upload_source_package: true
+              dpdk: contrail_dpdk_17_02
+              build_trigger: "H H(20-23) */7 * *"
             - buildname: oc666
               os: ubuntu
               dist: xenial
               branch: master
               ppa: mirantis-opencontrail/opencontrail-master
-              upload_source_package: false
+              upload_source_package: true
+              dpdk: contrail_dpdk_17_02
+              build_trigger: "H H(20-23) */7 * *"
           template:
             discard:
              build:
@@ -164,6 +181,8 @@
                 type: boolean
                 default: '{{upload_source_package}}'
             trigger:
+              pollscm:
+                spec: "{{build_trigger}}"
               gerrit:
                 project:
                    contrail/contrail-pipeline:
diff --git a/jenkins/client/job/opencontrail/git-mirrors/upstream.yml b/jenkins/client/job/opencontrail/git-mirrors/upstream.yml
index 0fa0491..fa9bc5b 100644
--- a/jenkins/client/job/opencontrail/git-mirrors/upstream.yml
+++ b/jenkins/client/job/opencontrail/git-mirrors/upstream.yml
@@ -62,7 +62,19 @@
               github:
                 url: "https://github.com/Mirantis/{{name}}"
             trigger:
-              github:
+              gerrit:
+                project:
+                  contrail/{{name}}:
+                    branches:
+                      - compare_type: "REG_EXP"
+                        name: ".*"
+                message:
+                  build_successful: "Build successful"
+                  build_unstable: "Build unstable"
+                  build_failure: "Build failed"
+                event:
+                  ref:
+                    - updated
             param:
               SOURCE_URL:
                 type: string
diff --git a/jenkins/client/job/opencontrail/init.yml b/jenkins/client/job/opencontrail/init.yml
index 4b42d50..34cc4e5 100644
--- a/jenkins/client/job/opencontrail/init.yml
+++ b/jenkins/client/job/opencontrail/init.yml
@@ -3,12 +3,12 @@
   - system.jenkins.client.job.opencontrail.git-mirrors
 parameters:
   _param:
-    contrail_branches: "R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,R3.2.3.x,R4.0,master"
+    contrail_branches: "R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,R3.2.3.x,R4.0,R4.1,master"
     contrail_kubernetes_branches: "master,release-1.2"
-    contrail_dpdk_extra_branches: "mitaka,mitaka_dpdk_17_02,mitaka_dpdk_17_05,kilo,liberty-multiqueue,newton"
-    contrail_ceilometer_plugin_branches: "master,R4.0"
+    contrail_dpdk_extra_branches: "mitaka,mitaka_dpdk_17_02,mitaka_dpdk_17_05,kilo,liberty-multiqueue,newton,ocata"
+    contrail_ceilometer_plugin_branches: "master,R4.0,R4.1"
     contrail_kubernetes_branches: "master,origin-1.1,origin-1.1.3,release-1.1,release-1.2"
-    contrail_dpdk_branches: "master,R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,R3.2.3.x,R4.0,contrail_dpdk_17_02,contrail_dpdk_17_05,contrail_dpdk_1_7,contrail_dpdk_2_0,contrail_dpdk_2_1"
+    contrail_dpdk_branches: "master,R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,R3.2.3.x,R4.0,R4.0.1,R4.1,contrail_dpdk_17_02,contrail_dpdk_17_05,contrail_dpdk_1_7,contrail_dpdk_2_0,contrail_dpdk_2_1"
   jenkins:
     client:
       view:
@@ -27,7 +27,11 @@
               naming_rule: "R3.1.1.x"
             - group_regex: "build-opencontrail-oc32-.*"
               naming_rule: "R3.2"
+            - group_regex: "build-opencontrail-oc323-.*"
+              naming_rule: "R3.2.3.x"
             - group_regex: "build-opencontrail-oc40-.*"
               naming_rule: "R4.0"
+            - group_regex: "build-opencontrail-oc41-.*"
+              naming_rule: "R4.1"
             - group_regex: "build-opencontrail-oc666-.*"
               naming_rule: "oc-666"
diff --git a/jenkins/client/job/oscore/init.yml b/jenkins/client/job/oscore/init.yml
new file mode 100644
index 0000000..171ff6e
--- /dev/null
+++ b/jenkins/client/job/oscore/init.yml
@@ -0,0 +1,10 @@
+classes:
+  - system.jenkins.client.job.oscore.tests
+parameters:
+  jenkins:
+    client:
+      view:
+        "OSCORE":
+          enabled: true
+          type: ListView
+          include_regex: "^oscore-.*"
\ No newline at end of file
diff --git a/jenkins/client/job/oscore/tests.yml b/jenkins/client/job/oscore/tests.yml
new file mode 100644
index 0000000..4844708
--- /dev/null
+++ b/jenkins/client/job/oscore/tests.yml
@@ -0,0 +1,363 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        test-openstack-component-periodic:
+          name: "{{job_prefix}}-{{milestone}}-{{model}}-{{openstack_version}}-{{formula_pkg_revision}}"
+          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: test-openstack-component-pipeline.groovy
+            trigger:
+              timer:
+               spec: "0 21 * * *"
+            param:
+              # general
+              HEAT_STACK_ZONE:
+                type: string
+                description: AZ
+                default: "mcp-oscore-ci"
+              OPENSTACK_VERSION:
+                type: string
+                description: Version of openstack to test
+                default: "{{openstack_version}}"
+              PROJECT:
+                type: string
+                description: Project to test
+                default: "all"
+              STACK_TEST_JOB:
+                type: string
+                description: Job for environment deployment
+                default: "{{stack_test_job}}"
+              STACK_TYPE:
+                type: string
+                default: "{{stack_type}}"
+              STACK_INSTALL:
+                type: string
+                description: components to install
+                default: 'core,openstack,ovs'
+              STACK_DELETE:
+                type: boolean
+                default: 'false'
+                description: Don't enable it if you need to use the lab after
+              STACK_CLEANUP_JOB:
+                type: string
+                default: "{{stack_cleanup_job}}"
+              # salt
+              SALT_OVERRIDES:
+                type: text
+                default: ""
+                description: YAML with overrides for Salt deployment
+              FORMULA_PKG_REVISION:
+                type: string
+                description: Version of formulas for salt-master bootstrap
+                default: "{{formula_pkg_revision}}"
+              EXTRA_REPO:
+                type: string
+                description: Optional extra repository to run tests with
+                default: ''
+              EXTRA_REPO_PIN:
+                type: string
+                description: Optional extra repository pin definition
+                default: ''
+              EXTRA_REPO_PRIORITY:
+                type: string
+                description: Optional extra repository pin priority
+                default: ''
+              # 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
+              TEST_MILESTONE:
+                type: string
+                description: Product milestone
+                default: "{{milestone}}"
+              TEST_TEMPEST_CONF:
+                type: string
+                description: Tempest configuration file path inside container
+                default: "{{tempest_conf}}"
+              TEST_TEMPEST_TARGET:
+                type: string
+                description: Node to run tests
+                default: "{{tempest_target}}"
+              TEST_TEMPEST_PATTERN:
+                type: string
+                description: Run tests matched to pattern only
+                default: "tempest"
+              TEST_MODEL:
+                type: string
+                description: Environment salt model
+                default: "{{model}}"
+              TEST_PASS_THRESHOLD:
+                type: string
+                description: Tests pass rate to consider build successful
+                default: "{{test_threshold}}"
+              FAIL_ON_TESTS:
+                type: boolean
+                default: 'true'
+                description: Whether to fail build on test results
+        test-runner-template:
+          name: "{{job_prefix}}-{{test_type}}-runner"
+          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: run-openstack-tests.groovy
+            param:
+              # general
+              FAIL_ON_TESTS:
+                type: boolean
+                default: 'true'
+                description: Whether to fail build on test results
+              TEST_MILESTONE:
+                type: string
+                description: Product milestone
+              OPENSTACK_VERSION:
+                type: string
+                description: Version of openstack to test
+              PROJECT:
+                type: string
+                description: Name of project being tested
+              PROC_RESULTS_JOB:
+                type: string
+                description: Job for results processing
+                default: "{{proc_results_job}}"
+              SLAVE_NODE:
+                type: string
+                default: 'python'
+              # salt
+              SALT_MASTER_CREDENTIALS:
+                type: string
+                default: "salt-qa-credentials"
+              SALT_MASTER_URL:
+                type: string
+                default: ""
+              # test
+              TESTRAIL:
+                type: boolean
+                default: 'false'
+                description: Upload results to testrail or not
+              TEST_TEMPEST_TARGET:
+                type: string
+                description: Salt target to run tests
+              TEST_TEMPEST_IMAGE:
+                type: string
+                description: Node to run tests
+                default: 'docker-prod-local.artifactory.mirantis.com/mirantis/oscore/rally-tempest'
+              TEST_TEMPEST_PATTERN:
+                type: string
+                description: Run tests matched to pattern only
+              TEST_TEMPEST_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_MODEL:
+                type: string
+                description: Environment salt model
+              TEST_DOCKER_INSTALL:
+                type: boolean
+                default: 'true'
+                description: Whether to install docker for tempest
+              TEST_PASS_THRESHOLD:
+                type: string
+                description: Tests pass rate to consider build successful
+                default: "90"
+        results-checker-template:
+          name: "{{job_prefix}}-{{test_type}}-results-checker"
+          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: process-openstack-test-results.groovy
+            param:
+              # general
+              FAIL_ON_TESTS:
+                type: boolean
+                default: 'false'
+                description: Whether to fail build on test results
+              OPENSTACK_VERSION:
+                type: string
+                description: Version of openstack to test
+              TARGET_JOB:
+                type: string
+                description: Job to analyse results from
+              TARGET_BUILD_NUMBER:
+                type: string
+                description: Build number to analyse results from
+              # test
+              TESTRAIL:
+                type: boolean
+                default: 'false'
+                description: Whether to upload results to testrail or not
+              TESTRAIL_QA_CREDENTIALS:
+                type: string
+                default: "{{testrail_credentials}}"
+                description: Credentials for results upload to testrail
+              TEST_TEMPEST_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'
+              TEST_PLAN:
+                type: string
+                description: Testrail test plan
+                default: ''
+              TEST_GROUP:
+                type: string
+                description: Testrail test group
+                default: ''
+              TEST_REPORTER_IMAGE:
+                type: string
+                description: Docker image of testrail reporter tool
+                default: "{{test_reporter_image}}"
+              TEST_MODEL:
+                type: string
+                description: Environment salt model
+              TEST_DATE:
+                type: string
+                description: "TEST run date"
+              TEST_PASS_THRESHOLD:
+                type: string
+                description: Tests pass rate to consider build successful
+                default: "90"
+        deploy-kvm-virtual-template:
+          name: "{{job_prefix}}-deploy-kvm-VMs"
+          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-kvm-pipeline.groovy
+            param:
+              # general
+              STACK_NAME:
+                type: string
+                description: "VM prefix name"
+                default: "kvm-aio-node"
+              TEMPLATE:
+                type: choice
+                choices:
+                  - AIO
+                  - Multi
+                default: "AIO"
+              DEPLOY_OPENSTACK:
+                type: boolean
+                default: 'false'
+                description: "Enable it if openstack deployment is required"
+              JOB_DEP_NAME:
+                type: string
+                default:
+                description: "Name of the job to deploy openstack"
+              DESTROY_ENV:
+                type: boolean
+                default: 'false'
+                description: "Enable if env have to be destoyed."
+              CREATE_ENV:
+                type: boolean
+                default: 'true'
+                description: "Enable it if KVM VM have to be created."
+              STACK_DELETE:
+                type: boolean
+                default: 'false'
+                description: "Enable it if KVM VM have to be deleted."
+              STACK_TYPE:
+                type: string
+                default: "{{stack_type}}"
+              OPENSTACK_API_PROJECT:
+                type: string
+                default: "mcp-oscore-ci"
+              HEAT_STACK_ZONE:
+                type: string
+                description: AZ
+                default: "mcp-oscore-ci"
+              STACK_INSTALL:
+                type: string
+                description: components to install
+                default: 'core,openstack,ovs'
+              STACK_TEST:
+                type: string
+                description: Job for environment deployment
+                default: ''
+              # salt
+              SALT_MASTER_CREDENTIALS:
+                type: string
+                default: "salt-qa-credentials"
+              SALT_MASTER_URL:
+                type: string
+                default: ""
+              SALT_OVERRIDES:
+                type: text
+                default: ""
+                description: YAML with overrides for Salt deployment
+              TEST_MODEL:
+                type: string
+                description: Environment salt model
+                default: "{{model}}"
diff --git a/jenkins/client/job/oss/init.yml b/jenkins/client/job/oss/init.yml
index 0e23f01..9478ffd 100644
--- a/jenkins/client/job/oss/init.yml
+++ b/jenkins/client/job/oss/init.yml
@@ -1,3 +1,5 @@
 classes:
   - system.jenkins.client.job.oss.test_devops_portal
+  - system.jenkins.client.job.oss.test_devops_portal_nightly
+  - system.jenkins.client.job.oss.test_pushkin_codebase
   - system.jenkins.client.job.oss.test_security_monkey_openstack
diff --git a/jenkins/client/job/oss/test_devops_portal.yml b/jenkins/client/job/oss/test_devops_portal.yml
index 4007010..7001200 100644
--- a/jenkins/client/job/oss/test_devops_portal.yml
+++ b/jenkins/client/job/oss/test_devops_portal.yml
@@ -41,3 +41,6 @@
             DEFAULT_GIT_REF:
                 type: string
                 default: master
+            NIGHTLY_BUILD:
+                type: boolean
+                default: false
diff --git a/jenkins/client/job/oss/test_devops_portal_nightly.yml b/jenkins/client/job/oss/test_devops_portal_nightly.yml
new file mode 100644
index 0000000..34a8bec
--- /dev/null
+++ b/jenkins/client/job/oss/test_devops_portal_nightly.yml
@@ -0,0 +1,34 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        test-oss-devops-portal-nightly:
+          name: test-oss-devops-portal-nightly
+          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-devops-portal-pipeline.groovy
+          trigger:
+            timer:
+              spec: "0 23 * * *"
+          param:
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            DEFAULT_GIT_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/oss/devops-portal"
+            DEFAULT_GIT_REF:
+                type: string
+                default: master
+            NIGHTLY_BUILD:
+                type: boolean
+                default: true
diff --git a/jenkins/client/job/oss/test_pushkin_codebase.yml b/jenkins/client/job/oss/test_pushkin_codebase.yml
new file mode 100644
index 0000000..245f1d8
--- /dev/null
+++ b/jenkins/client/job/oss/test_pushkin_codebase.yml
@@ -0,0 +1,50 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        test-oss-pushkin-codebase:
+          name: test-oss-pushkin-codebase
+          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-pushkin-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                "oss/pushkin":
+                  branches:
+                    - devel
+                    - master
+              skip_vote:
+                - successful
+                - failed
+                - unstable
+                - not_built
+              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}/oss/pushkin"
+            DEFAULT_GIT_REF:
+                type: string
+                default: master
+                description: "Refspec in format refs/changes/, i.e. refs/changes/32/10332/4"
diff --git a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
index 01c3baf..90a96a0 100644
--- a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
+++ b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
@@ -17,9 +17,11 @@
               branches: ${_param:salt_formulas_branches}
             - name: artifactory
               branches: ${_param:salt_formulas_branches}
+            - name: avinetworks
+              branches: ${_param:salt_formulas_branches}
             - name: backupninja
               branches: ${_param:salt_formulas_branches}
-            - name: avinetworks
+            - name: barbican
               branches: ${_param:salt_formulas_branches}
             - name: billometer
               branches: ${_param:salt_formulas_branches}
@@ -57,6 +59,10 @@
               branches: ${_param:salt_formulas_branches}
             - name: etcd
               branches: ${_param:salt_formulas_branches}
+            - name: fluentbit
+              branches: ${_param:salt_formulas_branches}
+            - name: fluentd
+              branches: ${_param:salt_formulas_branches}
             - name: foreman
               branches: ${_param:salt_formulas_branches}
             - name: freeipa
@@ -85,6 +91,8 @@
               branches: ${_param:salt_formulas_extra_branches}
             - name: heka
               branches: ${_param:salt_formulas_branches}
+            - name: helm
+              branches: ${_param:salt_formulas_branches}
             - name: horizon
               branches: ${_param:salt_formulas_extra_branches}
             - name: influxdb
@@ -253,3 +261,40 @@
               BRANCHES:
                 type: string
                 default: "{{branches}}"
+        git-mirror-2way:
+          name: git-mirror-2way-{{name}}
+          jobs:
+            - name: salt-formulas-scripts
+              branches: master
+          template:
+            discard:
+              build:
+                keep_num: 10
+              artifact:
+                keep_num: 10
+            type: workflow-scm
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: git-mirror-2way-pipeline.groovy
+              github:
+                url: "https://github.com/salt-formulas/{{name}}"
+            trigger:
+              github:
+              pollscm:
+                spec: ${_param:jenkins_pollscm_spec}
+            param:
+              SOURCE_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/salt-formulas/{{name}}.git"
+              TARGET_URL:
+                type: string
+                default: "https://github.com/salt-formulas/{{name}}.git"
+              CREDENTIALS_ID:
+                type: string
+                default: "gerrit"
+              BRANCHES:
+                type: string
+                default: "{{branches}}"
diff --git a/jenkins/client/job/salt-formulas/tests.yml b/jenkins/client/job/salt-formulas/tests.yml
index c25cc49..236e4d6 100644
--- a/jenkins/client/job/salt-formulas/tests.yml
+++ b/jenkins/client/job/salt-formulas/tests.yml
@@ -10,8 +10,9 @@
             - name: aptcacher
             - name: aptly
             - name: artifactory
-            - name: backupninja
             - name: avinetworks
+            - name: backupninja
+            - name: barbican
             - name: billometer
             - name: bind
             - name: bird
@@ -28,9 +29,12 @@
             - name: dekapod
             - name: devops-portal
             - name: docker
+            - name: dogtag
             - name: dovecot
             - name: elasticsearch
             - name: etcd
+            - name: fluentbit
+            - name: fluentd
             - name: foreman
             - name: freeipa
             - name: galera
@@ -155,8 +159,42 @@
               DEFAULT_GIT_REF:
                 type: string
                 default: master
-              KITCHEN_TESTS_PARALLEL:
-                type: boolean
-                default: 'false'
               CUSTOM_KITCHEN_ENVS:
                 type: text
+              PARALLEL_GROUP_SIZE:
+                type: string
+                default: "8"
+      job:
+        test-salt-formulas-env:
+          name: test-salt-formulas-env
+          discard:
+            build:
+              keep_num: 500
+            artifact:
+              keep_num: 10
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: test-salt-formulas-env.groovy
+          param:
+            SALT_VERSION:
+              type: string
+              default: "latest"
+            SALT_OPTS:
+              type: string
+              default: "--force-color"
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            DEFAULT_GIT_URL:
+              type: string
+              description: "Run against alternate system reclass"
+              default: "${_param:jenkins_gerrit_url}/salt-formulas/{{name}}"
+            DEFAULT_GIT_REF:
+              type: string
+              default: master
+            KITCHEN_ENV:
+              type: text
diff --git a/jenkins/client/job/salt-models/generate.yml b/jenkins/client/job/salt-models/generate.yml
index 56a2da2..491cfee 100644
--- a/jenkins/client/job/salt-models/generate.yml
+++ b/jenkins/client/job/salt-models/generate.yml
@@ -23,7 +23,7 @@
                 default: "${_param:jenkins_gerrit_url}/mk/cookiecutter-templates.git"
               COOKIECUTTER_TEMPLATE_CREDENTIALS:
                 type: string
-                default: github-credentials
+                default: gerrit
               COOKIECUTTER_TEMPLATE_BRANCH:
                 type: string
                 default: master
diff --git a/jenkins/client/job/salt-models/tests.yml b/jenkins/client/job/salt-models/tests.yml
index a760944..5e7e82b 100644
--- a/jenkins/client/job/salt-models/tests.yml
+++ b/jenkins/client/job/salt-models/tests.yml
@@ -1,6 +1,6 @@
 parameters:
   _param:
-  jenkins_pollscm_spec: "0 1 * * *"
+    jenkins_pollscm_spec: "0 1 * * *"
   jenkins:
     client:
       job_template:
@@ -41,7 +41,7 @@
                 default: "gerrit"
               PARALLEL_NODE_GROUP_SIZE:
                 type: string
-                default: "1"
+                default: "9"
               # Salt master setup extra formulas
               EXTRA_FORMULAS:
                 type: string
@@ -61,6 +61,21 @@
               CONFIG_NODE_NAME_PATTERN:
                 type: string
                 default: "{{config_node_name}}"
+              MAX_CPU_PER_JOB:
+                type: string
+                default: "2"
+              RECLASS_IGNORE_CLASS_NOTFOUND:
+                type: boolean
+                default: "{{reclass_ignore_class_notfound}}"
+              LEGACY_TEST_MODE:
+                type: boolean
+                default: "{{legacy_test_mode}}"
+              APT_REPOSITORY:
+                type: string
+                default: ""
+              APT_REPOSITORY_GPG:
+                type: string
+                default: ""
         test_system_reclass:
           name: test-salt-model-{{name}}
           template:
@@ -70,6 +85,16 @@
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
               credentials: "gerrit"
               script: test-system-reclass-pipeline.groovy
+            trigger:
+              gerrit:
+                project:
+                  salt-models/{{name}}:
+                    branches:
+                      - master
+                event:
+                  comment:
+                    - addedContains:
+                        commentAddedCommentContains: '(recheck|reverify)'
             concurrent: true
             param:
               TEST_MODELS:
@@ -82,11 +107,19 @@
               DEFAULT_GIT_REF:
                 type: string
                 default: master
-        test_salt_model_cookiecutter:
-          name: test-salt-model-cookiecutter-{{cookiecutter_template}}
+              PARALLEL_NODE_GROUP_SIZE:
+                type: string
+                default: "5"
+        test_mk_cookiecutter_templates:
+          name: test-mk-{{cookiecutter_template}}
           jobs:
             - cookiecutter_template: cookiecutter-templates
           template:
+            discard:
+             build:
+               keep_num: 20
+             artifact:
+               keep_num: 20
             type: workflow-scm
             concurrent: true
             scm:
@@ -120,6 +153,12 @@
               RECLASS_MODEL_BRANCH:
                 type: string
                 default: master
+              SYSTEM_GIT_URL:
+                type: string
+                default: ""
+              SYSTEM_GIT_REF:
+                type: string
+                default: ""
               PARALLEL_NODE_GROUP_SIZE:
                 type: string
                 default: "1"
@@ -145,6 +184,9 @@
             NODE_TARGET:
               type: string
               default: ""
+            CLUSTER_NAME:
+              type: string
+              default: ""
             DEFAULT_GIT_URL:
               type: string
               default: "${_param:jenkins_gerrit_url}/salt-models/{{name}}"
@@ -168,4 +210,19 @@
               default: ""
             SYSTEM_GIT_REF:
               type: string
-              default: ""
\ No newline at end of file
+              default: ""
+            MAX_CPU_PER_JOB:
+              type: string
+              default: "2"
+            RECLASS_IGNORE_CLASS_NOTFOUND:
+              type: boolean
+              default: "false"
+            LEGACY_TEST_MODE:
+              type: boolean
+              default: "false"
+            APT_REPOSITORY:
+              type: string
+              default: ""
+            APT_REPOSITORY_GPG:
+              type: string
+              default: ""
diff --git a/jenkins/client/job/test_pipelines.yml b/jenkins/client/job/test_pipelines.yml
index 5d58f20..b1b782a 100644
--- a/jenkins/client/job/test_pipelines.yml
+++ b/jenkins/client/job/test_pipelines.yml
@@ -1,50 +1,58 @@
 parameters:
   jenkins:
     client:
-      job:
-        test-mk-mk-pipelines:
-          name: test-mk-mk-pipelines
-          discard:
-            build:
-              keep_num: 25
-            artifact:
-              keep_num: 25
-          type: workflow-scm
-          concurrent: true
-          scm:
-            type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
-            credentials: "gerrit"
-            script: test-groovy-pipeline.groovy
-          trigger:
-            gerrit:
-              project:
-                "mk/mk-pipelines":
-                  branches:
-                    - master
-              event:
-                patchset:
-                  - created:
-                      excludeDrafts: false
-                      excludeTrivialRebase: false
-                      excludeNoCodeChange: false
-                comment:
-                  - addedContains:
-                      commentAddedCommentContains: '(recheck|reverify)'
-          param:
-            CREDENTIALS_ID:
-              type: string
-              default: "gerrit"
-            GRADLE_IMAGE:
-              type: string
-              default: "niaquinto/gradle"
-            GRADLE_CMD:
-              type: string
-              default: "check"
-            DEFAULT_GIT_URL:
+      job_template:
+        test-pipelines:
+          name: test-{{name}}
+          jobs:
+            - name: mk-mk-pipelines
+              repo: mk/mk-pipelines
+            - name: mcp-ci-pipeline-library
+              repo: mcp-ci/pipeline-library
+            - name: oss-jenkins-pipelines
+              repo: oss/jenkins/pipelines
+          template:
+            discard:
+              build:
+                keep_num: 25
+              artifact:
+                keep_num: 25
+            type: workflow-scm
+            concurrent: true
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: test-groovy-pipeline.groovy
+            trigger:
+              gerrit:
+                project:
+                  "{{repo}}":
+                    branches:
+                      - master
+                event:
+                  patchset:
+                    - created:
+                        excludeDrafts: false
+                        excludeTrivialRebase: false
+                        excludeNoCodeChange: false
+                  comment:
+                    - addedContains:
+                        commentAddedCommentContains: '(recheck|reverify)'
+            param:
+              CREDENTIALS_ID:
                 type: string
-                description: "Run against alternate system reclass"
-                default: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
-            DEFAULT_GIT_REF:
+                default: "gerrit"
+              GRADLE_IMAGE:
                 type: string
-                default: master
+                default: "niaquinto/gradle"
+              GRADLE_CMD:
+                type: string
+                default: "check --info"
+              DEFAULT_GIT_URL:
+                  type: string
+                  description: "Run against alternate system reclass"
+                  default: "${_param:jenkins_gerrit_url}/{{repo}}"
+              DEFAULT_GIT_REF:
+                  type: string
+                  default: master
diff --git a/jenkins/client/job/validate.yml b/jenkins/client/job/validate.yml
new file mode 100644
index 0000000..6d3ecda
--- /dev/null
+++ b/jenkins/client/job/validate.yml
@@ -0,0 +1,175 @@
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      view:
+        Validation:
+          enabled: true
+          type: ListView
+          include_regex: "validate.*"
+      job:
+        validate_openstack:
+          type: workflow-scm
+          name: validate-openstack
+          display_name: "Validate - Openstack"
+          discard:
+            build:
+              keep_num: 20
+            artifact:
+              keep_num: 20
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: validate-cloud.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+              description: Full Salt API address [e.g. https://10.10.10.2:6969]
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+              description: Credentials to the Salt API
+            TEST_IMAGE:
+              type: string
+              default: "docker-prod-local.artifactory.mirantis.com/mirantis/oss/qa-tools"
+              description: Docker image to setup testing environment
+            TARGET_NODE:
+              type: string
+              default: ""
+              description: Target node where this job will be executed from
+            RUN_RALLY_TESTS:
+              type: boolean
+              default: 'true'
+              description: If chosen then Rally tests will be executed
+            RUN_TEMPEST_TESTS:
+              type: boolean
+              default: 'true'
+              description: If chosen then Tempest tests will be executed
+            RUN_K8S_TESTS:
+              type: boolean
+              default: 'true'
+              description: If chosen then K8S tests will be executed
+            TEMPEST_TEST_SET:
+              type: choice
+              choices:
+                - smoke
+                - full
+              description: Set of Tempest tests to run
+            TEMPEST_CONFIG_REPO:
+              type: string
+              default: ""
+              description: Git repository with configuration files for Tempest
+            TEMPEST_CONFIG_BRANCH:
+              type: string
+              default: ""
+              description: Git branch which will be used during the checkout
+            TEMPEST_REPO:
+              type: string
+              default: ""
+              description: Git repository with Tempest
+            TEMPEST_VERSION:
+              type: string
+              default: ""
+              description: Version of Tempest (tag, branch or commit)
+            TEST_K8S_NODE:
+              type: string
+              default: ""
+              description: Kubernetes node to run tests from
+            TEST_K8S_API_SERVER:
+              type: string
+              default: "http://127.0.0.1:8080"
+              description: API server parameter for K8S tests
+            TEST_K8S_CONFORMANCE_IMAGE:
+              type: string
+              default: "docker-dev-virtual.docker.mirantis.net/mirantis/kubernetes/k8s-conformance:v1.7.5-2_1504192939316"
+              description: Docker image to run K8S tests
+            RUN_SPT_TESTS:
+              type: boolean
+              default: 'true'
+              description: If chosen then SPT tests will be executed
+            SPT_SSH_USER:
+              type: string
+              default: "root"
+              description: Username that is used to ssh between cluster nodes
+            FLOATING_NETWORK:
+              type: string
+              default: ""
+              description: External(floating) network name (used in both SPT and Rally)
+            SPT_IMAGE:
+              type: string
+              default: ""
+              description: Image that is used for network-VM-to-VM-iperf-tests tests
+            SPT_IMAGE_USER:
+              type: string
+              default: ""
+              description: Username that is used to ssh to SPT_IMAGE
+            SPT_FLAVOR:
+              type: string
+              default: ""
+              description: Flavor name for SPT_IMAGE (make sure you have required flavor created)
+            RALLY_IMAGE:
+              type: string
+              default: "cirros"
+            RALLY_FLAVOR:
+              type: string
+              default: "m1.tiny"
+              description: Flavor name for Rally scenarios
+            RALLY_CONFIG_REPO:
+              type: string
+              default: ""
+              description: Git repository with configuration files for Rally
+            RALLY_CONFIG_BRANCH:
+              type: string
+              default: ""
+              description: Git branch which will be used during the checkout
+            AVAILABILITY_ZONE:
+              type: string
+              default: "nova"
+              description: Name of availability zone
+            GENERATE_REPORT:
+              type: boolean
+              default: 'true'
+              description: If chosen then at the end of the test run HTML report will be generated
+            ACCUMULATE_RESULTS:
+              type: boolean
+              default: 'true'
+              description: If chosen then previous build results will be used in the current build
+        cvp-sanity:
+          type: workflow-scm
+          name: validate-cvp-sanity
+          display_name: "CVP - Sanity checks"
+          discard:
+            build:
+              keep_num: 20
+            artifact:
+              keep_num: 20
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: cvp-sanity.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: ""
+              description: Full Salt API address [e.g. https://10.10.10.2:6969]
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            SANITY_TESTS_REPO:
+              type: string
+              default: "https://github.com/Mirantis/cvp-sanity-checks"
+              description: Url for cvp-sanity-checks
+            SANITY_TESTS_SET:
+              type: string
+              default: ""
+              description: Leave empty for full run or choose a file, e.g. test_mtu.py
+            PROXY:
+              type: string
+              default: ""
+              description: Proxy address to clone repo and install python requirements
diff --git a/jenkins/client/node.yml b/jenkins/client/node.yml
index 321951a..e5e4d3b 100644
--- a/jenkins/client/node.yml
+++ b/jenkins/client/node.yml
@@ -7,6 +7,8 @@
         master:
           node_mode: Exclusive
           remote_home: /var/lib/jenkins
+          labels:
+            - python
           launcher:
             type: master
         slave01:
diff --git a/keepalived/cluster/instance/openstack_telemetry_vip.yml b/keepalived/cluster/instance/openstack_telemetry_vip.yml
index 91155e7..5dc91a1 100644
--- a/keepalived/cluster/instance/openstack_telemetry_vip.yml
+++ b/keepalived/cluster/instance/openstack_telemetry_vip.yml
@@ -1,19 +1,11 @@
-applications:
-- keepalived
 classes:
-- service.keepalived.support
+- service.keepalived.cluster.single
 parameters:
   _param:
     keepalived_openstack_telemetry_vip_address: ${_param:cluster_vip_address}
     keepalived_openstack_telemetry_vip_password: password
     keepalived_openstack_telemetry_vip_interface: eth1
-  keepalived:
-    cluster:
-      enabled: true
-      instance:
-        openstack_telemetry_vip:
-          address: ${_param:keepalived_openstack_telemetry_vip_address}
-          password: ${_param:keepalived_openstack_telemetry_vip_password}
-          interface: ${_param:keepalived_openstack_telemetry_vip_interface}
-          virtual_router_id: 230
-          priority: 101
+    keepalived_vip_virtual_router_id: 230
+    keepalived_vip_address: ${_param:keepalived_openstack_telemetry_vip_address}
+    keepalived_vip_password: ${_param:keepalived_openstack_telemetry_vip_password}
+    keepalived_vip_interface: ${_param:keepalived_openstack_telemetry_vip_interface}
diff --git a/keystone/client/service/barbican.yml b/keystone/client/service/barbican.yml
index f83e6ab..497eb50 100644
--- a/keystone/client/service/barbican.yml
+++ b/keystone/client/service/barbican.yml
@@ -5,13 +5,19 @@
     client:
       server:
         identity:
+          roles:
+          - creator
+          - key-manager:service-admin
           project:
             service:
               user:
                 barbican:
-                  is_admin: true
                   password: ${_param:keystone_barbican_password}
                   email: ${_param:admin_email}
+                  roles:
+                  - admin
+                  - creator
+                  - key-manager:service-admin
           service:
             barbican:
               type: key-manager
diff --git a/keystone/client/service/octavia.yml b/keystone/client/service/octavia.yml
index 4e14217..0382345 100644
--- a/keystone/client/service/octavia.yml
+++ b/keystone/client/service/octavia.yml
@@ -36,3 +36,4 @@
             host: ${_param:keystone_service_host}
             port: 5000
             region_name: ${_param:openstack_region}
+            use_keystoneauth: true
diff --git a/keystone/server/cluster.yml b/keystone/server/cluster.yml
index a8f7069..cbe89ca 100644
--- a/keystone/server/cluster.yml
+++ b/keystone/server/cluster.yml
@@ -2,7 +2,16 @@
 - service.keystone.server.cluster
 - service.keepalived.cluster.single
 - system.haproxy.proxy.listen.openstack.keystone
+- system.haproxy.proxy.listen.openstack.keystone.standalone
 parameters:
+  _param:
+    keystone_tokens_expiration: 3600
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   keystone:
     server:
       enabled: true
@@ -28,7 +37,7 @@
         user: keystone
       tokens:
         engine: fernet
-        expiration: 3600
+        expiration: ${_param:keystone_tokens_expiration}
         max_active_keys: 3
         location: /var/lib/keystone/fernet-keys
       credential:
diff --git a/keystone/server/single.yml b/keystone/server/single.yml
index 72dc045..16c26ca 100644
--- a/keystone/server/single.yml
+++ b/keystone/server/single.yml
@@ -7,6 +7,13 @@
     mysql_admin_user: root
     mysql_admin_password: password
     mysql_keystone_password: password
+    keystone_tokens_expiration: 3600
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   keystone:
     server:
       enabled: true
@@ -32,7 +39,7 @@
         user: keystone
       tokens:
         engine: fernet
-        expiration: 3600
+        expiration: ${_param:keystone_tokens_expiration}
         max_active_keys: 3
         location: /var/lib/keystone/fernet-keys
       credential:
diff --git a/keystone/server/wsgi.yml b/keystone/server/wsgi.yml
index 1a949e9..f62c1cc 100644
--- a/keystone/server/wsgi.yml
+++ b/keystone/server/wsgi.yml
@@ -18,7 +18,7 @@
           log:
             custom:
               format: >-
-                %v:%p %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+                %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
 
       modules:
         - wsgi
diff --git a/kubernetes/pool/cluster.yml b/kubernetes/pool/cluster.yml
index 05aa1bc..0f961a3 100644
--- a/kubernetes/pool/cluster.yml
+++ b/kubernetes/pool/cluster.yml
@@ -18,3 +18,7 @@
         engine: calico
         prometheus:
           enabled: true
+  docker:
+    host:
+      options:
+        iptables: false
diff --git a/kubernetes/pool/single.yml b/kubernetes/pool/single.yml
index 9be2164..00f22b8 100644
--- a/kubernetes/pool/single.yml
+++ b/kubernetes/pool/single.yml
@@ -16,3 +16,7 @@
       container: false
       network:
         engine: calico
+  docker:
+    host:
+      options:
+        iptables: false
diff --git a/libvirt/server/single.yml b/libvirt/server/single.yml
new file mode 100644
index 0000000..f25f8ed
--- /dev/null
+++ b/libvirt/server/single.yml
@@ -0,0 +1,7 @@
+parameters:
+  linux:
+    system:
+      group:
+        libvirtd:
+          enabled: true
+          name: libvirtd
diff --git a/linux/network/dynamic_hosts.yml b/linux/network/dynamic_hosts.yml
new file mode 100644
index 0000000..fc1ef68
--- /dev/null
+++ b/linux/network/dynamic_hosts.yml
@@ -0,0 +1,13 @@
+parameters:
+  linux:
+    network:
+      purge_hosts: true
+      mine_dns_records: true
+      host:
+        localhost_hostname:
+          address: ${_param:single_address}
+          grain: true
+          names:
+          - ${linux:network:fqdn}
+          - ${linux:network:hostname}
+
diff --git a/linux/network/hosts.yml b/linux/network/hosts.yml
new file mode 100644
index 0000000..1b29324
--- /dev/null
+++ b/linux/network/hosts.yml
@@ -0,0 +1,9 @@
+parameters:
+  linux:
+    network:
+      host:
+        localhost_hostname:
+          address: ${_param:single_address}
+          names:
+          - ${linux:network:fqdn}
+          - ${linux:network:hostname}
diff --git a/linux/system/profile/autosudo.yml b/linux/system/profile/autosudo.yml
new file mode 100644
index 0000000..ff5f029
--- /dev/null
+++ b/linux/system/profile/autosudo.yml
@@ -0,0 +1,127 @@
+parameters:
+  linux:
+    system:
+      profile:
+        # script provides sudoon & sudooff commands, allows working as-if root while tracking all commands
+        autosudo.sh: |
+          #!/bin/bash
+
+          # USAGE: $ . autosudo.sh
+          #        $ sudoon
+          #        $ sudo: <any commands>
+          #        $ sudo: ...
+          #        $ sudo: sudooff
+          # LIMITATIONS:
+          #   - does not check your sudo policy, assumes "bash -c ..." is allowed
+          #   - autocompletion (tab) for files/dirs does not work in restricted folders
+          #   - may contain bugs
+          # NOTES: supports "cd ..."; allows to freely operate in restricted directories
+
+          function sudoon () {
+            if [ -z "$PREEXEC_PROMPT" ]
+            then
+              trap - DEBUG
+              ORIGINAL_PROMPT_COMMAND="$PROMPT_COMMAND"
+              PREEXEC_PROMPT=1
+              ORIGINAL_PS1=$PS1
+              PS1=$ORIGINAL_PS1"sudo: "
+              shopt -s extdebug
+              PROMPT_COMMAND="_preexec_prompt"
+              trap "_preexec_sudo" DEBUG
+            fi
+          }
+
+          function sudooff () {
+            trap - DEBUG
+            shopt -u extdebug
+            unset PREEXEC_PROMPT
+            PS1=$ORIGINAL_PS1
+            unset SUDO_DIR
+            PROMPT_COMMAND="$ORIGINAL_PROMPT_COMMAND"
+            unset ORIGINAL_PROMPT_COMMAND
+          }
+
+          function _preexec_prompt() {
+            trap - DEBUG
+            PREEXEC_PROMPT=1
+            trap "_preexec_sudo" DEBUG
+          }
+
+
+          function _preexec_sudo() {
+            # echo PREEXEC_PROMPT=$PREEXEC_PROMPT BASH_COMMAND=$BASH_COMMAND SUDO_DIR=$SUDO_DIR
+            [ -n "$COMP_LINE" ] && return
+            [ "$BASH_COMMAND" == "$PROMPT_COMMAND" ] && return
+            [ -z "$BASH_COMMAND" ] && return
+            [[ "$BASH_COMMAND" =~ ^exit$|^set\ |^shopt\ |^trap\ |^sudoon$|^sudooff$ ]] && return
+            [ -z "$PREEXEC_PROMPT" ] && return
+            if [ "$PREEXEC_PROMPT" -eq 0 ]; then
+              # echo cancelling "$BASH_COMMAND"
+              return 1
+            fi
+
+            # echo "trap-DEBUG"
+            trap - DEBUG
+            PREEXEC_PROMPT=0
+            FULL_COMMAND=$(HISTTIMEFORMAT='' history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//")
+            # echo "Running _preexec_sudo $FULL_COMMAND"
+            ARG_0=$(cut -d' ' -f1 <<< "$BASH_COMMAND")
+            TYPE=$(type "$ARG_0" 2> /dev/null | head -n 1)
+            if [[ ! "$TYPE" =~ / ]]
+            then
+              if [ "$BASH_COMMAND" == "$FULL_COMMAND" ]
+              then
+                if [[ "$BASH_COMMAND" =~ ^cd\  ]]
+                then
+                  if [ -z "$SUDO_DIR" ]
+                  then
+                    if $BASH_COMMAND 2> /dev/null
+                    then
+                      trap "_preexec_sudo" DEBUG
+                      return 1
+                    else
+                      DIR=$(sudo bash -c "$BASH_COMMAND; pwd")
+                      DIR_ERR=$?
+                    fi
+                  else
+                    DIR=$(sudo bash -c "cd $SUDO_DIR; $BASH_COMMAND; pwd")
+                    DIR_ERR=$?
+                  fi
+                  if [ "$DIR_ERR" -eq 0 ]
+                  then
+                    if cd "$DIR" 2> /dev/null
+                    then
+                      SUDO_DIR=''
+                      PS1=$ORIGINAL_PS1"sudo: "
+                    else
+                      SUDO_DIR=$DIR
+                      [ -n "$SUDO_DIR" ] && PS1_SUDO_DIR="($(echo "$SUDO_DIR" | rev | cut -d'/' -f1 | rev))" || PS1_SUDO_DIR=''
+                      PS1=$ORIGINAL_PS1"sudo$PS1_SUDO_DIR: "
+                    fi
+                  fi
+                  trap "_preexec_sudo" DEBUG
+                  return 1
+                elif [ -z "$SUDO_DIR" ]
+                then
+                  trap "_preexec_sudo" DEBUG
+                  return # single call to function / builtin; not sudoing
+                fi
+              fi
+            fi
+            [[ "$TYPE" =~ / ]] && [ "$(which "$ARG_0")" == "$(which sudo)" ] && return 0 # execute explicit sudo as-is
+            if [ -n "$SUDO_DIR" ]
+            then
+              CMD_DIR="cd $SUDO_DIR; "
+            else
+              CMD_DIR=''
+            fi
+            if [ ! "$BASH_COMMAND" == "$FULL_COMMAND" ] || [ -n "$CMD_DIR" ]
+            then
+              # echo combined or cd command: `printf '%q' "$CMD_DIR$FULL_COMMAND"`
+              eval sudo -E bash -c $(printf '%q' "$CMD_DIR$FULL_COMMAND")
+            else
+              eval sudo -E $FULL_COMMAND
+            fi
+            trap "_preexec_sudo" DEBUG
+            return 1
+          }
diff --git a/linux/system/repo/aptly.yml b/linux/system/repo/aptly.yml
new file mode 100644
index 0000000..330ba03
--- /dev/null
+++ b/linux/system/repo/aptly.yml
@@ -0,0 +1,9 @@
+parameters:
+  linux:
+    system:
+      repo:
+        aptly:
+          source: "deb http://repo.aptly.info/ squeeze main"
+          architectures: amd64
+          key_id: 9E3E53F19C7DE460
+          key_server: keys.gnupg.net
diff --git a/linux/system/repo/ceph.yml b/linux/system/repo/ceph.yml
new file mode 100644
index 0000000..ccf63d7
--- /dev/null
+++ b/linux/system/repo/ceph.yml
@@ -0,0 +1,11 @@
+parameters:
+  _param:
+    linux_repo_ceph_component: jewel
+    linux_repo_ceph_mirror: download
+  linux:
+    system:
+      repo:
+        ceph:
+          source: "deb [arch=amd64] https://${_param:linux_repo_ceph_mirror}.ceph.com/debian-${_param:linux_repo_ceph_component} ${_param:linux_system_codename} main"
+          architectures: amd64
+          key_url: "https://${_param:linux_repo_ceph_mirror}.ceph.com/keys/release.asc"
diff --git a/linux/system/repo/docker.yml b/linux/system/repo/docker.yml
index 6eae575..bb36728 100644
--- a/linux/system/repo/docker.yml
+++ b/linux/system/repo/docker.yml
@@ -3,7 +3,6 @@
     system:
       repo:
         docker:
-          source: "deb https://apt.dockerproject.org/repo ubuntu-${_param:linux_system_codename} main"
+          source: 'deb [arch=amd64] https://download.docker.com/linux/ubuntu/ ${_param:linux_system_codename} stable'
           architectures: amd64
-          key_id: 58118E89F3A912897C070ADBF76221572C52609D
-          key_server: hkp://p80.pool.sks-keyservers.net:80
+          key_url: https://download.docker.com/linux/ubuntu/gpg
diff --git a/linux/system/repo/docker_legacy.yml b/linux/system/repo/docker_legacy.yml
new file mode 100644
index 0000000..c527aa8
--- /dev/null
+++ b/linux/system/repo/docker_legacy.yml
@@ -0,0 +1,9 @@
+parameters:
+  linux:
+    system:
+      repo:
+        docker:
+          source: "deb https://apt.dockerproject.org/repo ubuntu-${_param:linux_system_codename} main"
+          architectures: amd64
+          key_id: 58118E89F3A912897C070ADBF76221572C52609D
+          key_server: keyserver.ubuntu.com
diff --git a/linux/system/repo/elasticsearch.yml b/linux/system/repo/elasticsearch.yml
index 60f6fd0..2030114 100644
--- a/linux/system/repo/elasticsearch.yml
+++ b/linux/system/repo/elasticsearch.yml
@@ -5,4 +5,8 @@
         elasticsearch:
           source: "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main"
           architectures: amd64
-          key_url: "https://packages.elastic.co/GPG-KEY-elasticsearch"
\ No newline at end of file
+          key_url: "https://packages.elastic.co/GPG-KEY-elasticsearch"
+        elasticsearch_curator:
+          source: "deb http://packages.elastic.co/curator/4/debian stable main"
+          architectures: amd64
+          key_url: "https://packages.elastic.co/GPG-KEY-elasticsearch"
diff --git a/linux/system/repo/maas.yml b/linux/system/repo/maas.yml
new file mode 100644
index 0000000..d36784e
--- /dev/null
+++ b/linux/system/repo/maas.yml
@@ -0,0 +1,7 @@
+parameters:
+  linux:
+    system:
+      repo:
+        maas:
+          source: deb http://ppa.launchpad.net/maas/stable/ubuntu xenial main
+          key_url: salt://maas/files/vendor_key.gpg
\ No newline at end of file
diff --git a/linux/system/repo/mcp/contrail.yml b/linux/system/repo/mcp/contrail.yml
index 0d9d68e..85e66ae 100644
--- a/linux/system/repo/mcp/contrail.yml
+++ b/linux/system/repo/mcp/contrail.yml
@@ -7,9 +7,9 @@
     system:
       repo:
         mcp_opencontrail:
-          source: "deb [arch=amd64] http://apt-mk.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_contrail_version} ${_param:openstack_version} ${_param:linux_repo_contrail_component} extra"
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_contrail_version} ${_param:linux_repo_contrail_component} extra"
           architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          key_url: "http://apt.mirantis.com/public.gpg"
           pin:
           - pin: 'release a=${_param:linux_system_repo_mcp_contrail_version}'
             priority: 1100
diff --git a/linux/system/repo/mcp/extra.yml b/linux/system/repo/mcp/extra.yml
index 826969b..9839a23 100644
--- a/linux/system/repo/mcp/extra.yml
+++ b/linux/system/repo/mcp/extra.yml
@@ -6,9 +6,9 @@
     system:
       repo:
         mcp_extra:
-          source: "deb [arch=amd64] http://apt-mk.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_extra_version} extra"
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_extra_version} extra"
           architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          key_url: "http://apt.mirantis.com/public.gpg"
           clean_file: true
           pin:
           - pin: 'release a=${_param:linux_system_repo_mcp_extra_version}'
diff --git a/linux/system/repo/mcp/openstack.yml b/linux/system/repo/mcp/openstack.yml
index 2235b2c..8b91431 100644
--- a/linux/system/repo/mcp/openstack.yml
+++ b/linux/system/repo/mcp/openstack.yml
@@ -46,9 +46,9 @@
             priority: 1100
             package: '*'
         mk_openstack:
-          source: "deb [arch=amd64] http://apt-mk.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mk_openstack_version} ${_param:openstack_version}"
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mk_openstack_version} ${_param:openstack_version}"
           architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          key_url: "http://apt.mirantis.com/public.gpg"
           pin:
           - pin: 'release a=${_param:linux_system_repo_mk_openstack_version}'
             priority: 1100
diff --git a/linux/system/repo/mcp/salt/init.yml b/linux/system/repo/mcp/salt/init.yml
index 6d79919..61a2d2e 100644
--- a/linux/system/repo/mcp/salt/init.yml
+++ b/linux/system/repo/mcp/salt/init.yml
@@ -6,9 +6,9 @@
     system:
       repo:
         mcp_salt:
-          source: "deb [arch=amd64] http://apt-mk.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_salt_version} salt"
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_salt_version} salt"
           architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          key_url: "http://apt.mirantis.com/public.gpg"
           clean_file: true
           pin:
           - pin: 'release a=${_param:linux_system_repo_mcp_salt_version}'
diff --git a/linux/system/repo/mcp/salt/unstable.yml b/linux/system/repo/mcp/salt/unstable.yml
index b0b992e..8350413 100644
--- a/linux/system/repo/mcp/salt/unstable.yml
+++ b/linux/system/repo/mcp/salt/unstable.yml
@@ -7,9 +7,9 @@
     system:
       repo:
         mcp_salt_unstable:
-          source: "deb [arch=amd64] http://apt-mk.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_salt_unstable_version} salt"
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_salt_unstable_version} salt"
           architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          key_url: "http://apt.mirantis.com/public.gpg"
           clean_file: true
           pin:
           - pin: 'release a=${_param:linux_system_repo_mcp_salt_unstable_version}'
diff --git a/linux/system/repo_local/docker_legacy.yml b/linux/system/repo_local/docker_legacy.yml
new file mode 100644
index 0000000..d12cc0d
--- /dev/null
+++ b/linux/system/repo_local/docker_legacy.yml
@@ -0,0 +1,9 @@
+parameters:
+  linux:
+    system:
+      repo:
+        docker:
+          refresh_db: ${_param:linux_repo_refresh_db}
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:apt_mk_version} docker-legacy"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
\ No newline at end of file
diff --git a/linux/system/repo_local/mcp/ceph.yml b/linux/system/repo_local/mcp/ceph.yml
new file mode 100644
index 0000000..89308ad
--- /dev/null
+++ b/linux/system/repo_local/mcp/ceph.yml
@@ -0,0 +1,9 @@
+parameters:
+  linux:
+    system:
+      repo:
+        ceph:
+          refresh_db: ${_param:linux_repo_refresh_db}
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:apt_mk_version} ceph"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
diff --git a/linux/system/single/debian.yml b/linux/system/single/debian.yml
new file mode 100644
index 0000000..b6d0b2b
--- /dev/null
+++ b/linux/system/single/debian.yml
@@ -0,0 +1,10 @@
+classes:
+- system.linux.system.single
+
+# DEBIAN family overrides
+parameters:
+  linux:
+    system:
+      package:
+        python-msgpack:
+          version: latest
diff --git a/linux/system/single.yml b/linux/system/single/init.yml
similarity index 84%
rename from linux/system/single.yml
rename to linux/system/single/init.yml
index ef23a39..8de2dda 100644
--- a/linux/system/single.yml
+++ b/linux/system/single/init.yml
@@ -4,13 +4,21 @@
 - system.openssh.server.single
 - system.ntp.client.single
 parameters:
+  _param:
+    local_package_repos: false
   linux:
     system:
+      local_package_repos: ${_param:local_package_repos}
+      user:
+        root:
+          enabled: true
+          name: root
+          home: /root
       package:
-        python-msgpack:
-          version: latest
         cloud-init:
           version: purged
+        unattended-upgrades:
+          version: purged
         mcelog:
           version: latest
       kernel:
@@ -30,6 +38,7 @@
           net.ipv4.neigh.default.gc_thresh2: 8192
           net.ipv4.neigh.default.gc_thresh3: 16384
           net.core.netdev_max_backlog: 261144
+          net.ipv4.tcp_tw_reuse: 1
           kernel.panic: 60
       cpu:
         governor: performance
diff --git a/linux/system/single/rhel.yml b/linux/system/single/rhel.yml
new file mode 100644
index 0000000..38dba03
--- /dev/null
+++ b/linux/system/single/rhel.yml
@@ -0,0 +1,4 @@
+classes:
+- system.linux.system.single
+
+# RHEL family overrides
diff --git a/linux/system/sudo.yml b/linux/system/sudo.yml
index 8f03f7d..68f2b84 100644
--- a/linux/system/sudo.yml
+++ b/linux/system/sudo.yml
@@ -21,21 +21,33 @@
     - /bin/su -
     - /bin/su
     - /usr/sbin/visudo
+    - /usr/bin/sudo
+    - /bin/bash
     sudo_coreutils_safe:
+    - /usr/bin/cat
     - /usr/bin/less
+    - /usr/bin/view
+    - /usr/bin/more
     - /usr/bin/grep
     - /usr/bin/fgrep
     - /usr/bin/egrep
     - /usr/bin/zgrep
+    - /usr/bin/ack
     - /usr/bin/tail
     - /usr/bin/socat
     - /usr/bin/top
+    - /usr/bin/atop
     - /usr/bin/tail
     - /usr/bin/lsof
     - /usr/bin/virsh
     - /bin/ls
     - /bin/cp
     - /bin/netstat
+    sudo_coreutils_trusted:
+    - /usr/bin/vi*
+    - /usr/bin/vim*
+    - /usr/bin/emacs*
+    - /usr/bin/nano*
     sudo_rabbitmq_safe:
     - /usr/sbin/rabbitmqctl
     - /usr/sbin/rabbitmqctl status
@@ -79,6 +91,9 @@
     - /usr/bin/rados*
     - /usr/bin/rbd
     - /usr/sbin/gluster
+    - /usr/fdisk -l *
+    - /usr/bin/du *
+    - /bin/df *
     sudo_openstack_clients:
     - /usr/bin/openstack
     - /usr/bin/heat*
diff --git a/maas/region/single.yml b/maas/region/single.yml
index d3227ca..20779aa 100644
--- a/maas/region/single.yml
+++ b/maas/region/single.yml
@@ -1,6 +1,6 @@
 classes:
   - service.maas.region.single
-  - service.maas.region.vendor_repo
+  - service.maas.cluster.single
 parameters:
   _param:
     maas_admin_username: mirantis
diff --git a/mysql/client/database/barbican.yml b/mysql/client/database/barbican.yml
new file mode 100644
index 0000000..f9fe6dd
--- /dev/null
+++ b/mysql/client/database/barbican.yml
@@ -0,0 +1,17 @@
+parameters:
+  mysql:
+    client:
+      server:
+        database:
+          database:
+            barbican:
+              encoding: utf8
+              users:
+              - name: barbican
+                password: ${_param:mysql_barbican_password}
+                host: '%'
+                rights: all
+              - name: barbican
+                password: ${_param:mysql_barbican_password}
+                host: ${_param:single_address}
+                rights: all
diff --git a/neutron/client/service/octavia.yml b/neutron/client/service/octavia.yml
index e818f76..90a4a4e 100644
--- a/neutron/client/service/octavia.yml
+++ b/neutron/client/service/octavia.yml
@@ -1,6 +1,8 @@
 classes:
 - service.neutron.client
 parameters:
+  _param:
+    octavia_hm_bind_ip: '192.168.0.12'
   neutron:
     client:
       server:
@@ -19,7 +21,7 @@
               port:
                 octavia-health-manager-listen-port:
                   fixed_ips:
-                    - ip_address: '192.168.0.12'
+                    - ip_address: ${_param:octavia_hm_bind_ip}
                   device_owner: Octavia:health-mgr
                   binding_host_id: ${_param:openstack_gateway_node01_hostname}
                   security_groups:
diff --git a/neutron/client/service/public.yml b/neutron/client/service/public.yml
new file mode 100644
index 0000000..c3e2ca3
--- /dev/null
+++ b/neutron/client/service/public.yml
@@ -0,0 +1,25 @@
+classes:
+- service.neutron.client
+parameters:
+  neutron:
+    client:
+      server:
+        admin_identity:
+          endpoint_type: internalURL
+          network:
+            public:
+              tenant: admin
+              shared: False
+              router_external: True
+              default: True
+              admin_state_up: True
+              provider_network_type: flat
+              provider_physical_network: physnet1
+              subnet:
+                public-subnet:
+                  cidr: ${_param:openstack_public_neutron_subnet_cidr}
+                  allocation_pools:
+                    - start: ${_param:openstack_public_neutron_subnet_allocation_start}
+                      end: ${_param:openstack_public_neutron_subnet_allocation_end}
+                  gateway: ${_param:openstack_public_neutron_subnet_gateway}
+                  enable_dhcp: False
diff --git a/neutron/compute/cluster.yml b/neutron/compute/cluster.yml
index d6674f0..13ee31c 100644
--- a/neutron/compute/cluster.yml
+++ b/neutron/compute/cluster.yml
@@ -3,10 +3,18 @@
 parameters:
   _param:
     neutron_enable_qos: False
+    neutron_enable_vlan_aware_vms: False
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   neutron:
     compute:
       dvr: ${_param:neutron_compute_dvr}
       qos: ${_param:neutron_enable_qos}
+      vlan_aware_vms: ${_param:neutron_enable_vlan_aware_vms}
       agent_mode: ${_param:neutron_compute_agent_mode}
       external_access: ${_param:neutron_compute_external_access}
       backend:
diff --git a/neutron/compute/nfv/dpdk.yml b/neutron/compute/nfv/dpdk.yml
index 90f9095..3f05d53 100644
--- a/neutron/compute/nfv/dpdk.yml
+++ b/neutron/compute/nfv/dpdk.yml
@@ -1,6 +1,4 @@
 parameters:
-  _param:
-    compute_dpdk_driver: uio
   linux:
     network:
       bridge: openvswitch
diff --git a/neutron/control/cluster.yml b/neutron/control/cluster.yml
index dd1d3ee..47928b6 100644
--- a/neutron/control/cluster.yml
+++ b/neutron/control/cluster.yml
@@ -3,21 +3,14 @@
 - service.haproxy.proxy.single
 - service.neutron.control.cluster
 - system.haproxy.proxy.listen.openstack.neutron
+- system.galera.server.database.neutron
 parameters:
-  mysql:
-    server:
-      database:
-        neutron:
-          encoding: utf8
-          users:
-          - name: neutron
-            password: ${_param:mysql_neutron_password}
-            host: '%'
-            rights: all
-          - name: neutron
-            password: ${_param:mysql_neutron_password}
-            host: ${_param:cluster_local_address}
-            rights: all
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   haproxy:
     proxy:
       listen:
diff --git a/neutron/control/opencontrail/cluster.yml b/neutron/control/opencontrail/cluster.yml
index caaaf6d..d85e554 100644
--- a/neutron/control/opencontrail/cluster.yml
+++ b/neutron/control/opencontrail/cluster.yml
@@ -3,21 +3,8 @@
 - service.haproxy.proxy.single
 - service.neutron.control.cluster
 - system.haproxy.proxy.listen.openstack.neutron
+- system.galera.server.database.neutron
 parameters:
-  mysql:
-    server:
-      database:
-        neutron:
-          encoding: utf8
-          users:
-          - name: neutron
-            password: ${_param:mysql_neutron_password}
-            host: '%'
-            rights: all
-          - name: neutron
-            password: ${_param:mysql_neutron_password}
-            host: ${_param:cluster_local_address}
-            rights: all
   neutron:
     server:
       dns_domain: ${_param:cluster_domain}
diff --git a/neutron/control/opencontrail/single.yml b/neutron/control/opencontrail/single.yml
new file mode 100644
index 0000000..4bbd8f8
--- /dev/null
+++ b/neutron/control/opencontrail/single.yml
@@ -0,0 +1,26 @@
+classes:
+- service.neutron.control.single
+- system.galera.server.database.neutron
+parameters:
+  neutron:
+    server:
+      dns_domain: ${_param:cluster_domain}
+      database:
+        host: ${_param:openstack_database_address}
+      identity:
+        region: ${_param:openstack_region}
+        host: ${_param:openstack_control_address}
+      message_queue:
+        members:
+          - host: ${_param:openstack_message_queue_node01_address}
+      compute:
+        host: ${_param:openstack_control_address}
+        region: ${_param:openstack_region}
+      backend:
+        engine: contrail
+        host: ${_param:opencontrail_control_address}
+        port: 8082
+        user: admin
+        password: ${_param:keystone_admin_password}
+        tenant: admin
+        token: ${_param:keystone_service_token}
\ No newline at end of file
diff --git a/neutron/control/openvswitch/cluster.yml b/neutron/control/openvswitch/cluster.yml
index 0587342..032ffbf 100644
--- a/neutron/control/openvswitch/cluster.yml
+++ b/neutron/control/openvswitch/cluster.yml
@@ -2,6 +2,7 @@
 - service.keepalived.cluster.single
 - service.haproxy.proxy.single
 - service.neutron.control.cluster
+- system.galera.server.database.neutron
 parameters:
   _param:
     neutron_control_dvr: True
@@ -10,13 +11,14 @@
     neutron_external_mtu: 1500
     neutron_tenant_network_types: "flat,vxlan"
     neutron_enable_qos: False
+    neutron_enable_vlan_aware_vms: False
   neutron:
     server:
-      plugin: ml2
       global_physnet_mtu: ${_param:neutron_global_physnet_mtu}
       l3_ha: ${_param:neutron_l3_ha}
       dvr: ${_param:neutron_control_dvr}
       qos: ${_param:neutron_enable_qos}
+      vlan_aware_vms: ${_param:neutron_enable_vlan_aware_vms}
       backend:
         engine: ml2
         tenant_network_types: "${_param:neutron_tenant_network_types}"
@@ -35,20 +37,6 @@
           - host: ${_param:openstack_message_queue_node01_address}
           - host: ${_param:openstack_message_queue_node02_address}
           - host: ${_param:openstack_message_queue_node03_address}
-  mysql:
-    server:
-      database:
-        neutron:
-          encoding: utf8
-          users:
-          - name: neutron
-            password: ${_param:mysql_neutron_password}
-            host: '%'
-            rights: all
-          - name: neutron
-            password: ${_param:mysql_neutron_password}
-            host: ${_param:cluster_local_address}
-            rights: all
   haproxy:
     proxy:
       listen:
diff --git a/neutron/control/openvswitch/single.yml b/neutron/control/openvswitch/single.yml
index 91db484..009c116 100644
--- a/neutron/control/openvswitch/single.yml
+++ b/neutron/control/openvswitch/single.yml
@@ -1,5 +1,6 @@
 classes:
 - service.neutron.control.single
+- system.galera.server.database.neutron
 parameters:
   _param:
     neutron_control_dvr: True
@@ -8,13 +9,14 @@
     neutron_external_mtu: 1500
     neutron_tenant_network_types: "flat,vxlan"
     neutron_enable_qos: False
+    neutron_enable_vlan_aware_vms: False
   neutron:
     server:
-      plugin: ml2
       global_physnet_mtu: ${_param:neutron_global_physnet_mtu}
       l3_ha: ${_param:neutron_l3_ha}
       dvr: ${_param:neutron_control_dvr}
       qos: ${_param:neutron_enable_qos}
+      vlan_aware_vms: ${_param:neutron_enable_vlan_aware_vms}
       backend:
         engine: ml2
         tenant_network_types: "${_param:neutron_tenant_network_types}"
@@ -31,17 +33,3 @@
       message_queue:
         members:
           - host: ${_param:openstack_message_queue_node01_address}
-  mysql:
-    server:
-      database:
-        neutron:
-          encoding: utf8
-          users:
-          - name: neutron
-            password: ${_param:mysql_neutron_password}
-            host: '%'
-            rights: all
-          - name: neutron
-            password: ${_param:mysql_neutron_password}
-            host: ${_param:cluster_local_address}
-            rights: all
\ No newline at end of file
diff --git a/neutron/control/ovn/single.yml b/neutron/control/ovn/single.yml
new file mode 100644
index 0000000..c02f621
--- /dev/null
+++ b/neutron/control/ovn/single.yml
@@ -0,0 +1,48 @@
+classes:
+- service.neutron.control.single
+parameters:
+  _param:
+    neutron_control_dvr: False
+    neutron_l3_ha: False
+    neutron_global_physnet_mtu: 1500
+    neutron_external_mtu: 1500
+    neutron_tenant_network_types: "geneve,flat"
+    neutron_enable_qos: False
+    neutron_enable_vlan_aware_vms: False
+  neutron:
+    server:
+      global_physnet_mtu: ${_param:neutron_global_physnet_mtu}
+      l3_ha: ${_param:neutron_l3_ha}
+      dvr: ${_param:neutron_control_dvr}
+      qos: ${_param:neutron_enable_qos}
+      vlan_aware_vms: ${_param:neutron_enable_vlan_aware_vms}
+      backend:
+        engine: ovn
+        tenant_network_types: "${_param:neutron_tenant_network_types}"
+        external_mtu: ${_param:neutron_external_mtu}
+        mechanism:
+          ovn:
+            driver: ovn
+      compute:
+        region: ${_param:openstack_region}
+      database:
+        host: ${_param:openstack_database_address}
+      identity:
+        region: ${_param:openstack_region}
+      message_queue:
+        members:
+          - host: ${_param:openstack_message_queue_node01_address}
+  mysql:
+    server:
+      database:
+        neutron:
+          encoding: utf8
+          users:
+          - name: neutron
+            password: ${_param:mysql_neutron_password}
+            host: '%'
+            rights: all
+          - name: neutron
+            password: ${_param:mysql_neutron_password}
+            host: ${_param:cluster_local_address}
+            rights: all
diff --git a/neutron/control/single.yml b/neutron/control/single.yml
index 663ec32..7f02325 100644
--- a/neutron/control/single.yml
+++ b/neutron/control/single.yml
@@ -1,22 +1,14 @@
 classes:
 - service.neutron.control.single
+- system.galera.server.database.neutron
 parameters:
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   neutron:
     server:
       database:
         host: ${_param:single_address}
-  mysql:
-    server:
-      database:
-        neutron:
-          encoding: utf8
-          users:
-          - name: neutron
-            password: ${_param:mysql_neutron_password}
-            host: '%'
-            rights: all
-          - name: neutron
-            password: ${_param:mysql_neutron_password}
-            host: ${_param:single_address}
-            rights: all
-
diff --git a/neutron/fwaas.yml b/neutron/fwaas.yml
new file mode 100644
index 0000000..79c6439
--- /dev/null
+++ b/neutron/fwaas.yml
@@ -0,0 +1,8 @@
+classes:
+- service.neutron.fwaas
+parameters:
+  _param:
+    fwaas_version: v1
+  neutron:
+    fwaas:
+      api_version: ${_param:fwaas_version}
diff --git a/neutron/gateway/cluster.yml b/neutron/gateway/cluster.yml
index a4f37b1..c96c6bb 100644
--- a/neutron/gateway/cluster.yml
+++ b/neutron/gateway/cluster.yml
@@ -3,10 +3,12 @@
 parameters:
   _param:
     neutron_enable_qos: False
+    neutron_enable_vlan_aware_vms: False
   neutron:
     gateway:
       dvr: ${_param:neutron_gateway_dvr}
       qos: ${_param:neutron_enable_qos}
+      vlan_aware_vms: ${_param:neutron_enable_vlan_aware_vms}
       agent_mode: ${_param:neutron_gateway_agent_mode}
       backend:
         tenant_network_types: ${_param:neutron_tenant_network_types}"
diff --git a/nginx/server/proxy/ceph_radosgw.yml b/nginx/server/proxy/ceph_radosgw.yml
index fe90201..2601849 100644
--- a/nginx/server/proxy/ceph_radosgw.yml
+++ b/nginx/server/proxy/ceph_radosgw.yml
@@ -1,15 +1,23 @@
 parameters:
   _param:
     nginx_proxy_radosgw_host: ${_param:cluster_public_host}
+    nginx_proxy_radosgw_port: 8080
+    nginx_proxy_radosgw_service_host: ${_param:ceph_rgw_address}
+    nginx_proxy_radosgw_service_port: 8080
   nginx:
     server:
       enabled: true
       site:
         ceph_radosgw:
           enabled: true
-          type: ceph
+          type: nginx_proxy
           name: ceph_radosgw
+          proxy:
+            host: ${_param:nginx_proxy_radosgw_service_host}
+            port: ${_param:nginx_proxy_radosgw_service_port}
+            protocol: http
           host:
             name: ${_param:nginx_proxy_radosgw_host}
-            port: 8080
-          ssl: ${_param:nginx_proxy_ssl}
\ No newline at end of file
+            port: ${_param:nginx_proxy_radosgw_port}
+            protocol: https
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/cicd/gerrit.yml b/nginx/server/proxy/cicd/gerrit.yml
index 2593dd7..0baf26c 100644
--- a/nginx/server/proxy/cicd/gerrit.yml
+++ b/nginx/server/proxy/cicd/gerrit.yml
@@ -1,34 +1,23 @@
 parameters:
   _param:
-    nginx_proxy_gerrit_server_ssl_authority: virt
-    nginx_proxy_gerrit_server_proxy_host: ${_param:single_address}
-    nginx_proxy_gerrit_server_proxy_port: 8082
-    nginx_proxy_gerrit_server_site_host: ${linux:network:fqdn}
-    nginx_proxy_gerrit_server_site_port: 8083
+    nginx_proxy_gerrit_server_proxy_host: ${_param:cicd_control_address}
+    nginx_proxy_gerrit_server_proxy_port: 8080
+    nginx_proxy_gerrit_server_site_host: ${_param:cluster_public_host}
+    nginx_proxy_gerrit_server_site_port: 8080
   nginx:
     server:
       enabled: true
-      user:
-        admin:
-          enabled: true
-          password: password
       site:
-        nginx_proxy_gerrit_server:
+        nginx_proxy_gerrit:
           enabled: true
           type: nginx_proxy
-          name: gerrit_server
-          auth:
-            engine: basic
+          name: gerrit
           proxy:
             host: ${_param:nginx_proxy_gerrit_server_proxy_host}
             port: ${_param:nginx_proxy_gerrit_server_proxy_port}
             protocol: http
-          ssl:
-            enabled: true
-            engine: salt
-            authority: ${_param:nginx_proxy_gerrit_server_ssl_authority}
-            certificate: ${_param:nginx_proxy_gerrit_server_site_host}
-            mode: secure
           host:
             name: ${_param:nginx_proxy_gerrit_server_site_host}
             port: ${_param:nginx_proxy_gerrit_server_site_port}
+            protocol: https
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/cicd/jenkins.yml b/nginx/server/proxy/cicd/jenkins.yml
index 975cc4d..bd270f2 100644
--- a/nginx/server/proxy/cicd/jenkins.yml
+++ b/nginx/server/proxy/cicd/jenkins.yml
@@ -1,4 +1,9 @@
 parameters:
+  _param:
+    nginx_proxy_jenkins_server_proxy_host: ${_param:cicd_control_address}
+    nginx_proxy_jenkins_server_proxy_port: 8081
+    nginx_proxy_jenkins_server_site_host: ${_param:cluster_public_host}
+    nginx_proxy_jenkins_server_site_port: 8081
   nginx:
     server:
       enabled: true
@@ -8,11 +13,11 @@
           type: nginx_proxy
           name: jenkins
           proxy:
-            host: ${_param:foundation_intergration_address}
-            port: 8080
+            host: ${_param:nginx_proxy_jenkins_server_proxy_host}
+            port: ${_param:nginx_proxy_jenkins_server_proxy_port}
             protocol: http
           host:
-            name: ${_param:cluster_public_host}
-            port: 8095
+            name: ${_param:nginx_proxy_jenkins_server_site_host}
+            port: ${_param:nginx_proxy_jenkins_server_site_port}
             protocol: https
           ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/barbican.yml b/nginx/server/proxy/openstack/barbican.yml
new file mode 100644
index 0000000..5f658d1
--- /dev/null
+++ b/nginx/server/proxy/openstack/barbican.yml
@@ -0,0 +1,20 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_barbican:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_barbican
+          check: false
+          proxy:
+            host: ${_param:barbican_service_host}
+            port: 9311
+            protocol: http
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 9311
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nova/client/flavor/default.yml b/nova/client/flavor/default.yml
new file mode 100644
index 0000000..1d374c5
--- /dev/null
+++ b/nova/client/flavor/default.yml
@@ -0,0 +1,64 @@
+classes:
+- service.nova.client
+parameters:
+  nova:
+    client:
+      server:
+        admin_identity:
+          flavor:
+            m1.tiny:
+              ram: 256
+              disk: 1
+              vcpus: 1
+            m1.medium80:
+              ram: 4096
+              disk: 80
+              vcpus: 2
+            m1.xxlarge40:
+              ram: 32300
+              disk: 40
+              vcpus: 16
+            m1.large20:
+              ram: 8128
+              disk: 20
+              vcpus: 4
+            m1.large1000:
+              ram: 8128
+              disk: 1000
+              vcpus: 8
+            m1.large40:
+              ram: 8128
+              disk: 40
+              vcpus: 4
+            m1.medium20:
+              ram: 4096
+              disk: 20
+              vcpus: 2
+            m1.xlarge40:
+              ram: 16200
+              disk: 40
+              vcpus: 8
+            m1.small:
+              ram: 2048
+              disk: 20
+              vcpus: 1
+            m1.large:
+              ram: 8128
+              disk: 80
+              vcpus: 4
+            m1.xlarge:
+              ram: 16200
+              disk: 160
+              vcpus: 8
+            m1.medium:
+              ram: 4000
+              disk: 40
+              vcpus: 2
+            m1.xlarge20:
+              ram: 16200
+              disk: 20
+              vcpus: 8
+            m1.large100:
+              ram: 8096
+              disk: 100
+              vcpus: 4
diff --git a/nova/client/flavor/devcloud.yml b/nova/client/flavor/devcloud.yml
new file mode 100644
index 0000000..7e0f5ff
--- /dev/null
+++ b/nova/client/flavor/devcloud.yml
@@ -0,0 +1,80 @@
+classes:
+- service.nova.client
+parameters:
+  nova:
+    client:
+      server:
+        admin_identity:
+          flavor:
+            k8s_ctl_medium:
+              ram: 8192
+              disk: 40
+              vcpus: 2
+            k8_cmp_small:
+              ram: 4096
+              disk: 40
+              vcpus: 2
+            k8s_ctl_small:
+              ram: 4096
+              disk: 20
+              vcpus: 2
+            os_ha_ctl:
+              ram: 16384
+              disk: 60
+              vcpus: 8
+            stl_mon_medium:
+              ram: 8192
+              disk: 60
+              vcpus: 4
+            cfg_salt_small:
+              ram: 4096
+              disk: 20
+              vcpus: 1
+            os_cmp_small:
+              ram: 8192
+              disk: 40
+              vcpus: 4
+            windows:
+              ram: 8186
+              disk: 160
+              vcpus: 2
+            cid_aio:
+              ram: 24576
+              disk: 60
+              vcpus: 8
+            oc_aio_large:
+              ram: 16384
+              disk: 60
+              vcpus: 8
+            oc_aio_small:
+              ram: 8192
+              disk: 60
+              vcpus: 2
+            cph_ha_osd:
+              ram: 8192
+              disk: 60
+              vcpus: 4
+            cph_cfs:
+              ram: 8192
+              disk: 40
+              vcpus: 4
+            oc_vsrx:
+              ram: 4096
+              disk: 80
+              vcpus: 2
+            os_aio_ctl:
+              ram: 24576
+              disk: 60
+              vcpus: 8
+            oc_aio_medium:
+              ram: 8192
+              disk: 60
+              vcpus: 4
+            cph_ha_mon:
+              ram: 8192
+              disk: 40
+              vcpus: 4
+            cfg_salt_small-1:
+              ram: 4096
+              disk: 20
+              vcpus: 1
diff --git a/nova/client/service/octavia.yml b/nova/client/service/octavia.yml
index e0b6557..e31fde3 100644
--- a/nova/client/service/octavia.yml
+++ b/nova/client/service/octavia.yml
@@ -1,8 +1,6 @@
 classes:
 - service.nova.client
 parameters:
-  _param:
-    octavia_ssh_key_path: "/etc/octavia/.ssh/octavia_ssh_key.pub"
   nova:
     client:
       server:
@@ -18,4 +16,4 @@
           endpoint_type: internalURL
           keypair:
             octavia_ssh_key:
-              pub_file: ${_param:octavia_ssh_key_path}
+              pub_key: ${_param:octavia_public_key}
diff --git a/nova/compute/cluster.yml b/nova/compute/cluster.yml
index 4d07a3e..5d0e6a1 100644
--- a/nova/compute/cluster.yml
+++ b/nova/compute/cluster.yml
@@ -93,3 +93,4 @@
       user:
         public_key: ${_param:nova_compute_ssh_public}
         private_key: ${_param:nova_compute_ssh_private}
+      my_ip: ${_param:single_address}
diff --git a/nova/compute/single.yml b/nova/compute/single.yml
index f50b937..b915145 100644
--- a/nova/compute/single.yml
+++ b/nova/compute/single.yml
@@ -89,3 +89,4 @@
       user:
         public_key: ${_param:nova_compute_ssh_public}
         private_key: ${_param:nova_compute_ssh_private}
+      my_ip: ${_param:single_address}
diff --git a/nova/compute/storage/ceph.yml b/nova/compute/storage/ceph.yml
index 7cb24cb..f9fb647 100644
--- a/nova/compute/storage/ceph.yml
+++ b/nova/compute/storage/ceph.yml
@@ -1,4 +1,9 @@
 parameters:
+  _param:
+    nova_storage_user: nova
+    cinder_storage_user: cinder
+    nova_storage_client_key: ${_param:nova_storage_user}
+    cinder_storage_client_key: ${_param:cinder_storage_user}
   nova:
     compute:
       ceph:
@@ -7,4 +12,6 @@
         rbd_pool: ${_param:nova_storage_pool}
         secret_uuid: ${_param:nova_storage_secret_uuid}
         client_cinder_key: ${_param:nova_storage_client_key}
-        rbd_user: ${_param:nova_storage_user}
\ No newline at end of file
+        rbd_user: ${_param:nova_storage_user}
+        cinder_secret_uuid: ${_param:cinder_storage_secret_uuid}
+        cinder_volumes_key: ${_param:cinder_storage_client_key}
diff --git a/nova/control/cluster.yml b/nova/control/cluster.yml
index d47c5e1..dee725d 100644
--- a/nova/control/cluster.yml
+++ b/nova/control/cluster.yml
@@ -11,6 +11,12 @@
     nova_ram_allocation_ratio: 1.5
     nova_disk_allocation_ratio: 1.0
     metadata_password: metadataPass
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   nova:
     controller:
       enabled: true
diff --git a/nova/control/single.yml b/nova/control/single.yml
index 00182a3..c2aef10 100644
--- a/nova/control/single.yml
+++ b/nova/control/single.yml
@@ -1,6 +1,12 @@
 classes:
 - service.nova.control.single
 parameters:
+  linux:
+    system:
+      package:
+        python-pymysql:
+          fromrepo: ${_param:openstack_version}
+          version: latest
   nova:
     controller:
       database:
diff --git a/octavia/manager/single.yml b/octavia/manager/single.yml
index a7bc7a9..acab136 100644
--- a/octavia/manager/single.yml
+++ b/octavia/manager/single.yml
@@ -5,3 +5,7 @@
     manager:
       enabled: true
       version: ${_param:octavia_version}
+      ssh:
+        private_key: ${_param:octavia_private_key}
+        user: octavia
+        group: octavia
diff --git a/opencontrail/client/resource/global_vrouter_config.yml b/opencontrail/client/resource/global_vrouter_config.yml
new file mode 100644
index 0000000..15bf76e
--- /dev/null
+++ b/opencontrail/client/resource/global_vrouter_config.yml
@@ -0,0 +1,11 @@
+parameters:
+  opencontrail:
+    client:
+      global_vrouter_config:
+        name: global-vrouter-config
+        parent_type: global-system-config
+        encap_priority: "MPLSoUDP,MPLSoGRE"
+        vxlan_vn_id_mode: automatic
+        fq_names:
+          - 'default-global-system-config'
+          - 'default-global-vrouter-config'
diff --git a/opencontrail/client/resource/virtual_router.yml b/opencontrail/client/resource/virtual_router.yml
index 0333c8f..c02f8e8 100644
--- a/opencontrail/client/resource/virtual_router.yml
+++ b/opencontrail/client/resource/virtual_router.yml
@@ -1,10 +1,12 @@
 parameters:
   _param:
     contrail_compute_dpdk_enabled: False
+    contrail_client_virtual_router_type: hypervisor
   opencontrail:
     client:
       virtual_router:
         local_compute:
           name: ${linux:system:name}
           ip_address: ${_param:single_address}
-          dpdk_enabled: ${_param:contrail_compute_dpdk_enabled}
\ No newline at end of file
+          dpdk_enabled: ${_param:contrail_compute_dpdk_enabled}
+          router_type: ${_param:contrail_client_virtual_router_type}
diff --git a/opencontrail/compute/dpdk.yml b/opencontrail/compute/dpdk.yml
index b0d8e0c..049fae0 100644
--- a/opencontrail/compute/dpdk.yml
+++ b/opencontrail/compute/dpdk.yml
@@ -17,7 +17,7 @@
     system:
       package:
         liburcu4:
-          version: 0.9.1-3+tcp1
+          version: 0.9.1-3
     network:
       interface:
         vhost0:
diff --git a/opencontrail/compute/tor/cluster.yml b/opencontrail/compute/tor/cluster.yml
new file mode 100644
index 0000000..662de03
--- /dev/null
+++ b/opencontrail/compute/tor/cluster.yml
@@ -0,0 +1,4 @@
+classes:
+- service.haproxy.proxy.single
+- service.keepalived.cluster.single
+- service.opencontrail.compute.tor.cluster
diff --git a/opencontrail/control/control.yml b/opencontrail/control/control.yml
index fdc4f7d..50c0c77 100644
--- a/opencontrail/control/control.yml
+++ b/opencontrail/control/control.yml
@@ -4,7 +4,10 @@
 - system.haproxy.proxy.listen.opencontrail.control
 parameters:
   _param:
-    multi_tenancy: false  
+    multi_tenancy: false
+    opencontrail_message_queue_node01_address: ${_param:openstack_message_queue_node01_address}
+    opencontrail_message_queue_node02_address: ${_param:openstack_message_queue_node02_address}
+    opencontrail_message_queue_node03_address: ${_param:openstack_message_queue_node03_address}
   opencontrail:
     common:
       identity:
@@ -21,9 +24,9 @@
         address: ${_param:cluster_local_address}
       message_queue:
         members:
-          - host: ${_param:openstack_message_queue_node01_address}
-          - host: ${_param:openstack_message_queue_node02_address}
-          - host: ${_param:openstack_message_queue_node03_address}
+          - host: ${_param:opencontrail_message_queue_node01_address}
+          - host: ${_param:opencontrail_message_queue_node02_address}
+          - host: ${_param:opencontrail_message_queue_node03_address}
       identity:
         region: ${_param:openstack_region}
         host: ${_param:openstack_control_address}
diff --git a/openssh/server/team/all.yml b/openssh/server/team/all.yml
new file mode 100644
index 0000000..5daf27d
--- /dev/null
+++ b/openssh/server/team/all.yml
@@ -0,0 +1,22 @@
+classes:
+# avoid teams w/sudo group restrictions, or override restrictions
+- system.openssh.server.team.lab
+- system.openssh.server.team.cicd
+- system.openssh.server.team.mcp_qa
+- system.openssh.server.team.mcp_ci
+- system.openssh.server.team.presales
+- system.openssh.server.team.services
+- system.openssh.server.team.stacklight
+- system.openssh.server.team.networking
+- system.openssh.server.team.security
+- system.openssh.server.team.oss_team
+- system.openssh.server.team.services_qa
+- system.openssh.server.team.qa_scale
+- system.openssh.server.team.oscore_devops
+- system.openssh.server.team.k8s_team
+- system.openssh.server.team.k8s_apps_team
+# to include support team, please integrate submodule opscare into cluster model
+# https://gerrit.mirantis.com/#/admin/projects/mmo-support/reclass-opscare
+parameters:
+  _param:
+    linux_system_user_sudo: true
diff --git a/openssh/server/team/cicd.yml b/openssh/server/team/cicd.yml
new file mode 100644
index 0000000..99f6bd6
--- /dev/null
+++ b/openssh/server/team/cicd.yml
@@ -0,0 +1,19 @@
+classes:
+- system.openssh.server.team.members.akomarek
+- system.openssh.server.team.members.atengler
+- system.openssh.server.team.members.fpytloun
+- system.openssh.server.team.members.jbroulik
+- system.openssh.server.team.members.jcach
+- system.openssh.server.team.members.jjosef
+- system.openssh.server.team.members.jpavlik
+- system.openssh.server.team.members.mpolreich
+- system.openssh.server.team.members.rfelkl
+- system.openssh.server.team.members.tkukral
+- system.openssh.server.team.members.psvimbersky
+
+parameters:
+  _param:
+    linux_system_user_sudo: true
+  openssh:
+    server:
+      enabled: true
diff --git a/openssh/server/team/k8s_apps_team.yml b/openssh/server/team/k8s_apps_team.yml
index e57ed1a..1cd8bd9 100644
--- a/openssh/server/team/k8s_apps_team.yml
+++ b/openssh/server/team/k8s_apps_team.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    linux_system_user_sudo: true
   linux:
     system:
       user:
diff --git a/openssh/server/team/k8s_team.yml b/openssh/server/team/k8s_team.yml
index 36f3252..9ec2b88 100644
--- a/openssh/server/team/k8s_team.yml
+++ b/openssh/server/team/k8s_team.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    linux_system_user_sudo: true
   linux:
     system:
       user:
diff --git a/openssh/server/team/l1_support.yml b/openssh/server/team/l1_support.yml
index aab98c7..8f1d5c1 100644
--- a/openssh/server/team/l1_support.yml
+++ b/openssh/server/team/l1_support.yml
@@ -1,3 +1,6 @@
+## DEPRECATED, this class will be removed 01/2018
+## please integrate submodule opscare instead
+## https://gerrit.mirantis.com/#/admin/projects/mmo-support/reclass-opscare
 classes:
 - system.linux.system.sudo
 # L1
@@ -11,18 +14,21 @@
 - system.openssh.server.team.members.deniskostriukov
 - system.openssh.server.team.members.dmitrygoloshubov
 - system.openssh.server.team.members.javierdiaz
+- system.openssh.server.team.members.jorgesorondo
 - system.openssh.server.team.members.josuepalmerin
 - system.openssh.server.team.members.krzysztoffranckowski
 - system.openssh.server.team.members.matthewroark
 - system.openssh.server.team.members.maximefimov
 - system.openssh.server.team.members.michaelpetersen
 - system.openssh.server.team.members.mikhailkraynov
-- system.openssh.server.team.members.nadezhdakabanova
+- system.openssh.server.team.members.nkabanova
 - system.openssh.server.team.members.renesoto
 - system.openssh.server.team.members.rsafonov
 - system.openssh.server.team.members.scottmachtmes
 - system.openssh.server.team.members.zahedkhurasani
 parameters:
+  _param:
+    linux_system_user_sudo: false
   linux:
     system:
       group:
diff --git a/openssh/server/team/l2_support.yml b/openssh/server/team/l2_support.yml
index 6c54999..91c7fa8 100644
--- a/openssh/server/team/l2_support.yml
+++ b/openssh/server/team/l2_support.yml
@@ -1,3 +1,6 @@
+## DEPRECATED, this class will be removed 01/2018
+## please integrate submodule opscare instead
+## https://gerrit.mirantis.com/#/admin/projects/mmo-support/reclass-opscare
 classes:
 - system.linux.system.sudo
 # L2
@@ -16,6 +19,8 @@
 - system.openssh.server.team.members.oliemieshko
 - system.openssh.server.team.members.sovsianikov
 parameters:
+  _param:
+    linux_system_user_sudo: false
   linux:
     system:
       group:
diff --git a/openssh/server/team/lab.yml b/openssh/server/team/lab.yml
index 7ede7c0..b6c90f8 100644
--- a/openssh/server/team/lab.yml
+++ b/openssh/server/team/lab.yml
@@ -1,5 +1,6 @@
 parameters:
   _param:
+    linux_system_user_sudo: true
     # This is the public key associated to the default private key setup in
     # openssh.client.lab
     cluster_public_key: >-
diff --git a/openssh/server/team/mcp_ci.yml b/openssh/server/team/mcp_ci.yml
index 4bf0a5c..829839e 100644
--- a/openssh/server/team/mcp_ci.yml
+++ b/openssh/server/team/mcp_ci.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    linux_system_user_sudo: true
   linux:
     system:
       user:
diff --git a/openssh/server/team/mcp_qa.yml b/openssh/server/team/mcp_qa.yml
index 1da0d1e..e80d339 100644
--- a/openssh/server/team/mcp_qa.yml
+++ b/openssh/server/team/mcp_qa.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    linux_system_user_sudo: true
   linux:
     system:
       user:
diff --git a/openssh/server/team/members/achuprin.yml b/openssh/server/team/members/achuprin.yml
index 0fbea13..08edc89 100644
--- a/openssh/server/team/members/achuprin.yml
+++ b/openssh/server/team/members/achuprin.yml
@@ -5,7 +5,7 @@
         achuprin:
           enabled: true
           name: achuprin
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Alexey Chuprin
           home: /home/achuprin
           email: achuprin@mirantis.com
diff --git a/openssh/server/team/members/aepifanov.yml b/openssh/server/team/members/aepifanov.yml
index cb7c8e9..be825bc 100644
--- a/openssh/server/team/members/aepifanov.yml
+++ b/openssh/server/team/members/aepifanov.yml
@@ -5,12 +5,10 @@
         aepifanov:
           enabled: true
           name: aepifanov
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Andrey Epifanov
           home: /home/aepifanov
           email: aepifanov@mirantis.com
-          groups:
-          - supportl2
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/ahecko.yml b/openssh/server/team/members/ahecko.yml
new file mode 100644
index 0000000..9b5c6d8
--- /dev/null
+++ b/openssh/server/team/members/ahecko.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        ahecko:
+          enabled: true
+          name: ahecko
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Adam Hecko
+          home: /home/ahecko
+          email: ahecko@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        ahecko:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGGRD/zStceB/CAJu8bnsWs9VPWY8W1F6fz2AvX2BiyEXCE2W4uMY11In+qHQtIaWeyWVR/XmoCw0mZxk7emTz91Y1FioinEgumkhpNPLY0fPdDHzwu3atCjAc7B3ZCCXusiUC6k99aCa9YXIZ0/0/75kqilRmIcxGeneL9S2+iuFn/HSpNR7IZN03AEzWgIfXEhB4lyNs9n3RHf+XXy2wxAKkcKpMyocEO9gc3uLY5OdUhGFHRKhEZwgz3K6ysDOCIOTkiiJ8KXMM07FIDLjs5pjUjnVkZ1kWq+virLMbhhyCbMR8zrPvWMjP5oYGm9U9aEeUMA5iMCa7K+qs2AM3 adamheczko@mirantis
+          user: ${linux:system:user:ahecko}
diff --git a/openssh/server/team/members/akomarek.yml b/openssh/server/team/members/akomarek.yml
index 7fe33fb..4ccc697 100644
--- a/openssh/server/team/members/akomarek.yml
+++ b/openssh/server/team/members/akomarek.yml
@@ -5,7 +5,7 @@
         newt:
           enabled: true
           name: newt
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Ales Komarek
           home: /home/newt
           email: mail@newt.cz
diff --git a/openssh/server/team/members/aleksandrdobdin.yml b/openssh/server/team/members/aleksandrdobdin.yml
index 7739e45..34abcf4 100644
--- a/openssh/server/team/members/aleksandrdobdin.yml
+++ b/openssh/server/team/members/aleksandrdobdin.yml
@@ -5,12 +5,10 @@
         adobdin:
           enabled: true
           name: adobdin
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Aleksandr Dobdin
           home: /home/adobdin
           email: adobdin@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/aleksandrrubtsov.yml b/openssh/server/team/members/aleksandrrubtsov.yml
index e9fb4a5..93d26df 100644
--- a/openssh/server/team/members/aleksandrrubtsov.yml
+++ b/openssh/server/team/members/aleksandrrubtsov.yml
@@ -5,12 +5,10 @@
         arubtsov:
           enabled: true
           name: arubtsov
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Aleksandr Rubtsov
           home: /home/arubtsov
           email: arubtsov@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/anatoliineliubin.yml b/openssh/server/team/members/anatoliineliubin.yml
index a86785c..a8b1f21 100644
--- a/openssh/server/team/members/anatoliineliubin.yml
+++ b/openssh/server/team/members/anatoliineliubin.yml
@@ -5,12 +5,10 @@
         aneliubin:
           enabled: true
           name: aneliubin
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Anatolii Neliubin
           home: /home/aneliubin
           email: aneliuubin@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/antonrodionov.yml b/openssh/server/team/members/antonrodionov.yml
index a4347f4..3be1f17 100644
--- a/openssh/server/team/members/antonrodionov.yml
+++ b/openssh/server/team/members/antonrodionov.yml
@@ -5,12 +5,10 @@
         arodionov:
           enabled: true
           name: arodionov
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Anton Rodionov
           home: /home/arodionov
           email: arodionov@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/apetrenko.yml b/openssh/server/team/members/apetrenko.yml
index e754a8e..f4fa3d9 100644
--- a/openssh/server/team/members/apetrenko.yml
+++ b/openssh/server/team/members/apetrenko.yml
@@ -5,12 +5,10 @@
         apetrenko:
           enabled: true
           name: apetrenko
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Andrii Petrenko
           home: /home/apetrenko
           email: apetrenko@mirantis.com
-          groups:
-          - supportl2
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/ashestakov.yml b/openssh/server/team/members/ashestakov.yml
index c3eae16..e00e839 100644
--- a/openssh/server/team/members/ashestakov.yml
+++ b/openssh/server/team/members/ashestakov.yml
@@ -5,7 +5,7 @@
         ashestakov:
           enabled: true
           name: ashestakov
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Andrey Shestakov
           home: /home/ashestakov
           email: ashestakov@mirantis.com
diff --git a/openssh/server/team/members/ashishkin.yml b/openssh/server/team/members/ashishkin.yml
index e9a132e..9f74171 100644
--- a/openssh/server/team/members/ashishkin.yml
+++ b/openssh/server/team/members/ashishkin.yml
@@ -5,12 +5,10 @@
         ashishkin:
           enabled: true
           name: ashishkin
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Aleksei Shishkin
           home: /home/ashishkin
           email: ashishkin@mirantis.com
-          groups:
-          - supportl2
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/atarasov.yml b/openssh/server/team/members/atarasov.yml
index deada75..935aa91 100644
--- a/openssh/server/team/members/atarasov.yml
+++ b/openssh/server/team/members/atarasov.yml
@@ -5,12 +5,10 @@
         atarasov:
           enabled: true
           name: atarasov
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Anton Tarasov
           home: /home/atarasov
           email: atarasov@mirantis.com
-          groups:
-          - supportl2
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/atengler.yml b/openssh/server/team/members/atengler.yml
index cf06e02..34ef793 100644
--- a/openssh/server/team/members/atengler.yml
+++ b/openssh/server/team/members/atengler.yml
@@ -5,7 +5,7 @@
         tux:
           enabled: true
           name: tux
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Adam Tengler
           home: /home/tux
           email: atengler@mirantis.com
diff --git a/openssh/server/team/members/cade.yml b/openssh/server/team/members/cade.yml
index dd50b54..fb22394 100644
--- a/openssh/server/team/members/cade.yml
+++ b/openssh/server/team/members/cade.yml
@@ -3,9 +3,9 @@
     system:
       user:
         cade:
-          enabled: true
+          enabled: false
           name: cade
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Cade Ekblad-Frank
           home: /home/cade
           email: cade@mirantis.com
@@ -14,7 +14,7 @@
       enabled: true
       user:
         cade:
-          enabled: true
+          enabled: false
           public_keys:
             - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDpSYtgC/lSMXCfjjxSWFJ8WUjhGfBWLnCJ4n8AzXGw/t/x+DBjMQz40D0T4ymvn/8/vRDwZ8stISWGeTGn0G4z1H4FWM+orBbT2srPHL2/XbjKUYRQOUxp8f4wBW4VNsaTPbzjh6A1BY0d7dOee6k2N5ramIibojzbWSEkxFG9vxtXm5jDYs4gcx0rYN11+9wamsHYAdXv4VJmUMS8TEP/8p67NtRNcq1m9uuHlZE5CxTcF6CvflgnXrDrF6QrdbjPVpzXKZmvdYom0OT97FJRtcdojovsZpOo59vozmyUh2g0ycq1izpLT0uQQ3vT6mz53gc5wiUynY6yX7wedqq74/vFz/QKBYjh/OqxZMhkH4GsWXs7yGW7q4+cNEDzARyTj7ikhg/C+UrXZ5jKx7Xc7cbhyuyzHm55+AgfhPLQoiYL3trONdH539kYnY6IAAsz0213ulJRPUHN3+M0x4iEoFAqwWo3wqdkH24v8plqLga7Q3zTbLYX+FOZOv0WC9gI3elmcd9ZBHHh0SOatQEg+Eu0m3ezyLmLHQ3pidWbksz9pnkLWBxeBq3x/xSXM5geI2BgMWVV+74YhBb9+irCpaU0BPYOpX023yNskXODF5RYAt5I5fVAfogHy4S2c3xgGlYUklUEvWBtl6bFYQjQfK2xeANaFUIBKdD5hgDdhQ== cade@mirantis.com
           user: ${linux:system:user:cade}
diff --git a/openssh/server/team/members/chnyda.yml b/openssh/server/team/members/chnyda.yml
new file mode 100644
index 0000000..2bcecaf
--- /dev/null
+++ b/openssh/server/team/members/chnyda.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        chnyda:
+          enabled: true
+          name: chnyda
+          sudo: true
+          full_name: Cedric Hnyda
+          home: /home/chnyda
+          email: chnyda@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        chnyda:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDHmLTwDSFslOUVo4ViT0bqVLhSaweuLt0QNWhnIaSPgqWhHOSkdqt3+Tg4l8Vd4O4Z44Yv/rXqhmO5X1AIytNccA6+nJe4Km3JC6QzG6npS3ghtHWDU3DOGgWd5RrULviEDSIj1w1oG8oHxdycGkbfjApAkiDR/xr7NHhTcPhEuvn/q7i1raj4vpNdIrR+cr6XA3l+I4cmaizpjuWaFrag1q24RS7PVEUmcPRSODrkdwFREsrLkIlIgtIoMIIjtEDdk1RU/loiXrNwuVRI3KTLqhheFlHedQd13uzpn66KF6UVlZAm+k2y2jLdEi5IFKD3g6mmWsNH6xSZYVn6d84/XvLjMsS/UL+WHr5xetHNSi3RtQOkCPYphq1KcRAXLwH0dgtDwfyg2F+5ezG3wMsZAqD3KiaGNmDcA6R19Fpjm0S4SXa+QnX5eZcO9DS5cYTjs8F2T9Vsaspvwc0U80M6+JvOlV1PBNJYQhSxdX1Plf2p1MrrRnYhlgMdzCiPSQHsKp3tei8I+bqCvV9iScLAbLxKaW/yWdeuh74oGitTfI4R0h0HMJ1lqK+rT5wtMXyJSvFMK6Zph0GqJf3QHBhzCfs5PIto1pyNdXbI8KzfgTgyo+3gpIPAQ2VD/pf8mOD218UPNQglYWP6wniTq/hVtC2tl3DW53qx5qv10osGmw== chnyda@mirantis.com
+          user: ${linux:system:user:chnyda}
diff --git a/openssh/server/team/members/collinmay.yml b/openssh/server/team/members/collinmay.yml
index cf55e05..9b29a34 100644
--- a/openssh/server/team/members/collinmay.yml
+++ b/openssh/server/team/members/collinmay.yml
@@ -5,12 +5,10 @@
         cmay:
           enabled: true
           name: cmay
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Collin May
           home: /home/cmay
           email: cmay@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/daniillapshin.yml b/openssh/server/team/members/daniillapshin.yml
index da1a274..0796ca7 100644
--- a/openssh/server/team/members/daniillapshin.yml
+++ b/openssh/server/team/members/daniillapshin.yml
@@ -3,20 +3,18 @@
     system:
       user:
         dlapshin:
-          enabled: true
+          enabled: false
           name: dlapshin
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Daniil Lapshin
           home: /home/dlapshin
           email: dlapshin@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
       user:
         dlapshin:
-          enabled: true
+          enabled: false
           public_keys: ${public_keys:dlapshin}
           user: ${linux:system:user:dlapshin}
   public_keys:
diff --git a/openssh/server/team/members/danilakhmetov.yml b/openssh/server/team/members/danilakhmetov.yml
index 1835188..47e38d6 100644
--- a/openssh/server/team/members/danilakhmetov.yml
+++ b/openssh/server/team/members/danilakhmetov.yml
@@ -5,12 +5,10 @@
         dakhmetov:
           enabled: true
           name: dakhmetov
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Danil Akhmetov
           home: /home/dakhmetov
           email: dakhmetov@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/dcech.yml b/openssh/server/team/members/dcech.yml
index 4e6dedf..2d29118 100644
--- a/openssh/server/team/members/dcech.yml
+++ b/openssh/server/team/members/dcech.yml
@@ -5,7 +5,7 @@
         dcech:
           enabled: true
           name: dcech
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Daniel Cech
           home: /home/dcech
           email: dcech@mirantis.com
diff --git a/openssh/server/team/members/deniskostriukov.yml b/openssh/server/team/members/deniskostriukov.yml
index 1f03ef3..26170dc 100644
--- a/openssh/server/team/members/deniskostriukov.yml
+++ b/openssh/server/team/members/deniskostriukov.yml
@@ -5,12 +5,10 @@
         dkostriukov:
           enabled: true
           name: dkostriukov
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Denis Kostriukov
           home: /home/dkostriukov
           email: dkostryukov@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/dkalashnik.yml b/openssh/server/team/members/dkalashnik.yml
new file mode 100644
index 0000000..52a2a69
--- /dev/null
+++ b/openssh/server/team/members/dkalashnik.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        dkalashnik:
+          enabled: true
+          name: dkalashnik
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Dmitry Kalashnik
+          home: /home/dkalashnik
+          email: dkalashnik@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        dkalashnik:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAyz5ovMK/rRxlhiy7x4dVwFkUqN/hhdVIpsQRQoGgTOjVhH6Y+eTE3si0RRq/HKZMwkcClJIqzMgjoajT5eQQphQrAAn2pwuCyZj0mXJJ1RSXQm+nSnhoqyB1r7Nl3keopgxrDlBLWyvyS3dJM9RJy4TimIwhuSA3qdhmfeqRm5M=
+          user: ${linux:system:user:dkalashnik}
\ No newline at end of file
diff --git a/openssh/server/team/members/dklepikov.yml b/openssh/server/team/members/dklepikov.yml
index e1eeb76..fc7b81a 100644
--- a/openssh/server/team/members/dklepikov.yml
+++ b/openssh/server/team/members/dklepikov.yml
@@ -5,12 +5,10 @@
         dklepikov:
           enabled: true
           name: dklepikov
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Denys Klepikov
           home: /home/dklepikov
           email: dklepikov@mirantis.com
-          groups:
-          - supportl2
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/dmitrygoloshubov.yml b/openssh/server/team/members/dmitrygoloshubov.yml
index d9e242c..4509f64 100644
--- a/openssh/server/team/members/dmitrygoloshubov.yml
+++ b/openssh/server/team/members/dmitrygoloshubov.yml
@@ -5,12 +5,10 @@
         dgoloshubov:
           enabled: true
           name: dgoloshubov
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Dmitry Goloshubov
           home: /home/dgoloshubov
           email: dgoloshubov@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/dsutyagin.yml b/openssh/server/team/members/dsutyagin.yml
index 66225c0..1315772 100644
--- a/openssh/server/team/members/dsutyagin.yml
+++ b/openssh/server/team/members/dsutyagin.yml
@@ -5,12 +5,10 @@
         dsutyagin:
           enabled: true
           name: dsutyagin
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Dmitry Sutyagin
           home: /home/dsutyagin
           email: dsutyagin@mirantis.com
-          groups:
-          - supportl2
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/dszeluga.yml b/openssh/server/team/members/dszeluga.yml
index 72c7db4..6557eac 100644
--- a/openssh/server/team/members/dszeluga.yml
+++ b/openssh/server/team/members/dszeluga.yml
@@ -1,11 +1,12 @@
+##Disabled user
 parameters:
   linux:
     system:
       user:
         dszeluga:
-          enabled: true
+          enabled: false
           name: dszeluga
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Damian Szeluga
           home: /home/dszeluga
           email: dszeluga@mirantis.com
diff --git a/openssh/server/team/members/ecantwell.yml b/openssh/server/team/members/ecantwell.yml
index 68bb110..d662836 100644
--- a/openssh/server/team/members/ecantwell.yml
+++ b/openssh/server/team/members/ecantwell.yml
@@ -3,9 +3,9 @@
     system:
       user:
         ecantwell:
-          enabled: true
+          enabled: false
           name: ecantwell
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Erick Cantwell
           home: /home/ecantwell
           email: ecantwell@mirantis.com
@@ -14,7 +14,7 @@
       enabled: true
       user:
         ecantwell:
-          enabled: true
+          enabled: false
           public_keys:
             - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDYAORp6uIs68C7P2QbNh/Jd58NudtLZrCLir/iGbHx8w1kV4yHG+o1N2wS5PYTkvIAl1/bMexniQiBKSmHvT8GnLJjyNBZL9PcLvCdYQQyQsXtd9LMUAaQehwQnQhB59CDOpTyIwrUuG+z8W5DFx47wKh6yVWCAwTVDJ3bRcL4bv16TE2A3PfCUNxFy8q6Z2RbL1YdIJwsywBBTj8wT1HuEImhefRmC0PuWPzoZZdezRQs05+fgNjw3gcVh3vdzWg6Klfz2FTQl0CgXOVaFWGIE8mi+uh/g0ML5JVQNEpqGxtHtHADykZvac+ozOTthSu+JaQEgUhc8bwV/31Hzh/9r3hOlkMj/Gmsprd+JWyeKewbBKVmaCVFsN7h8WSmBoSkk4uK7yPpR3xkC+Fs5vtXGqEBYFO/44b2WNgwZNE/gEgaxQFqAvg/E2bJVLwQ8ePUxIYoZN2qv2yIvqHCmWSDs6clTz+TGPPh92Txsp2/iTodhDk1muHfS4NGf9wkSMJQPuHFR+izsC5byPYKT4QfpWOrFDa1hHEgO4Hf/zpfAS4yIeo+hNIpE740w6tZINE9RJLutiTq+datt7M9qzqMVq9xEON/I8zBmfY5Srky9gTNhSdViWVPB6Tb8xiIXHZAx4YcJ1waZNZP6Yqn0WsEkAYC3vCXqpeRNcCVu3NIkw==
           user: ${linux:system:user:ecantwell}
diff --git a/openssh/server/team/members/ekozhemyakin.yml b/openssh/server/team/members/ekozhemyakin.yml
index 5f7e3f8..afd36c6 100644
--- a/openssh/server/team/members/ekozhemyakin.yml
+++ b/openssh/server/team/members/ekozhemyakin.yml
@@ -5,12 +5,10 @@
         ekozhemyakin:
           enabled: true
           name: ekozhemyakin
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Evgeny Kozhemyakin
           home: /home/ekozhemyakin
           email: ekozhemyakin@mirantis.com
-          groups:
-          - supportl2
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/enikanorov.yml b/openssh/server/team/members/enikanorov.yml
index 5697fa7..2ea5abc 100644
--- a/openssh/server/team/members/enikanorov.yml
+++ b/openssh/server/team/members/enikanorov.yml
@@ -5,12 +5,10 @@
         enikanorov:
           enabled: true
           name: enikanorov
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Eugene Nikanorov
           home: /home/enikanorov
           email: enikanorov@mirantis.com
-          groups:
-          - supportl2
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/fpytloun.yml b/openssh/server/team/members/fpytloun.yml
index 8cdfcec..d5b0937 100644
--- a/openssh/server/team/members/fpytloun.yml
+++ b/openssh/server/team/members/fpytloun.yml
@@ -5,7 +5,7 @@
         filip:
           enabled: true
           name: filip
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Filip Pytloun
           home: /home/filip
           email: filip@pytloun.cz
diff --git a/openssh/server/team/members/fsoppelsa.yml b/openssh/server/team/members/fsoppelsa.yml
index 6806a0e..4478112 100644
--- a/openssh/server/team/members/fsoppelsa.yml
+++ b/openssh/server/team/members/fsoppelsa.yml
@@ -5,12 +5,10 @@
         fsoppelsa:
           enabled: true
           name: fsoppelsa
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Fabrizio Soppelsa
           home: /home/fsoppelsa
           email: fsoppelsa@mirantis.com
-          groups:
-          - supportl2
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/javierdiaz.yml b/openssh/server/team/members/javierdiaz.yml
index 8d1e765..8b04645 100644
--- a/openssh/server/team/members/javierdiaz.yml
+++ b/openssh/server/team/members/javierdiaz.yml
@@ -5,12 +5,10 @@
         jdiaz:
           enabled: true
           name: jdiaz
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Javier Diaz
           home: /home/jdiaz
           email: jdiaz@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/jbroulik.yml b/openssh/server/team/members/jbroulik.yml
index d7cfcff..6b25ae9 100644
--- a/openssh/server/team/members/jbroulik.yml
+++ b/openssh/server/team/members/jbroulik.yml
@@ -5,7 +5,7 @@
         jbroulik:
           enabled: true
           name: jbroulik
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Jiri Broulik
           home: /home/jbroulik
           email: jbroulik@mirantis.com
diff --git a/openssh/server/team/members/jcach.yml b/openssh/server/team/members/jcach.yml
index 8ab2a81..a9e7e6d 100644
--- a/openssh/server/team/members/jcach.yml
+++ b/openssh/server/team/members/jcach.yml
@@ -5,7 +5,7 @@
         jcach:
           enabled: true
           name: jcach
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Jan Cach
           home: /home/jcach
           email: jcach@mirantis.com
diff --git a/openssh/server/team/members/jjosef.yml b/openssh/server/team/members/jjosef.yml
index 210162a..df6d0dd 100644
--- a/openssh/server/team/members/jjosef.yml
+++ b/openssh/server/team/members/jjosef.yml
@@ -5,7 +5,7 @@
         jjosef:
           enabled: true
           name: jjosef
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Jakub Josef
           home: /home/jjosef
           email: jakub.josef@gmail.com
diff --git a/openssh/server/team/members/jmosher.yml b/openssh/server/team/members/jmosher.yml
index 00535b4..f30c92f 100644
--- a/openssh/server/team/members/jmosher.yml
+++ b/openssh/server/team/members/jmosher.yml
@@ -5,7 +5,7 @@
         jmosher:
           enabled: true
           name: jmosher
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Jaymes Mosher
           home: /home/jmosher
           email: jmosher@mirantis.com
diff --git a/openssh/server/team/members/jorgesorondo.yml b/openssh/server/team/members/jorgesorondo.yml
new file mode 100644
index 0000000..38ecf77
--- /dev/null
+++ b/openssh/server/team/members/jorgesorondo.yml
@@ -0,0 +1,22 @@
+parameters:
+  linux:
+    system:
+      user:
+        jsorondo:
+          enabled: true
+          name: jsorondo
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Jorge Sorondo
+          home: /home/jsorondo
+          email: jsorondo@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        jsorondo:
+          enabled: true
+          public_keys: ${public_keys:jsorondo}
+          user: ${linux:system:user:jsorondo}
+  public_keys:
+    jsorondo:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYN/Y6PeKVaW+ouilurh9jyi2k+PDn097LPXxi82ODgPJ+p/qzr6oBYIWDNtudMhNTWA1uV2ZnMbbl67REWAc8V++NFQWtAX9lmtQ4S5w/CvWutgGqrUr7gjJJoq/ySMMFE1F3sekdPM90y2JS4K1L300de5UviAwgPMo48wq292MaESqq6/X7CV3VHDy5srA1VFI1oZMv66NpOO2mHzElKMtVISTHF8/W4yg1P7LvjlcH2vB2clfO6UtOZfcDaAibAyE+bClUYzK6YSRejni5hWaRYFOvza3PyIF6YvjznPxtTU4aclmiZrtMm5gLZB/euvkijXuBOPFO0xgDw6Q9
diff --git a/openssh/server/team/members/josuepalmerin.yml b/openssh/server/team/members/josuepalmerin.yml
index 72f3eda..3e0d528 100644
--- a/openssh/server/team/members/josuepalmerin.yml
+++ b/openssh/server/team/members/josuepalmerin.yml
@@ -5,12 +5,10 @@
         jpalmerin:
           enabled: true
           name: jpalmerin
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Josue Palmerin
           home: /home/jpalmerin
           email: jpalmerin@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/jpavlik.yml b/openssh/server/team/members/jpavlik.yml
index 135db8c..b073d7f 100644
--- a/openssh/server/team/members/jpavlik.yml
+++ b/openssh/server/team/members/jpavlik.yml
@@ -5,7 +5,7 @@
         jpavlik:
           enabled: true
           name: jpavlik
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Jakub Pavlik
           home: /home/jpavlik
           email: jpavlik@mirantis.com
diff --git a/openssh/server/team/members/korlowska.yml b/openssh/server/team/members/korlowska.yml
index 7b1c151..f175273 100644
--- a/openssh/server/team/members/korlowska.yml
+++ b/openssh/server/team/members/korlowska.yml
@@ -5,7 +5,7 @@
         korlowska:
           enabled: true
           name: korlowska
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Katarzyna Orlowska
           home: /home/korlowska
           email: korlowska@mirantis.com
diff --git a/openssh/server/team/members/krzysztoffranckowski.yml b/openssh/server/team/members/krzysztoffranckowski.yml
index 72edd3f..454c833 100644
--- a/openssh/server/team/members/krzysztoffranckowski.yml
+++ b/openssh/server/team/members/krzysztoffranckowski.yml
@@ -5,12 +5,10 @@
         kfranckowski:
           enabled: true
           name: kfranckowski
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Krzysztof Franckowski
           home: /home/kfranckowski
           email: kfranckowski@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/listomin.yml b/openssh/server/team/members/listomin.yml
new file mode 100644
index 0000000..4a22a23
--- /dev/null
+++ b/openssh/server/team/members/listomin.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        listomin:
+          enabled: true
+          name: listomin
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Leontii Istomin
+          home: /home/listomin
+          email: listomin@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        listomin:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkiHTkB53cYMFqNsKjEa1W+O3KpSRk26zCQtNsJO4KrNTSuROcpSjSGLUL55YgjBzVUUo88WNFJgu5e3oJNmXpWcfyRa2LoQyhAws6LxsGb5hH0YWB34w4uzvcHIpO5QNGmHIMaczdS721cgGMygBla32putV13gZE/y2ucFh4oza5lRuY5GZm2i1iTaDV5QqamDeYC3venjTtnXXuZbsW0Mkyn8mPXe5d3/FYSKLBGGCELnxpyopfpuCBsQEPSuYIz7EWsLCCjKgUrYZ4Uu5Sg5Ifs+Z0lSQR7/wbraDoGSyrubBHP3ub57lJvQ5kvNyKnT+BwGpoF8V+oMuoqR4l listomin@listomin-laptop
+          user: ${linux:system:user:listomin}
\ No newline at end of file
diff --git a/openssh/server/team/members/lmercl.yml b/openssh/server/team/members/lmercl.yml
index 4fd4707..c735ed5 100644
--- a/openssh/server/team/members/lmercl.yml
+++ b/openssh/server/team/members/lmercl.yml
@@ -5,7 +5,7 @@
         lmercl:
           enabled: true
           name: lmercl
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Lubos Mercl
           home: /home/lmercl
           email: lmercl@mirantis.com
diff --git a/openssh/server/team/members/manashkin.yml b/openssh/server/team/members/manashkin.yml
index bfce163..17da835 100644
--- a/openssh/server/team/members/manashkin.yml
+++ b/openssh/server/team/members/manashkin.yml
@@ -5,12 +5,10 @@
         manashkin:
           enabled: true
           name: manashkin
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Miroslav Anashkin
           home: /home/manashkin
           email: manashkin@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
@@ -21,4 +19,3 @@
           - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDb1XOAU6ZoU+hSB0SPaypwK1Weu2armLzQrIQ3hhmlpAxFDV50oiF/PyPZ7W5NkJWgEr+DGYuZiKuqTDosrQV5Tt8TA4nt6bSJ9SlhJlNGltrOeWeLcP/Hf2YyWm0e9puzAIgUsKN8Np+CBrpIls4bq2JCshkz/vz9AreaFBMHrhjrh8YNn+yNbETJf9nmxDazVqYp3UI5SU4Wg0KchrFHBPNlREL099SSARfTGIsfbbJmSHx2LUw3Rt6v2fizRslv+Tuxvx2tqRsgbjeF7+NKfOFMBIloab97ag7N9EUdVvOHrjScXQ+nP/kdk3iq7O2WDpAgKYXIbSuaWA0YUk5Z manashkin@mirantis.com
           user: ${linux:system:user:manashkin}
           group:
-          - supportl2
diff --git a/openssh/server/team/members/matthewroark.yml b/openssh/server/team/members/matthewroark.yml
index 0a9eb28..3dc01a6 100644
--- a/openssh/server/team/members/matthewroark.yml
+++ b/openssh/server/team/members/matthewroark.yml
@@ -5,12 +5,10 @@
         mroark:
           enabled: true
           name: mroark
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Matthew Roark
           home: /home/mroark
           email: mroark@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/maximefimov.yml b/openssh/server/team/members/maximefimov.yml
index 2dab7d7..1915548 100644
--- a/openssh/server/team/members/maximefimov.yml
+++ b/openssh/server/team/members/maximefimov.yml
@@ -5,12 +5,10 @@
         mefimov:
           enabled: true
           name: mefimov
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Maxim Efimov
           home: /home/mefimov
           email: mefimov@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
@@ -21,5 +19,4 @@
           user: ${linux:system:user:mefimov}
   public_keys:
     mefimov:
-      - key: rsa-key AAAAB3NzaC1yc2EAAAABJQAAAQEAgLfqReVrcsOuG8GaxPF1iSJjhUPsCnoxtAwFU4YPd0qVmLFxZtcKgb29yR/OSKQz3o5RM1OvQhHs080/gfiboMIyVa5gOCcbVj1PoySd8dAAVy9DORKWCU3djWmHcsG76FU1G8UE1w7nSrWqs01KW9/NzLjiHxf/4r3YWZ51UTr/C1AFyPPMfFRbffqq6yqULG+/TfpkgN2maBrotN5trDuGAHKluyboL7+EZazYpgjUsd2cPMH8TzdQZNwYrtrzWDS0YAqSQVyMc2dFh/gptw/QCsWT2IMyQKLKOcaAy2qon1xWDRFL1fVgqjakF+oM5RBAvX1bkJ1Vx883GEnPaQ==
-
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAhbjsMWhgLWtiSYwJRBY8x6yuXPEmeOPjv2SWsGnhLkW3iY/6CEYph4mKBP22vvJaiXRmuUNIpQCnORjp9OrzD9gQM94EmEjpPhaLixYeejPxPW27rEfRo+Xtp9U02GfBUBpBP1hwayKvCOM8y/FTZnPF3pS2zXmBU9VYf3MGR8mt1RS1uJHj+ZBO6fDnf7LNStps1oGdyXkliTqytLH2AE7t+darR3RDN9CN8qMfAMaPSvDjjqE4UzmpoBU4+by/Rxt3bFFyGx5v0/xwq0ieSXT0pkLFSB7mX2P4BiPvr4piH3rZzcVio5QJ5zcH86fHwME9+/tUg7DXihWWW89Vvw== rsa-key-20161025
diff --git a/openssh/server/team/members/mceloud.yml b/openssh/server/team/members/mceloud.yml
index 62dc444..d1f3359 100644
--- a/openssh/server/team/members/mceloud.yml
+++ b/openssh/server/team/members/mceloud.yml
@@ -5,7 +5,7 @@
         marco:
           enabled: true
           name: marco
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Marek Celoud
           home: /home/marco
           email: mceloud@mirantis.com
diff --git a/openssh/server/team/members/michaelpetersen.yml b/openssh/server/team/members/michaelpetersen.yml
index 8174b6b..e19ed2f 100644
--- a/openssh/server/team/members/michaelpetersen.yml
+++ b/openssh/server/team/members/michaelpetersen.yml
@@ -3,20 +3,18 @@
     system:
       user:
         mpetersen:
-          enabled: true
+          enabled: false
           name: mpetersen
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Michael Petersen
           home: /home/mpetersen
           email: mpetersen@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
       user:
         mpetersen:
-          enabled: true
+          enabled: false
           public_keys: ${public_keys:mpetersen}
           user: ${linux:system:user:mpetersen}
   public_keys:
diff --git a/openssh/server/team/members/mikhailkraynov.yml b/openssh/server/team/members/mikhailkraynov.yml
index 0019a41..a7a2d95 100644
--- a/openssh/server/team/members/mikhailkraynov.yml
+++ b/openssh/server/team/members/mikhailkraynov.yml
@@ -5,12 +5,10 @@
         mkraynov:
           enabled: true
           name: mkraynov
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Mikhail Kraynov
           home: /home/mkraynov
           email: mkraynov@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/miwinski.yml b/openssh/server/team/members/miwinski.yml
index 48f91e9..5dc9d80 100644
--- a/openssh/server/team/members/miwinski.yml
+++ b/openssh/server/team/members/miwinski.yml
@@ -5,7 +5,7 @@
         miwinski:
           enabled: true
           name: miwinski
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Marcin Iwinski
           home: /home/miwinski
           email: miwinski@mirantis.com
diff --git a/openssh/server/team/members/mkarpin.yml b/openssh/server/team/members/mkarpin.yml
new file mode 100644
index 0000000..32cc689
--- /dev/null
+++ b/openssh/server/team/members/mkarpin.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        mkarpin:
+          enabled: true
+          name: mkarpin
+          sudo: true
+          full_name: Mykyta Karpin
+          home: /home/mkarpin
+          email: mkarpin@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        mkarpin:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCcO+qMO4z5O75JmeoyHQKNjq72psAMO2lebEMl5MbgVs7BAOT3PChamRId3xhwX2X5R0vS1ZSgRm0XC4br2OpJ9DsBhOBbPRK/EyjAm5aTBW8eZZ69NDFam/hLJ6Xq+jZDdlBT8iK7CPxTJD+0wz1KqpIgYlUNkix5EEj2wfUAfw3j6lGiEVQ0Cpbejey9sYlUSitKcYs/EAX5byBBqkFCLL4/D77fLOIuWfDzAAStUR/wbOJnWNiIScifu4EUdcSdHra9RoQaRgo31ALq+BeYVpvqnyHTOw9t2q04sZVDN4anhUMAFh0n1CkbY/2HWpX/RYWt1bV6XtDeoCpsC5Ar nkarpin@nkarpin-pc
+          user: ${linux:system:user:mkarpin}
\ No newline at end of file
diff --git a/openssh/server/team/members/mlos.yml b/openssh/server/team/members/mlos.yml
index 1e9da38..6b30817 100644
--- a/openssh/server/team/members/mlos.yml
+++ b/openssh/server/team/members/mlos.yml
@@ -5,7 +5,7 @@
         mlos:
           enabled: true
           name: mlos
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Mateusz Los
           home: /home/mlos
           email: mlos@mirantis.com
diff --git a/openssh/server/team/members/mniedbala.yml b/openssh/server/team/members/mniedbala.yml
new file mode 100644
index 0000000..30f7f30
--- /dev/null
+++ b/openssh/server/team/members/mniedbala.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        mniedbala:
+          enabled: true
+          name: mniedbala
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Mikolaj Niedbala
+          home: /home/mniedbala
+          email: mniedbala@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        mniedbala:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNepHgtflir2vNW+h9cr3hP3llsTlg5uIvvmByykfk455Cum0vSO27mWKZJu0ebU4LXfeH+WP4MjR3tKAKvXqzjGhPVGjMO3wo4/NLlel2CDx99w0KotcjQhW6p+iqLv1AT9E5LW4Kr1NuQ65nvGn6y4SevRw2y36bNS4VJBq40HlgQFTW3oNP+5u4TVzu7QQhulsTUdQETgLswZKsarX7whgvcHvFs1dnbriZlkPXvrKhZLA/CUb7ot+ugw6KWOl+g4gTFLjnt0IXjJXMstCOL9R7/juflUku9CYFvSuq4/T67yMW7XntQ89VkwudSCMjjUWg6ilEG0ghd9+b3bPr mniedbala@mirantis.com
+          user: ${linux:system:user:mniedbala}
diff --git a/openssh/server/team/members/mpolreich.yml b/openssh/server/team/members/mpolreich.yml
index 8a01168..a4658aa 100644
--- a/openssh/server/team/members/mpolreich.yml
+++ b/openssh/server/team/members/mpolreich.yml
@@ -5,7 +5,7 @@
         mpolreich:
           enabled: true
           name: mpolreich
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Martin Polreich
           home: /home/mpolreich
           email: mpolreich@mirantis.com
diff --git a/openssh/server/team/members/mrelewicz.yml b/openssh/server/team/members/mrelewicz.yml
index 7e863e2..144379b 100644
--- a/openssh/server/team/members/mrelewicz.yml
+++ b/openssh/server/team/members/mrelewicz.yml
@@ -1,11 +1,12 @@
+##Disabled user
 parameters:
   linux:
     system:
       user:
         mrelewicz:
-          enabled: true
+          enabled: false
           name: mrelewicz
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Maciej Relewicz
           home: /home/mrelewicz
           email: mrelewicz@mirantis.com
diff --git a/openssh/server/team/members/mwilson.yml b/openssh/server/team/members/mwilson.yml
index f9280eb..9f2d63d 100644
--- a/openssh/server/team/members/mwilson.yml
+++ b/openssh/server/team/members/mwilson.yml
@@ -3,9 +3,9 @@
     system:
       user:
         mwilson:
-          enabled: true
+          enabled: false
           name: mwilson
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Mike Wilson
           home: /home/mwilson
           email: mwilson@mirantis.com
@@ -14,7 +14,7 @@
       enabled: true
       user:
         mwilson:
-          enabled: true
+          enabled: false
           public_keys:
             - key: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3ltgS2MbSWR6c/V60oEHtUnLQ3bm5sSqnjFEvL00Y/aVuNL6VCnPCrWXlYSbp6P70UYuD+ngD4x7aW8jg13ii9rw2RntlaPfmttIOb6REDFohOhC4T3BPdeCd5wVe9p/ioyiFCqNi6/m/RWL7Iv8IlR/2IetQHL14VWwTgGd62sqExdb6oZM3Yux/S4jSTcMYBzt49t+QKTLiYTvQJl7Tzv8RJNzAWMsgBwo9M1N73Zqa0hA46sGkbwmWXoBhnJwowGD38q54P+WaSrar/9FT7l+uCXMwbsyYDpoRJH8SQOOpKrymEeyKCjXQUVtLopmfZMZ6COBpLsTSq1BCytwQw== /home/mwilson/.ssh/id_rsa
             - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDV6H07IEV9merlHUFV8O/Y7sczYXNZjysTBg4TkUW3mWzvW0PJMKnP6Fc1XfFE53fR71N09gkmnVlEtbHa8PTXoS89JVuUHTnitAbDdINShm0pFNWsi/3f00nbfQ8hjaxEWeZ4VlwYzP4v5IPVtpDug+epK65clIG8Xfxlp+CcckyeDdBNSztHHDuQiholzmPicN6EFM6bVUqUZSGnmxiOCrYUOMXBbYChBc3otfeF6vO3WvnKF77nixgOGGmuS0+t96vPKLB3cl5GYpTFyOmrt3tu7JPlTsqwUa0yqDa3ny+5BToIpnROhAqTZV5fV3LHgtObcWYRGANdjVWyPiNOiywiDzsw7/xzuuqV2wLeLnFG1Z+G550F1Ed4lrsPYKc7+qxZYLquI0iJoIjg5WPzNw5QBLdb1srL9zo+0A91Asx8U95IjIMWumowWjDN3Mn0qJwxW5d8SUign3wksIu2FlkLCT4u95CEIebDVEhTQQR0AOP00/KLKtBDn9a5H0UnJZZSTG4+prU3CnqyXqyp6dano86fGEkkcP2PDi/SUwoxdBvMVbdZxYpPYm+8Oe0TjLWPlwu4kYCwVnl3EYgJZAHjT6wVHOjyXcJYezPvvXY8B/VR8UfupetHg5/mVjoQQy2+Nl34AaDN2TLQLXRuG+U+hZqV5Jzc3JO+KKfDUw== mwilson@mwilson-ThinkPad-W530
diff --git a/openssh/server/team/members/nadezhdakabanova.yml b/openssh/server/team/members/nkabanova.yml
similarity index 64%
rename from openssh/server/team/members/nadezhdakabanova.yml
rename to openssh/server/team/members/nkabanova.yml
index 6979c5e..fdbb827 100644
--- a/openssh/server/team/members/nadezhdakabanova.yml
+++ b/openssh/server/team/members/nkabanova.yml
@@ -5,12 +5,10 @@
         nkabanova:
           enabled: true
           name: nkabanova
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Nadezhda Kabanova
           home: /home/nkabanova
           email: nkabanova@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
@@ -22,4 +20,6 @@
   public_keys:
     nkabanova:
       - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDuI74hcXTCbbvWoWHNLkng0nDBBwEzZJu8APmKVBukr9Lldz5r8n4OLRzlMI9oKbzvOuY082Cwp+9f5w5ViF/wmmEBa5sktUOBI5Jsi+g5ulb1i2HQOiaRibFJZZcoW03YRQCqQ8D9H4QcuXkT4oNuL5Wcj0UKPQT5r6N2kvuNXlJfEezQQim4nVRymel2USPt/AhlN4AUfBShR8Ykaky2Me4pt5xi0fLOJ9ZDWlEa4dl19Jd4tPz66+dLPiWql+6dgd9GiN+f7NLdDOv3RfOBH6n/It4y/fI+2/UY57X13dWauQNIQHQHDTpCCRiB+XOHwoCRaV81XTHbR865+/sP
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTOke7Y9PB9lbFxaOHVq/YriVzPWsjH+Ie/KiqfjkeLLy3HsUIAJGrxeDbT1YB8Y6OBEKrCk45ECgsRu6MS6jMx4CmJPEV2QNf05Y7g3XBoTeNZwUQtW1aUER6ZXALiBon81cAvVhHDIRHDwTxrSMUTyY0m4sInSt+M6yg22nW24BJLNbRvKwMvO0bdVFzCHrTWbODAOGNplQf63eWlYC2t87PsqTT8CVHgv40QGLIbmGFCyMhnTk2TUMW8d8qMLzHAQU8Cd50HLW6mCEF1oW5QNffpemqeW0oA8vi2iLcRV0lbD5yuwaojYRMpudXOzMttkfjz/+ok/d+qWpiUzep root@Nadezhda
+
 
diff --git a/openssh/server/team/members/nkondra.yml b/openssh/server/team/members/nkondra.yml
index 77bfde5..b250e2b 100644
--- a/openssh/server/team/members/nkondra.yml
+++ b/openssh/server/team/members/nkondra.yml
@@ -5,12 +5,10 @@
         nkondra:
           enabled: true
           name: nkondra
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Nazarii Kondra
           home: /home/nkondra
           email: nkondra@mirantis.com
-          groups:
-          - supportl2
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/obasov.yml b/openssh/server/team/members/obasov.yml
new file mode 100644
index 0000000..8f58212
--- /dev/null
+++ b/openssh/server/team/members/obasov.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        obasov:
+          enabled: true
+          name: obasov
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Oleg Basov
+          home: /home/obasov
+          email: obasov@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        obasov:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkbt+z214gkpRTA1Fso0ltxDq37Cu0l75stLO9eIPh9Gd38MliXB5NpJsGk3b521y/a2fdIKMfzwlt3WpC/cgx16l2PesEt4b/ASHYiHNtoGPxbcDRfgcamAsUyUyPtKjbBJJJ2aPfYRRhnEDOZwA3P6ITvpfzj4I24Y46j1H+qmi8gKzFTZpj0EobaPTi/sRztuVLspTy3MntcIwGBJMZCaz0jifYLEEFdEQRHdaZy5L2/2jv7GVECBRd0ucHr+zSM1uV4LQbQVCuGquTn05GZBpwgtMyfwhm7ySMsewZpssVReDha+0WVpNiftKcyBAjXdUsLAgZqeaAz4exey1r olegeech@ns1.sytkovo.su
+          user: ${linux:system:user:obasov}
\ No newline at end of file
diff --git a/openssh/server/team/members/obryndzii.yml b/openssh/server/team/members/obryndzii.yml
index 85763b3..9f7498c 100644
--- a/openssh/server/team/members/obryndzii.yml
+++ b/openssh/server/team/members/obryndzii.yml
@@ -5,12 +5,10 @@
         obryndzii:
           enabled: true
           name: obryndzii
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Oleksandr Bryndzii
           home: /home/obryndzii
           email: obryndzii@mirantis.com
-          groups:
-          - supportl2
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/oliemieshko.yml b/openssh/server/team/members/oliemieshko.yml
index fdf52c7..ec8d8d6 100644
--- a/openssh/server/team/members/oliemieshko.yml
+++ b/openssh/server/team/members/oliemieshko.yml
@@ -5,12 +5,10 @@
         oliemieshko:
           enabled: true
           name: oliemieshko
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Oleksandr Liemieshko
           home: /home/oliemieshko
           email: oliemieshko@mirantis.com
-          groups:
-          - supportl2
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/osmola.yml b/openssh/server/team/members/osmola.yml
index 653027b..2083ddf 100644
--- a/openssh/server/team/members/osmola.yml
+++ b/openssh/server/team/members/osmola.yml
@@ -5,7 +5,7 @@
         osmola:
           enabled: true
           name: osmola
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Ondrej Smola
           home: /home/osmola
           email: osmola@mirantis.com
diff --git a/openssh/server/team/members/pcizinsky.yml b/openssh/server/team/members/pcizinsky.yml
index d702687..e9870c3 100644
--- a/openssh/server/team/members/pcizinsky.yml
+++ b/openssh/server/team/members/pcizinsky.yml
@@ -5,7 +5,7 @@
         pcizinsky:
           enabled: true
           name: pcizinsky
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Pavel Cizinsky
           home: /home/pcizinsky
           email: pcizinsky@mirantis.com
diff --git a/openssh/server/team/members/pjediny.yml b/openssh/server/team/members/pjediny.yml
index 7a4b17d..968ec33 100644
--- a/openssh/server/team/members/pjediny.yml
+++ b/openssh/server/team/members/pjediny.yml
@@ -5,7 +5,7 @@
         pjediny:
           enabled: true
           name: pjediny
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Petr Jediny
           home: /home/pjediny
           email: pjediny@mirantis.com
diff --git a/openssh/server/team/members/pmathews.yml b/openssh/server/team/members/pmathews.yml
index 0e1761e..749fed7 100644
--- a/openssh/server/team/members/pmathews.yml
+++ b/openssh/server/team/members/pmathews.yml
@@ -3,9 +3,9 @@
     system:
       user:
         pmathews:
-          enabled: true
+          enabled: false
           name: pmathews
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Paul Mathews
           home: /home/pmathews
           email: pmathews@mirantis.com
@@ -14,7 +14,7 @@
       enabled: true
       user:
         pmathews:
-          enabled: true
+          enabled: false
           public_keys:
             - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAIAQCt98sNV0lNpOK3HBAdv44hGv+0INrqfZsaZgTdGsJi1aZp8QymbusSW/86XnuQLrJKqPe8xrJn3/PBCqSgEXnye2J5cculBHoW3ehTwlQk/SSlM4GqeSEhn+6r07Gt3Y41EbsbgJYDFUZe395DVfAp5I/HBEG0Hf4b9zamzDX4OGXiBNhIDMjmnBHTbVAiYJ/igrGtDKTt1qNfDX7b7ViLSNv3nw2F2vBBzXQashGW6e/qJWjrdxjR6WNldmq2/KjxFec2k4J1RhItxEFNaPPAULkUUwXZugyid1fDxUlrpMryG+edCXtIMKD3caGTJD1S4QX6wQlPL/dOn+U+qu2Aa2tG5fKF3ECrfgQapOND239XRANm4+lSFgR8ucD4VO7EcYNLwS9DBNNvvnZWcVtgWwR9ULx0Cr85uySVJr+Wzj5GmX6m0uzeTFyUITn3CpQf2ONSi4g06Vwguvm0NxiMwjnirrkwlw9tVgbZpGAo/rlIa6t1brKKKkZQhm4JpK/xFd0qUWva1pME/G1AkRYAGm8EQsR3N6nEHFW3eJci9/Y/vHigxfXhN9rCJranKogP4v24gv00fVPPrFzxnC9/pfSrbpbh+5RsiZ8ZdUc+rrAM0qSauH1TvD+x6Al2R03ABtnKbhQhw2wkCMPiUpb7MeIYcYw0NTLhF/KocKamRQx/dDr9zzvNkMsbFs9eUipHAQoDcDgYPvYaR3q1kGZpteUO1qMYCMNxmAkUte+ggsorZQ/avwa87nd6KBUSjRraxyZKxZMLbTIYKE5ElduySq3ltZLkwnjiHCmJ934rlOyZro/pREi24L1cYdy1oUsckEiDmR8p715Idh4crxSfcvT8h1MNPV9bvdKsjKO1CtWz4xaSXG1DZ7PmByHqMzJi8mNZI2f/ZbCXNFA1S5bT5NeUO3x5Aw3lD49fQIxFc8WSvD0bBuGk+1DaLjCMNQnBSFJaCB79HQXYqVkNoUH+V4HEnvinoqXOKI5jVy3vNkm8C9DSnJQHUotbyGw+yikXTLg3EFAxJC7eeC/aPblF21TZDmaYGh0y7UNrV/RAVSLO87DOdELCij/GUqW0ANsgJIE/GVDog1AGIM8S+7kwzWDHZSlb1VC8gEk1xL8FIPdUmxHi0Azk5aWUqzXqC+0Qwx4UKsLwjLgRhW35u+3wDzlphgO3+4DR26daUp8RynfUnoHoj7WIy+B3mfE4bTGHUIr0WFoV5kkcOYdYdbLDD7sWJk3XPBqaCr7WJPOCOof7iyVSsH5sZ1/l6UCwfkuSCLwSMw1MYRRkQ8qqRB02auG8uYZ5ismyqfSJHH6bIXnUxpw4PabM7KmpNKXO0ZQi80QhnwY4yshfBESWJDpcfjqlEUSbLY5nqoQ99N2LHahr43/FO8P6iuARuVxaDv0VOkWaOFL2Zmj5udk0U6osODK+Uj+DE3Y0AuTGlMLh634ycx6fp5kdnBjmlvVMSmJCoi47AaTJFXLvsfXvafIfglouVuFtAWmriU1BIPq+uoTwqgZAZkTySGvvFZLyTMES9NTexodkrOdhJM3yGfCkTCq1C90VywdmsyPIeajEhlDcLFZIkUzIxlaJplGF/1DHg6ZafFnQSBNBfr9GMem4FnW2EUNM7WUFZSXvA85DYs4B1oKTU1chqIk+cg6MxX3xA6NSL1RhqhW+x8Dt6EWT6g3WTQM8ychO2GUNRR8VFpt/mVbxkiH0h9MRFwu9uQTLZR/c/TT1DIh6eyIIneIbPkHDhRIHiURW5deELMtsMq21o3heCNk1Qa4wIjQ9e6Ikn4BxMRHeuW5VL2oaHxgT88tCKjGETqYDKE0e++ZaS93GMOMeesApM88rySIOqcidQE2Jh0DRHQ1A5FsoSw69zPgZYYiVLYW7MupimmiWcBGoB+SWQl3OLytDX8/MC4KHZf8oxUiWdORXWplEULy9P3mYV7K3hSU9Wb28EoDYnusdyu3I5peqIV8DAfOsCOOXvKbfd4hogV79y8ul4EnTrKZXEa96Nl8+BQ+xXa28MufAZOmODfKE48/ywzc1H2dXhZZWtXxNZez+qmkqVsIMGG32YlpwdTdH4FGxg9d64fHAtPGqY2stmHWyFUB6+ky2A7XvoqSR1k1cLKaEM5dZe9sWCsHalsA1yd+s+VL14OFB1tgaA2y6GMaPftYELnvvGvAaeBRVpdHNel3TKbQXCl0wGdJ2BzreG9kIzSntjl0/3hkrl32+l3xfdZGJetYtyO8fdzF70J1kBft2CbewwJdC6X1Nkr+nUspHCAkWtB8TcO08xnrpQKnXiXidfCtmcbZa51e7mzSmZTCAKlV2eM6B/G97COezG1+SenKh4YeD22jSuXa/ZW+9RswKzCwXXA9poncIRHMMwkQUq87GGG/WAOZ0CkvJwfw2eGtQ8L2eikEi6x7DyWczzJxAeJ3uFj4S0iZrR7XVnRb+x4DsEo/FPRH/+L103R6nTmtkZw6XAMXEjNuaPOBV9FaQ6neeBab8a+Gfe3+9Gzv2tspgcl1fK56UtCoL3NDAMMGpxK8KykPnkQcMeu6B8H8f6xxAtNQHW3y+vZrkWma/VBriCKv67Uaxj8yF2Kqn/VDZskcBGwvOYIfJPOQHKDYyBoS10WmP6vk5l9s3LhuBJfartbC5NIZb5mJ9a/nHhcdzKnJ+yJk2I6YcOECwBXz2rJ4Y+IfwDJaRl1god8DGLvEPvWko3WinHERC+e7VXyb1CQ==
           user: ${linux:system:user:pmathews}
diff --git a/openssh/server/team/members/pmichalec.yml b/openssh/server/team/members/pmichalec.yml
index c397cd4..b9b9c90 100644
--- a/openssh/server/team/members/pmichalec.yml
+++ b/openssh/server/team/members/pmichalec.yml
@@ -5,7 +5,7 @@
         pmichalec:
           enabled: true
           name: pmichalec
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Petr Michalec
           home: /home/pmichalec
           email: pmichalec@mirantis.com
diff --git a/openssh/server/team/members/pruzicka.yml b/openssh/server/team/members/pruzicka.yml
new file mode 100644
index 0000000..93aca1f
--- /dev/null
+++ b/openssh/server/team/members/pruzicka.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        pruzicka:
+          enabled: true
+          name: pruzicka
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Petr Ruzicka
+          home: /home/pruzicka
+          email: pruzicka@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        pruzicka:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDG5m9Wwd2XIaG6iFrsH4BanLDUPpgeAy8o573iB8uqEe1vEp6IMCID5hL7+JUjRX7TGJ9B3QskgAenE50w0yTCqu+oIVXOfzYCbcOAI/Pestv7RDGwciLCX3wdtSYU1dW5Zl8mtH4LMGpBtAG1nAKP1suqXWHUr92bzrYeMicuTADvOYFLxAOVcAEXwBrRUYsy+wTF4ROSZRzE8HLwYAzSngmFqKyW1tj/nLEGTZGWcIYkXDfWR/TW1neP6svaUV6nFLXnj3pRP7KNSK8iil8YuMyT+YGz2f3971967woAAqvSOtF3Rh2f4PLGcNwsMd1tjqMIVvIlI7Lo4UsIA9AZ pruzicka@mirantis.com
+          user: ${linux:system:user:pruzicka}
diff --git a/openssh/server/team/members/psvimbersky.yml b/openssh/server/team/members/psvimbersky.yml
new file mode 100644
index 0000000..2fc10b1
--- /dev/null
+++ b/openssh/server/team/members/psvimbersky.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        psvimbersky:
+          enabled: true
+          name: psvimbersky
+          sudo: true
+          full_name: Pavel Svimbersky
+          home: /home/psvimbersky
+          email: psvimbersky@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        psvimbersky:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCnsI2H2xgNFttWvGaIa7UdXtgAnlGMpin1/sBufx/bYkDMU2r0xGDjIBbUNWc4/OSKhpDyJiwxT5qiln07uFDBw0PtHUlJYHpJgS9xE6PERZPEiyQqrmbUVdqX9bIimweMH8kJIXjKgut+pc+GLUs5SyUlkjlHbKuYoYo52jAx+ldAslKK0P/aA1msjzGpoDRSvFChew7FHs9sH0GTgX865DoqCzqulNjHiGUrziBxwEAdUVjNDfxFHROm6kgdFU7ipgNQTHB7NvEI/VfZFlcuZ9IWZQhLQiw1jSxs4zAxOYJWrELPUqhPYE5yB5Y9j8iP4b0xIKhwoWkxQxdYuaLB
+          user: ${linux:system:user:psvimbersky}
diff --git a/openssh/server/team/members/renesoto.yml b/openssh/server/team/members/renesoto.yml
index ad76260..a9988ed 100644
--- a/openssh/server/team/members/renesoto.yml
+++ b/openssh/server/team/members/renesoto.yml
@@ -5,12 +5,10 @@
         rsoto:
           enabled: true
           name: rsoto
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Rene Soto
           home: /home/rsoto
           email: rsoto@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/rfelkl.yml b/openssh/server/team/members/rfelkl.yml
index 1b7fbf4..a2151f9 100644
--- a/openssh/server/team/members/rfelkl.yml
+++ b/openssh/server/team/members/rfelkl.yml
@@ -5,7 +5,7 @@
         rfelkl:
           enabled: true
           name: rfelkl
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Richard Felkl
           home: /home/rfelkl
           email: rfelkl@mirantis.com
diff --git a/openssh/server/team/members/rsafonov.yml b/openssh/server/team/members/rsafonov.yml
index 7e6f206..9965a1b 100644
--- a/openssh/server/team/members/rsafonov.yml
+++ b/openssh/server/team/members/rsafonov.yml
@@ -5,12 +5,10 @@
         rsafonov:
           enabled: true
           name: rsafonov
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Roman Safonov
           home: /home/rsafonov
           email: rsafonov@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
@@ -21,5 +19,5 @@
           user: ${linux:system:user:rsafonov}
   public_keys:
     rsafonov:
-      - key: ssh-rsa ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCaVDVMjNUXR+SP4xjH4vX9zfqzYHosQRO4MlVxE8uJPIIQdF1+iPWtggLrsRDZTSQ0JNzCYGXPv8fK6iKBQ/cX5KgMnVPQmFn4Q+Ip/oWotkbVZtR1F0ZVw01KNBYE0LMXrV9dxhX6qUFCO0IV9inbOZ+6zhYOLPddG2WVc8htz8XH7xdWqGbU1GBwyEoRFjITZ9GAYMRNrSjlzPsoBVkQwGKNtvh8uCFZasfAMr2mV1XVFcJlK52T6bNqIXOYPmRc9mSoQoD0UHRRYwlWAZHzW+2e8SABT+NRT1Cc/BoioRC2SBKj9tsZgy9nhq5O0EfuvWVL3ZCM6+RviNxkEL7Z
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCaVDVMjNUXR+SP4xjH4vX9zfqzYHosQRO4MlVxE8uJPIIQdF1+iPWtggLrsRDZTSQ0JNzCYGXPv8fK6iKBQ/cX5KgMnVPQmFn4Q+Ip/oWotkbVZtR1F0ZVw01KNBYE0LMXrV9dxhX6qUFCO0IV9inbOZ+6zhYOLPddG2WVc8htz8XH7xdWqGbU1GBwyEoRFjITZ9GAYMRNrSjlzPsoBVkQwGKNtvh8uCFZasfAMr2mV1XVFcJlK52T6bNqIXOYPmRc9mSoQoD0UHRRYwlWAZHzW+2e8SABT+NRT1Cc/BoioRC2SBKj9tsZgy9nhq5O0EfuvWVL3ZCM6+RviNxkEL7Z roman@roman
 
diff --git a/openssh/server/team/members/rsatek.yml b/openssh/server/team/members/rsatek.yml
new file mode 100644
index 0000000..227d20d
--- /dev/null
+++ b/openssh/server/team/members/rsatek.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        rsatek:
+          enabled: true
+          name: rsatek
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Rudolf Satek
+          home: /home/rsatek
+          email: rsatek@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        rsatek:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC63DK9CdBB2WNHcbgzReBlcVY7YDvVKBJI4P5O8N3lg/T+01ROL99/6k8drFYFJjdeXJaMkCg7UM17yIyouDijBHB9G9AM7jkefBZrGDF7QaWJeGvpxB9W3BQnhotCeuP363CNBup+oUfPwXVnkE5iGuLJAGS8SENpVZpZsF0gXAUuVtvl5D8h1wIqQtFveJSV6qJkjVIudZYJfOMDBfiyS5nEwKmboP5jFtrm3e64HpxDhm2J5irNtzw3hOO8cq2ssnZ0ZAHFf2FfnPAzZ2L0Z1MpZcEPdzBonsdO8/cfxdbov9hW4iLmpJF80KxgPyHU0R304uyfnsfkC164l0Rx rsatek@Rudolfs-MacBook-Pro.local
+          user: ${linux:system:user:rsatek}
diff --git a/openssh/server/team/members/scottmachtmes.yml b/openssh/server/team/members/scottmachtmes.yml
index 6feb7a2..fc466fa 100644
--- a/openssh/server/team/members/scottmachtmes.yml
+++ b/openssh/server/team/members/scottmachtmes.yml
@@ -3,20 +3,18 @@
     system:
       user:
         smachtmes:
-          enabled: true
+          enabled: false
           name: smachtmes
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Scott Machtmes
           home: /home/smachtmes
           email: smachtmes@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
       user:
         smachtmes:
-          enabled: true
+          enabled: false
           public_keys: ${public_keys:smachtmes}
           user: ${linux:system:user:smachtmes}
   public_keys:
diff --git a/openssh/server/team/members/sflorczak.yml b/openssh/server/team/members/sflorczak.yml
index d340089..152fe39 100644
--- a/openssh/server/team/members/sflorczak.yml
+++ b/openssh/server/team/members/sflorczak.yml
@@ -5,7 +5,7 @@
         sflorczak:
           enabled: true
           name: sflorczak
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Szymon Florczak
           home: /home/sflorczak
           email: sflorczak@mirantis.com
diff --git a/openssh/server/team/members/sgalkin.yml b/openssh/server/team/members/sgalkin.yml
new file mode 100644
index 0000000..1388ebc
--- /dev/null
+++ b/openssh/server/team/members/sgalkin.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        sgalkin:
+          enabled: true
+          name: sgalkin
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Sergey Galkin
+          home: /home/sgalkin
+          email: sgalkin@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        sgalkin:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyaEWaI1tkQiWHIB/pHZ6jrZyN7fQDxYodhT54rtbFcwnxGM0L1PuL1WcHGB9GJgWwOe7FE+9/kGxAuabjiFjg/NagdtAOfBp2b9+9sYCc8luJxIicTXHI5fY/tVW28OL8s51cw3Gr2m0atRDxKpb8Zv78qfYSSaENB9vq02IYu4Cr1CLEB6Zawm9iRq9ahMwWfslwIii4wKFuWcgjT6spMiHNkUwIYwxdFlCUh3gEhJYfwhe3LpoAvHmBESW0hdEj0S9YgTByBRgKkKrh98irf6B4DVOLWQLudLjAl59lb9Gz2s6fKUBYbz++I6bejHQ6I83VzT0DDKnbiQRXLh4/Q== gals@gals
+          user: ${linux:system:user:sgalkin}
\ No newline at end of file
diff --git a/openssh/server/team/members/skreys.yml b/openssh/server/team/members/skreys.yml
index df76889..19a0f70 100644
--- a/openssh/server/team/members/skreys.yml
+++ b/openssh/server/team/members/skreys.yml
@@ -5,7 +5,7 @@
         skreys:
           enabled: true
           name: skreys
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Sergey Kreys
           home: /home/skreys
           email: skreys@mirantis.com
diff --git a/openssh/server/team/members/smatov.yml b/openssh/server/team/members/smatov.yml
index 8c21e28..073b02f 100644
--- a/openssh/server/team/members/smatov.yml
+++ b/openssh/server/team/members/smatov.yml
@@ -5,7 +5,7 @@
         smatov:
           enabled: true
           name: smatov
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Sergey Matov
           home: /home/smatov
           email: smatov@mirantis.com
diff --git a/openssh/server/team/members/sovsianikov.yml b/openssh/server/team/members/sovsianikov.yml
index 646bde9..d5a2fed 100644
--- a/openssh/server/team/members/sovsianikov.yml
+++ b/openssh/server/team/members/sovsianikov.yml
@@ -5,12 +5,10 @@
         sovsianikov:
           enabled: true
           name: sovsianikov
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Serhii Ovsianikov
           home: /home/sovsianikov
           email: sovsianikov@mirantis.com
-          groups:
-          - supportl2
   openssh:
     server:
       enabled: true
diff --git a/openssh/server/team/members/tkukral.yml b/openssh/server/team/members/tkukral.yml
index e53ce2d..60b34f5 100644
--- a/openssh/server/team/members/tkukral.yml
+++ b/openssh/server/team/members/tkukral.yml
@@ -5,7 +5,7 @@
         tkukral:
           enabled: true
           name: tkukral
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Tomas Kukral
           home: /home/tkukral
           email: tkukral@mirantis.com
diff --git a/openssh/server/team/members/vmikes.yml b/openssh/server/team/members/vmikes.yml
index 07d62f3..eb506ac 100644
--- a/openssh/server/team/members/vmikes.yml
+++ b/openssh/server/team/members/vmikes.yml
@@ -5,7 +5,7 @@
         vmikes:
           enabled: true
           name: vmikes
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Vlasta Mikes
           home: /home/vmikes
           email: vmikes@mirantis.com
diff --git a/openssh/server/team/members/vnogin.yml b/openssh/server/team/members/vnogin.yml
index e8c1df9..26f9106 100644
--- a/openssh/server/team/members/vnogin.yml
+++ b/openssh/server/team/members/vnogin.yml
@@ -5,7 +5,7 @@
         vnogin:
           enabled: true
           name: vnogin
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Vitaliy Nogin
           home: /home/vnogin
           email: vnogin@mirantis.com
diff --git a/openssh/server/team/members/vsaienko.yml b/openssh/server/team/members/vsaienko.yml
index bd532f6..d47a4a6 100644
--- a/openssh/server/team/members/vsaienko.yml
+++ b/openssh/server/team/members/vsaienko.yml
@@ -5,7 +5,7 @@
         vsaienko:
           enabled: true
           name: vsaienko
-          sudo: true
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Vasyl Saienko
           home: /home/vsaienko
           email: vsaienko@mirantis.com
diff --git a/openssh/server/team/members/zahedkhurasani.yml b/openssh/server/team/members/zahedkhurasani.yml
index 8504005..3b6f9c8 100644
--- a/openssh/server/team/members/zahedkhurasani.yml
+++ b/openssh/server/team/members/zahedkhurasani.yml
@@ -3,20 +3,18 @@
     system:
       user:
         zkhurasani:
-          enabled: true
+          enabled: false
           name: zkhurasani
-          sudo: false
+          sudo: ${_param:linux_system_user_sudo}
           full_name: Zahed Khurasani
           home: /home/zkhurasani
           email: zkhurasani@mirantis.com
-          groups:
-          - support
   openssh:
     server:
       enabled: true
       user:
         zkhurasani:
-          enabled: true
+          enabled: false
           public_keys: ${public_keys:zkhurasani}
           user: ${linux:system:user:zkhurasani}
   public_keys:
diff --git a/openssh/server/team/mmo_devops.yml b/openssh/server/team/mmo_devops.yml
index 60fe258..986c5e3 100644
--- a/openssh/server/team/mmo_devops.yml
+++ b/openssh/server/team/mmo_devops.yml
@@ -1,11 +1,10 @@
+## DEPRECATED, this class will be removed 01/2018
 classes:
 # DevOps/SRE Team
 - system.openssh.server.team.members.cade
-- system.openssh.server.team.members.dszeluga
 - system.openssh.server.team.members.jmosher
 - system.openssh.server.team.members.ecantwell
 - system.openssh.server.team.members.lmercl
-- system.openssh.server.team.members.mrelewicz
 - system.openssh.server.team.members.mwilson
 - system.openssh.server.team.members.osmola
 - system.openssh.server.team.members.pcizinsky
@@ -13,3 +12,6 @@
 - system.openssh.server.team.members.pmichalec
 # Missing- team members still in flux
 # - system.openssh.server.team.members.bpiotrowski
+parameters:
+  _param:
+    linux_system_user_sudo: true
diff --git a/openssh/server/team/networking.yml b/openssh/server/team/networking.yml
index df85109..d912490 100644
--- a/openssh/server/team/networking.yml
+++ b/openssh/server/team/networking.yml
@@ -1,4 +1,11 @@
+classes:
+- system.openssh.server.team.members.mceloud
+- system.openssh.server.team.members.pjediny
+- system.openssh.server.team.members.skreys
+- system.openssh.server.team.members.smatov
 parameters:
+  _param:
+    linux_system_user_sudo: true
   linux:
     system:
       user:
diff --git a/openssh/server/team/oscore_devops.yml b/openssh/server/team/oscore_devops.yml
index 2ba780a..149d765 100644
--- a/openssh/server/team/oscore_devops.yml
+++ b/openssh/server/team/oscore_devops.yml
@@ -3,3 +3,7 @@
 - system.openssh.server.team.members.vsaienko
 - system.openssh.server.team.members.vnogin
 - system.openssh.server.team.members.ashestakov
+- system.openssh.server.team.members.mkarpin
+parameters:
+  _param:
+    linux_system_user_sudo: true
diff --git a/openssh/server/team/oss_team.yml b/openssh/server/team/oss_team.yml
index db4dbbd..d5ba940 100644
--- a/openssh/server/team/oss_team.yml
+++ b/openssh/server/team/oss_team.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    linux_system_user_sudo: true
   linux:
     system:
       user:
diff --git a/openssh/server/team/presales.yml b/openssh/server/team/presales.yml
index 7efc9da..e2939be 100644
--- a/openssh/server/team/presales.yml
+++ b/openssh/server/team/presales.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    linux_system_user_sudo: true
   linux:
     system:
       user:
diff --git a/openssh/server/team/qa_scale.yml b/openssh/server/team/qa_scale.yml
index 51fb260..98c5540 100644
--- a/openssh/server/team/qa_scale.yml
+++ b/openssh/server/team/qa_scale.yml
@@ -1,23 +1,8 @@
+classes:
+- system.openssh.server.team.members.listomin
+- system.openssh.server.team.members.sgalkin
+- system.openssh.server.team.members.obasov
+
 parameters:
-  linux:
-    system:
-      user:
-        dburnazyan:
-          enabled: true
-          name: dburnazyan
-          sudo: true
-          full_name: David Burnazyan
-          home: /home/dburnazyan
-          email: dburnazyan@mirantis.com
-  openssh:
-    server:
-      enabled: true
-      user:
-        dburnazyan:
-          enabled: true
-          public_keys:
-          - ${public_keys:dburnazyan}
-          user: ${linux:system:user:dburnazyan}
-  public_keys:
-    dburnazyan:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4xJvnHle7Omjhnv8AsqfXlp1Sg4Ixq/p0Dpcj5SlGN5YTnIs+eRXwy7WHICCgWC1OA+o4omzWQI486u0C4qMkdv+nvuAsvJQVRGNiGVp4gi48x3KqMxlEzeCScMH5oj+W5LJLcb2czHulBPXRluKlITOlF4i5+z3GbFwb8Dg5hBnnbxhhRyh6XyUOh8WQvBqXAk2EqY8vqYAZxV9DXI8OSIYsvpM9jQo/26YrSoTWZ4caCNmL6zVVH7eXaqEzVwDHxpXHLvzSP4bIl85dKygJI1DyN9mZ1B77z1lNZnk7Fu8yQP05Guln5Hzg+VqycAZxOk6ysjRXiYNu56DVZuc3 dburnazyan@dburnazyan-pc.msk.mirantis.net
\ No newline at end of file
+  _param:
+    linux_system_user_sudo: true
diff --git a/openssh/server/team/security.yml b/openssh/server/team/security.yml
new file mode 100644
index 0000000..e165ce1
--- /dev/null
+++ b/openssh/server/team/security.yml
@@ -0,0 +1,7 @@
+classes:
+- system.linux.system.sudo
+- system.openssh.server.team.members.ahecko
+- system.openssh.server.team.members.pmichalec
+parameters:
+  _param:
+    linux_system_user_sudo: true
diff --git a/openssh/server/team/services.yml b/openssh/server/team/services.yml
new file mode 100644
index 0000000..8f15552
--- /dev/null
+++ b/openssh/server/team/services.yml
@@ -0,0 +1,13 @@
+classes:
+- system.linux.system.sudo
+- system.openssh.server.team.members.mniedbala
+- system.openssh.server.team.members.pmichalec
+- system.openssh.server.team.members.pcizinsky
+- system.openssh.server.team.members.lmercl
+- system.openssh.server.team.members.pruzicka
+- system.openssh.server.team.members.korlowska
+- system.openssh.server.team.members.miwinski
+- system.openssh.server.team.members.mlos
+parameters:
+  _param:
+    linux_system_user_sudo: true
diff --git a/openssh/server/team/services_qa.yml b/openssh/server/team/services_qa.yml
index ca75b5a..3e64bd3 100644
--- a/openssh/server/team/services_qa.yml
+++ b/openssh/server/team/services_qa.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    linux_system_user_sudo: true
   linux:
     system:
       user:
diff --git a/openssh/server/team/stacklight.yml b/openssh/server/team/stacklight.yml
index 84a8255..403e7e1 100644
--- a/openssh/server/team/stacklight.yml
+++ b/openssh/server/team/stacklight.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    linux_system_user_sudo: true
   linux:
     system:
       user:
@@ -16,13 +18,6 @@
           full_name: Simon Pasquier
           home: /home/spasquier
           email: spasquier@mirantis.com
-        ppetit:
-          enabled: true
-          name: ppetit
-          sudo: true
-          full_name: Patrick Petit 
-          home: /home/ppetit
-          email: ppetit@mirantis.com
         obourdon:
           enabled: true
           name: obourdon
@@ -79,6 +74,13 @@
           full_name: Krzysztof Szukiełojć
           home: /home/kszukielojc
           email: kszukielojc@mirantis.com
+        bkupidura:
+          enabled: true
+          name: bkupidura
+          sudo: true
+          full_name: Bartosz Kupidura
+          home: /home/bkupidura
+          email: bkupidura@mirantis.com
         isviridov:
           enabled: true
           name: isviridov
@@ -93,6 +95,13 @@
           full_name: Nikita Zaporozhets
           home: /home/nzaporozhets
           email: nzaporozhets@mirantis.com
+        sbanka:
+          enabled: true
+          name: sbanka
+          sudo: true
+          full_name: Szymon Banka
+          home: /home/sbanka
+          email: sbanka@mirantis.com
   openssh:
     client:
       enabled: true
@@ -109,68 +118,71 @@
           public_keys:
           - ${public_keys:spasquier}
           user: ${linux:system:user:spasquier}
-        ppetit:
-          enabled: true
-          public_keys:
-          - ${public_keys:ppetit}
-          user: ${linux:system:user:ppetit}
         obourdon:
-          enable: true
+          enabled: true
           public_keys:
           - ${public_keys:obourdon}
           user: ${linux:system:user:obourdon}
         dkalashnik:
-          enable: true
+          enabled: true
           public_keys:
           - ${public_keys:dkalashnik}
           user: ${linux:system:user:dkalashnik}
         rpromyshlennikov:
-          enable: true
+          enabled: true
           public_keys:
           - ${public_keys:rpromyshlennikov}
           user: ${linux:system:user:rpromyshlennikov}
         vgusev:
-          enable: true
+          enabled: true
           public_keys:
           - ${public_keys:vgusev}
           user: ${linux:system:user:vgusev}
         mpolreich:
-          enable: true
+          enabled: true
           public_keys:
           - ${public_keys:mpolreich}
           user: ${linux:system:user:mpolreich}
         isvetlov:
-          enable: true
+          enabled: true
           public_keys:
           - ${public_keys:isvetlov}
           user: ${linux:system:user:isvetlov}
         akholkin:
-          enable: true
+          enabled: true
           public_keys:
           - ${public_keys:akholkin}
           user: ${linux:system:user:akholkin}
         kszukielojc:
-          enable: true
+          enabled: true
           public_keys:
           - ${public_keys:kszukielojc}
           user: ${linux:system:user:kszukielojc}
-        isviridov:
+        bkupidura:
           enable: true
           public_keys:
+          - ${public_keys:bkupidura}
+          user: ${linux:system:user:bkupidura}
+        isviridov:
+          enabled: true
+          public_keys:
           - ${public_keys:isviridov}
           user: ${linux:system:user:isviridov}
         nzaporozhets:
-          enable: true
+          enabled: true
           public_keys:
           - ${public_keys:nzaporozhets}
           user: ${linux:system:user:nzaporozhets}
+        sbanka:
+          enabled: true
+          public_keys:
+          - ${public_keys:sbanka}
+          user: ${linux:system:user:sbanka}
   public_keys:
     newt:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3odU+3V2uDA2ptAFL9hrJRPNEEdAyztWOZFQ5Oyd9oerTGOU3p4xmrgWWjfKFKbYGhiiIUcYAol5PkTfKukGEkkjCHYA1t023soCaaAj85wCZCnw2zQNAziwxTYmAzTqgxiSvtZNMMrtJvFHRIRDzJ3M1lV0prWNWkMM1/3FAd4W49y6VT3fkMCo8uqG7CfGdgR2DgBCxf9KaNPfW5eDEPOgmE5lK8tVSEI6T+Cg7hbcTf4lFYnlFBnlQgp/0JstsM4Vbwb4B34LOpOsf2S8rrWk2xQMjwaMHXkc2s/E8iW3F5nVFuyEXYISFQIiAHw8dzC6CHgLcyHUVWwznKawZ newt@newt-dev1
     spasquier:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCXBHKQaGUNB92DsnyvflmCbmuXnkiuNahZiue3hnyXqLA2q8jmQmzBbxReAJzexnVfJhrUCTw8IPJUpMUP27u3igvGdkhfctdUuxVf9yGJErtGNgHK/aGbeLCvUOmhw6X/xbf3IbyFL1gwxOJ2cmmjlSptYU9E1W2xFY+IMFWBhzO3vso5EABgPVli/UUMfeXUUd++lIZpoyYe2Hkri1QGNhzfbZcFjEO78+vNiLZrvjJEtkXWu7iZTYK6eE365CiFJzqFL7N6Ichb28qakcmVqR/foreuz3cOMqMGssKoOQk1213x8w4fE0yLwf9Ft8L7GMf+vXQvuNt0ZKBPWqn7 spasquier@mirantis.com
-    ppetit:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCUGCb+mGidT4FRa4rJxoYx39NX2vCjRw+CmCQJW/Uf6xc0NNp5WRWJ0hnyIMRVVfehvfjdXPo4bO4cXIwmo06C1Wx+DMyvjI9NvuHtt52p3QTsh+PYZe5t4hFuGh7veWQw3LuLtDLVlVS633FQMgT/BXDaBc65yfN9CuV6lHqZ6KPKoGAi3ADlcQFqhFttO+GsVkxd6uGtelnbYXsDMwylCIKop0C/obu6wG85d/8Q2/Zts5CvUcCiCNfZtl8otgNMrpfnuhC0xAsmgwDxqK2kshxUujclyFfO7ixl+E9Plc7kUJvodNbzOcAmY3YpuHVoJQkHx/Ou81/q+JOVtFxz ppetit@baobab 
     obourdon:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDOd0PnoQhjjo/UrmCotaGZxXfpxLoMmuZ+XjKqAkEb9kE+aE0+k8t2EUs8PIctEgIcIC9vmovqOzIt5uNLV5MyN4R+pdIBKyWEQ5fQPaFhn/uZKf7AxLYhTVVW1wM+cDzrpWTyNQ0w59JBfNPZ/BDMtdpch9gTP24pwJ8yUDHHMSt1FnVqa7+Czw8jig4/oM05Mob5DQKlWOdtdUP3XYHSGJuHY4tHmc5sPvzIqs5r47uj5VD4gaCUqYeRS2C1YJcisN880qIqUHuCK0k9gQP+0DKJPVPmPPCuwebBzUUfjhKcbqiikKxPS0p4DWiprmeF8xjvmVWX+V8lP/v0hXiVgMc3wMoXJklH+XM7U5y5uzN8MF4YqAi4M/uSK5UF+TPn5dtu9s+joQmqt5XXaV4iFQe5kcdIYEMNJUGxiwMzByhvqWgC1reYSD8FquqLTH/5ITvFFmaTyQbBJMnXAE+QxdTXMfhTnfI/pbbhAUmfr5w8Z34lZG5UDnUy/rR+LlvJS76MqCr3nemZTHqhUYIrIJA8f9Xa8o9UJTy2QICdj2NidW1UzHCPybc/nH7qc6TjZJALLdhzK2QDbO6seJLOXuVHwSxjOx2Jdv5HImpFSeEfiGRQqc8bT+NGZI5V+cW+FuztU8i46VaSPXFM8t+57Ut/MdndAVYSPqgc7E3u3w== obourdon@mirantis.com
     dkalashnik:
@@ -187,7 +199,11 @@
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDjpy9RI6iEDH/04eOOwreDa+R32USZiWxyFiKHa8zoDAlOfwaZVg6mZWepOxzwxCJPYusPGXCwQ6Zw9tHxVWOCgtzzPpsCCfhUU4v+99Wh08//W8d/s/WFka+5vqyskAO5Z8Ekk+kQU+jpUBG8/gMxAPBjj0fFc5BNeqDY9r9nmMNK6N2RVjvA6wZ8G5hLGxL9bn5Prhf/+avui1NAfy6gsT/mRt1W+eHWTvpijyNGm+m83jU34dQO6gE48n6WdSylLh/fY/p31rzAURaq1V/AZhdbSuZ8aJYDnfHevpK5+hMjoOop3v3hb7WHEmybGujQfW5HVaaWmG7SFlHeKGE/gZ2P9T+bQ+SgO+PmEAw4LayiBkzTPAHdZ2UGZe+3BI5gdM/ayovK2WVO1jS5FNlNGIvEQW+ws9V+ph+S1jL4jobDJEjs358iXrAYpf4JL+LvxFHiuj6EL51tbo8EU22z5mmgRQQ5eFrDzBuVLhcim651A3a5iSlmCeAQ5rTmHX/Op/PbK+3vAtI8vnlK4AhycLvWQ3kK2DRx+Uhzrlk5v6E14SopAhvpGOHqrLgmoHwHp1xt/9M1JgxkOUK5gccFKTQduxLHoTNBaNcP60IOG/MjqUPcOXSBcAN4Y1RDBg+pwXe4PFgOzwKdFoYeuhvtm8y185S0IvvfCHLCD8pNfQ== akholkin@mirantis.com
     kszukielojc:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCiUm3Z3W3t4v7oe143rCNM/hbg9NU2bYUmQXek8DJPA4c3Xm6u0q+RL9kEXME+3zcj2HKqMxKsCBLXXdFIsgdUbOBV8AYiuySE220FTnEKRmdxsEnfSaBhXxFyIBNoew4gI7URSqAOclt5WuPJTqRM7K4VhbtzwEgeWVd/NUhxMCCtgkdJCYTSmycxmxs7R6V8vMr9Mb8DOqKkSpOu6f3JkR0lwnFN9zGGC4V/60FlJSDzvvI5Tn40ANPHITivs8xME0znsx7t0bF4vQUimvhYn1mumQCY1NwIaxJ/QqasD6Ag9Sn5dxSg9b3SeLn0JM6qKoIqZtfPYVuCp9gmlH0fyzJUdqu4lKKb2wBw/H5lK6icH4+owMawkav55rbvinHQOqmVCr/Bg/rTfc35ycVqjTXH/5J7OhzioKjU0yFkXFS2X/s8gpyxp3beJ+Ea4faoX+kcs0gyhMYzqC7/DOamrau7aVyEAjKYJNy60xRfjCQzjqiurbxVFh+3Fi64UUn7Bl1QV8VEiU3ztJ118psEI7zA+x2VROLZ1jrtaBYZTYB118JZicaFDycEVgg3+BHX3pFH/QSOjLsA4SK+HJjSz8CFKvWwaO6QJv1/3KHpcGEacMvmqKxwpQK0E4WpjWhglZRMPObQ0dBaGClOujgoOIHXtFGILEpWy2SdzDQkHw== kszukielojc@w541
+    bkupidura:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAfsAyuh1O+SfVRgddjQ8nByz2nNzXm71sP9FAPi5G5WoJA7El3fdrOWsG5bj5kQveVZj/M4qlETajcxMLwaFQd36nS4C0WjmzfoX2i6X+iWHFH/L/ha0UaDclfYkuGdxtCeYRakJ0Xqsm0vNuMpGhIGQP8j+OSLK0Q9pnrd1md+jrxx6JS1MXM5iUh+zU4roklrGy75WQvDJcCD3miVnktJsjb2hda8cIxkRf+l88xPm5TcC82cVAWpXF91+kUVdcHiB1D13t0IDEL6BdeUHffQij1++9x6JUukIEVDoP8Ot6DC16cbma4H9ssjdc9vnTGJjsZiu7Am+BNLKD4zsMnuSqWWfPYzQuoG5HZlyonzQIYncxo98LsHLRtrEE/CWnnO+jrd8Zfe9nAatelBgVv86UHoKEPyL666nd4UxaTiyKaXfNlvHWhfgbV67ZGRTrmllfdTmu1olOIniO706L3t3V+Zu6RjN5VjYdLegKKMo2E6XwhkMCcIg9Syi95pj8x8jFoKwjvOhb1EleuZyNHNbEvosIjAy1HsUgEo5bIwiV8K0aWIQE8VVyqyhdXOpR/Gk9UtFYsACyfCX84DjQBXp7OXIkyYt9s5N15Panml2X1CXnNgsh9M60+RvJBsFj3k8M57zcc7VAarAUKnYrI59l3cCZZVLtd4aIp8= zynzel@banshee
     isviridov:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGNZxzOm7OsZi/q6Qk71fnvjCfWk4BfxpZ5hDig6N1f9D0iAMaINyNmlF2PxstSLW0Mjdq2tXTUvVWlYpGrw+YLHQmVk8dckmLdUAxe2Z0oEvtWhiQC64927ibBTgQ2Tjfkao+PFYPbdjiO4FgRymS1/FpGKhvpdyPDCcOLrxsMSK9YpPi4kbkd4GmlGMercuaEzP3JOOzJioOOLtEw3LOLWG5mAIzXjGFxuCNdTI4gqxQm/iw/tOpb9PcsY10EapZsS4Pd8j58vuhJlwdoTxI3gzySJcTlWm0tcphex0g8X0tEUI+zVjemJcrYkZgUpb6x5/mUjNxC4nv+4A4yMTP
     nzaporozhets:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC/UtqwBD6qkEoWSrmO0jXa9sUcwumySxmkX2XCTlAj+e8tzCNndNhaUueu01pbcNrGrB7xvCHyTa5cxgJEv0RAJRxZnObTjluegiuW+/KNSGwiSDy90bwPVb6zWalrDg12xGh8C0ybmv90uC+GrGO1UXFpm5N1qL3ZsUvSjWBRZ70xXjUI4self+fWxBYJhu7hGZ0RVCeA8TjRutzdOWcSZwN2Arn2Oq+fx9n5HP8iXlPcfM6aWj+QvkXphvKjUhDYiImQ07kJctYvxEwMei5pM1dAPZefQ6FRsUP1gKYKPVp1CiBHPIKLG3LMwxp0/LWQmHB4umZvA6HYplSUXZLMd+FhCRuocVFdxe308JWeIFWyw7og/qEBlpxqW4BUk0bR3c4deI9QDKWCuuunTDB4oEB8ZnkI7utknpx7sqO72Ev2UNS/CSi3yyqgOajojQ3l+McWn9bm08KSLzuuMaexETRYQ9dgjE79N7fH+DEt5Ryii+GA2a8Gl3iRtTZs9WA94mTb/KjZBrVxh+PixpQ6s3oGFelFCPMKSPWIEb+rwuAUi0Ulrqb2UZDzJYhT50QfbCzRN2MU+8bR7PJt/xpAADvQX0iMMrMUvAVngs2YrXKapJliyHhTZxOmVdDRIyCQ1YpK2ktBJf+E+RXl3R5XUmbJkT4jZ1R6cA1QJOEKVQ== nzaporozhets@mirantis.com
+    sbanka:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMdgjQ/jeWwQTaPyy7G5JJAkM+QPNPFkzMldPHJzOxEBzt/M5zAooj0XgbRIDIztolhXhmj8N5QSG5n3Wn9T9e2KpoxrLaVhMV5WGTgMrXMmyT8oXLV3gLxGNHMWFvplSbHLK78EsZQQ1/kBQMyPXB1+FpIuSHVOxaospOQObJ08lvQfvlO7AUUV4ecpFj3PpV5vkKPRS+KfiRm84BeGIu51BL1BClZcOyHZPBQT+DUBjm8y4Nd7pVZRjsiBzZBvUotCbn5+RqWJnu4kyoGoRNmk8pvCx7jGL1G9rE8NNsKlCUWedvyNkDeoWKvleJuzkj3ggfuCj/iTtDoXFR95e3
diff --git a/openssh/server/team/support.yml b/openssh/server/team/support.yml
new file mode 100644
index 0000000..1c59bb8
--- /dev/null
+++ b/openssh/server/team/support.yml
@@ -0,0 +1,165 @@
+## DEPRECATED, this class will be removed 01/2018
+## please integrate submodule opscare instead
+## https://gerrit.mirantis.com/#/admin/projects/mmo-support/reclass-opscare
+classes:
+- system.linux.system.sudo
+# L1
+- system.openssh.server.team.members.aleksandrdobdin
+- system.openssh.server.team.members.aleksandrrubtsov
+- system.openssh.server.team.members.anatoliineliubin
+- system.openssh.server.team.members.antonrodionov
+- system.openssh.server.team.members.collinmay
+- system.openssh.server.team.members.danilakhmetov
+- system.openssh.server.team.members.deniskostriukov
+- system.openssh.server.team.members.dmitrygoloshubov
+- system.openssh.server.team.members.javierdiaz
+- system.openssh.server.team.members.jorgesorondo
+- system.openssh.server.team.members.josuepalmerin
+- system.openssh.server.team.members.krzysztoffranckowski
+- system.openssh.server.team.members.matthewroark
+- system.openssh.server.team.members.maximefimov
+- system.openssh.server.team.members.mikhailkraynov
+- system.openssh.server.team.members.renesoto
+- system.openssh.server.team.members.rsafonov
+- system.openssh.server.team.members.scottmachtmes
+- system.openssh.server.team.members.zahedkhurasani
+# L2OPS
+- system.openssh.server.team.members.aepifanov
+- system.openssh.server.team.members.apetrenko
+- system.openssh.server.team.members.atarasov
+- system.openssh.server.team.members.dklepikov
+- system.openssh.server.team.members.dsutyagin
+- system.openssh.server.team.members.ekozhemyakin
+- system.openssh.server.team.members.enikanorov
+- system.openssh.server.team.members.fsoppelsa
+- system.openssh.server.team.members.manashkin
+- system.openssh.server.team.members.nkondra
+- system.openssh.server.team.members.nkabanova
+- system.openssh.server.team.members.obryndzii
+- system.openssh.server.team.members.oliemieshko
+- system.openssh.server.team.members.sovsianikov
+- system.openssh.server.team.members.cade
+- system.openssh.server.team.members.jmosher
+- system.openssh.server.team.members.ecantwell
+- system.openssh.server.team.members.lmercl
+- system.openssh.server.team.members.osmola
+- system.openssh.server.team.members.pcizinsky
+- system.openssh.server.team.members.pmathews
+- system.openssh.server.team.members.pmichalec
+parameters:
+  _param:
+    linux_system_user_sudo: true
+  linux:
+    system:
+      group:
+        supportl1:
+          enabled: false
+          name: supportl1
+        supportl2:
+          enabled: false
+          name: supportl2
+        support0:
+          enabled: false
+          name: support0
+        support1:
+          enabled: false
+          name: support1
+        support2:
+          enabled: false
+          name: support2
+        support3:
+          enabled: true
+          name: support3
+          addusers:
+            # L1
+            - ${linux:system:user:adobdin:name}
+            - ${linux:system:user:arubtsov:name}
+            - ${linux:system:user:aneliubin:name}
+            - ${linux:system:user:arodionov:name}
+            - ${linux:system:user:cmay:name}
+            - ${linux:system:user:dakhmetov:name}
+            - ${linux:system:user:dkostriukov:name}
+            - ${linux:system:user:dgoloshubov:name}
+            - ${linux:system:user:jdiaz:name}
+            - ${linux:system:user:jpalmerin:name}
+            - ${linux:system:user:kfranckowski:name}
+            - ${linux:system:user:mroark:name}
+            - ${linux:system:user:mefimov:name}
+            - ${linux:system:user:mkraynov:name}
+            - ${linux:system:user:nkabanova:name}
+            - ${linux:system:user:rsoto:name}
+            - ${linux:system:user:rsafonov:name}
+            # L2OPS
+            - ${linux:system:user:aepifanov:name}
+            - ${linux:system:user:apetrenko:name}
+            - ${linux:system:user:atarasov:name}
+            - ${linux:system:user:dklepikov:name}
+            - ${linux:system:user:dsutyagin:name}
+            - ${linux:system:user:ekozhemyakin:name}
+            - ${linux:system:user:enikanorov:name}
+            - ${linux:system:user:fsoppelsa:name}
+            - ${linux:system:user:manashkin:name}
+            - ${linux:system:user:nkondra:name}
+            - ${linux:system:user:nkabanova:name}
+            - ${linux:system:user:obryndzii:name}
+            - ${linux:system:user:oliemieshko:name}
+            - ${linux:system:user:sovsianikov:name}
+            - ${linux:system:user:pmichalec:name}
+            - ${linux:system:user:pcizinsky:name}
+            - ${linux:system:user:osmola:name}
+            - ${linux:system:user:jmosher:name}
+            - ${linux:system:user:lmercl:name}
+      sudo:
+        enabled: true
+        aliases:
+          command:
+            SUPPORT_SALT: ${_param:sudo_salt_safe}
+            SUPPORT_SALT_TRUSTED: ${_param:sudo_salt_trusted}
+            SUPPORT_RESTRICTED_SHELLS: ${_param:sudo_shells}
+            SUPPORT_RESTRICTED_SU: ${_param:sudo_restricted_su}
+            SUPPORT_COREUTILS: ${_param:sudo_coreutils_safe}
+            SUPPORT_RABBITMQ: ${_param:sudo_rabbitmq_safe}
+            SUPPORT_SALT_TRUSTED: ${_param:sudo_salt_trusted}
+            SUPPORT_NETWORKING: ${_param:sudo_networking}
+            SUPPORT_CONTRAIL: ${_param:sudo_contrail_utilities}
+            SUPPORT_STORAGE: ${_param:sudo_storage_utilities}
+            SUPPORT_OPENSTACK_CLIENTS: ${_param:sudo_openstack_clients}
+        groups:
+          support0:
+          # This group should have only RO access to non-sensitive data and commands
+          # assumed usage: common operations, non experienced, non technical users.
+            commands:
+                - SUPPORT_SALT
+                - '!SUPPORT_RESTRICTED_SHELLS'
+                - '!SUPPORT_RESTRICTED_SU'
+          support1:
+          # This group should have access to safe, trusted, commands
+            commands:
+                - SUPPORT_SALT
+                - SUPPORT_COREUTILS
+                - SUPPORT_RABBITMQ
+                - SUPPORT_NETWORKING
+                - SUPPORT_CONTRAIL
+                - SUPPORT_STORAGE
+                - SUPPORT_OPENSTACK_CLIENTS
+                - '!SUPPORT_RESTRICTED_SHELLS'
+                - '!SUPPORT_RESTRICTED_SU'
+          support2:
+          # This group should have access to any command using sudo
+            commands:
+                - SUPPORT_SALT
+                - SUPPORT_SALT_TRUSTED
+                - SUPPORT_COREUTILS
+                - SUPPORT_RABBITMQ
+                - SUPPORT_NETWORKING
+                - SUPPORT_CONTRAIL
+                - SUPPORT_STORAGE
+                - SUPPORT_OPENSTACK_CLIENTS
+                - '!SUPPORT_RESTRICTED_SHELLS'
+                - '!SUPPORT_RESTRICTED_SU'
+          support3:
+          # It's never safe to run unlimited number of commands with sudo.
+          # Use with caution.
+            setenv: true
+            commands:
+                - ALL
diff --git a/openssh/server/team/tcpcloud.yml b/openssh/server/team/tcpcloud.yml
index 6b5205b..5f9af00 100644
--- a/openssh/server/team/tcpcloud.yml
+++ b/openssh/server/team/tcpcloud.yml
@@ -19,8 +19,11 @@
 - system.openssh.server.team.members.smatov
 - system.openssh.server.team.members.tkukral
 - system.openssh.server.team.members.vmikes
-
+- system.openssh.server.team.members.psvimbersky
+- system.openssh.server.team.members.chnyda
 parameters:
+  _param:
+    linux_system_user_sudo: true
   linux:
     system:
       user:
@@ -62,4 +65,4 @@
     askotnicky:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDO6EnDYaGdF/Nn6lntxDNnKanCsheZRdh8kA/6ImyeRSjT2cgepm1Fsgv7wXBYoy0OxhB5wgCp5Az/Pj4oLkG3g+G05sUPUxxGCGRiwjcnyQ/FTz4TzHglAVqgbdgWoQYf9Hg6EKZovvPcH3STbEwcl+MhLqvxz0wm5+StE+wvp6I9dEfRV+2/e1uepauOTZ1+Ui1DMNXiMefTlbiIBHzUk7RiwJWgqzQXBndgunmbJWSed8zC0Ug97waDOFIX/oKZmAmsv0NLJ2e/kC3oUTuziGT74F9sh7Pqiw/9HZxvP45hJwEvytfUjfuiikIBbmYdF7Je93czaG/qjXGN8YvP== a.skotnicky@tcpisek.cz
     vzach:
-      key: AAAAB3NzaC1yc2EAAAABJQAAAQEAn4MJUkXbiZPPEcdKijB4MqnjPGk80x5W+8XsMvZuUqElmuLgB30kdCnSCBgipYPor3m8wakdJTTwiY6P50yhtp/tD2b4t1TC1djPwiNS/6JwjZawj30bS5ZrVKeTHtOq6E0tf927svXgEE21/ADgWpMoDeQ/pKlbt0m/U8YGBCmJ7cBa8ggGHhvJIwCNhpELn02vKV8Qfx44rk+DoxLBwQUHQ8PsEwtoSCLMIulpLflptak1pgvN6ggA5p15i36OyJkobI1yR9YEgtb+8yQqofu2DZ+v+9Qhbb+C0446RnyGzfvk/DreCeI4rJh5/6QZjwv3XfYDER5LbNCnoOQAsQ== v.zach@tcpcloud.eu
\ No newline at end of file
+      key: AAAAB3NzaC1yc2EAAAABJQAAAQEAn4MJUkXbiZPPEcdKijB4MqnjPGk80x5W+8XsMvZuUqElmuLgB30kdCnSCBgipYPor3m8wakdJTTwiY6P50yhtp/tD2b4t1TC1djPwiNS/6JwjZawj30bS5ZrVKeTHtOq6E0tf927svXgEE21/ADgWpMoDeQ/pKlbt0m/U8YGBCmJ7cBa8ggGHhvJIwCNhpELn02vKV8Qfx44rk+DoxLBwQUHQ8PsEwtoSCLMIulpLflptak1pgvN6ggA5p15i36OyJkobI1yR9YEgtb+8yQqofu2DZ+v+9Qhbb+C0446RnyGzfvk/DreCeI4rJh5/6QZjwv3XfYDER5LbNCnoOQAsQ== v.zach@tcpcloud.eu
diff --git a/postgresql/client/alertmanager.yml b/postgresql/client/alertmanager.yml
new file mode 100644
index 0000000..8bd272a
--- /dev/null
+++ b/postgresql/client/alertmanager.yml
@@ -0,0 +1,30 @@
+classes:
+  - system.postgresql.client
+parameters:
+  _param:
+    alertmanager_db_host: ${_param:haproxy_postgresql_bind_host}
+    alertmanager_db_user: alertmanager
+    alertmanager_db_user_password: alertmanager
+    webhook_login_id: 13
+    webhook_application_id: 24
+  postgresql:
+    client:
+      server:
+        server01:
+          database:
+            alertmanager:
+              enabled: true
+              encoding: 'UTF8'
+              locale: 'en_US'
+              users:
+              - name: ${_param:alertmanager_db_user}
+                password: ${_param:alertmanager_db_user_password}
+                host: ${_param:alertmanager_db_host}
+                createdb: true
+                rights: all privileges
+              init:
+                maintenance_db: pushkin
+                force: true
+                queries:
+                - INSERT INTO login VALUES (${_param:webhook_login_id}, ${_param:webhook_application_id}) ON CONFLICT (id) DO UPDATE SET id = excluded.id;
+                - INSERT INTO device VALUES (${_param:webhook_application_id}, ${_param:webhook_login_id}, 42, 'stacklight_alertmanager', NULL, 1, NULL) ON CONFLICT (id) DO UPDATE SET id = excluded.id;
diff --git a/postgresql/client/janitor_monkey.yml b/postgresql/client/janitor_monkey.yml
new file mode 100644
index 0000000..def9a06
--- /dev/null
+++ b/postgresql/client/janitor_monkey.yml
@@ -0,0 +1,30 @@
+classes:
+  - system.postgresql.client
+parameters:
+  _param:
+    janmonkey_db_host: ${_param:haproxy_postgresql_bind_host}
+    janmonkey_db_user: janmonkey
+    janmonkey_db_user_password: janmonkey
+    janmonkey_login_id: 12
+    janmonkey_application_id: 2
+  postgresql:
+    client:
+      server:
+        server01:
+          database:
+            janmonkey:
+              enabled: true
+              encoding: 'UTF8'
+              locale: 'en_US'
+              users:
+              - name: ${_param:janmonkey_db_user}
+                password: ${_param:janmonkey_db_user_password}
+                host: ${_param:janmonkey_db_host}
+                createdb: true
+                rights: all privileges
+              init:
+                maintenance_db: pushkin
+                force: true
+                queries:
+                - INSERT INTO login VALUES (${_param:janmonkey_login_id}, ${_param:janmonkey_application_id}) ON CONFLICT (id) DO UPDATE SET id = excluded.id;
+                - INSERT INTO device VALUES (${_param:janmonkey_application_id}, ${_param:janmonkey_login_id}, 42, 'janitor_audit_service', NULL, 1, NULL) ON CONFLICT (id) DO UPDATE SET id = excluded.id;
diff --git a/postgresql/client/security_monkey.yml b/postgresql/client/security_monkey.yml
index 43e48d2..a7a341f 100644
--- a/postgresql/client/security_monkey.yml
+++ b/postgresql/client/security_monkey.yml
@@ -5,6 +5,8 @@
     secmonkey_db_host: ${_param:haproxy_postgresql_bind_host}
     secmonkey_db_user: secmonkey
     secmonkey_db_user_password: secmonkey
+    secmonkey_login_id: 11
+    secmonkey_application_id: 1
   postgresql:
     client:
       server:
@@ -24,5 +26,5 @@
                 maintenance_db: pushkin
                 force: true
                 queries:
-                - INSERT INTO login VALUES (11, 1) ON CONFLICT (id) DO UPDATE SET id = excluded.id;
-                - INSERT INTO device VALUES (1, 11, 42, 'security_audit_service', NULL, 1, NULL) ON CONFLICT (id) DO UPDATE SET id = excluded.id;
+                - INSERT INTO login VALUES (${_param:secmonkey_login_id}, ${_param:secmonkey_application_id}) ON CONFLICT (id) DO UPDATE SET id = excluded.id;
+                - INSERT INTO device VALUES (${_param:secmonkey_application_id}, ${_param:secmonkey_login_id}, 42, 'security_audit_service', NULL, 1, NULL) ON CONFLICT (id) DO UPDATE SET id = excluded.id;
diff --git a/postgresql/client/sfdc.yml b/postgresql/client/sfdc.yml
new file mode 100644
index 0000000..bafd9c9
--- /dev/null
+++ b/postgresql/client/sfdc.yml
@@ -0,0 +1,30 @@
+classes:
+  - system.postgresql.client
+parameters:
+  _param:
+    sfdc_db_host: ${_param:haproxy_postgresql_bind_host}
+    sfdc_db_user: sfdc
+    sfdc_db_user_password: sfdc
+    sfdc_login_id: 14
+    sfdc_application_id: 4
+  postgresql:
+    client:
+      server:
+        server01:
+          database:
+            sfdc:
+              enabled: true
+              encoding: 'UTF8'
+              locale: 'en_US'
+              users:
+              - name: ${_param:sfdc_db_user}
+                password: ${_param:sfdc_db_user_password}
+                host: ${_param:sfdc_db_host}
+                createdb: true
+                rights: all privileges
+              init:
+                maintenance_db: pushkin
+                force: true
+                queries:
+                - INSERT INTO login VALUES (${_param:sfdc_login_id}, ${_param:sfdc_application_id}) ON CONFLICT (id) DO UPDATE SET id = excluded.id;
+                - INSERT INTO device VALUES (${_param:sfdc_application_id}, ${_param:sfdc_login_id}, 42, 'salesforce_service', NULL, 1, NULL) ON CONFLICT (id) DO UPDATE SET id = excluded.id;
diff --git a/prometheus/alertmanager/init.yml b/prometheus/alertmanager/init.yml
index b00a4b9..bdcdafd 100644
--- a/prometheus/alertmanager/init.yml
+++ b/prometheus/alertmanager/init.yml
@@ -2,3 +2,8 @@
   _param:
     prometheus_alertmanager_config_directory: /srv/alertmanager
     prometheus_alertmanager_data_directory: /data
+  prometheus:
+    alertmanager:
+      dir:
+        data: /srv/volumes/local/alertmanager/data
+        config: /srv/volumes/local/alertmanager/config
diff --git a/prometheus/alertmanager/notification/email.yml b/prometheus/alertmanager/notification/email.yml
new file mode 100644
index 0000000..02b44ff
--- /dev/null
+++ b/prometheus/alertmanager/notification/email.yml
@@ -0,0 +1,23 @@
+parameters:
+  prometheus:
+    alertmanager:
+      config:
+        route:
+          routes:
+            email:
+              receiver: SMTP
+              match_re:
+                - label: route
+                  value: email
+        receiver:
+          SMTP:
+            enabled: true
+            email_configs:
+              smtp_server:
+                to: ${_param:alertmanager_notification_email_to}
+                from: ${_param:alertmanager_notification_email_from}
+                auth_username: ${_param:alertmanager_notification_email_username}
+                auth_password: ${_param:alertmanager_notification_email_password}
+                smarthost: ${_param:alertmanager_notification_email_host}
+                require_tls: ${_param:alertmanager_notification_email_require_tls}
+                send_resolved: true
diff --git a/prometheus/alertmanager/notification/slack.yml b/prometheus/alertmanager/notification/slack.yml
new file mode 100644
index 0000000..c33e013
--- /dev/null
+++ b/prometheus/alertmanager/notification/slack.yml
@@ -0,0 +1,18 @@
+parameters:
+  prometheus:
+    alertmanager:
+      config:
+        route:
+          routes:
+            slack:
+              receiver: HTTP-slack
+              match_re:
+                - label: route
+                  value: slack
+        receiver:
+          HTTP-slack:
+            enabled: true
+            slack_configs:
+              slack-endpoint:
+                api_url: "${_param:alertmanager_notification_slack_api_url}"
+                send_resolved: true
diff --git a/prometheus/server/alert/labels_add/route.yml b/prometheus/server/alert/labels_add/route.yml
index 47d9eea..651dab7 100644
--- a/prometheus/server/alert/labels_add/route.yml
+++ b/prometheus/server/alert/labels_add/route.yml
@@ -1,6 +1,6 @@
 parameters:
   _param:
-    prometheus_server_alert_label_route: mail
+    prometheus_server_alert_label_route: email
   prometheus:
     server:
       config:
diff --git a/prometheus/server/init.yml b/prometheus/server/init.yml
index 0ecea17..99fdceb 100644
--- a/prometheus/server/init.yml
+++ b/prometheus/server/init.yml
@@ -2,3 +2,9 @@
   _param:
     prometheus_server_config_directory: /srv/prometheus
     prometheus_server_data_directory: /data
+  prometheus:
+    server:
+      dir:
+        data: /srv/volumes/local/prometheus/data
+        config: /srv/volumes/local/prometheus/config
+        config_in_container: ${_param:prometheus_server_config_directory}
diff --git a/prometheus/server/target/dns.yml b/prometheus/server/target/dns.yml
index ed6602d..e2745f1 100644
--- a/prometheus/server/target/dns.yml
+++ b/prometheus/server/target/dns.yml
@@ -25,3 +25,8 @@
               - '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/etcd.yml b/prometheus/server/target/etcd.yml
deleted file mode 100644
index 0ac3310..0000000
--- a/prometheus/server/target/etcd.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-parameters:
-  prometheus:
-    server:
-      target:
-        static:
-          etcd:
-            enabled: true
-            scheme: https
-            tls_config:
-              skip_verify: true
-              ssl_dir: ${_param:prometheus_server_config_directory}
-              cert_name: prometheus-server.crt
-              key_name: prometheus-server.key
diff --git a/prometheus/server/target/kubernetes.yml b/prometheus/server/target/kubernetes.yml
deleted file mode 100644
index 60ca1e0..0000000
--- a/prometheus/server/target/kubernetes.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-parameters:
-  prometheus:
-    server:
-      target:
-        kubernetes:
-          enabled: true
-          api_ip: ${_param:kubernetes_control_address}
-          ssl_dir: ${_param:prometheus_server_config_directory}
-          cert_name: prometheus-server.crt
-          key_name: prometheus-server.key
diff --git a/rabbitmq/server/vhost/opencontrail.yml b/rabbitmq/server/vhost/opencontrail.yml
new file mode 100644
index 0000000..8f88cee
--- /dev/null
+++ b/rabbitmq/server/vhost/opencontrail.yml
@@ -0,0 +1,12 @@
+parameters:
+  rabbitmq:
+    server:
+      host:
+        '/':
+          enabled: true
+          user: guest
+          password: guest
+          policies:
+          - name: HA
+            pattern: '^(?!amq\.).*'
+            definition: '{"ha-mode": "all", "message-ttl": 120000}'
diff --git a/reclass/storage/system/ceph_mon_cluster.yml b/reclass/storage/system/ceph_mon_cluster.yml
new file mode 100644
index 0000000..91b76f6
--- /dev/null
+++ b/reclass/storage/system/ceph_mon_cluster.yml
@@ -0,0 +1,40 @@
+parameters:
+  _param:
+    ceph_mon_node01_hostname: cmn01
+    ceph_mon_node02_hostname: cmn02
+    ceph_mon_node03_hostname: cmn03
+    ceph_mon_system_codename: xenial
+  reclass:
+    storage:
+      node:
+        ceph_mon_node01:
+          name: ${_param:ceph_mon_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.ceph.mon
+          - cluster.${_param:cluster_name}.ceph.setup
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:ceph_mon_system_codename}
+            single_address: ${_param:ceph_mon_node01_address}
+            keepalived_vip_priority: 103
+        ceph_mon_node02:
+          name: ${_param:ceph_mon_node02_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.ceph.mon
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename:  ${_param:ceph_mon_system_codename}
+            single_address: ${_param:ceph_mon_node02_address}
+            keepalived_vip_priority: 102
+        ceph_mon_node03:
+          name: ${_param:ceph_mon_node03_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.ceph.mon
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename:  ${_param:ceph_mon_system_codename}
+            single_address: ${_param:ceph_mon_node03_address}
+            keepalived_vip_priority: 101
diff --git a/reclass/storage/system/ceph_rgw_cluster.yml b/reclass/storage/system/ceph_rgw_cluster.yml
new file mode 100644
index 0000000..46d8a59
--- /dev/null
+++ b/reclass/storage/system/ceph_rgw_cluster.yml
@@ -0,0 +1,39 @@
+parameters:
+  _param:
+    ceph_rgw_node01_hostname: rgw01
+    ceph_rgw_node02_hostname: rgw02
+    ceph_rgw_node03_hostname: rgw03
+    ceph_rgw_system_codename: xenial
+  reclass:
+    storage:
+      node:
+        ceph_rgw_node01:
+          name: ${_param:ceph_rgw_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.ceph.rgw
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:ceph_rgw_system_codename}
+            single_address: ${_param:ceph_rgw_node01_address}
+            keepalived_vip_priority: 103
+        ceph_rgw_node02:
+          name: ${_param:ceph_rgw_node02_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.ceph.rgw
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename:  ${_param:ceph_rgw_system_codename}
+            single_address: ${_param:ceph_rgw_node02_address}
+            keepalived_vip_priority: 102
+        ceph_rgw_node03:
+          name: ${_param:ceph_rgw_node03_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.ceph.rgw
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename:  ${_param:ceph_rgw_system_codename}
+            single_address: ${_param:ceph_rgw_node03_address}
+            keepalived_vip_priority: 101
diff --git a/reclass/storage/system/cicd_control_cluster.yml b/reclass/storage/system/cicd_control_cluster.yml
index 547ba61..bc31944 100644
--- a/reclass/storage/system/cicd_control_cluster.yml
+++ b/reclass/storage/system/cicd_control_cluster.yml
@@ -3,6 +3,7 @@
     cicd_control_node01_hostname: cid01
     cicd_control_node02_hostname: cid02
     cicd_control_node03_hostname: cid03
+    cicd_control_system_codename: xenial
   reclass:
     storage:
       node:
@@ -13,7 +14,7 @@
           - cluster.${_param:cluster_name}.cicd.control.leader
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:cicd_control_system_codename}
             single_address: ${_param:cicd_control_node01_address}
             keepalived_vip_priority: 103
             cicd_database_id: 1
@@ -24,7 +25,7 @@
           - cluster.${_param:cluster_name}.cicd.control.manager
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:cicd_control_system_codename}
             single_address: ${_param:cicd_control_node02_address}
             keepalived_vip_priority: 102
             cicd_database_id: 2
@@ -35,7 +36,7 @@
           - cluster.${_param:cluster_name}.cicd.control.manager
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:cicd_control_system_codename}
             single_address: ${_param:cicd_control_node03_address}
             keepalived_vip_priority: 101
             cicd_database_id: 3
diff --git a/reclass/storage/system/cicd_manager_cluster.yml b/reclass/storage/system/cicd_manager_cluster.yml
index 898e657..032f257 100644
--- a/reclass/storage/system/cicd_manager_cluster.yml
+++ b/reclass/storage/system/cicd_manager_cluster.yml
@@ -2,6 +2,7 @@
   _param:
     cicd_control_node02_hostname: cid01
     cicd_control_node03_hostname: cid02
+    cicd_control_system_codename: xenial
   reclass:
     storage:
       node:
@@ -12,7 +13,7 @@
           - cluster.${_param:cluster_name}.cicd.control.manager
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:cicd_control_system_codename}
             single_address: ${_param:cicd_control_node02_address}
             keepalived_vip_priority: 102
             cicd_database_id: 2
@@ -23,7 +24,7 @@
           - cluster.${_param:cluster_name}.cicd.control.manager
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:cicd_control_system_codename}
             single_address: ${_param:cicd_control_node03_address}
             keepalived_vip_priority: 101
             cicd_database_id: 3
diff --git a/reclass/storage/system/infra_idm_cluster.yml b/reclass/storage/system/infra_idm_cluster.yml
index aae2370..1d2efcf 100644
--- a/reclass/storage/system/infra_idm_cluster.yml
+++ b/reclass/storage/system/infra_idm_cluster.yml
@@ -3,6 +3,7 @@
     infra_idm_node01_hostname: idm01
     infra_idm_node02_hostname: idm02
     infra_idm_node03_hostname: idm03
+    infra_idm_system_codename: centos
   reclass:
     storage:
       node:
@@ -13,7 +14,7 @@
           - cluster.${_param:cluster_name}.infra.idm
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: centos
+            linux_system_codename: ${_param:infra_idm_system_codename}
             single_address: ${_param:infra_idm_node01_address}
         infra_idm_node02:
           name: ${_param:infra_idm_node02_hostname}
@@ -22,7 +23,7 @@
           - cluster.${_param:cluster_name}.infra.idm
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: centos
+            linux_system_codename: ${_param:infra_idm_system_codename}
             single_address: ${_param:infra_idm_node02_address}
         infra_idm_node03:
           name: ${_param:infra_idm_node03_hostname}
@@ -31,5 +32,5 @@
           - cluster.${_param:cluster_name}.infra.idm
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: centos
-            single_address: ${_param:infra_idm_node03_address}
\ No newline at end of file
+            linux_system_codename: ${_param:infra_idm_system_codename}
+            single_address: ${_param:infra_idm_node03_address}
diff --git a/reclass/storage/system/infra_maas_single.yml b/reclass/storage/system/infra_maas_single.yml
index eb5a96b..c919fc9 100644
--- a/reclass/storage/system/infra_maas_single.yml
+++ b/reclass/storage/system/infra_maas_single.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     infra_maas_node01_hostname: mas01
+    infra_maas_system_codename: xenial
   reclass:
     storage:
       node:
@@ -11,6 +12,5 @@
           - cluster.${_param:cluster_name}.infra.maas
           params:
             salt_master_host: ${_param:infra_config_deploy_address}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:infra_maas_system_codename}
             single_address: ${_param:infra_maas_node01_deploy_address}
-
diff --git a/reclass/storage/system/infra_proxy_cluster.yml b/reclass/storage/system/infra_proxy_cluster.yml
index f7c7932..2cac99a 100644
--- a/reclass/storage/system/infra_proxy_cluster.yml
+++ b/reclass/storage/system/infra_proxy_cluster.yml
@@ -2,6 +2,7 @@
   _param:
     infra_proxy_node01_hostname: prx01
     infra_proxy_node02_hostname: prx02
+    infra_proxy_system_codename: trusty
   reclass:
     storage:
       node:
@@ -13,7 +14,7 @@
           - cluster.${_param:cluster_name}.stacklight.proxy
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:infra_proxy_system_codename}
             single_address: ${_param:infra_proxy_node01_address}
             keepalived_vip_priority: 102
         infra_proxy_node02:
@@ -24,6 +25,6 @@
           - cluster.${_param:cluster_name}.stacklight.proxy
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:infra_proxy_system_codename}
             single_address: ${_param:infra_proxy_node02_address}
             keepalived_vip_priority: 101
diff --git a/reclass/storage/system/infra_proxy_single.yml b/reclass/storage/system/infra_proxy_single.yml
index a245e8c..f75acc5 100644
--- a/reclass/storage/system/infra_proxy_single.yml
+++ b/reclass/storage/system/infra_proxy_single.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     openstack_proxy_node01_hostname: prx01
+    openstack_proxy_system_codename: trusty
   reclass:
     storage:
       node:
@@ -12,5 +13,5 @@
           - cluster.${_param:cluster_name}.stacklight.proxy
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_proxy_system_codename}
             single_address: ${_param:openstack_proxy_node01_address}
diff --git a/reclass/storage/system/kubernetes_control_cluster.yml b/reclass/storage/system/kubernetes_control_cluster.yml
index 5180ab6..15bec1e 100644
--- a/reclass/storage/system/kubernetes_control_cluster.yml
+++ b/reclass/storage/system/kubernetes_control_cluster.yml
@@ -3,6 +3,10 @@
     kubernetes_control_node01_hostname: ctl01
     kubernetes_control_node02_hostname: ctl02
     kubernetes_control_node03_hostname: ctl03
+    kubernetes_control_node01_deploy_address: ${_param:kubernetes_control_node01_address}
+    kubernetes_control_node02_deploy_address: ${_param:kubernetes_control_node02_address}
+    kubernetes_control_node03_deploy_address: ${_param:kubernetes_control_node03_address}
+    kubernetes_control_system_codename: xenial
   reclass:
     storage:
       node:
@@ -13,8 +17,9 @@
           - cluster.${_param:cluster_name}.kubernetes.control
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:kubernetes_control_system_codename}
             single_address: ${_param:kubernetes_control_node01_address}
+            deploy_address: ${_param:kubernetes_control_node01_deploy_address}
             keepalived_vip_priority: 103
         kubernetes_control_node02:
           name: ${_param:kubernetes_control_node02_hostname}
@@ -23,8 +28,9 @@
           - cluster.${_param:cluster_name}.kubernetes.control
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:kubernetes_control_system_codename}
             single_address: ${_param:kubernetes_control_node02_address}
+            deploy_address: ${_param:kubernetes_control_node02_deploy_address}
             keepalived_vip_priority: 102
         kubernetes_control_node03:
           name: ${_param:kubernetes_control_node03_hostname}
@@ -33,6 +39,7 @@
           - cluster.${_param:cluster_name}.kubernetes.control
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:kubernetes_control_system_codename}
             single_address: ${_param:kubernetes_control_node03_address}
-            keepalived_vip_priority: 101
\ No newline at end of file
+            deploy_address: ${_param:kubernetes_control_node03_deploy_address}
+            keepalived_vip_priority: 101
diff --git a/reclass/storage/system/kubernetes_control_single.yml b/reclass/storage/system/kubernetes_control_single.yml
index c88e3c3..22e1883 100644
--- a/reclass/storage/system/kubernetes_control_single.yml
+++ b/reclass/storage/system/kubernetes_control_single.yml
@@ -1,6 +1,8 @@
 parameters:
   _param:
     kubernetes_control_node01_hostname: ctl01
+    kubernetes_control_node01_deploy_address: ${_param:kubernetes_control_node01_address}
+    kubernetes_control_system_codename: xenial
   reclass:
     storage:
       node:
@@ -11,5 +13,6 @@
           - cluster.${_param:cluster_name}.kubernetes.control
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
-            single_address: ${_param:kubernetes_control_node01_address}
\ No newline at end of file
+            linux_system_codename: ${_param:kubernetes_control_system_codename}
+            single_address: ${_param:kubernetes_control_node01_address}
+            deploy_address: ${_param:kubernetes_control_node01_deploy_address}
diff --git a/reclass/storage/system/monitoring_service_cluster.yml b/reclass/storage/system/monitoring_service_cluster.yml
index 630ee32..0f6b3d8 100644
--- a/reclass/storage/system/monitoring_service_cluster.yml
+++ b/reclass/storage/system/monitoring_service_cluster.yml
@@ -3,6 +3,7 @@
     monitor_node01_hostname: mon01
     monitor_node02_hostname: mon02
     monitor_node03_hostname: mon03
+    monitor_system_codename: xenial
   reclass:
     storage:
       node:
@@ -13,7 +14,7 @@
           - cluster.${_param:cluster_name}.monitoring.server
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:monitor_system_codename}
             single_address: ${_param:monitoring_service_node01_address}
         monitoring_service_node02:
           name: ${_param:monitor_node02_hostname}
@@ -22,7 +23,7 @@
           - cluster.${_param:cluster_name}.monitoring.server
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:monitor_system_codename}
             single_address: ${_param:monitoring_service_node02_address}
         monitoring_service_node03:
           name: ${_param:monitor_node03_hostname}
@@ -31,5 +32,5 @@
           - cluster.${_param:cluster_name}.monitoring.server
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:monitor_system_codename}
             single_address: ${_param:monitoring_service_node03_address}
diff --git a/reclass/storage/system/monitoring_service_single.yml b/reclass/storage/system/monitoring_service_single.yml
index 9680529..d238b07 100644
--- a/reclass/storage/system/monitoring_service_single.yml
+++ b/reclass/storage/system/monitoring_service_single.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     monitor_node01_hostname: mon01
+    monitor_system_codename: xenial
   reclass:
     storage:
       node:
@@ -11,5 +12,5 @@
           - cluster.${_param:cluster_name}.monitoring.server
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename:  ${_param:monitor_system_codename}
             single_address: ${_param:monitoring_service_node01_address}
diff --git a/reclass/storage/system/opencontrail_analytics_cluster.yml b/reclass/storage/system/opencontrail_analytics_cluster.yml
index 6a4b7ee..400853e 100644
--- a/reclass/storage/system/opencontrail_analytics_cluster.yml
+++ b/reclass/storage/system/opencontrail_analytics_cluster.yml
@@ -3,6 +3,7 @@
     opencontrail_analytics_node01_hostname: nal01
     opencontrail_analytics_node02_hostname: nal02
     opencontrail_analytics_node03_hostname: nal03
+    opencontrail_analytics_system_codename: trusty
   reclass:
     storage:
       node:
@@ -13,18 +14,18 @@
           - cluster.${_param:cluster_name}.opencontrail.analytics
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:opencontrail_analytics_system_codename}
             single_address: ${_param:opencontrail_analytics_node01_address}
             keepalived_vip_priority: 103
             opencontrail_database_id: 1
         opencontrail_analytics_node02:
           name: ${_param:opencontrail_analytics_node02_hostname}
           domain: ${_param:cluster_domain}
-          classes:  
+          classes:
           - cluster.${_param:cluster_name}.opencontrail.analytics
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:opencontrail_analytics_system_codename}
             single_address: ${_param:opencontrail_analytics_node02_address}
             keepalived_vip_priority: 102
             opencontrail_database_id: 2
@@ -35,7 +36,7 @@
           - cluster.${_param:cluster_name}.opencontrail.analytics
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:opencontrail_analytics_system_codename}
             single_address: ${_param:opencontrail_analytics_node03_address}
             keepalived_vip_priority: 101
             opencontrail_database_id: 3
diff --git a/reclass/storage/system/opencontrail_control_cluster.yml b/reclass/storage/system/opencontrail_control_cluster.yml
index d0213b3..f752c83 100644
--- a/reclass/storage/system/opencontrail_control_cluster.yml
+++ b/reclass/storage/system/opencontrail_control_cluster.yml
@@ -3,6 +3,7 @@
     opencontrail_control_node01_hostname: ntw01
     opencontrail_control_node02_hostname: ntw02
     opencontrail_control_node03_hostname: ntw03
+    opencontrail_control_system_codename: trusty
   reclass:
     storage:
       node:
@@ -13,7 +14,7 @@
           - cluster.${_param:cluster_name}.opencontrail.control
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:opencontrail_control_system_codename}
             single_address: ${_param:opencontrail_control_node01_address}
             keepalived_vip_priority: 103
             opencontrail_database_id: 1
@@ -24,7 +25,7 @@
           - cluster.${_param:cluster_name}.opencontrail.control
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:opencontrail_control_system_codename}
             single_address: ${_param:opencontrail_control_node02_address}
             keepalived_vip_priority: 102
             opencontrail_database_id: 2
@@ -35,7 +36,7 @@
           - cluster.${_param:cluster_name}.opencontrail.control
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:opencontrail_control_system_codename}
             single_address: ${_param:opencontrail_control_node03_address}
             keepalived_vip_priority: 101
             opencontrail_database_id: 3
diff --git a/reclass/storage/system/opencontrail_gateway_single.yml b/reclass/storage/system/opencontrail_gateway_single.yml
index 52b2786..30c7043 100644
--- a/reclass/storage/system/opencontrail_gateway_single.yml
+++ b/reclass/storage/system/opencontrail_gateway_single.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     opencontrail_gateway_hostname: gtw01
+    opencontrail_gateway_system_codename: trusty
   reclass:
     storage:
       node:
@@ -11,5 +12,5 @@
           - cluster.${_param:cluster_name}.opencontrail.gateway
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:opencontrail_gateway_system_codename}
             single_address: ${_param:opencontrail_gateway_address}
diff --git a/reclass/storage/system/opencontrail_tor_cluster.yml b/reclass/storage/system/opencontrail_tor_cluster.yml
new file mode 100644
index 0000000..1fa2ad0
--- /dev/null
+++ b/reclass/storage/system/opencontrail_tor_cluster.yml
@@ -0,0 +1,32 @@
+parameters:
+  _param:
+    opencontrail_tor01_node01_hostname: tor01
+    opencontrail_tor01_node02_hostname: tor02
+    opencontrail_tor01_node01_tenant_address: ${_param:opencontrail_tor01_node01_address}
+    opencontrail_tor01_node02_tenant_address: ${_param:opencontrail_tor01_node02_address}
+    opencontrail_tor_system_codename: xenial
+  reclass:
+    storage:
+      node:
+        opencontrail_tor01_node01:
+          name: ${_param:opencontrail_tor01_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.opencontrail.tor
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:opencontrail_tor_system_codename}
+            single_address: ${_param:opencontrail_tor01_node01_address}
+            tenant_address: ${_param:opencontrail_tor01_node01_tenant_address}
+            keepalived_vip_priority: 103
+        opencontrail_tor01_node02:
+          name: ${_param:opencontrail_tor01_node02_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.opencontrail.tor
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:opencontrail_tor_system_codename}
+            single_address: ${_param:opencontrail_tor01_node02_address}
+            tenant_address: ${_param:opencontrail_tor01_node02_tenant_address}
+            keepalived_vip_priority: 102
diff --git a/reclass/storage/system/openstack_baremetal_cluster.yml b/reclass/storage/system/openstack_baremetal_cluster.yml
index 8cab119..71f6034 100644
--- a/reclass/storage/system/openstack_baremetal_cluster.yml
+++ b/reclass/storage/system/openstack_baremetal_cluster.yml
@@ -19,6 +19,7 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: ${_param:linux_system_codename}
             single_address: ${_param:openstack_baremetal_node01_address}
+            keepalived_vip_priority: 101
             baremetal_address: ${_param:openstack_baremetal_node01_baremetal_address}
         openstack_baremetal_node02:
           name: ${_param:openstack_baremetal_node02_hostname}
@@ -29,6 +30,7 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: ${_param:linux_system_codename}
             single_address: ${_param:openstack_baremetal_node02_address}
+            keepalived_vip_priority: 102
             baremetal_address: ${_param:openstack_baremetal_node02_baremetal_address}
         openstack_baremetal_node03:
           name: ${_param:openstack_baremetal_node03_hostname}
@@ -39,6 +41,7 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: ${_param:linux_system_codename}
             single_address: ${_param:openstack_baremetal_node03_address}
+            keepalived_vip_priority: 103
             baremetal_address: ${_param:openstack_baremetal_node03_baremetal_address}
 
 
diff --git a/reclass/storage/system/openstack_benchmark_single.yml b/reclass/storage/system/openstack_benchmark_single.yml
index a676cc3..6958d41 100644
--- a/reclass/storage/system/openstack_benchmark_single.yml
+++ b/reclass/storage/system/openstack_benchmark_single.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     openstack_benchmark_node01_hostname: bmk01
+    openstack_benchmark_system_codename: xenial
   reclass:
     storage:
       node:
@@ -11,5 +12,5 @@
           - cluster.${_param:cluster_name}.openstack.benchmark
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:openstack_benchmark_system_codename}
             single_address: ${_param:openstack_benchmark_node01_address}
diff --git a/reclass/storage/system/openstack_billing_single.yml b/reclass/storage/system/openstack_billing_single.yml
index 5b63ec0..49ed988 100644
--- a/reclass/storage/system/openstack_billing_single.yml
+++ b/reclass/storage/system/openstack_billing_single.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     openstack_billing_hostname: bil01
+    openstack_billing_system_codename: trusty
   reclass:
     storage:
       node:
@@ -11,5 +12,5 @@
           - cluster.${_param:cluster_name}.openstack.billing
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_billing_system_codename}
             single_address: ${_param:openstack_billing_address}
diff --git a/reclass/storage/system/openstack_compute_multi.yml b/reclass/storage/system/openstack_compute_multi.yml
index 86092db..b319fa6 100644
--- a/reclass/storage/system/openstack_compute_multi.yml
+++ b/reclass/storage/system/openstack_compute_multi.yml
@@ -2,6 +2,8 @@
   _param:
     openstack_compute_node01_hostname: cmp01
     openstack_compute_node02_hostname: cmp02
+    openstack_compute_node01_address: 172.16.10.105
+    openstack_compute_node02_address: 172.16.10.106
   reclass:
     storage:
       node:
@@ -13,7 +15,7 @@
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: ${_param:linux_system_codename}
-            single_address: 172.16.10.105
+            single_address: ${_param:openstack_compute_node01_address}
         openstack_compute_node02:
           name: ${_param:openstack_compute_node02_hostname}
           domain: ${_param:cluster_domain}
@@ -22,4 +24,4 @@
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: ${_param:linux_system_codename}
-            single_address: 172.16.10.106
+            single_address: ${_param:openstack_compute_node02_address}
diff --git a/reclass/storage/system/openstack_compute_single.yml b/reclass/storage/system/openstack_compute_single.yml
index 215c0e6..1b16352 100644
--- a/reclass/storage/system/openstack_compute_single.yml
+++ b/reclass/storage/system/openstack_compute_single.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     openstack_compute_node01_hostname: cmp01
+    openstack_compute_node01_address: 172.16.10.105
   reclass:
     storage:
       node:
@@ -12,4 +13,4 @@
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: ${_param:linux_system_codename}
-            single_address: 172.16.10.105
+            single_address: ${_param:openstack_compute_node01_address}
diff --git a/reclass/storage/system/openstack_control_cluster.yml b/reclass/storage/system/openstack_control_cluster.yml
index deb25b8..300a04c 100644
--- a/reclass/storage/system/openstack_control_cluster.yml
+++ b/reclass/storage/system/openstack_control_cluster.yml
@@ -3,6 +3,7 @@
     openstack_control_node01_hostname: ctl01
     openstack_control_node02_hostname: ctl02
     openstack_control_node03_hostname: ctl03
+    openstack_control_system_codename: trusty
   reclass:
     storage:
       node:
@@ -13,7 +14,7 @@
           - cluster.${_param:cluster_name}.openstack.control
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_control_system_codename}
             single_address: ${_param:openstack_control_node01_address}
             keepalived_vip_priority: 103
             opencontrail_database_id: 1
@@ -25,7 +26,7 @@
           - cluster.${_param:cluster_name}.openstack.control
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_control_system_codename}
             single_address: ${_param:openstack_control_node02_address}
             keepalived_vip_priority: 102
             opencontrail_database_id: 2
@@ -37,7 +38,7 @@
           - cluster.${_param:cluster_name}.openstack.control
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_control_system_codename}
             single_address: ${_param:openstack_control_node03_address}
             keepalived_vip_priority: 101
             opencontrail_database_id: 3
diff --git a/reclass/storage/system/openstack_control_single.yml b/reclass/storage/system/openstack_control_single.yml
index 016ab96..e7329da 100644
--- a/reclass/storage/system/openstack_control_single.yml
+++ b/reclass/storage/system/openstack_control_single.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     openstack_control_node01_hostname: ctl01
+    openstack_control_system_codename: xenial
   reclass:
     storage:
       node:
@@ -11,5 +12,5 @@
           - cluster.${_param:cluster_name}.openstack.control
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:openstack_control_system_codename}
             single_address: ${_param:openstack_control_node01_address}
diff --git a/reclass/storage/system/openstack_control_upgrade_single.yml b/reclass/storage/system/openstack_control_upgrade_single.yml
index 964e064..e387062 100644
--- a/reclass/storage/system/openstack_control_upgrade_single.yml
+++ b/reclass/storage/system/openstack_control_upgrade_single.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     openstack_upgrade_node01_hostname: upg01
+    openstack_upgrade_system_codename: xenial
   reclass:
     storage:
       node:
@@ -11,5 +12,5 @@
           - cluster.${_param:cluster_name}.openstack.upgrade
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:openstack_upgrade_system_codename}
             single_address: ${_param:openstack_upgrade_node01_address}
diff --git a/reclass/storage/system/openstack_dashboard_single.yml b/reclass/storage/system/openstack_dashboard_single.yml
index c2915d3..51e2d91 100644
--- a/reclass/storage/system/openstack_dashboard_single.yml
+++ b/reclass/storage/system/openstack_dashboard_single.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     openstack_proxy_hostname: prx01
+    openstack_proxy_system_codename: trusty
   reclass:
     storage:
       node:
@@ -11,5 +12,5 @@
           - cluster.${_param:cluster_name}.openstack.dashboard
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_proxy_system_codename}
             single_address: 172.16.10.121
diff --git a/reclass/storage/system/openstack_database_cluster.yml b/reclass/storage/system/openstack_database_cluster.yml
index 33c6d24..7a2f3e5 100644
--- a/reclass/storage/system/openstack_database_cluster.yml
+++ b/reclass/storage/system/openstack_database_cluster.yml
@@ -3,6 +3,7 @@
     openstack_database_node01_hostname: dbs01
     openstack_database_node02_hostname: dbs02
     openstack_database_node03_hostname: dbs03
+    openstack_database_system_codename: trusty
   reclass:
     storage:
       node:
@@ -14,19 +15,19 @@
           - cluster.${_param:cluster_name}.openstack.database
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_database_system_codename}
             single_address: ${_param:openstack_database_node01_address}
             keepalived_vip_priority: 103
             mysql_cluster_role: master
         openstack_database_node02:
           name: ${_param:openstack_database_node02_hostname}
           domain: ${_param:cluster_domain}
-          classes:  
+          classes:
           - service.galera.slave.cluster
           - cluster.${_param:cluster_name}.openstack.database
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_database_system_codename}
             single_address: ${_param:openstack_database_node02_address}
             keepalived_vip_priority: 102
             mysql_cluster_role: slave
@@ -38,7 +39,7 @@
           - cluster.${_param:cluster_name}.openstack.database
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_database_system_codename}
             single_address: ${_param:openstack_database_node03_address}
             keepalived_vip_priority: 101
             mysql_cluster_role: slave
diff --git a/reclass/storage/system/openstack_dns_cluster.yml b/reclass/storage/system/openstack_dns_cluster.yml
index d134c88..d6b93d0 100644
--- a/reclass/storage/system/openstack_dns_cluster.yml
+++ b/reclass/storage/system/openstack_dns_cluster.yml
@@ -2,6 +2,7 @@
   _param:
     openstack_dns_node01_hostname: dns01
     openstack_dns_node02_hostname: dns02
+    openstack_dns_system_codename: xenial
   reclass:
     storage:
       node:
@@ -12,7 +13,7 @@
           - cluster.${_param:cluster_name}.openstack.dns
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_dns_system_codename}
             single_address: ${_param:openstack_dns_node01_address}
             keepalived_vip_priority: 110
         openstack_dns_node02:
@@ -22,6 +23,6 @@
           - cluster.${_param:cluster_name}.openstack.dns
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_dns_system_codename}
             single_address: ${_param:openstack_dns_node02_address}
             keepalived_vip_priority: 111
diff --git a/reclass/storage/system/openstack_gateway_single_octavia.yml b/reclass/storage/system/openstack_gateway_single_octavia.yml
index 7291977..2a5b952 100644
--- a/reclass/storage/system/openstack_gateway_single_octavia.yml
+++ b/reclass/storage/system/openstack_gateway_single_octavia.yml
@@ -4,6 +4,4 @@
       node:
         openstack_gateway_node01:
           classes:
-          - system.octavia.manager.single
-          - system.salt.minion.ca.octavia_ca
-          - system.salt.minion.cert.octavia_amp_client
+          - cluster.${_param:cluster_name}.openstack.octavia_manager
diff --git a/reclass/storage/system/openstack_message_queue_cluster.yml b/reclass/storage/system/openstack_message_queue_cluster.yml
index c6a811f..3836af0 100644
--- a/reclass/storage/system/openstack_message_queue_cluster.yml
+++ b/reclass/storage/system/openstack_message_queue_cluster.yml
@@ -3,6 +3,7 @@
     openstack_message_queue_node01_hostname: msg01
     openstack_message_queue_node02_hostname: msg02
     openstack_message_queue_node03_hostname: msg03
+    openstack_message_system_codename: trusty
   reclass:
     storage:
       node:
@@ -13,18 +14,18 @@
           - cluster.${_param:cluster_name}.openstack.message_queue
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_message_system_codename}
             single_address: ${_param:openstack_message_queue_node01_address}
             keepalived_vip_priority: 103
             rabbitmq_cluster_role: master
         openstack_message_queue_node02:
           name: ${_param:openstack_message_queue_node02_hostname}
           domain: ${_param:cluster_domain}
-          classes:  
+          classes:
           - cluster.${_param:cluster_name}.openstack.message_queue
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_message_system_codename}
             single_address: ${_param:openstack_message_queue_node02_address}
             keepalived_vip_priority: 102
             rabbitmq_cluster_role: slave
@@ -35,7 +36,7 @@
           - cluster.${_param:cluster_name}.openstack.message_queue
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_message_system_codename}
             single_address: ${_param:openstack_message_queue_node03_address}
             keepalived_vip_priority: 101
             rabbitmq_cluster_role: slave
diff --git a/reclass/storage/system/openstack_proxy_cluster.yml b/reclass/storage/system/openstack_proxy_cluster.yml
index 95439fa..ca0b2a9 100644
--- a/reclass/storage/system/openstack_proxy_cluster.yml
+++ b/reclass/storage/system/openstack_proxy_cluster.yml
@@ -2,6 +2,7 @@
   _param:
     openstack_proxy_node01_hostname: prx01
     openstack_proxy_node02_hostname: prx02
+    openstack_proxy_system_codename: trusty
   reclass:
     storage:
       node:
@@ -12,7 +13,7 @@
           - cluster.${_param:cluster_name}.openstack.proxy
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_proxy_system_codename}
             single_address: ${_param:openstack_proxy_node01_address}
             keepalived_vip_priority: 102
         openstack_proxy_node02:
@@ -22,6 +23,6 @@
           - cluster.${_param:cluster_name}.openstack.proxy
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_proxy_system_codename}
             single_address: ${_param:openstack_proxy_node02_address}
             keepalived_vip_priority: 101
diff --git a/reclass/storage/system/openstack_proxy_single.yml b/reclass/storage/system/openstack_proxy_single.yml
index 794ca64..a2dddd7 100644
--- a/reclass/storage/system/openstack_proxy_single.yml
+++ b/reclass/storage/system/openstack_proxy_single.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     openstack_proxy_node01_hostname: prx01
+    openstack_proxy_system_codename: trusty
   reclass:
     storage:
       node:
@@ -11,5 +12,5 @@
           - cluster.${_param:cluster_name}.openstack.proxy
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_proxy_system_codename}
             single_address: ${_param:openstack_proxy_node01_address}
diff --git a/reclass/storage/system/openstack_telemetry_cluster.yml b/reclass/storage/system/openstack_telemetry_cluster.yml
index d184fc9..9dc6457 100644
--- a/reclass/storage/system/openstack_telemetry_cluster.yml
+++ b/reclass/storage/system/openstack_telemetry_cluster.yml
@@ -3,6 +3,7 @@
     openstack_telemetry_node01_hostname: mdb01
     openstack_telemetry_node02_hostname: mdb02
     openstack_telemetry_node03_hostname: mdb03
+    openstack_telemetry_system_codename: trusty
   reclass:
     storage:
       node:
@@ -13,7 +14,7 @@
           - cluster.${_param:cluster_name}.openstack.telemetry
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_telemetry_system_codename}
             single_address: ${_param:openstack_telemetry_node01_address}
             keepalived_vip_priority: 103
         openstack_telemetry_node02:
@@ -23,7 +24,7 @@
           - cluster.${_param:cluster_name}.openstack.telemetry
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_telemetry_system_codename}
             single_address: ${_param:openstack_telemetry_node02_address}
             keepalived_vip_priority: 102
         openstack_telemetry_node03:
@@ -33,6 +34,6 @@
           - cluster.${_param:cluster_name}.openstack.telemetry
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:openstack_telemetry_system_codename}
             single_address: ${_param:openstack_telemetry_node03_address}
             keepalived_vip_priority: 101
diff --git a/reclass/storage/system/oss_cluster.yml b/reclass/storage/system/oss_cluster.yml
new file mode 100644
index 0000000..71d42ce
--- /dev/null
+++ b/reclass/storage/system/oss_cluster.yml
@@ -0,0 +1,43 @@
+parameters:
+  _param:
+    oss_node01_hostname: mon01
+    oss_node02_hostname: mon02
+    oss_node03_hostname: mon03
+    oss_system_codename: xenial
+  reclass:
+    storage:
+      node:
+        stacklight_server_node01:
+          name: ${_param:oss_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - system.docker.swarm.master
+          - cluster.${_param:cluster_name}.oss.client
+          - cluster.${_param:cluster_name}.oss.server
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:oss_system_codename}
+            single_address: ${_param:oss_node01_address}
+            keepalived_vip_priority: 103
+        stacklight_server_node02:
+          name: ${_param:oss_node02_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - system.docker.swarm.manager
+          - cluster.${_param:cluster_name}.oss.server
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:oss_system_codename}
+            single_address: ${_param:oss_node02_address}
+            keepalived_vip_priority: 102
+        stacklight_server_node03:
+          name: ${_param:oss_node03_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - system.docker.swarm.manager
+          - cluster.${_param:cluster_name}.oss.server
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:oss_system_codename}
+            single_address: ${_param:oss_node03_address}
+            keepalived_vip_priority: 101
diff --git a/reclass/storage/system/physical_control_cluster.yml b/reclass/storage/system/physical_control_cluster.yml
index 4622e09..ebd0eb0 100644
--- a/reclass/storage/system/physical_control_cluster.yml
+++ b/reclass/storage/system/physical_control_cluster.yml
@@ -15,6 +15,7 @@
     infra_kvm_node01_public_address: ${_param:infra_kvm_node01_address}
     infra_kvm_node02_public_address: ${_param:infra_kvm_node02_address}
     infra_kvm_node03_public_address: ${_param:infra_kvm_node03_address}
+    infra_kvm_system_codename: trusty
 
   reclass:
     storage:
@@ -26,7 +27,7 @@
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:infra_kvm_system_codename}
             single_address: ${_param:infra_kvm_node01_address}
             deploy_address: ${_param:infra_kvm_node01_deploy_address}
             public_address: ${_param:infra_kvm_node01_public_address}
@@ -38,7 +39,7 @@
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:infra_kvm_system_codename}
             single_address: ${_param:infra_kvm_node02_address}
             deploy_address: ${_param:infra_kvm_node02_deploy_address}
             public_address: ${_param:infra_kvm_node02_public_address}
@@ -50,7 +51,7 @@
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:infra_kvm_system_codename}
             single_address: ${_param:infra_kvm_node03_address}
             deploy_address: ${_param:infra_kvm_node03_deploy_address}
             public_address: ${_param:infra_kvm_node03_public_address}
diff --git a/reclass/storage/system/physical_control_full.yml b/reclass/storage/system/physical_control_full.yml
index 0f510a4..1bdd345 100644
--- a/reclass/storage/system/physical_control_full.yml
+++ b/reclass/storage/system/physical_control_full.yml
@@ -40,6 +40,8 @@
     infra_kvm_node08_public_address: ${_param:infra_kvm_node08_address}
     infra_kvm_node09_public_address: ${_param:infra_kvm_node09_address}
 
+    infra_kvm_system_codename: trusty
+
   reclass:
     storage:
       node:
@@ -50,7 +52,7 @@
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:infra_kvm_system_codename}
             single_address: ${_param:infra_kvm_node01_address}
             deploy_address: ${_param:infra_kvm_node01_deploy_address}
             public_address: ${_param:infra_kvm_node01_public_address}
@@ -62,7 +64,7 @@
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:infra_kvm_system_codename}
             single_address: ${_param:infra_kvm_node02_address}
             deploy_address: ${_param:infra_kvm_node02_deploy_address}
             public_address: ${_param:infra_kvm_node02_public_address}
@@ -74,7 +76,7 @@
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:infra_kvm_system_codename}
             single_address: ${_param:infra_kvm_node03_address}
             deploy_address: ${_param:infra_kvm_node03_deploy_address}
             public_address: ${_param:infra_kvm_node03_public_address}
@@ -86,7 +88,7 @@
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:infra_kvm_system_codename}
             single_address: ${_param:infra_kvm_node04_address}
             deploy_address: ${_param:infra_kvm_node04_deploy_address}
             public_address: ${_param:infra_kvm_node04_public_address}
@@ -98,7 +100,7 @@
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:infra_kvm_system_codename}
             single_address: ${_param:infra_kvm_node05_address}
             deploy_address: ${_param:infra_kvm_node05_deploy_address}
             public_address: ${_param:infra_kvm_node05_public_address}
@@ -110,7 +112,7 @@
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:infra_kvm_system_codename}
             single_address: ${_param:infra_kvm_node06_address}
             deploy_address: ${_param:infra_kvm_node06_deploy_address}
             public_address: ${_param:infra_kvm_node06_public_address}
@@ -122,7 +124,7 @@
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:infra_kvm_system_codename}
             single_address: ${_param:infra_kvm_node07_address}
             deploy_address: ${_param:infra_kvm_node07_deploy_address}
             public_address: ${_param:infra_kvm_node07_public_address}
@@ -134,7 +136,7 @@
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:infra_kvm_system_codename}
             single_address: ${_param:infra_kvm_node08_address}
             deploy_address: ${_param:infra_kvm_node08_deploy_address}
             public_address: ${_param:infra_kvm_node08_public_address}
@@ -146,7 +148,7 @@
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:infra_kvm_system_codename}
             single_address: ${_param:infra_kvm_node09_address}
             deploy_address: ${_param:infra_kvm_node09_deploy_address}
             public_address: ${_param:infra_kvm_node09_public_address}
diff --git a/reclass/storage/system/physical_control_single.yml b/reclass/storage/system/physical_control_single.yml
index 32f09c3..db92c5f 100644
--- a/reclass/storage/system/physical_control_single.yml
+++ b/reclass/storage/system/physical_control_single.yml
@@ -4,6 +4,7 @@
     infra_kvm_node01_deploy_address: ${_param:infra_kvm_node01_address}
     infra_kvm_node01_storage_address: ${_param:infra_kvm_node01_address}
     infra_kvm_node01_public_address: ${_param:infra_kvm_node01_address}
+    infra_kvm_system_codename: trusty
   reclass:
     storage:
       node:
@@ -14,7 +15,7 @@
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:infra_kvm_system_codename}
             single_address: ${_param:infra_kvm_node01_address}
             deploy_address: ${_param:infra_kvm_node01_deploy_address}
             public_address: ${_param:infra_kvm_node01_public_address}
diff --git a/reclass/storage/system/rsyslog_single.yml b/reclass/storage/system/rsyslog_single.yml
index a3eefac..b4c36bc 100644
--- a/reclass/storage/system/rsyslog_single.yml
+++ b/reclass/storage/system/rsyslog_single.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     rsyslog_node01_hostname: rsl01
+    rsyslog_system_codename: xenial
   reclass:
     storage:
       node:
@@ -11,5 +12,5 @@
           - cluster.${_param:cluster_name}.infra.rsyslog
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:rsyslog_system_codename}
             single_address: ${_param:rsyslog_node01_address}
diff --git a/reclass/storage/system/stacklight_log_cluster.yml b/reclass/storage/system/stacklight_log_cluster.yml
index bbb6a6b..14b8108 100644
--- a/reclass/storage/system/stacklight_log_cluster.yml
+++ b/reclass/storage/system/stacklight_log_cluster.yml
@@ -3,6 +3,7 @@
     stacklight_log_node01_hostname: log01
     stacklight_log_node02_hostname: log02
     stacklight_log_node03_hostname: log03
+    stacklight_log_system_codename: xenial
   reclass:
     storage:
       node:
@@ -14,7 +15,7 @@
           - cluster.${_param:cluster_name}.stacklight.log_curator
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:stacklight_log_system_codename}
             single_address: ${_param:stacklight_log_node01_address}
             keepalived_vip_priority: 103
         stacklight_log_node02:
@@ -25,7 +26,7 @@
           - cluster.${_param:cluster_name}.stacklight.log_curator
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:stacklight_log_system_codename}
             single_address: ${_param:stacklight_log_node02_address}
             keepalived_vip_priority: 102
         stacklight_log_node03:
@@ -36,6 +37,6 @@
           - cluster.${_param:cluster_name}.stacklight.log_curator
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:stacklight_log_system_codename}
             single_address: ${_param:stacklight_log_node03_address}
             keepalived_vip_priority: 101
diff --git a/reclass/storage/system/stacklight_monitor_cluster.yml b/reclass/storage/system/stacklight_monitor_cluster.yml
index f95cf81..5d56a6d 100644
--- a/reclass/storage/system/stacklight_monitor_cluster.yml
+++ b/reclass/storage/system/stacklight_monitor_cluster.yml
@@ -3,6 +3,7 @@
     stacklight_monitor_node01_hostname: mon01
     stacklight_monitor_node02_hostname: mon02
     stacklight_monitor_node03_hostname: mon03
+    stacklight_monitor_system_codename: xenial
   reclass:
     storage:
       node:
@@ -15,7 +16,7 @@
             redis_cluster_role: 'master'
             rabbitmq_cluster_role: 'master'
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:stacklight_monitor_system_codename}
             single_address: ${_param:stacklight_monitor_node01_address}
             keepalived_vip_priority: 103
         stacklight_monitor_node02:
@@ -27,7 +28,7 @@
             redis_cluster_role: 'slave'
             rabbitmq_cluster_role: 'slave'
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:stacklight_monitor_system_codename}
             single_address: ${_param:stacklight_monitor_node02_address}
             keepalived_vip_priority: 102
         stacklight_monitor_node03:
@@ -39,6 +40,6 @@
             redis_cluster_role: 'slave'
             rabbitmq_cluster_role: 'slave'
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:stacklight_monitor_system_codename}
             single_address: ${_param:stacklight_monitor_node03_address}
             keepalived_vip_priority: 101
diff --git a/reclass/storage/system/stacklight_server_cluster.yml b/reclass/storage/system/stacklight_server_cluster.yml
index 26b9ebe..4846c84 100644
--- a/reclass/storage/system/stacklight_server_cluster.yml
+++ b/reclass/storage/system/stacklight_server_cluster.yml
@@ -3,6 +3,7 @@
     stacklight_monitor_node01_hostname: mon01
     stacklight_monitor_node02_hostname: mon02
     stacklight_monitor_node03_hostname: mon03
+    stacklight_monitor_system_codename: xenial
   reclass:
     storage:
       node:
@@ -18,10 +19,9 @@
             redis_cluster_role: 'master'
             rabbitmq_cluster_role: 'master'
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:stacklight_monitor_system_codename}
             single_address: ${_param:stacklight_monitor_node01_address}
             keepalived_vip_priority: 103
-            rabbitmq_cluster_role: master
         stacklight_server_node02:
           name: ${_param:stacklight_monitor_node02_hostname}
           domain: ${_param:cluster_domain}
@@ -31,10 +31,9 @@
             redis_cluster_role: 'slave'
             rabbitmq_cluster_role: 'slave'
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:stacklight_monitor_system_codename}
             single_address: ${_param:stacklight_monitor_node02_address}
             keepalived_vip_priority: 102
-            rabbitmq_cluster_role: slave
         stacklight_server_node03:
           name: ${_param:stacklight_monitor_node03_hostname}
           domain: ${_param:cluster_domain}
@@ -44,7 +43,6 @@
             redis_cluster_role: 'slave'
             rabbitmq_cluster_role: 'slave'
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:stacklight_monitor_system_codename}
             single_address: ${_param:stacklight_monitor_node03_address}
             keepalived_vip_priority: 101
-            rabbitmq_cluster_role: slave
diff --git a/reclass/storage/system/stacklight_server_single.yml b/reclass/storage/system/stacklight_server_single.yml
index 2b397f6..dd5f6ac 100644
--- a/reclass/storage/system/stacklight_server_single.yml
+++ b/reclass/storage/system/stacklight_server_single.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     stacklight_monitor_node01_hostname: mon01
+    stacklight_monitor_system_codename: xenial
   reclass:
     storage:
       node:
@@ -14,5 +15,5 @@
           - system.kibana.client.single
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:stacklight_monitor_system_codename}
             single_address: ${_param:stacklight_monitor_node01_address}
diff --git a/reclass/storage/system/stacklight_telemetry_cluster.yml b/reclass/storage/system/stacklight_telemetry_cluster.yml
index 12b1dae..b9e2640 100644
--- a/reclass/storage/system/stacklight_telemetry_cluster.yml
+++ b/reclass/storage/system/stacklight_telemetry_cluster.yml
@@ -3,6 +3,7 @@
     stacklight_telemetry_node01_hostname: mtr01
     stacklight_telemetry_node02_hostname: mtr02
     stacklight_telemetry_node03_hostname: mtr03
+    stacklight_telemetry_system_codename: xenial
   reclass:
     storage:
       node:
@@ -13,7 +14,7 @@
           - cluster.${_param:cluster_name}.stacklight.telemetry
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:stacklight_telemetry_system_codename}
             single_address: ${_param:stacklight_telemetry_node01_address}
             keepalived_vip_priority: 103
         stacklight_telemetry_node02:
@@ -23,7 +24,7 @@
           - cluster.${_param:cluster_name}.stacklight.telemetry
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:stacklight_telemetry_system_codename}
             single_address: ${_param:stacklight_telemetry_node02_address}
             keepalived_vip_priority: 102
         stacklight_telemetry_node03:
@@ -33,6 +34,6 @@
           - cluster.${_param:cluster_name}.stacklight.telemetry
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:stacklight_telemetry_system_codename}
             single_address: ${_param:stacklight_telemetry_node03_address}
             keepalived_vip_priority: 101
diff --git a/reclass/storage/system/stacklight_telemetry_single.yml b/reclass/storage/system/stacklight_telemetry_single.yml
index bc51b30..239ae0f 100644
--- a/reclass/storage/system/stacklight_telemetry_single.yml
+++ b/reclass/storage/system/stacklight_telemetry_single.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     stacklight_telemetry_node01_hostname: mtr01
+    stacklight_telemetry_system_codename: xenial
   reclass:
     storage:
       node:
@@ -11,6 +12,6 @@
           - cluster.${_param:cluster_name}.stacklight.telemetry
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:stacklight_telemetry_system_codename}
             single_address: ${_param:stacklight_telemetry_node01_address}
-            keepalived_vip_priority: 103
\ No newline at end of file
+            keepalived_vip_priority: 103
diff --git a/reclass/storage/system/stacklightv2_server_cluster.yml b/reclass/storage/system/stacklightv2_server_cluster.yml
index 5f14155..d150ab0 100644
--- a/reclass/storage/system/stacklightv2_server_cluster.yml
+++ b/reclass/storage/system/stacklightv2_server_cluster.yml
@@ -3,6 +3,7 @@
     stacklight_monitor_node01_hostname: mon01
     stacklight_monitor_node02_hostname: mon02
     stacklight_monitor_node03_hostname: mon03
+    stacklight_monitor_system_codename: xenial
   reclass:
     storage:
       node:
@@ -11,11 +12,11 @@
           domain: ${_param:cluster_domain}
           classes:
           - system.docker.swarm.master
-          - cluster.${_param:cluster_name}.stacklight.server
           - cluster.${_param:cluster_name}.stacklight.client
+          - cluster.${_param:cluster_name}.stacklight.server
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:stacklight_monitor_system_codename}
             single_address: ${_param:stacklight_monitor_node01_address}
             keepalived_vip_priority: 103
         stacklight_server_node02:
@@ -23,10 +24,10 @@
           domain: ${_param:cluster_domain}
           classes:
           - system.docker.swarm.manager
-          - cluster.${_param:cluster_name}.stacklight.client
+          - cluster.${_param:cluster_name}.stacklight.server
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:stacklight_monitor_system_codename}
             single_address: ${_param:stacklight_monitor_node02_address}
             keepalived_vip_priority: 102
         stacklight_server_node03:
@@ -34,9 +35,9 @@
           domain: ${_param:cluster_domain}
           classes:
           - system.docker.swarm.manager
-          - cluster.${_param:cluster_name}.stacklight.client
+          - cluster.${_param:cluster_name}.stacklight.server
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
+            linux_system_codename: ${_param:stacklight_monitor_system_codename}
             single_address: ${_param:stacklight_monitor_node03_address}
             keepalived_vip_priority: 101
diff --git a/rundeck/client/project/cicd.yml b/rundeck/client/project/cicd.yml
index cb427d8..ed8b256 100644
--- a/rundeck/client/project/cicd.yml
+++ b/rundeck/client/project/cicd.yml
@@ -1,14 +1,17 @@
 parameters:
   _param:
-    rundeck_cis_os_auth_url: none
-    rundeck_cis_os_username: admin
-    rundeck_cis_os_password: password
-    rundeck_cis_os_project_name: admin
-    rundeck_cis_os_domain_id: default
     rundeck_cis_jobs_repository: https://gerrit.mcp.mirantis.net/oss/rundeck-cis-jobs
     rundeck_cis_jobs_revision: master
-    rundeck_cis_elasticsearch_url: none
+    rundeck_cis_elasticsearch_url: yourelastic:9200
     rundeck_cis_os_docker_image: docker-prod-local.artifactory.mirantis.com/mirantis/oss/cis-openstack:latest
+    rundeck_cis_openstack:
+      auth_url: http://yourcloud.com:5000/v3/auth/tokens
+      username: admin
+      password: password
+      cert: plain-certificate
+      ssl_cert_file: cert.pem
+      project_name: admin
+      domain_id: default
   rundeck:
     client:
       project:
@@ -38,21 +41,27 @@
         cis/elasticsearch/url:
           type: password
           content: ${_param:rundeck_cis_elasticsearch_url}
-        cis/openstack/auth_url:
-          type: password
-          content: ${_param:rundeck_cis_os_auth_url}
-        cis/openstack/username:
-          type: password
-          content: ${_param:rundeck_cis_os_username}
-        cis/openstack/password:
-          type: password
-          content: ${_param:rundeck_cis_os_password}
-        cis/openstack/project_name:
-          type: password
-          content: ${_param:rundeck_cis_os_project_name}
-        cis/openstack/domain_id:
-          type: password
-          content: ${_param:rundeck_cis_os_domain_id}
         cis/openstack/image:
           type: password
           content: ${_param:rundeck_cis_os_docker_image}
+        cis/openstack/auth_url:
+          type: password
+          content: ${_param:rundeck_cis_openstack:auth_url}
+        cis/openstack/username:
+          type: password
+          content: ${_param:rundeck_cis_openstack:username}
+        cis/openstack/password:
+          type: password
+          content: ${_param:rundeck_cis_openstack:password}
+        cis/openstack/project_name:
+          type: password
+          content: ${_param:rundeck_cis_openstack:project_name}
+        cis/openstack/domain_id:
+          type: password
+          content: ${_param:rundeck_cis_openstack:domain_id}
+        cis/openstack/cert.pem:
+          type: password
+          content: ${_param:rundeck_cis_openstack:cert}
+        cis/openstack/cert_file:
+          type: password
+          content: ${_param:rundeck_cis_openstack:ssl_cert_file}
diff --git a/rundeck/server/docker.yml b/rundeck/server/docker.yml
index 1c89f4f..492d135 100644
--- a/rundeck/server/docker.yml
+++ b/rundeck/server/docker.yml
@@ -8,6 +8,7 @@
     rundeck_postgresql_database: rundeck
     rundeck_postgresql_host: ${_param:control_vip_address}
     rundeck_postgresql_port: 5432
+    rundeck_server_ssh_timeout: 300000
   rundeck:
     server:
       user:
@@ -30,3 +31,4 @@
         user: ${_param:rundeck_runbook_user}
         private_key: ${_param:rundeck_runbook_private_key}
         public_key: ${_param:rundeck_runbook_public_key}
+        timeout: ${_param:rundeck_server_ssh_timeout}
diff --git a/salt/control/cluster/ceph_mon_cluster.yml b/salt/control/cluster/ceph_mon_cluster.yml
new file mode 100644
index 0000000..bccec01
--- /dev/null
+++ b/salt/control/cluster/ceph_mon_cluster.yml
@@ -0,0 +1,29 @@
+parameters:
+  salt:
+    control:
+      size:
+        ceph.mon:
+          cpu: 16
+          ram: 32768
+          disk_profile: small
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            cmn01:
+              name: ${_param:ceph_mon_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: ceph.mon
+            cmn02:
+              name: ${_param:ceph_mon_node02_hostname}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: ceph.mon
+            cmn03:
+              name: ${_param:ceph_mon_node03_hostname}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: ceph.mon
\ No newline at end of file
diff --git a/salt/control/cluster/ceph_rgw_cluster.yml b/salt/control/cluster/ceph_rgw_cluster.yml
new file mode 100644
index 0000000..6f24819
--- /dev/null
+++ b/salt/control/cluster/ceph_rgw_cluster.yml
@@ -0,0 +1,29 @@
+parameters:
+  salt:
+    control:
+      size:
+        ceph.rgw:
+          cpu: 16
+          ram: 32768
+          disk_profile: small
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            rgw01:
+              name: ${_param:ceph_rgw_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: ceph.rgw
+            rgw02:
+              name: ${_param:ceph_rgw_node02_hostname}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: ceph.rgw
+            rgw03:
+              name: ${_param:ceph_rgw_node03_hostname}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: ceph.rgw
\ No newline at end of file
diff --git a/salt/control/cluster/infra_idm_cluster.yml b/salt/control/cluster/infra_idm_cluster.yml
index 3db87a2..ff135a1 100644
--- a/salt/control/cluster/infra_idm_cluster.yml
+++ b/salt/control/cluster/infra_idm_cluster.yml
@@ -13,14 +13,17 @@
           engine: virt
           node:
             idm01:
+              name: ${_param:infra_idm_node01_hostname}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_centos7_image}
               size: infra.idm
             idm02:
+              name: ${_param:infra_idm_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_centos7_image}
               size: infra.idm
             idm03:
+              name: ${_param:infra_idm_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_centos7_image}
               size: infra.idm
diff --git a/salt/control/cluster/openstack_baremetal_cluster.yml b/salt/control/cluster/openstack_baremetal_cluster.yml
index 609be28..4dd62e4 100644
--- a/salt/control/cluster/openstack_baremetal_cluster.yml
+++ b/salt/control/cluster/openstack_baremetal_cluster.yml
@@ -13,14 +13,17 @@
           engine: virt
           node:
             bmt01:
+              name: ${_param:openstack_baremetal_node01_hostname}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.baremetal
             bmt02:
+              name: ${_param:openstack_baremetal_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.baremetal
             bmt03:
+              name: ${_param:openstack_baremetal_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.baremetal
diff --git a/salt/control/cluster/openstack_baremetal_single.yml b/salt/control/cluster/openstack_baremetal_single.yml
index 5ff00f5..f0aa319 100644
--- a/salt/control/cluster/openstack_baremetal_single.yml
+++ b/salt/control/cluster/openstack_baremetal_single.yml
@@ -13,6 +13,7 @@
           engine: virt
           node:
             bmt01:
+              name: ${_param:openstack_baremetal_node01_hostname}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.baremetal
diff --git a/salt/control/cluster/openstack_benchmark_single.yml b/salt/control/cluster/openstack_benchmark_single.yml
index 0677320..ea10fc3 100644
--- a/salt/control/cluster/openstack_benchmark_single.yml
+++ b/salt/control/cluster/openstack_benchmark_single.yml
@@ -13,6 +13,7 @@
           engine: virt
           node:
             bmk01:
+              name: ${_param:openstack_benchmark_node01_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: openstack.benchmark
diff --git a/salt/control/cluster/openstack_dns_cluster.yml b/salt/control/cluster/openstack_dns_cluster.yml
index 71af5c1..7f1dbb8 100644
--- a/salt/control/cluster/openstack_dns_cluster.yml
+++ b/salt/control/cluster/openstack_dns_cluster.yml
@@ -13,10 +13,12 @@
           engine: virt
           node:
             dns01:
+              name: ${_param:openstack_dns_node01_hostname}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.dns
             dns02:
+              name: ${_param:openstack_dns_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.dns
diff --git a/salt/control/cluster/openstack_gateway_cluster.yml b/salt/control/cluster/openstack_gateway_cluster.yml
index efc7215..1a7e06b 100644
--- a/salt/control/cluster/openstack_gateway_cluster.yml
+++ b/salt/control/cluster/openstack_gateway_cluster.yml
@@ -13,14 +13,17 @@
           engine: virt
           node:
             gtw01:
+              name: ${_param:openstack_gateway_node01_hostname}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.gateway
             gtw02:
+              name: ${_param:openstack_gateway_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.gateway
             gtw03:
+              name: ${_param:openstack_gateway_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.gateway
diff --git a/salt/control/cluster/openstack_gateway_single.yml b/salt/control/cluster/openstack_gateway_single.yml
index e10d1b2..801ee0c 100644
--- a/salt/control/cluster/openstack_gateway_single.yml
+++ b/salt/control/cluster/openstack_gateway_single.yml
@@ -13,6 +13,7 @@
           engine: virt
           node:
             gtw01:
+              name: ${_param:openstack_gateway_node01_hostname}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.gateway
diff --git a/salt/control/cluster/rsyslog_single.yml b/salt/control/cluster/rsyslog_single.yml
index 76cc77f..72e6c86 100644
--- a/salt/control/cluster/rsyslog_single.yml
+++ b/salt/control/cluster/rsyslog_single.yml
@@ -13,6 +13,7 @@
           engine: virt
           node:
             rsl01:
+              name: ${_param:rsyslog_node01_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: infra.rsyslog
diff --git a/salt/control/cluster/stacklight_log_cluster.yml b/salt/control/cluster/stacklight_log_cluster.yml
index 330e301..e4c08b6 100644
--- a/salt/control/cluster/stacklight_log_cluster.yml
+++ b/salt/control/cluster/stacklight_log_cluster.yml
@@ -5,7 +5,7 @@
         stacklight.log:
           cpu: 32
           ram: 65536
-          disk_profile: small
+          disk_profile: xxxxlarge
           net_profile: default
       cluster:
         internal:
diff --git a/salt/control/cluster/stacklight_server_cluster.yml b/salt/control/cluster/stacklight_server_cluster.yml
index 0055d20..6e7da61 100644
--- a/salt/control/cluster/stacklight_server_cluster.yml
+++ b/salt/control/cluster/stacklight_server_cluster.yml
@@ -5,7 +5,7 @@
         stacklight.server:
           cpu: 32
           ram: 65536
-          disk_profile: small
+          disk_profile: xxlarge
           net_profile: default
       cluster:
         internal:
diff --git a/salt/control/cluster/stacklight_telemetry_cluster.yml b/salt/control/cluster/stacklight_telemetry_cluster.yml
index bfd14b0..1b39b61 100644
--- a/salt/control/cluster/stacklight_telemetry_cluster.yml
+++ b/salt/control/cluster/stacklight_telemetry_cluster.yml
@@ -5,7 +5,7 @@
         stacklight.telemetry:
           cpu: 32
           ram: 65536
-          disk_profile: small
+          disk_profile: xxxlarge
           net_profile: default
       cluster:
         internal:
diff --git a/salt/control/virt.yml b/salt/control/virt.yml
index 6ed8537..7556dc9 100644
--- a/salt/control/virt.yml
+++ b/salt/control/virt.yml
@@ -45,3 +45,6 @@
       xxxlarge:
         - system:
             size: 500000
+      xxxxlarge:
+        - system:
+            size: 700000
diff --git a/salt/master/formula/git/ceph.yml b/salt/master/formula/git/ceph.yml
new file mode 100644
index 0000000..10c3ca0
--- /dev/null
+++ b/salt/master/formula/git/ceph.yml
@@ -0,0 +1,10 @@
+parameters:
+  salt:
+    master:
+      environment:
+        dev:
+          formula:
+            ceph:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-ceph.git'
+              revision: ${_param:salt_master_environment_revision}
diff --git a/salt/master/formula/git/foundation.yml b/salt/master/formula/git/foundation.yml
index 7e21699..dbc7d19 100644
--- a/salt/master/formula/git/foundation.yml
+++ b/salt/master/formula/git/foundation.yml
@@ -54,3 +54,7 @@
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-openldap.git'
               revision: ${_param:salt_master_environment_revision}
+            powerdns:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-powerdns.git'
+              revision: ${_param:salt_master_environment_revision}
diff --git a/salt/master/formula/git/helm.yml b/salt/master/formula/git/helm.yml
new file mode 100644
index 0000000..c25358f
--- /dev/null
+++ b/salt/master/formula/git/helm.yml
@@ -0,0 +1,16 @@
+parameters:
+  salt:
+    master:
+      environment:
+        prd:
+          formula:
+            helm:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-helm.git'
+              revision: ${_param:salt_master_environment_revision}
+              module:
+                helm.py:
+                  enabled: true
+              state:
+                helm_release.py:
+                  enabled: true
diff --git a/salt/master/formula/git/kubernetes.yml b/salt/master/formula/git/kubernetes.yml
index fe8ad5d..3d9d89e 100644
--- a/salt/master/formula/git/kubernetes.yml
+++ b/salt/master/formula/git/kubernetes.yml
@@ -12,11 +12,7 @@
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-etcd.git'
               revision: ${_param:salt_master_environment_revision}
-            bird:
-              source: git
-              address: '${_param:salt_master_environment_repository}/salt-formula-bird.git'
-              revision: ${_param:salt_master_environment_revision}
             docker:
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-docker.git'
-              revision: ${_param:salt_master_environment_revision}
\ No newline at end of file
+              revision: ${_param:salt_master_environment_revision}
diff --git a/salt/master/formula/git/openstack.yml b/salt/master/formula/git/openstack.yml
index 9173a4a..cd9df0a 100644
--- a/salt/master/formula/git/openstack.yml
+++ b/salt/master/formula/git/openstack.yml
@@ -8,10 +8,14 @@
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-aodh.git'
               revision: ${_param:salt_master_environment_revision}
-            #avinetworks:
-            #  source: git
-            #  address: '${_param:salt_master_environment_repository}/salt-formula-avinetworks.git'
-            #  revision: ${_param:salt_master_environment_revision}
+            avinetworks:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-avinetworks.git'
+              revision: ${_param:salt_master_environment_revision}
+            barbican:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-barbican.git'
+              revision: ${_param:salt_master_environment_revision}
             billometer:
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-billometer.git'
diff --git a/salt/master/formula/git/saltstack.yml b/salt/master/formula/git/saltstack.yml
index ebcf96f..fde03ef 100644
--- a/salt/master/formula/git/saltstack.yml
+++ b/salt/master/formula/git/saltstack.yml
@@ -39,10 +39,21 @@
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-reclass.git'
               revision: ${_param:salt_master_environment_revision}
+              module:
+                reclass.py:
+                  enabled: true
+              state:
+                reclass.py:
+                  enabled: true
             salt:
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-salt.git'
               revision: ${_param:salt_master_environment_revision}
+              module:
+                seedng.py:
+                  enabled: true
+                virtng.py:
+                  enabled: true
             sphinx:
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-sphinx.git'
diff --git a/salt/master/formula/pkg/ceph.yml b/salt/master/formula/pkg/ceph.yml
new file mode 100644
index 0000000..461f5c5
--- /dev/null
+++ b/salt/master/formula/pkg/ceph.yml
@@ -0,0 +1,9 @@
+parameters:
+  salt:
+    master:
+      environment:
+        prd:
+          formula:
+            ceph:
+              source: pkg
+              name: salt-formula-ceph
diff --git a/salt/master/formula/pkg/foundation.yml b/salt/master/formula/pkg/foundation.yml
index 3eed5e9..3111419 100644
--- a/salt/master/formula/pkg/foundation.yml
+++ b/salt/master/formula/pkg/foundation.yml
@@ -28,6 +28,9 @@
             openldap:
               source: pkg
               name: salt-formula-openldap
+            powerdns:
+              source: pkg
+              name: salt-formula-powerdns
             lldp:
               source: pkg
               name: salt-formula-lldp
diff --git a/salt/master/formula/pkg/helm.yml b/salt/master/formula/pkg/helm.yml
new file mode 100644
index 0000000..8b68bfe
--- /dev/null
+++ b/salt/master/formula/pkg/helm.yml
@@ -0,0 +1,9 @@
+parameters:
+  salt:
+    master:
+      environment:
+        prd:
+          formula:
+            helm:
+              source: pkg
+              name: salt-formula-helm
diff --git a/salt/master/formula/pkg/kubernetes.yml b/salt/master/formula/pkg/kubernetes.yml
index 7b3af30..d442ab0 100644
--- a/salt/master/formula/pkg/kubernetes.yml
+++ b/salt/master/formula/pkg/kubernetes.yml
@@ -10,9 +10,6 @@
             etcd:
               source: pkg
               name: salt-formula-etcd
-            bird:
-              source: pkg
-              name: salt-formula-bird
             docker:
               source: pkg
-              name: salt-formula-docker
\ No newline at end of file
+              name: salt-formula-docker
diff --git a/salt/master/formula/pkg/openstack.yml b/salt/master/formula/pkg/openstack.yml
index 827f096..3d22c41 100644
--- a/salt/master/formula/pkg/openstack.yml
+++ b/salt/master/formula/pkg/openstack.yml
@@ -7,9 +7,12 @@
             aodh:
               source: pkg
               name: salt-formula-aodh
-            #avinetworks:
-            #  source: pkg
-            #  name: salt-formula-avinetworks
+            avinetworks:
+              source: pkg
+              name: salt-formula-avinetworks
+            barbican:
+              source: pkg
+              name: salt-formula-barbican
             billometer:
               source: pkg
               name: salt-formula-billometer
diff --git a/salt/master/git.yml b/salt/master/git.yml
index 267bdb1..7f09ed9 100644
--- a/salt/master/git.yml
+++ b/salt/master/git.yml
@@ -8,6 +8,8 @@
 - system.salt.master.formula.git.saltstack
 - system.salt.master.formula.git.stacklight
 - system.salt.master.formula.git.monitoring
+- system.salt.master.formula.git.helm
+- system.salt.master.formula.git.ceph
 parameters:
   _param:
     salt_master_environment_repository: "https://github.com/salt-formulas"
diff --git a/salt/master/pkg.yml b/salt/master/pkg.yml
index 1001d49..ac839f8 100644
--- a/salt/master/pkg.yml
+++ b/salt/master/pkg.yml
@@ -8,4 +8,5 @@
 - system.salt.master.formula.pkg.saltstack
 - system.salt.master.formula.pkg.stacklight
 - system.salt.master.formula.pkg.monitoring
-- system.linux.system.repo.mcp.salt
+- system.salt.master.formula.pkg.helm
+- system.salt.master.formula.pkg.ceph
\ No newline at end of file
diff --git a/salt/minion/ca/octavia_ca.yml b/salt/minion/ca/octavia_ca.yml
index ac66bec..453c450 100644
--- a/salt/minion/ca/octavia_ca.yml
+++ b/salt/minion/ca/octavia_ca.yml
@@ -27,3 +27,7 @@
           days_valid:
             authority: ${_param:octavia_ca_days_valid_authority}
             certificate: ${_param:octavia_ca_days_valid_certificate}
+          ca_file: ${octavia:manager:certificates:ca_certificate}
+          ca_key_file: ${octavia:manager:certificates:ca_private_key}
+          user: octavia
+          group: octavia
diff --git a/salt/minion/cert/etcd_client_single.yml b/salt/minion/cert/etcd_client_single.yml
new file mode 100644
index 0000000..a14e106
--- /dev/null
+++ b/salt/minion/cert/etcd_client_single.yml
@@ -0,0 +1,18 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        etcd_client:
+          host: ${_param:salt_minion_ca_host}
+          authority: ${_param:salt_minion_ca_authority}
+          common_name: ${linux:system:name}
+          signing_policy: cert_open
+          alternative_names: DNS:${linux:system:name},DNS:${linux:network:fqdn}
+          extended_key_usage: clientAuth
+          key_usage: "digitalSignature,nonRepudiation,keyEncipherment"
+          key_file: /var/lib/etcd/etcd-client.key
+          cert_file: /var/lib/etcd/etcd-client.crt
+          all_file: /var/lib/etcd/etcd-client.pem
+          ca_file: /var/lib/etcd/ca.pem
+          user: etcd
+          group: etcd
diff --git a/salt/minion/cert/etcd_server_single.yml b/salt/minion/cert/etcd_server_single.yml
new file mode 100644
index 0000000..d333fb8
--- /dev/null
+++ b/salt/minion/cert/etcd_server_single.yml
@@ -0,0 +1,18 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        etcd_server:
+          host: ${_param:salt_minion_ca_host}
+          authority: ${_param:salt_minion_ca_authority}
+          common_name: ${linux:system:name}
+          signing_policy: cert_open
+          alternative_names: IP:127.0.0.1,IP:${_param:cluster_local_address},DNS:${linux:system:name},DNS:${linux:network:fqdn}
+          extended_key_usage: serverAuth,clientAuth
+          key_usage: "digitalSignature,nonRepudiation,keyEncipherment"
+          key_file: /var/lib/etcd/etcd-server.key
+          cert_file: /var/lib/etcd/etcd-server.crt
+          all_file: /var/lib/etcd/etcd-server.pem
+          ca_file: /var/lib/etcd/ca.pem
+          user: etcd
+          group: etcd
diff --git a/salt/minion/cert/mysql/init.yml b/salt/minion/cert/mysql/init.yml
new file mode 100644
index 0000000..a1c480f
--- /dev/null
+++ b/salt/minion/cert/mysql/init.yml
@@ -0,0 +1,13 @@
+parameters:
+  _param:
+    salt_minion_ca_host: cfg01.${_param:cluster_domain}
+    salt_minion_ca_authority: salt_master_ca
+  salt:
+    minion:
+      cert:
+        mysql_server:
+          host: ${_param:salt_minion_ca_host}
+          signing_policy: cert_server
+          authority: ${_param:salt_minion_ca_authority}
+          common_name: mysql_server
+          signing_policy: cert_open
diff --git a/salt/minion/cert/mysql/pki.yml b/salt/minion/cert/mysql/pki.yml
new file mode 100644
index 0000000..b19ef5e
--- /dev/null
+++ b/salt/minion/cert/mysql/pki.yml
@@ -0,0 +1,8 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        mysql_server:
+          key_file:   /srv/salt/pki/${_param:cluster_name}/${salt:minion:cert:mysql_server:common_name}.key
+          cert_file:  /srv/salt/pki/${_param:cluster_name}/${salt:minion:cert:mysql_server:common_name}.crt
+          all_file:   /srv/salt/pki/${_param:cluster_name}/${salt:minion:cert:mysql_server:common_name}-chain-with-key.pem
diff --git a/salt/minion/cert/mysql/server.yml b/salt/minion/cert/mysql/server.yml
new file mode 100644
index 0000000..8ff7519
--- /dev/null
+++ b/salt/minion/cert/mysql/server.yml
@@ -0,0 +1,27 @@
+classes:
+- system.salt.minion.cert.mysql
+
+parameters:
+  _param:
+    mysql_ssl_key_file: /etc/mysql/ssl/key.pem
+    mysql_ssl_cert_file: /etc/mysql/ssl/cert.pem
+    mysql_ssl_ca_file: /etc/mysql/ssl/ca.pem
+  salt:
+    minion:
+      cert:
+        mysql_server:
+          # IP are used as DNS due to cert verificaiton issue of python2:
+          # https://bugs.python.org/issue12000
+          alternative_names: >
+            IP:${_param:cluster_local_address},
+            IP:${_param:cluster_vip_address},
+            DNS:${_param:cluster_local_address},
+            DNS:${_param:cluster_vip_address},
+            DNS:${linux:system:name},
+            DNS:${linux:network:fqdn}
+          key_usage: "digitalSignature,nonRepudiation,keyEncipherment"
+          key_file: ${_param:mysql_ssl_key_file}
+          cert_file: ${_param:mysql_ssl_cert_file}
+          ca_file: ${_param:mysql_ssl_ca_file}
+          user: mysql
+          group: mysql
diff --git a/salt/minion/cert/octavia/amphora_client.yml b/salt/minion/cert/octavia/amphora_client.yml
new file mode 100644
index 0000000..fd8f465
--- /dev/null
+++ b/salt/minion/cert/octavia/amphora_client.yml
@@ -0,0 +1,12 @@
+classes:
+- system.salt.minion.cert.octavia
+parameters:
+  salt:
+    minion:
+      cert:
+        octavia_amp_client:
+          ca_file: ${octavia:manager:certificates:ca_certificate}
+          ca_key_file: ${octavia:manager:certificates:ca_private_key}
+          key_file: ${octavia:manager:haproxy_amphora:client_cert_key}
+          cert_file: ${octavia:manager:haproxy_amphora:client_cert}
+          all_file: ${octavia:manager:haproxy_amphora:client_cert_all}
diff --git a/salt/minion/cert/octavia_amp_client.yml b/salt/minion/cert/octavia/init.yml
similarity index 60%
rename from salt/minion/cert/octavia_amp_client.yml
rename to salt/minion/cert/octavia/init.yml
index 5219450..25d3ee4 100644
--- a/salt/minion/cert/octavia_amp_client.yml
+++ b/salt/minion/cert/octavia/init.yml
@@ -12,10 +12,5 @@
           common_name: octavia_amp_client
           signing_policy: cert_open
           key_usage: "digitalSignature,nonRepudiation,keyEncipherment"
-          ca_file: ${octavia:manager:certificates:ca_certificate}
-          ca_key_file: ${octavia:manager:certificates:ca_private_key}
-          key_file: ${octavia:manager:haproxy_amphora:client_cert_key}
-          cert_file: ${octavia:manager:haproxy_amphora:client_cert}
-          all_file: ${octavia:manager:haproxy_amphora:client_cert_all}
           user: octavia
           group: octavia
diff --git a/salt/minion/cert/opencontrail/tor.yml b/salt/minion/cert/opencontrail/tor.yml
new file mode 100644
index 0000000..eb9c704
--- /dev/null
+++ b/salt/minion/cert/opencontrail/tor.yml
@@ -0,0 +1,14 @@
+parameters:
+  _param:
+    salt_minion_ca_authority: salt_master_ca
+  salt:
+    minion:
+      cert:
+        opencontrail_tor:
+          host: ${_param:salt_minion_ca_host}
+          authority: ${_param:salt_minion_ca_authority}
+          common_name: opencontrail_tor
+          key_file: /etc/contrail/ssl/certs/tor.key
+          cert_file: /etc/contrail/ssl/certs/tor.crt
+          ca_file: /etc/contrail/ssl/certs/ca.crt
+          signing_policy: cert_open
diff --git a/salt/minion/cert/prometheus_server.yml b/salt/minion/cert/prometheus_server.yml
index 30a0711..154009b 100644
--- a/salt/minion/cert/prometheus_server.yml
+++ b/salt/minion/cert/prometheus_server.yml
@@ -9,5 +9,4 @@
           cert_file: ${prometheus:server:dir:config}/prometheus-server.crt
           common_name: prometheus-server
           signing_policy: cert_client
-          alternative_names: IP:${_param:cluster_vip_address},IP:${_param:cluster_node01_address},IP:${_param:cluster_node02_address},IP:${_param:cluster_node03_address},IP:${_param:kubernetes_internal_api_address}
           mode: '0444'
diff --git a/salt/minion/cert/salt_api.yml b/salt/minion/cert/salt_api.yml
new file mode 100644
index 0000000..acd9bba
--- /dev/null
+++ b/salt/minion/cert/salt_api.yml
@@ -0,0 +1,11 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        salt_api:
+          host: ${_param:salt_minion_ca_host}
+          authority: ${_param:salt_minion_ca_authority}
+          common_name: salt_api
+          signing_policy: cert_server
+          alternative_names: IP:${_param:salt_master_host},IP:127.0.0.1,DNS:${_param:infra_config_hostname}.${_param:cluster_domain}
+          mode: '0644'
diff --git a/sensu/server/cluster.yml b/sensu/server/cluster.yml
index 28eb78b..5c8fe85 100644
--- a/sensu/server/cluster.yml
+++ b/sensu/server/cluster.yml
@@ -11,6 +11,15 @@
     rabbitmq_cold_password: password
     rabbitmq_monitor_password: password
     sensu_message_queue_host: ${_param:cluster_vip_address}
+    cluster_redis_port: 6379
+  sensu:
+   server:
+     bind:
+       address: ${_param:single_address}
+     database:
+       engine: redis
+       host: ${_param:cluster_vip_address}
+       port: ${_param:cluster_redis_port}
   rabbitmq:
     cluster:
       name: 'monitoring'
diff --git a/telegraf/agent/remote/input/influxdb.yml b/telegraf/agent/remote/input/influxdb.yml
new file mode 100644
index 0000000..9b28476
--- /dev/null
+++ b/telegraf/agent/remote/input/influxdb.yml
@@ -0,0 +1,12 @@
+parameters:
+  _param:
+    telegraf_remote_agent_influxdb_port: 15016
+    telegraf_remote_agent_influxdb_protocol: http
+  telegraf:
+    remote_agent:
+      input:
+        influxdb:
+          servers:
+          - url: "${_param:telegraf_remote_agent_influxdb_protocol}://${_param:telegraf_remote_agent_influxdb_address}:${_param:telegraf_remote_agent_influxdb_port}/debug/vars"
+          tags:
+            host: ${_param:telegraf_remote_agent_influxdb_address}