Merge "Change stack_name"
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-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/elasticsearch-new-parameter-93a08f64ff1a22ab.yaml b/.releasenotes/notes/elasticsearch-new-parameter-93a08f64ff1a22ab.yaml
new file mode 100644
index 0000000..2382274
--- /dev/null
+++ b/.releasenotes/notes/elasticsearch-new-parameter-93a08f64ff1a22ab.yaml
@@ -0,0 +1,15 @@
+---
+summary: >
+  Added a new parameter for Elasticsearch
+
+features:
+  - |
+    Added the ``elasticsearch_version`` parameter to specify which version of
+    Elasticsearch should be deployed. By default, Elasticsearch v2 is
+    installed.
+
+    To deploy Elasticsearch v5, specify the ``elasticsearch_version: 5``
+    parameter in the
+    ``classes/cluster/<cluster_name>/stacklight/server.yml`` file of
+    the Reclass model of your MCP deployment.
+
diff --git a/.releasenotes/notes/kibana-new-parameter-29e59b161f750390.yaml b/.releasenotes/notes/kibana-new-parameter-29e59b161f750390.yaml
new file mode 100644
index 0000000..8805765
--- /dev/null
+++ b/.releasenotes/notes/kibana-new-parameter-29e59b161f750390.yaml
@@ -0,0 +1,13 @@
+---
+summary: >
+  Added a new parameter for Kibana
+
+features:
+  - |
+    Added the ``kibana_version`` parameter to specify which version of Kibana
+    should be deployed. By default, Kibana v4 is installed.
+
+    To deploy Kibana v5, specify the ``kibana_version: 5`` parameter in the
+    ``classes/cluster/<cluster_name>/stacklight/server.yml`` file of the
+    Reclass model of your MCP deployment.
+
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/new-classes-es-kibana-59e86910979d52a4.yaml b/.releasenotes/notes/new-classes-es-kibana-59e86910979d52a4.yaml
new file mode 100644
index 0000000..d6e2ecd
--- /dev/null
+++ b/.releasenotes/notes/new-classes-es-kibana-59e86910979d52a4.yaml
@@ -0,0 +1,21 @@
+---
+summary: >
+  Added two new classes for Elasticsearch and Kibana
+
+features:
+  - |
+    Added two new classes to support Elasticsearch v2 and v5 and Kibana
+    v4 and v5.
+    Update the Elasticsearch and Kibana classes in the
+    ``classes/cluster/<cluster_name>/stacklight/server.yml`` file of
+    the Reclass model of your MCP deployment according to the required
+    versions:
+
+    #. For Elasticsearch, change the ``linux.system.repo.elasticsearch`` class
+       to ``linux.system.repo.elasticsearch.2`` or ``linux.system.repo.elasticsearch.5``.
+       To deploy Elasticsearch version 2, specify the ``elasticsearch_version: 2``
+       parameter in the same file.
+    #. For Kibana, change the ``linux.system.repo.kibana`` class to
+       ``linux.system.repo.kibana.4`` or ``linux.system.repo.kibana.5``.
+       To deploy Kibana version 4, specify the ``kibana_version: 4``
+       parameter in the same file.
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/prometheus-2.0-2a7b3bc4ad76e118.yaml b/.releasenotes/notes/prometheus-2.0-2a7b3bc4ad76e118.yaml
new file mode 100644
index 0000000..6ba618b
--- /dev/null
+++ b/.releasenotes/notes/prometheus-2.0-2a7b3bc4ad76e118.yaml
@@ -0,0 +1,45 @@
+---
+summary: >
+  Updated the StackLight components to newer versions
+
+upgrade:
+  - |
+    Updated the following StackLight components:
+
+    - Prometheus server to version 2.0.0
+    - Alertmanager to version 0.11.0
+    - Pushgateway to version 0.4.0
+
+    .. important::
+
+       The new version of Prometheus is not backward compatible
+       with previous versions. Therefore, you must upgrade the
+       monitoring stack as described in the MCP Operations Guide.
+
+       If You want to stick to 1.7 (NOT RECOMMENDATED), update
+       reclass model:
+
+      .. code-block:: yaml
+
+         _param:
+           docker_image_alertmanager: docker-prod-virtual.docker.mirantis.net/openstack-docker/alertmanager:20171222124606
+           docker_image_pushgateway: docker-prod-virtual.docker.mirantis.net/openstack-docker/pushgateway:20171222124606
+           docker_image_prometheus: docker-prod-virtual.docker.mirantis.net/openstack-docker/prometheus:20171222124606
+           docker_image_remote_storage_adapter: docker-prod-virtual.docker.mirantis.net/openstack-docker/remote_storage_adapter:20171222124606
+         docker:
+           client:
+             stack:
+               monitoring:
+                 service:
+                   server:
+                     environment:
+                       PROMETHEUS_STORAGE_LOCAL_ENGINE: persisted
+                       PROMETHEUS_STORAGE_LOCAL_TARGET_HEAP_SIZE: 3221225472
+                       PROMETHEUS_STORAGE_LOCAL_NUM_FINGERPRINT_MUTEXES: 4096
+
+         prometheus:
+           server:
+             version: 1.7
+
+
+    .. TODO: Add a link to the upgrade procedure.
diff --git a/.releasenotes/notes/psql-issues-16cb5e030ef7dac5.yaml b/.releasenotes/notes/psql-issues-16cb5e030ef7dac5.yaml
new file mode 100644
index 0000000..9d0410e
--- /dev/null
+++ b/.releasenotes/notes/psql-issues-16cb5e030ef7dac5.yaml
@@ -0,0 +1,14 @@
+---
+summary: >
+  Enabled the Runbooks automation service to use an external datasource
+
+features:
+  - |
+    Enabled the Runbooks automation service to use an external datasource.
+    Now, you can configure the service to use the PostgreSQL database as an
+    external source for the datastore.
+
+    .. seealso::
+
+       * `MCP Operations Guide: Configure an external datasource <https://docs.mirantis.com/mcp/latest/mcp-operations-guide/devops-portal/use-runbooks-automation/configure-rundeck/configure-external-datasource.html>`__
+
diff --git a/.releasenotes/notes/raise-telegraf-version-a3e797a577b7e555.yaml b/.releasenotes/notes/raise-telegraf-version-a3e797a577b7e555.yaml
new file mode 100644
index 0000000..129681a
--- /dev/null
+++ b/.releasenotes/notes/raise-telegraf-version-a3e797a577b7e555.yaml
@@ -0,0 +1,9 @@
+---
+summary: >
+  Updated Telegraf to version 1.5
+
+upgrades:
+  - |
+    Changed the branch for building of the Telegraf package from v1.2 to
+    v1.5. The new branch includes the upstream release 1.5 branch and all
+    downstream improvements. By default, Telegraf v1.5 is installed.
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/rundeck-iframe-7b50b9185b0b27a5.yaml b/.releasenotes/notes/rundeck-iframe-7b50b9185b0b27a5.yaml
new file mode 100644
index 0000000..3f67dd4
--- /dev/null
+++ b/.releasenotes/notes/rundeck-iframe-7b50b9185b0b27a5.yaml
@@ -0,0 +1,18 @@
+---
+summary:
+  - Added the possibility to configure iFrame forwarding for the Runbooks
+    Automation service
+
+features:
+  - |
+    Added the possibility to configure iFrame forwarding for the Runbooks
+    Automation service. By default, the Rundeck service configuration does not
+    enable you to get access through an external proxy address and exposed
+    Rundeck port, which is 14440 by default. Now, you can easily forward the
+    Runbooks dashboard through a proxy endpoint in case of using the Devops
+    Portal through external proxy networks.
+
+    .. seealso::
+
+       * `MCP Operations Guide: Configure iFrame forwarding <https://docs.mirantis.com/mcp/latest/mcp-operations-guide/devops-portal/use-runbooks-automation/configure-rundeck/configure-iframe-forwarding.html>`__
+
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/.releasenotes/notes/switch-es-kibana-to-5-3ef55164a574e066.yaml b/.releasenotes/notes/switch-es-kibana-to-5-3ef55164a574e066.yaml
new file mode 100644
index 0000000..86692c7
--- /dev/null
+++ b/.releasenotes/notes/switch-es-kibana-to-5-3ef55164a574e066.yaml
@@ -0,0 +1,19 @@
+---
+summary: >
+  Updated Elasticsearch and Kibana to versions 5
+
+features:
+  - |
+    Updated Elasticsearch and Kibana to v5. Elasticsearch and Kibana v5
+    are now installed by default.
+
+    To upgrade existing Elasticsearch and Kibana installations to v5,
+    follow the procedures described in the MCP Operations Guide.
+
+    .. TODO: add a link to the upgrade procedure.
+
+    Kibana versions prior to 5.6.x are incompatible with Elasticsearch
+    5.x. Therefore, once you upgrade Elasticsearch to v5, you must also
+    upgrade Kibana to v5 as described in the MCP Operations Guide.
+
+    .. TODO: add a link to the upgrade procedure.
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 4e70a92..c33f169 100644
--- a/aptly/server/docker.yml
+++ b/aptly/server/docker.yml
@@ -8,13 +8,15 @@
     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..4682dc4 100644
--- a/aptly/server/mirror/debian/cassandra.yml
+++ b/aptly/server/mirror/debian/cassandra.yml
@@ -1,18 +1,23 @@
 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:
+      - A278B781FE4B2BDA
+      - 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/elasticsearch5.yml b/aptly/server/mirror/debian/elasticsearch5.yml
new file mode 100644
index 0000000..75368ba
--- /dev/null
+++ b/aptly/server/mirror/debian/elasticsearch5.yml
@@ -0,0 +1,46 @@
+parameters:
+  _param:
+    aptly_mirror_elasticsearch-5x_source: https://artifacts.elastic.co/packages/5.x/apt
+    aptly_mirror_elasticsearch-5x_distribution: stable
+    aptly_mirror_elasticsearch-5x_components: main
+    aptly_mirror_elasticsearch-5x_gpgkeys:
+      - D88E42B4
+    aptly_mirror_elasticsearch-curator-5x_source: https://packages.elastic.co/curator/5/debian
+    aptly_mirror_elasticsearch-curator-5x_distribution: stable
+    aptly_mirror_elasticsearch-curator-5x_components: main
+  aptly:
+    server:
+      mirror:
+        elasticsearch-5x:
+          source: ${_param:mirror_elasticsearch-5x_source}
+          distribution: ${_param:mirror_elasticsearch-5x_distribution}
+          components: ${_param:mirror_elasticsearch-5x_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_elasticsearch-5x_gpgkeys}
+          publisher:
+            component: elastic
+            distributions:
+              - trusty/${_param:apt_mk_version}
+              - xenial/${_param:apt_mk_version}
+        kibana-5x:
+          source: ${_param:aptly_mirror_elasticsearch-5x_source}
+          distribution: ${_param:aptly_mirror_elasticsearch-5x_distribution}
+          components: ${_param:aptly_mirror_elasticsearch-5x_components}
+          architectures: amd64
+          gpgkeys: ${_param:aptly_mirror_elasticsearch-5x_gpgkeys}
+          publisher:
+            component: elastic
+            distributions:
+              - trusty/${_param:apt_mk_version}
+              - xenial/${_param:apt_mk_version}
+        elasticsearch-curator-5x:
+          source: ${_param:aptly_mirror_elasticsearch-curator-5x_source}
+          distribution: ${_param:aptly_mirror_elasticsearch-curator-5x_distribution}
+          components: ${_param:aptly_mirror_elasticsearch-curator-5x_components}
+          architectures: amd64
+          gpgkeys: ${_param:aptly_mirror_elasticsearch-5x_gpgkeys}
+          publisher:
+            component: elastic
+            distributions:
+              - trusty/${_param:apt_mk_version}
+              - xenial/${_param:apt_mk_version}
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/cassandra.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/cassandra.yml
new file mode 100644
index 0000000..938fc7b
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/cassandra.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_trusty_cassandra_source: http://apt.mirantis.com/trusty/cassandra/
+    mirror_mirantis_openstack_trusty_cassandra_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_trusty_cassandra_components: 21x
+    mirror_mirantis_openstack_trusty_cassandra_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_trusty_cassandra_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_trusty_cassandra:
+          source: ${_param:mirror_mirantis_openstack_trusty_cassandra_source}
+          distribution: ${_param:mirror_mirantis_openstack_trusty_cassandra_distribution}
+          components: ${_param:mirror_mirantis_openstack_trusty_cassandra_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_trusty_cassandra_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_trusty_cassandra_gpgkeys}
+          publisher:
+            component: ${_param:mirror_mirantis_openstack_trusty_cassandra_components}
+            distributions:
+              - ubuntu-trusty/cassandra/${_param:apt_mk_version}/
\ No newline at end of file
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/grafana.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/grafana.yml
new file mode 100644
index 0000000..197e58c
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/grafana.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_trusty_grafana_source: http://apt.mirantis.com/trusty/grafana/
+    mirror_mirantis_openstack_trusty_grafana_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_trusty_grafana_components: main
+    mirror_mirantis_openstack_trusty_grafana_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_trusty_grafana_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_trusty_grafana:
+          source: ${_param:mirror_mirantis_openstack_trusty_grafana_source}
+          distribution: ${_param:mirror_mirantis_openstack_trusty_grafana_distribution}
+          components: ${_param:mirror_mirantis_openstack_trusty_grafana_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_trusty_grafana_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_trusty_grafana_gpgkeys}
+          publisher:
+            component: ${_param:mirror_mirantis_openstack_trusty_grafana_components}
+            distributions:
+              - ubuntu-trusty/grafana/${_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/openstack/mitaka.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/openstack/mitaka.yml
new file mode 100644
index 0000000..556e1a3
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/openstack/mitaka.yml
@@ -0,0 +1,103 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+
+    mirror_mirantis_openstack_mitaka_trusty_source: http://apt.mirantis.com/trusty/openstack/mitaka/
+    mirror_mirantis_openstack_mitaka_trusty_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_mitaka_trusty_components: main restricted
+    mirror_mirantis_openstack_mitaka_trusty_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_mitaka_trusty_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_mitaka_hotfix_trusty_source: http://apt.mirantis.com/trusty/openstack/mitaka/hotfix/
+    mirror_mirantis_openstack_mitaka_hotfix_trusty_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_mitaka_hotfix_trusty_components: main restricted
+    mirror_mirantis_openstack_mitaka_hotfix_trusty_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_mitaka_hotfix_trusty_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_mitaka_security_trusty_source: http://apt.mirantis.com/trusty/openstack/mitaka/security/
+    mirror_mirantis_openstack_mitaka_security_trusty_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_mitaka_security_trusty_components: main restricted
+    mirror_mirantis_openstack_mitaka_security_trusty_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_mitaka_security_trusty_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_mitaka_updates_trusty_source: http://apt.mirantis.com/trusty/openstack/mitaka/updates/
+    mirror_mirantis_openstack_mitaka_updates_trusty_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_mitaka_updates_trusty_components: main restricted
+    mirror_mirantis_openstack_mitaka_updates_trusty_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_mitaka_updates_trusty_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_mitaka_holdback_trusty_source: http://apt.mirantis.com/trusty/openstack/mitaka/holdback/
+    mirror_mirantis_openstack_mitaka_holdback_trusty_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_mitaka_holdback_trusty_components: main restricted
+    mirror_mirantis_openstack_mitaka_holdback_trusty_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_mitaka_holdback_trusty_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_mitaka_trusty:
+          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: ${_param:mirror_mirantis_openstack_mitaka_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_trusty_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/openstack/mitaka/${_param:apt_mk_version}
+
+        mirantis_openstack_mitaka_hotfix_trusty:
+          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: ${_param:mirror_mirantis_openstack_mitaka_hotfix_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_hotfix_trusty_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/openstack/mitaka/hotfix/${_param:apt_mk_version}
+
+        mirantis_openstack_mitaka_security_trusty:
+          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: ${_param:mirror_mirantis_openstack_mitaka_security_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_security_trusty_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/openstack/mitaka/security/${_param:apt_mk_version}
+
+        # required for alternative horizon plugins/etc..
+        mirantis_openstack_mitaka_updates_trusty:
+          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: ${_param:mirror_mirantis_openstack_mitaka_updates_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_updates_trusty_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/openstack/mitaka/updates/${_param:apt_mk_version}
+
+        # required for salt formulas
+        mirantis_openstack_mitaka_holdback_trusty:
+          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: ${_param:mirror_mirantis_openstack_mitaka_holdback_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_holdback_trusty_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/openstack/mitaka/holdback/${_param:apt_mk_version}
+
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/openstack/newton.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/openstack/newton.yml
new file mode 100644
index 0000000..ad867c3
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/openstack/newton.yml
@@ -0,0 +1,103 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+
+    mirror_mirantis_openstack_newton_trusty_source: http://apt.mirantis.com/trusty/openstack/newton/
+    mirror_mirantis_openstack_newton_trusty_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_newton_trusty_components: main restricted
+    mirror_mirantis_openstack_newton_trusty_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_newton_trusty_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_newton_hotfix_trusty_source: http://apt.mirantis.com/trusty/openstack/newton/hotfix/
+    mirror_mirantis_openstack_newton_hotfix_trusty_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_newton_hotfix_trusty_components: main restricted
+    mirror_mirantis_openstack_newton_hotfix_trusty_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_newton_hotfix_trusty_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_newton_security_trusty_source: http://apt.mirantis.com/trusty/openstack/newton/security/
+    mirror_mirantis_openstack_newton_security_trusty_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_newton_security_trusty_components: main restricted
+    mirror_mirantis_openstack_newton_security_trusty_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_newton_security_trusty_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_newton_updates_trusty_source: http://apt.mirantis.com/trusty/openstack/newton/updates/
+    mirror_mirantis_openstack_newton_updates_trusty_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_newton_updates_trusty_components: main restricted
+    mirror_mirantis_openstack_newton_updates_trusty_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_newton_updates_trusty_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_newton_holdback_trusty_source: http://apt.mirantis.com/trusty/openstack/newton/holdback/
+    mirror_mirantis_openstack_newton_holdback_trusty_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_newton_holdback_trusty_components: main restricted
+    mirror_mirantis_openstack_newton_holdback_trusty_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_newton_holdback_trusty_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_newton_trusty:
+          source: ${_param:mirror_mirantis_openstack_newton_trusty_source}
+          distribution: ${_param:mirror_mirantis_openstack_newton_trusty_distribution}
+          components: ${_param:mirror_mirantis_openstack_newton_trusty_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_newton_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_newton_trusty_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/openstack/newton/${_param:apt_mk_version}
+
+        mirantis_openstack_newton_hotfix_trusty:
+          source: ${_param:mirror_mirantis_openstack_newton_hotfix_trusty_source}
+          distribution: ${_param:mirror_mirantis_openstack_newton_hotfix_trusty_distribution}
+          components: ${_param:mirror_mirantis_openstack_newton_hotfix_trusty_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_newton_hotfix_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_newton_hotfix_trusty_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/openstack/newton/hotfix/${_param:apt_mk_version}
+
+        mirantis_openstack_newton_security_trusty:
+          source: ${_param:mirror_mirantis_openstack_newton_security_trusty_source}
+          distribution: ${_param:mirror_mirantis_openstack_newton_security_trusty_distribution}
+          components: ${_param:mirror_mirantis_openstack_newton_security_trusty_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_newton_security_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_newton_security_trusty_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/openstack/newton/security/${_param:apt_mk_version}
+
+        # required for alternative horizon plugins/etc..
+        mirantis_openstack_newton_updates_trusty:
+          source: ${_param:mirror_mirantis_openstack_newton_updates_trusty_source}
+          distribution: ${_param:mirror_mirantis_openstack_newton_updates_trusty_distribution}
+          components:  ${_param:mirror_mirantis_openstack_newton_updates_trusty_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_newton_updates_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_newton_updates_trusty_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/openstack/newton/updates/${_param:apt_mk_version}
+
+        # required for salt formulas
+        mirantis_openstack_newton_holdback_trusty:
+          source: ${_param:mirror_mirantis_openstack_newton_holdback_trusty_source}
+          distribution: ${_param:mirror_mirantis_openstack_newton_holdback_trusty_distribution}
+          components: ${_param:mirror_mirantis_openstack_newton_holdback_trusty_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_newton_holdback_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_newton_holdback_trusty_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/openstack/newton/holdback/${_param:apt_mk_version}
+
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/openstack/ocata.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/openstack/ocata.yml
new file mode 100644
index 0000000..c01b864
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/openstack/ocata.yml
@@ -0,0 +1,103 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+
+    mirror_mirantis_openstack_ocata_trusty_source: http://apt.mirantis.com/trusty/openstack/ocata/
+    mirror_mirantis_openstack_ocata_trusty_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_ocata_trusty_components: main restricted
+    mirror_mirantis_openstack_ocata_trusty_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_ocata_trusty_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_ocata_hotfix_trusty_source: http://apt.mirantis.com/trusty/openstack/ocata/hotfix/
+    mirror_mirantis_openstack_ocata_hotfix_trusty_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_ocata_hotfix_trusty_components: main restricted
+    mirror_mirantis_openstack_ocata_hotfix_trusty_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_ocata_hotfix_trusty_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_ocata_security_trusty_source: http://apt.mirantis.com/trusty/openstack/ocata/security/
+    mirror_mirantis_openstack_ocata_security_trusty_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_ocata_security_trusty_components: main restricted
+    mirror_mirantis_openstack_ocata_security_trusty_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_ocata_security_trusty_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_ocata_updates_trusty_source: http://apt.mirantis.com/trusty/openstack/ocata/updates/
+    mirror_mirantis_openstack_ocata_updates_trusty_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_ocata_updates_trusty_components: main restricted
+    mirror_mirantis_openstack_ocata_updates_trusty_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_ocata_updates_trusty_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_ocata_holdback_trusty_source: http://apt.mirantis.com/trusty/openstack/ocata/holdback/
+    mirror_mirantis_openstack_ocata_holdback_trusty_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_ocata_holdback_trusty_components: main restricted
+    mirror_mirantis_openstack_ocata_holdback_trusty_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_ocata_holdback_trusty_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_ocata_trusty:
+          source: ${_param:mirror_mirantis_openstack_ocata_trusty_source}
+          distribution: ${_param:mirror_mirantis_openstack_ocata_trusty_distribution}
+          components: ${_param:mirror_mirantis_openstack_ocata_trusty_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_ocata_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_ocata_trusty_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/openstack/ocata/${_param:apt_mk_version}
+
+        mirantis_openstack_ocata_hotfix_trusty:
+          source: ${_param:mirror_mirantis_openstack_ocata_hotfix_trusty_source}
+          distribution: ${_param:mirror_mirantis_openstack_ocata_hotfix_trusty_distribution}
+          components: ${_param:mirror_mirantis_openstack_ocata_hotfix_trusty_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_ocata_hotfix_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_ocata_hotfix_trusty_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/openstack/ocata/hotfix/${_param:apt_mk_version}
+
+        mirantis_openstack_ocata_security_trusty:
+          source: ${_param:mirror_mirantis_openstack_ocata_security_trusty_source}
+          distribution: ${_param:mirror_mirantis_openstack_ocata_security_trusty_distribution}
+          components: ${_param:mirror_mirantis_openstack_ocata_security_trusty_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_ocata_security_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_ocata_security_trusty_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/openstack/ocata/security/${_param:apt_mk_version}
+
+        # required for alternative horizon plugins/etc..
+        mirantis_openstack_ocata_updates_trusty:
+          source: ${_param:mirror_mirantis_openstack_ocata_updates_trusty_source}
+          distribution: ${_param:mirror_mirantis_openstack_ocata_updates_trusty_distribution}
+          components:  ${_param:mirror_mirantis_openstack_ocata_updates_trusty_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_ocata_updates_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_ocata_updates_trusty_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/openstack/ocata/updates/${_param:apt_mk_version}
+
+        # required for salt formulas
+        mirantis_openstack_ocata_holdback_trusty:
+          source: ${_param:mirror_mirantis_openstack_ocata_holdback_trusty_source}
+          distribution: ${_param:mirror_mirantis_openstack_ocata_holdback_trusty_distribution}
+          components: ${_param:mirror_mirantis_openstack_ocata_holdback_trusty_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_ocata_holdback_trusty_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_ocata_holdback_trusty_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/openstack/ocata/holdback/${_param:apt_mk_version}
+
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/apt_mk/saltstack/init.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/saltstack/init.yml
new file mode 100644
index 0000000..8dfe2cd
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/saltstack/init.yml
@@ -0,0 +1,3 @@
+classes:
+- system.aptly.server.mirror.ubuntu.trusty.mcp.apt_mk.saltstack.salt-2016-3
+- system.aptly.server.mirror.ubuntu.trusty.mcp.apt_mk.saltstack.salt-2017-7
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/saltstack/salt-2016-3.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/saltstack/salt-2016-3.yml
new file mode 100644
index 0000000..19b002a
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/saltstack/salt-2016-3.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_trusty_saltstack_2016_3_source: http://apt.mirantis.com/trusty/salt/2016.3/
+    mirror_mirantis_openstack_trusty_saltstack_2016_3_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_trusty_saltstack_2016_3_components: main
+    mirror_mirantis_openstack_trusty_saltstack_2016_3_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_trusty_saltstack_2016_3_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_trusty_saltstack_2016_3:
+          source: ${_param:mirror_mirantis_openstack_trusty_saltstack_2016_3_source}
+          distribution: ${_param:mirror_mirantis_openstack_trusty_saltstack_2016_3_distribution}
+          components: ${_param:mirror_mirantis_openstack_trusty_saltstack_2016_3_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_trusty_saltstack_2016_3_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_trusty_saltstack_2016_3_gpgkeys}
+          publisher:
+            component: ${_param:mirror_mirantis_openstack_trusty_saltstack_2016_3_components}
+            distributions:
+              - ubuntu-trusty/salt/2016.3/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/saltstack/salt-2017-7.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/saltstack/salt-2017-7.yml
new file mode 100644
index 0000000..703d0bf
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/saltstack/salt-2017-7.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_trusty_saltstack_2017_7_source: http://apt.mirantis.com/trusty/salt/2017.7/
+    mirror_mirantis_openstack_trusty_saltstack_2017_7_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_trusty_saltstack_2017_7_components: main
+    mirror_mirantis_openstack_trusty_saltstack_2017_7_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_trusty_saltstack_2017_7_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_trusty_saltstack_2017_7:
+          source: ${_param:mirror_mirantis_openstack_trusty_saltstack_2017_7_source}
+          distribution: ${_param:mirror_mirantis_openstack_trusty_saltstack_2017_7_distribution}
+          components: ${_param:mirror_mirantis_openstack_trusty_saltstack_2017_7_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_trusty_saltstack_2017_7_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_trusty_saltstack_2017_7_gpgkeys}
+          publisher:
+            component: ${_param:mirror_mirantis_openstack_trusty_saltstack_2017_7_components}
+            distributions:
+              - ubuntu-trusty/salt/2017.7/${_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..383aeda 100644
--- a/aptly/server/mirror/ubuntu/trusty/rabbitmq.yml
+++ b/aptly/server/mirror/ubuntu/trusty/rabbitmq.yml
@@ -1,14 +1,20 @@
 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:
+      - 6B73A36E6026DFCA
+      - 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 3495967..0000000
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu.yml
+++ /dev/null
@@ -1,297 +0,0 @@
-parameters:
-  _param:
-    linux_system_country_code: cz
-    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-  aptly:
-    server:
-      mirror:
-        # trusty
-        trusty-main:
-          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
-          distribution: trusty
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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/
-          sources: ${_param:aptly_server_mirror_ubuntu_trusty_sources}
-          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..5ae8bdb
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/main.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-backports-main_source: http://${_param:ubuntu_mirror_url}/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..d04b27a
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/multiverse.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-backports-multiverse_source: http://${_param:ubuntu_mirror_url}/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..21b6a27
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/restricted.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-backports-restricted_source: http://${_param:ubuntu_mirror_url}/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..0134502
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/universe.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-backports-universe_source: http://${_param:ubuntu_mirror_url}/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..6aadd64
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/main.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-proposed-main_source: http://${_param:ubuntu_mirror_url}/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..af81ef1
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/multiverse.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-proposed-multiverse_source: http://${_param:ubuntu_mirror_url}/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..519cb0f
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/restricted.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-proposed-restricted_source: http://${_param:ubuntu_mirror_url}/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..f3a5c34
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/universe.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-proposed-universe_source: http://${_param:ubuntu_mirror_url}/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..9b0dbf6
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/main.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-security-main_source: http://${_param:ubuntu_mirror_url}/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..6bb3f80
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/multiverse.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-security-multiverse_source: http://${_param:ubuntu_mirror_url}/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..1810a8d
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/restricted.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-security-restricted_source: http://${_param:ubuntu_mirror_url}/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..8700025
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/universe.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-security-universe_source: http://${_param:ubuntu_mirror_url}/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..bc4e985
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/main.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-updates-main_source: http://${_param:ubuntu_mirror_url}/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..1b0b21b
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/multiverse.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-updates-multiverse_source: http://${_param:ubuntu_mirror_url}/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..7a6c4a6
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/restricted.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-updates-restricted_source: http://${_param:ubuntu_mirror_url}/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..f64f9b3
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/universe.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-updates-universe_source: http://${_param:ubuntu_mirror_url}/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..33b4693
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/main.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-main_source: http://${_param:ubuntu_mirror_url}/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..68f1586
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/multiverse.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-multiverse_source: http://${_param:ubuntu_mirror_url}/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..78d552c
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/restricted.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-restricted_source: http://${_param:ubuntu_mirror_url}/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..f24c1ab
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/universe.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_trusty-universe_source: http://${_param:ubuntu_mirror_url}/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/aptly.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/aptly.yml
new file mode 100644
index 0000000..507ed5e
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/aptly.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_xenial_aptly_source: http://apt.mirantis.com/xenial/aptly/
+    mirror_mirantis_openstack_xenial_aptly_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_aptly_components: main
+    mirror_mirantis_openstack_xenial_aptly_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_aptly_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_xenial_aptly:
+          source: ${_param:mirror_mirantis_openstack_xenial_aptly_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_aptly_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_aptly_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_xenial_aptly_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_aptly_gpgkeys}
+          publisher:
+            component: ${_param:mirror_mirantis_openstack_xenial_aptly_components}
+            distributions:
+              - ubuntu-xenial/aptly/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/cassandra.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/cassandra.yml
new file mode 100644
index 0000000..5afbf77
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/cassandra.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_xenial_cassandra_source: http://apt.mirantis.com/xenial/cassandra/
+    mirror_mirantis_openstack_xenial_cassandra_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_cassandra_components: 21x
+    mirror_mirantis_openstack_xenial_cassandra_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_cassandra_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_xenial_cassandra:
+          source: ${_param:mirror_mirantis_openstack_xenial_cassandra_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_cassandra_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_cassandra_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_xenial_cassandra_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_cassandra_gpgkeys}
+          publisher:
+            component: ${_param:mirror_mirantis_openstack_xenial_cassandra_components}
+            distributions:
+              - ubuntu-xenial/cassandra/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/ceph.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/ceph.yml
new file mode 100644
index 0000000..a0b1293
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/ceph.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_xenial_ceph_source: http://apt.mirantis.com/xenial/ceph/
+    mirror_mirantis_openstack_xenial_ceph_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_ceph_components: luminous
+    mirror_mirantis_openstack_xenial_ceph_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_ceph_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_xenial_ceph:
+          source: ${_param:mirror_mirantis_openstack_xenial_ceph_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_ceph_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_ceph_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_xenial_ceph_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_ceph_gpgkeys}
+          publisher:
+            component: ${_param:mirror_mirantis_openstack_xenial_ceph_components}
+            distributions:
+              - ubuntu-xenial/ceph/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/docker.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/docker.yml
new file mode 100644
index 0000000..703d202
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/docker.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_xenial_docker_source: http://apt.mirantis.com/xenial/docker/
+    mirror_mirantis_openstack_xenial_docker_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_docker_components: stable
+    mirror_mirantis_openstack_xenial_docker_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_docker_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_xenial_docker:
+          source: ${_param:mirror_mirantis_openstack_xenial_docker_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_docker_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_docker_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_xenial_docker_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_docker_gpgkeys}
+          publisher:
+            component: ${_param:mirror_mirantis_openstack_xenial_docker_components}
+            distributions:
+              - ubuntu-xenial/docker/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic.yml
new file mode 100644
index 0000000..b4946e1
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_xenial_elastic_source: http://apt.mirantis.com/xenial/elastic/2.x/
+    mirror_mirantis_openstack_xenial_elastic_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_elastic_components: main
+    mirror_mirantis_openstack_xenial_elastic_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_elastic_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_xenial_elastic:
+          source: ${_param:mirror_mirantis_openstack_xenial_elastic_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_elastic_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_elastic_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_xenial_elastic_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_elastic_gpgkeys}
+          publisher:
+            component: ${_param:mirror_mirantis_openstack_xenial_elastic_components}
+            distributions:
+              - ubuntu-xenial/elastic/2.x/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/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/glusterfs.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/glusterfs.yml
new file mode 100644
index 0000000..cfec221
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/glusterfs.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_xenial_glusterfs_source: http://apt.mirantis.com/xenial/glusterfs/
+    mirror_mirantis_openstack_xenial_glusterfs_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_glusterfs_components: '"3.12"'
+    mirror_mirantis_openstack_xenial_glusterfs_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_glusterfs_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_xenial_glusterfs:
+          source: ${_param:mirror_mirantis_openstack_xenial_glusterfs_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_glusterfs_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_glusterfs_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_xenial_glusterfs_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_glusterfs_gpgkeys}
+          publisher:
+            component: ${_param:mirror_mirantis_openstack_xenial_glusterfs_components}
+            distributions:
+              - ubuntu-xenial/glusterfs/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/grafana.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/grafana.yml
new file mode 100644
index 0000000..e09ba61
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/grafana.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_xenial_grafana_source: http://apt.mirantis.com/xenial/grafana/
+    mirror_mirantis_openstack_xenial_grafana_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_grafana_components: main
+    mirror_mirantis_openstack_xenial_grafana_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_grafana_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_xenial_grafana:
+          source: ${_param:mirror_mirantis_openstack_xenial_grafana_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_grafana_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_grafana_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_xenial_grafana_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_grafana_gpgkeys}
+          publisher:
+            component: ${_param:mirror_mirantis_openstack_xenial_grafana_components}
+            distributions:
+              - ubuntu-xenial/grafana/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/influxdb.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/influxdb.yml
new file mode 100644
index 0000000..01093fe
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/influxdb.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_xenial_influxdb_source: http://apt.mirantis.com/xenial/influxdb/
+    mirror_mirantis_openstack_xenial_influxdb_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_influxdb_components: main
+    mirror_mirantis_openstack_xenial_influxdb_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_influxdb_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_xenial_influxdb:
+          source: ${_param:mirror_mirantis_openstack_xenial_influxdb_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_influxdb_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_influxdb_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_xenial_influxdb_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_influxdb_gpgkeys}
+          publisher:
+            component: ${_param:mirror_mirantis_openstack_xenial_influxdb_components}
+            distributions:
+              - ubuntu-xenial/influxdb/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/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/kibana.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/kibana.yml
new file mode 100644
index 0000000..40df719
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/kibana.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_xenial_kibana_source: http://apt.mirantis.com/xenial/kibana/4.6/
+    mirror_mirantis_openstack_xenial_kibana_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_kibana_components: "kibana-46"
+    mirror_mirantis_openstack_xenial_kibana_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_kibana_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_xenial_kibana:
+          source: ${_param:mirror_mirantis_openstack_xenial_kibana_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_kibana_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_kibana_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_xenial_kibana_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_kibana_gpgkeys}
+          publisher:
+            component: ${_param:mirror_mirantis_openstack_xenial_kibana_components}
+            distributions:
+              - ubuntu-xenial/kibana/4.6/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/maas.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/maas.yml
new file mode 100644
index 0000000..3d63b00
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/maas.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_xenial_maas_source: http://apt.mirantis.com/xenial/maas/
+    mirror_mirantis_openstack_xenial_maas_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_maas_components: main
+    mirror_mirantis_openstack_xenial_maas_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_maas_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_xenial_maas:
+          source: ${_param:mirror_mirantis_openstack_xenial_maas_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_maas_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_maas_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_xenial_maas_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_maas_gpgkeys}
+          publisher:
+            component: ${_param:mirror_mirantis_openstack_xenial_maas_components}
+            distributions:
+              - ubuntu-xenial/maas/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/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/openstack/mitaka.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/openstack/mitaka.yml
new file mode 100644
index 0000000..d50b2ca
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/openstack/mitaka.yml
@@ -0,0 +1,103 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+
+    mirror_mirantis_openstack_mitaka_xenial_source: http://apt.mirantis.com/xenial/openstack/mitaka/
+    mirror_mirantis_openstack_mitaka_xenial_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_mitaka_xenial_components: main restricted
+    mirror_mirantis_openstack_mitaka_xenial_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_mitaka_xenial_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_mitaka_hotfix_xenial_source: http://apt.mirantis.com/xenial/openstack/mitaka/hotfix/
+    mirror_mirantis_openstack_mitaka_hotfix_xenial_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_mitaka_hotfix_xenial_components: main restricted
+    mirror_mirantis_openstack_mitaka_hotfix_xenial_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_mitaka_hotfix_xenial_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_mitaka_security_xenial_source: http://apt.mirantis.com/xenial/openstack/mitaka/security/
+    mirror_mirantis_openstack_mitaka_security_xenial_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_mitaka_security_xenial_components: main restricted
+    mirror_mirantis_openstack_mitaka_security_xenial_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_mitaka_security_xenial_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_mitaka_updates_xenial_source: http://apt.mirantis.com/xenial/openstack/mitaka/updates/
+    mirror_mirantis_openstack_mitaka_updates_xenial_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_mitaka_updates_xenial_components: main restricted
+    mirror_mirantis_openstack_mitaka_updates_xenial_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_mitaka_updates_xenial_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_mitaka_holdback_xenial_source: http://apt.mirantis.com/xenial/openstack/mitaka/holdback/
+    mirror_mirantis_openstack_mitaka_holdback_xenial_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_mitaka_holdback_xenial_components: main restricted
+    mirror_mirantis_openstack_mitaka_holdback_xenial_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_mitaka_holdback_xenial_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_mitaka_xenial:
+          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: ${_param:mirror_mirantis_openstack_mitaka_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_xenial_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/openstack/mitaka/${_param:apt_mk_version}
+
+        mirantis_openstack_mitaka_hotfix_xenial:
+          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: ${_param:mirror_mirantis_openstack_mitaka_hotfix_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_hotfix_xenial_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/openstack/mitaka/hotfix/${_param:apt_mk_version}
+
+        mirantis_openstack_mitaka_security_xenial:
+          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: ${_param:mirror_mirantis_openstack_mitaka_security_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_security_xenial_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/openstack/mitaka/security/${_param:apt_mk_version}
+
+        # required for alternative horizon plugins/etc..
+        mirantis_openstack_mitaka_updates_xenial:
+          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: ${_param:mirror_mirantis_openstack_mitaka_updates_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_updates_xenial_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/openstack/mitaka/updates/${_param:apt_mk_version}
+
+        # required for salt formulas
+        mirantis_openstack_mitaka_holdback_xenial:
+          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: ${_param:mirror_mirantis_openstack_mitaka_holdback_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_mitaka_holdback_xenial_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/openstack/mitaka/holdback/${_param:apt_mk_version}
+
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/openstack/newton.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/openstack/newton.yml
new file mode 100644
index 0000000..95eb192
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/openstack/newton.yml
@@ -0,0 +1,103 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+
+    mirror_mirantis_openstack_newton_xenial_source: http://apt.mirantis.com/xenial/openstack/newton/
+    mirror_mirantis_openstack_newton_xenial_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_newton_xenial_components: main restricted
+    mirror_mirantis_openstack_newton_xenial_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_newton_xenial_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_newton_hotfix_xenial_source: http://apt.mirantis.com/xenial/openstack/newton/hotfix/
+    mirror_mirantis_openstack_newton_hotfix_xenial_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_newton_hotfix_xenial_components: main restricted
+    mirror_mirantis_openstack_newton_hotfix_xenial_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_newton_hotfix_xenial_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_newton_security_xenial_source: http://apt.mirantis.com/xenial/openstack/newton/security/
+    mirror_mirantis_openstack_newton_security_xenial_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_newton_security_xenial_components: main restricted
+    mirror_mirantis_openstack_newton_security_xenial_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_newton_security_xenial_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_newton_updates_xenial_source: http://apt.mirantis.com/xenial/openstack/newton/updates/
+    mirror_mirantis_openstack_newton_updates_xenial_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_newton_updates_xenial_components: main restricted
+    mirror_mirantis_openstack_newton_updates_xenial_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_newton_updates_xenial_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_newton_holdback_xenial_source: http://apt.mirantis.com/xenial/openstack/newton/holdback/
+    mirror_mirantis_openstack_newton_holdback_xenial_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_newton_holdback_xenial_components: main restricted
+    mirror_mirantis_openstack_newton_holdback_xenial_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_newton_holdback_xenial_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_newton_xenial:
+          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: ${_param:mirror_mirantis_openstack_newton_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_newton_xenial_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/openstack/newton/${_param:apt_mk_version}
+
+        mirantis_openstack_newton_hotfix_xenial:
+          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: ${_param:mirror_mirantis_openstack_newton_hotfix_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_newton_hotfix_xenial_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/openstack/newton/hotfix/${_param:apt_mk_version}
+
+        mirantis_openstack_newton_security_xenial:
+          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: ${_param:mirror_mirantis_openstack_newton_security_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_newton_security_xenial_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/openstack/newton/security/${_param:apt_mk_version}
+
+        # required for alternative horizon plugins/etc..
+        mirantis_openstack_newton_updates_xenial:
+          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: ${_param:mirror_mirantis_openstack_newton_updates_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_newton_updates_xenial_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/openstack/newton/updates/${_param:apt_mk_version}
+
+        # required for salt formulas
+        mirantis_openstack_newton_holdback_xenial:
+          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: ${_param:mirror_mirantis_openstack_newton_holdback_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_newton_holdback_xenial_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/openstack/newton/holdback/${_param:apt_mk_version}
+
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/openstack/ocata.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/openstack/ocata.yml
new file mode 100644
index 0000000..67f11c8
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/openstack/ocata.yml
@@ -0,0 +1,103 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+
+    mirror_mirantis_openstack_ocata_xenial_source: http://apt.mirantis.com/xenial/openstack/ocata/
+    mirror_mirantis_openstack_ocata_xenial_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_ocata_xenial_components: main restricted
+    mirror_mirantis_openstack_ocata_xenial_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_ocata_xenial_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_ocata_hotfix_xenial_source: http://apt.mirantis.com/xenial/openstack/ocata/hotfix/
+    mirror_mirantis_openstack_ocata_hotfix_xenial_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_ocata_hotfix_xenial_components: main restricted
+    mirror_mirantis_openstack_ocata_hotfix_xenial_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_ocata_hotfix_xenial_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_ocata_security_xenial_source: http://apt.mirantis.com/xenial/openstack/ocata/security/
+    mirror_mirantis_openstack_ocata_security_xenial_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_ocata_security_xenial_components: main restricted
+    mirror_mirantis_openstack_ocata_security_xenial_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_ocata_security_xenial_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_ocata_updates_xenial_source: http://apt.mirantis.com/xenial/openstack/ocata/updates/
+    mirror_mirantis_openstack_ocata_updates_xenial_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_ocata_updates_xenial_components: main restricted
+    mirror_mirantis_openstack_ocata_updates_xenial_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_ocata_updates_xenial_gpgkeys:
+      - A76882D3
+
+    mirror_mirantis_openstack_ocata_holdback_xenial_source: http://apt.mirantis.com/xenial/openstack/ocata/holdback/
+    mirror_mirantis_openstack_ocata_holdback_xenial_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_ocata_holdback_xenial_components: main restricted
+    mirror_mirantis_openstack_ocata_holdback_xenial_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_ocata_holdback_xenial_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_ocata_xenial:
+          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: ${_param:mirror_mirantis_openstack_ocata_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_ocata_xenial_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/openstack/ocata/${_param:apt_mk_version}
+
+        mirantis_openstack_ocata_hotfix_xenial:
+          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: ${_param:mirror_mirantis_openstack_ocata_hotfix_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_ocata_hotfix_xenial_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/openstack/ocata/hotfix/${_param:apt_mk_version}
+
+        mirantis_openstack_ocata_security_xenial:
+          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: ${_param:mirror_mirantis_openstack_ocata_security_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_ocata_security_xenial_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/openstack/ocata/security/${_param:apt_mk_version}
+
+        # required for alternative horizon plugins/etc..
+        mirantis_openstack_ocata_updates_xenial:
+          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: ${_param:mirror_mirantis_openstack_ocata_updates_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_ocata_updates_xenial_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/openstack/ocata/updates/${_param:apt_mk_version}
+
+        # required for salt formulas
+        mirantis_openstack_ocata_holdback_xenial:
+          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: ${_param:mirror_mirantis_openstack_ocata_holdback_xenial_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_ocata_holdback_xenial_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/openstack/ocata/holdback/${_param:apt_mk_version}
+
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/apt_mk/saltstack/init.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/saltstack/init.yml
new file mode 100644
index 0000000..59952be
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/saltstack/init.yml
@@ -0,0 +1,3 @@
+classes:
+- system.aptly.server.mirror.ubuntu.xenial.mcp.apt_mk.saltstack.salt-2016-3
+- system.aptly.server.mirror.ubuntu.xenial.mcp.apt_mk.saltstack.salt-2017-7
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/saltstack/salt-2016-3.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/saltstack/salt-2016-3.yml
new file mode 100644
index 0000000..86a33e6
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/saltstack/salt-2016-3.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_xenial_saltstack_2016_3_source: http://apt.mirantis.com/xenial/salt/2016.3/
+    mirror_mirantis_openstack_xenial_saltstack_2016_3_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_saltstack_2016_3_components: main
+    mirror_mirantis_openstack_xenial_saltstack_2016_3_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_saltstack_2016_3_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_xenial_saltstack_2016_3:
+          source: ${_param:mirror_mirantis_openstack_xenial_saltstack_2016_3_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_saltstack_2016_3_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_saltstack_2016_3_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_xenial_saltstack_2016_3_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_saltstack_2016_3_gpgkeys}
+          publisher:
+            component: ${_param:mirror_mirantis_openstack_xenial_saltstack_2016_3_components}
+            distributions:
+              - ubuntu-xenial/salt/2016.3/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/saltstack/salt-2017-7.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/saltstack/salt-2017-7.yml
new file mode 100644
index 0000000..0478cde
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/saltstack/salt-2017-7.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_xenial_saltstack_2017_7_source: http://apt.mirantis.com/xenial/salt/2017.7/
+    mirror_mirantis_openstack_xenial_saltstack_2017_7_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_saltstack_2017_7_components: main
+    mirror_mirantis_openstack_xenial_saltstack_2017_7_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_saltstack_2017_7_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_xenial_saltstack_2017_7:
+          source: ${_param:mirror_mirantis_openstack_xenial_saltstack_2017_7_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_saltstack_2017_7_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_saltstack_2017_7_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_xenial_saltstack_2017_7_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_saltstack_2017_7_gpgkeys}
+          publisher:
+            component: ${_param:mirror_mirantis_openstack_xenial_saltstack_2017_7_components}
+            distributions:
+              - ubuntu-xenial/salt/2017.7/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/sensu.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/sensu.yml
new file mode 100644
index 0000000..505ec97
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/sensu.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    mirror_mirantis_openstack_xenial_sensu_source: http://apt.mirantis.com/xenial/sensu/
+    mirror_mirantis_openstack_xenial_sensu_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_xenial_sensu_components: main
+    mirror_mirantis_openstack_xenial_sensu_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_sensu_gpgkeys:
+      - A76882D3
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_xenial_sensu:
+          source: ${_param:mirror_mirantis_openstack_xenial_sensu_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_sensu_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_sensu_components}
+          architectures: amd64
+          key_url: ${_param:mirror_mirantis_openstack_xenial_sensu_key_url}
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_sensu_gpgkeys}
+          publisher:
+            component: ${_param:mirror_mirantis_openstack_xenial_sensu_components}
+            distributions:
+              - ubuntu-xenial/sensu/${_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 6b41aee..0000000
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu.yml
+++ /dev/null
@@ -1,293 +0,0 @@
-parameters:
-  _param:
-    linux_system_country_code_default: cz
-    linux_system_country_code: ${_param:linux_system_country_code_default}
-    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-  aptly:
-    server:
-      mirror:
-        # xenial
-        xenial-main:
-          sources: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
-          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: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
-          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: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
-          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: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
-          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: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
-          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: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
-          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: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
-          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: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
-          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: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
-          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: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
-          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: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
-          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: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
-          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: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
-          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: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
-          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: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
-          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: ${_param:aptly_server_mirror_ubuntu_xenial_sources}
-          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..1fbb17d
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/main.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-backports-main_source: http://${_param:ubuntu_mirror_url}/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..be45547
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/multiverse.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-backports-multiverse_source: http://${_param:ubuntu_mirror_url}/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..dcf8ede
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/restricted.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-backports-restricted_source: http://${_param:ubuntu_mirror_url}/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..9945a73
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/universe.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-backports-universe_source: http://${_param:ubuntu_mirror_url}/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..1ec8777
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/main.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-proposed-main_source: http://${_param:ubuntu_mirror_url}/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..48a2ddc
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/multiverse.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-proposed-multiverse_source: http://${_param:ubuntu_mirror_url}/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..d301c81
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/restricted.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-proposed-restricted_source: http://${_param:ubuntu_mirror_url}/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..8ddd769
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/universe.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-proposed-universe_source: http://${_param:ubuntu_mirror_url}/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..a4977cc
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/main.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-security-main_source: http://${_param:ubuntu_mirror_url}/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..8b40566
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/multiverse.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-security-multiverse_source: http://${_param:ubuntu_mirror_url}/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..82beadd
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/restricted.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-security-restricted_source: http://${_param:ubuntu_mirror_url}/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..6383be6
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/universe.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-security-universe_source: http://${_param:ubuntu_mirror_url}/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..810e8f6
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/main.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-updates-main_source: http://${_param:ubuntu_mirror_url}/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..13546b2
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/multiverse.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-updates-multiverse_source: http://${_param:ubuntu_mirror_url}/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..870caa0
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/restricted.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-updates-restricted_source: http://${_param:ubuntu_mirror_url}/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..cf050fd
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/universe.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-updates-universe_source: http://${_param:ubuntu_mirror_url}/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..c1e5969
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/main.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-main_source: http://${_param:ubuntu_mirror_url}/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..aff82a6
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/multiverse.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-multiverse_source: http://${_param:ubuntu_mirror_url}/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..78a8ca9
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/restricted.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-restricted_source: http://${_param:ubuntu_mirror_url}/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..c0c67ff
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/universe.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    linux_system_country_code: cz
+    aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
+    ubuntu_mirror_url: ${_param:linux_system_country_code}.archive.ubuntu.com
+    mirror_xenial-universe_source: http://${_param:ubuntu_mirror_url}/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/artifactory/client/init.yml b/artifactory/client/init.yml
index ef43633..614266e 100644
--- a/artifactory/client/init.yml
+++ b/artifactory/client/init.yml
@@ -7,129 +7,296 @@
         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}
           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}
-          ssl_verify: False
         repo:
+          # Please keep repo list sorted
+
           _genericRepository-local:
+            rclass: local
+            packageType: generic
             description: "Used by Jimbo"
-            repo_type: local
-            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:
+            rclass: remote
+            packageType: generic
             description: "Used by Jimbo"
-            repo_type: remote
-            package_type: generic
             url: http://localhost
+
+          _genericRepository-virtual:
+            rclass: virtual
+            packageType: generic
+            description: "Used by Jimbo"
+            repositories:
+            - _genericRepository-local
+            - _genericRepository-remote
+
+          apk-local:
+            rclass: local
+            packageType: generic
+
           apk-remote:
-            repo_type: remote
-            package_type: generic
+            rclass: remote
+            packageType: generic
             url: http://dl-cdn.alpinelinux.org/alpine/
+
+          apk-virtual:
+            rclass: virtual
+            packageType: generic
+            repositories:
+            - apk-local
+            - apk-remote
+
           apt-docker-project:
-            repo_type: remote
-            package_type: debian
+            rclass: remote
+            packageType: debian
             url: https://apt.dockerproject.org/repo
+
           artifactory-pro-debian:
-            repo_type: remote
-            package_type: debian
+            rclass: remote
+            packageType: debian
             url: https://jfrog.bintray.com/artifactory-pro-debs
+
+          artifactory-pro-rpm:
+            rclass: remote
+            packageType: yum
+            url: http://jfrog.bintray.com/artifactory-pro-rpms
+
+          binary-dev-local:
+            rclass: local
+            packageType: generic
+
+          binary-dev-virtual:
+            rclass: virtual
+            packageType: generic
+            repositories:
+            - binary-dev-local
+            - binary-prod-local
+            - binary-remote
+            defaultDeploymentRepo: binary-dev-local
+
+          binary-prod-local:
+            rclass: local
+            packageType: generic
+
+          binary-prod-virtual:
+            rclass: virtual
+            packageType: generic
+            repositories:
+            - binary-prod-local
+            - binary-remote
+            - gcs-remote
+            defaultDeploymentRepo: binary-prod-local
+
+          binary-remote:
+            rclass: remote
+            packageType: generic
+            url: https://artifactory.mcp.mirantis.net/artifactory/binary-prod-virtual
+
+          centos:
+            rclass: virtual
+            packageType: yum
+            repositories:
+            - centos-local
+            - centos-remote
+            - artifactory-pro-rpm
+
+          centos-local:
+            rclass: local
+            packageType: yum
+
+          centos-remote:
+            rclass: remote
+            packageType: yum
+            url: http://mirror.centos.org/centos/
+
+          centos-virtual:
+            rclass: virtual
+            packageType: yum
+            repositories:
+            - centos-local
+            - centos-remote
+            defaultDeploymentRepo: centos-local
+
+          debian-local:
+            rclass: local
+            packageType: debian
+
           debian-mariadb-remote:
-            repo_type: remote
-            package_type: debian
+            rclass: remote
+            packageType: debian
             url: http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.1/debian/
+
           debian-nginx:
-            repo_type: remote
-            package_type: debian
+            rclass: remote
+            packageType: debian
             url: http://nginx.org/packages/debian/
+
           debian-percona-remote:
-            repo_type: remote
-            package_type: debian
+            rclass: remote
+            packageType: debian
             url: http://repo.percona.com/apt
+
           debian-rabbitmq-remote:
-            repo_type: remote
-            package_type: debian
+            rclass: remote
+            packageType: debian
             url: http://www.rabbitmq.com/debian/
+
           debian-remote:
-            repo_type: remote
-            package_type: debian
+            rclass: remote
+            packageType: debian
             url: http://ftp.us.debian.org/debian
+
           debian-security-remote:
-            repo_type: remote
-            package_type: debian
+            rclass: remote
+            packageType: debian
             url: http://security.debian.org/
+
+          debian-virtual:
+            rclass: virtual
+            packageType: generic
+            repositories:
+            - debian-local
+            - debian-remote
+            - debian-security-remote
+            defaultDeploymentRepo: debian-local
+
+          docker-dev-local:
+            rclass: local
+            packageType: docker
+
+          docker-dev-virtual:
+            rclass: virtual
+            packageType: docker
+            repositories:
+            - docker-dev-local
+            - docker-prod-local
+            - docker-remote
+            defaultDeploymentRepo: docker-dev-local
+
+          docker-prod-local:
+            rclass: local
+            packageType: docker
+
+          docker-prod-virtual:
+            rclass: virtual
+            packageType: docker
+            repositories:
+            - docker-prod-local
+            - docker-remote
+            defaultDeploymentRepo: docker-prod-local
+
           docker-remote:
-            description: "Remote repository for DockerHub"
-            repo_type: remote
-            package_type: docker
+            rclass: remote
+            packageType: docker
             url: https://registry-1.docker.io/
+            description: "Remote repository for DockerHub"
+
           gcs-remote:
-            description: "Has zero downloads. Can be removed."
-            repo_type: remote
-            package_type: generic
+            rclass: remote
+            packageType: generic
             url: https://storage.googleapis.com
+            description: "Has zero downloads. Can be removed."
+
           gerrit-plugins:
-            description: "Overlaps with maven-local. We should resolve overlap and remove this repo."
-            repo_type: remote
-            package_type: generic
+            rclass: remote
+            packageType: generic
             url: http://builds.quelltextlich.at/gerrit/nightly
+            description: "Overlaps with maven-local. We should resolve overlap and remove this repo."
+
           jcenter:
-            repo_type: remote
-            package_type: maven
+            rclass: remote
+            packageType: maven
             url: https://jcenter.bintray.com
+
           jenkins-deb-pkgs:
-            repo_type: remote
-            package_type: generic
+            rclass: remote
+            packageType: generic
             url: https://pkg.jenkins.io/debian-stable/binary
+
           jenkins-plugins:
-            repo_type: remote
-            package_type: generic
+            rclass: remote
+            packageType: generic
             url: http://mirrors.jenkins-ci.org/plugins
+
           jenkins-plugins-jars:
-            repo_type: remote
-            package_type: maven
+            rclass: remote
+            packageType: maven
             url: https://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/
+
           jenkins-updates:
-            repo_type: remote
-            package_type: generic
+            rclass: remote
+            packageType: generic
             url: https://updates.jenkins.io/
+
+          k8s-tests-images:
+            rclass: local
+            packageType: docker
+
+          maven-local:
+            rclass: local
+            packageType: maven
+            description: "Hosts Java libraries needed to build Docker images"
+
+          mcp-k8s:
+            rclass: virtual
+            packageType: docker
+            repositories:
+            - mcp-k8s-local
+
+          mcp-k8s-ci:
+            rclass: local
+            packageType: docker
+
+          mcp-k8s-local:
+            rclass: local
+            packageType: docker
+
           mysql-connector-java:
-            repo_type: remote
-            package_type: maven
+            rclass: remote
+            packageType: maven
             url: http://repo.jfrog.org/artifactory/remote-repos/mysql/mysql-connector-java/
+
+          pypi-local:
+            rclass: local
+            packageType: pypi
+
           pypi-remote:
-            repo_type: remote
-            package_type: pypi
+            rclass: remote
+            packageType: pypi
             url: https://pypi.python.org
+
+          pypi-virtual:
+            rclass: virtual
+            packageType: pypi
+            repositories:
+            - pypi-local
+            - pypi-remote
+            defaultDeploymentRepo: pypi-local
+
+          ubuntu-local:
+            rclass: local
+            packageType: debian
+
           ubuntu-remote:
-            repo_type: remote
-            package_type: debian
+            rclass: remote
+            packageType: debian
             url: http://us.archive.ubuntu.com/ubuntu/
+
+          ubuntu-virtual:
+            rclass: virtual
+            packageType: generic
+            repositories:
+            - ubuntu-local
+            - ubuntu-remote
+            defaultDeploymentRepo: ubuntu-local
+
+          vm-images:
+            rclass: local
+            packageType: generic
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/backup/client/single.yml b/ceph/backup/client/single.yml
new file mode 100644
index 0000000..c3afe96
--- /dev/null
+++ b/ceph/backup/client/single.yml
@@ -0,0 +1,3 @@
+classes:
+- service.ceph.backup.client
+- system.openssh.client.root
\ No newline at end of file
diff --git a/ceph/backup/server/single.yml b/ceph/backup/server/single.yml
new file mode 100644
index 0000000..ca36297
--- /dev/null
+++ b/ceph/backup/server/single.yml
@@ -0,0 +1,2 @@
+classes:
+- service.ceph.backup.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/container.yml b/ceph/common/container.yml
new file mode 100644
index 0000000..5c7619b
--- /dev/null
+++ b/ceph/common/container.yml
@@ -0,0 +1,6 @@
+classes:
+- service.ceph.common.container
+- system.ceph.monitoring.cluster_stats
+parameters:
+  _param:
+    ceph_common_prefix_dir: /srv/volumes/ceph
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_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
index 9e98f91..31fa050 100644
--- a/ceph/osd/cluster.yml
+++ b/ceph/osd/cluster.yml
@@ -1,2 +1,8 @@
 classes:
 - service.ceph.osd.cluster
+parameters:
+  linux:
+    system:
+      kernel:
+        sysctl:
+          fs.aio-max-nr: 131072
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 3b036d4..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
diff --git a/cinder/volume/backend/ceph.yml b/cinder/volume/backend/ceph.yml
index 945f2f9..6b41224 100644
--- a/cinder/volume/backend/ceph.yml
+++ b/cinder/volume/backend/ceph.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cinder_storage_client_key: ''
   cinder:
     volume:
       message_queue:
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 eb6a5b6..1030861 100644
--- a/designate/server/cluster.yml
+++ b/designate/server/cluster.yml
@@ -4,6 +4,8 @@
 - system.haproxy.proxy.listen.openstack.designate
 - service.haproxy.proxy.single
 parameters:
+  _param:
+    designate_admin_api_enabled: false
   linux:
     system:
       package:
@@ -20,6 +22,9 @@
       region: ${_param:openstack_region}
       domain_id: ${_param:designate_domain_id}
       version: ${_param:designate_version}
+      admin_api:
+        enabled: ${_param:designate_admin_api_enabled}
+        enabled_extensions_admin: quotas
       database:
         engine: mysql
         host: ${_param:openstack_database_address}
diff --git a/designate/server/single.yml b/designate/server/single.yml
index b658f8b..765dcf8 100644
--- a/designate/server/single.yml
+++ b/designate/server/single.yml
@@ -1,6 +1,8 @@
 classes:
 - service.designate.server.single
 parameters:
+  _param:
+    designate_admin_api_enabled: false
   linux:
     system:
       package:
@@ -14,6 +16,9 @@
       region: ${_param:openstack_region}
       domain_id: ${_param:designate_domain_id}
       version: ${_param:designate_version}
+      admin_api:
+        enabled: ${_param:designate_admin_api_enabled}
+        enabled_extensions_admin: quotas
       bind:
         api:
           address: ${_param:single_address}
diff --git a/devops_portal/service/elasticsearch.yml b/devops_portal/service/elasticsearch.yml
index 6fd9afa..ddf4a6c 100644
--- a/devops_portal/service/elasticsearch.yml
+++ b/devops_portal/service/elasticsearch.yml
@@ -5,6 +5,10 @@
         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:elasticsearch_bind_host}
             port: ${_param:elasticsearch_http_bind_port}
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/hce.yml b/devops_portal/service/hce.yml
new file mode 100644
index 0000000..274541c
--- /dev/null
+++ b/devops_portal/service/hce.yml
@@ -0,0 +1,15 @@
+parameters:
+  devops_portal:
+    config:
+      service:
+        hardware-correlation:
+          configure_proxy: true
+          resolve_hostname: true
+          proxy_connect_timeout: 300
+          proxy_send_timeout: 300
+          proxy_read_timeout: 300
+          send_timeout: 300
+          endpoint:
+            address: ${_param:hce_bind_host}
+            port: ${_param:hce_bind_port}
+            https: ${_param:hce_ssl:enabled}
diff --git a/devops_portal/service/janitor_monkey.yml b/devops_portal/service/janitor_monkey.yml
index f16ae7c..8544645 100644
--- a/devops_portal/service/janitor_monkey.yml
+++ b/devops_portal/service/janitor_monkey.yml
@@ -5,6 +5,10 @@
         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:janitor_monkey_bind_host}
             port: ${_param:janitor_monkey_bind_port}
diff --git a/devops_portal/service/jenkins.yml b/devops_portal/service/jenkins.yml
index 83d9d05..ee00912 100644
--- a/devops_portal/service/jenkins.yml
+++ b/devops_portal/service/jenkins.yml
@@ -1,10 +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 5cd172a..f2a240b 100644
--- a/devops_portal/service/pushkin.yml
+++ b/devops_portal/service/pushkin.yml
@@ -5,6 +5,10 @@
         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:pushkin_bind_host}
             port: ${_param:pushkin_bind_port}
diff --git a/devops_portal/service/rundeck.yml b/devops_portal/service/rundeck.yml
index ad743cf..542974e 100644
--- a/devops_portal/service/rundeck.yml
+++ b/devops_portal/service/rundeck.yml
@@ -1,14 +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 da896a8..36b79f6 100644
--- a/devops_portal/service/security_monkey.yml
+++ b/devops_portal/service/security_monkey.yml
@@ -1,14 +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: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
deleted file mode 100644
index 4691ddb..0000000
--- a/docker/client.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-classes:
-  - service.docker.client
-parameters:
-  docker:
-    client:
-      enabled: true
-      compose:
-        source:
-          engine: docker
-          image: "docker/compose:1.8.0"
diff --git a/docker/client/compose/init.yml b/docker/client/compose/init.yml
new file mode 100644
index 0000000..efeeadd
--- /dev/null
+++ b/docker/client/compose/init.yml
@@ -0,0 +1,11 @@
+classes:
+  - system.docker.client
+parameters:
+  _param:
+    docker_image_compose: docker/compose:1.17.1
+  docker:
+    client:
+      compose:
+        source:
+          engine: docker
+          image: ${_param:docker_image_compose}
diff --git a/docker/client/compose/service/gerrit.yml b/docker/client/compose/service/gerrit.yml
new file mode 100644
index 0000000..eeb126e
--- /dev/null
+++ b/docker/client/compose/service/gerrit.yml
@@ -0,0 +1,78 @@
+classes:
+  - system.docker.client.compose
+parameters:
+  _param:
+    docker_image_gerrit: tcpcloud/gerrit:2.13.6
+    docker_image_mysql: tcpcloud/mysql:5.6
+    gerrit_ldap_server: ""
+    gerrit_ldap_bind_user: ""
+    gerrit_ldap_bind_password: ""
+    gerrit_ldap_account_base: ""
+    gerrit_ldap_group_base: ""
+    gerrit_http_listen_url: http://*:8080/
+    gerrit_extra_opts: ""
+  docker:
+    client:
+      compose:
+        gerrit:
+          service:
+            server:
+              image: ${_param:docker_image_gerrit}
+              restart: always
+              ports:
+                - 18083:8080
+                - 29417:29418
+              volumes:
+                - /srv/volumes/gerrit:/var/gerrit/review_site
+              depends_on:
+                - db
+              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}
+                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
+                MYSQL_PASSWORD: ${_param:mysql_gerrit_password}
+                MYSQL_DATABASE: gerrit
+                MYSQL_ROOT_PASSWORD: ${_param:mysql_admin_password}
+                MYSQL_START_TIMEOUT: 300
+              deploy:
+                restart_policy:
+                  condition: any
+              image: "${_param:docker_image_mysql}"
+              ports:
+                - 13306:3306
+              volumes:
+                - /srv/volumes/mysql:/var/lib/mysql
+          network:
+            default:
+              ipam:
+                driver: default
+                config:
+                  - subnet: 172.30.0.0/24
+  linux:
+    system:
+      directory:
+        /srv/volumes/gerrit:
+          makedirs: true
diff --git a/docker/client/compose/service/jenkins.yml b/docker/client/compose/service/jenkins.yml
new file mode 100644
index 0000000..b2f4213
--- /dev/null
+++ b/docker/client/compose/service/jenkins.yml
@@ -0,0 +1,48 @@
+classes:
+  - system.docker.client.compose
+parameters:
+  _param:
+    docker_image_jenkins: tcpcloud/jenkins:2.93
+    jenkins_master_extra_opts: ""
+    jenkins_master_executors_num: 4
+    jenkins_master_max_concurent_requests: 40
+    jenkins_home_dir_path: /var/jenkins_home
+  docker:
+    client:
+      compose:
+        jenkins:
+          status: up
+          service:
+            master:
+              environment:
+                JENKINS_HOME: ${_param:jenkins_home_dir_path}
+                JAVA_OPTS: " -server -XX:+AlwaysPreTouch -Xloggc:${_param:jenkins_home_dir_path}/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}
+              image: ${_param:docker_image_jenkins}
+              restart: always
+              ports:
+                - 18081:8080
+                - 50001:50000
+              volumes:
+                - /srv/volumes/jenkins:/var/jenkins_home
+                - /etc/ssl/certs/java/cacerts:/etc/ssl/certs/java/cacerts:ro
+          network:
+            default:
+              ipam:
+                driver: default
+                config:
+                  - subnet: 172.29.0.0/24
+  linux:
+    system:
+      directory:
+        /srv/volumes/jenkins:
+          makedirs: true
+          user: 1000
+          group: 1000
+      package:
+        ca-certificates-java:
+          version: latest
diff --git a/docker/client/init.yml b/docker/client/init.yml
new file mode 100644
index 0000000..610e0a4
--- /dev/null
+++ b/docker/client/init.yml
@@ -0,0 +1,6 @@
+classes:
+  - service.docker.client
+parameters:
+  docker:
+    client:
+      enabled: true
diff --git a/docker/host.yml b/docker/host.yml
index f7649b5..aef7a32 100644
--- a/docker/host.yml
+++ b/docker/host.yml
@@ -1,10 +1,16 @@
 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
         - ${_param:cluster_public_host}:5000
+      options:
+        ipv6: true
+        fixed-cidr-v6: fc00::/7
+        storage-driver: overlay2
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 12bfc0c..3b2d916 100644
--- a/docker/swarm/manager.yml
+++ b/docker/swarm/manager.yml
@@ -11,3 +11,7 @@
       master:
         host: ${_param:cluster_node01_address}
         port: ${_param:docker_swarm_master_port}
+    host:
+      options:
+        log-opts:
+          labels: "com.docker.stack.namespace,com.docker.swarm.service.name,com.docker.swarm.task.name"
diff --git a/docker/swarm/master.yml b/docker/swarm/master.yml
index fba9af3..d327796 100644
--- a/docker/swarm/master.yml
+++ b/docker/swarm/master.yml
@@ -7,3 +7,7 @@
     swarm:
       role: master
       advertise_addr: ${_param:single_address}
+    host:
+      options:
+        log-opts:
+          labels: "com.docker.stack.namespace,com.docker.swarm.service.name,com.docker.swarm.task.name"
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/gerrit.yml b/docker/swarm/stack/gerrit.yml
index 95bc233..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
@@ -8,6 +10,7 @@
     gerrit_ldap_account_base: ""
     gerrit_ldap_group_base: ""
     gerrit_http_listen_url: http://*:8080/
+    gerrit_extra_opts: ""
   docker:
     client:
       stack:
@@ -45,6 +48,10 @@
                 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/hce.yml b/docker/swarm/stack/hce.yml
new file mode 100644
index 0000000..f059602
--- /dev/null
+++ b/docker/swarm/stack/hce.yml
@@ -0,0 +1,34 @@
+parameters:
+  _param:
+    docker_hce_replicas: 1
+    docker_image_hce: docker-prod-local.artifactory.mirantis.com/mirantis/oss/hce
+    hce_bind_host: hce-api
+    hce_bind_port: ${_param:haproxy_hce_bind_port}
+    hce_elasticsearch_host: elastic-endpoint-ip
+    hce_elasticsearch_port: elastic-endpoint-port
+    hce_prometheus_host: prometheus-endpoint-ip
+    hce_prometheus_port: prometheus-endpoint-port
+    hce_ssl:
+      enabled: false
+  docker:
+    client:
+      stack:
+        hce:
+          environment:
+            HCEELASTICHOST: ${_param:hce_elasticsearch_host}
+            HCEELASTICPORT: ${_param:hce_elasticsearch_port}
+            HCEPROMETHEUSHOST: ${_param:hce_prometheus_host}
+            HCEPROMETHEUSPORT: ${_param:hce_prometheus_port}
+          service:
+            hce-api:
+              image: ${_param:docker_image_hce}
+              deploy:
+                replicas: ${_param:docker_hce_replicas}
+                restart_policy:
+                  condition: any
+              ports:
+                - ${_param:haproxy_hce_exposed_port}:${_param:haproxy_hce_bind_port}
+          network:
+            default:
+              external:
+                name: oss_backend
diff --git a/docker/swarm/stack/janitor_monkey.yml b/docker/swarm/stack/janitor_monkey.yml
index 08fdb5c..1152841 100644
--- a/docker/swarm/stack/janitor_monkey.yml
+++ b/docker/swarm/stack/janitor_monkey.yml
@@ -22,6 +22,10 @@
     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
@@ -29,8 +33,9 @@
       username: admin
       password: password
       ssl_verify: False
-      cacert_path: /srv/volumes/rundeck/storage/content/cis/openstack/cert.pem
-      cafile: /opt/certs/cert.pem
+      endpoint_type: public
+      source_credentials: /srv/volumes/rundeck/storage/content/cis/openstack
+      service_credentials: /opt/os_creds
   docker:
     client:
       stack:
@@ -52,12 +57,17 @@
             simianarmy.client.cloudfire.region: ${_param:janitor_monkey_cloudfire_region}
             simianarmy.client.cloudfire.cis.clustername: ${_param:janitor_monkey_cis_clustername}
             simianarmy.client.cloudfire.identityEndpoint: ${_param:janitor_monkey_openstack:auth_url}
+            simianarmy.client.cloudfire.identityEndpointType: ${_param:janitor_monkey_openstack:endpoint_type}
             simianarmy.client.cloudfire.accountKey: ${_param:janitor_monkey_openstack:username}
             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:cafile}
+            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:
             cleanup-service-mongodb:
               image: ${_param:docker_image_mongodb}
@@ -78,7 +88,7 @@
               ports:
                 - ${_param:haproxy_janitor_monkey_exposed_port}:${_param:janitor_monkey_bind_port}
               volumes:
-                - ${_param:janitor_monkey_openstack:cacert_path}:${_param:janitor_monkey_openstack:cafile}:ro
+                - ${_param:janitor_monkey_openstack:source_credentials}:${_param:janitor_monkey_openstack:service_credentials}:ro
           network:
             default:
               external:
diff --git a/docker/swarm/stack/jenkins/master.yml b/docker/swarm/stack/jenkins/master.yml
index 33ade24..73a4b30 100644
--- a/docker/swarm/stack/jenkins/master.yml
+++ b/docker/swarm/stack/jenkins/master.yml
@@ -1,8 +1,12 @@
+classes:
+- system.docker
 parameters:
   _param:
-    docker_image_jenkins: tcpcloud/jenkins:2.73
+    docker_image_jenkins: tcpcloud/jenkins:2.93
     jenkins_master_extra_opts: ""
     jenkins_master_executors_num: 4
+    jenkins_master_max_concurent_requests: 40
+    jenkins_home_dir_path: /var/jenkins_home
   docker:
     client:
       stack:
@@ -10,9 +14,13 @@
           service:
             master:
               environment:
-                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_HOME: ${_param:jenkins_home_dir_path}
+                JAVA_OPTS: " -server -XX:+AlwaysPreTouch -Xloggc:${_param:jenkins_home_dir_path}/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 95f5f8d..925a10a 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
@@ -60,6 +76,7 @@
                 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
@@ -81,7 +98,7 @@
               networks:
                 - monitoring
               deploy:
-                replicas: 1
+                replicas: 2
                 labels:
                   com.mirantis.monitoring: "prometheus"
                 restart_policy:
@@ -99,7 +116,5 @@
                 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/monitoring/remote_agent/ceph.yml b/docker/swarm/stack/monitoring/remote_agent/ceph.yml
index 6085eeb..07996fa 100644
--- a/docker/swarm/stack/monitoring/remote_agent/ceph.yml
+++ b/docker/swarm/stack/monitoring/remote_agent/ceph.yml
@@ -1,3 +1,4 @@
+# client role is deprecated. Use ceph_common.yml instead
 classes:
 - system.ceph.client.container
 - system.ceph.monitoring.cluster_stats
diff --git a/docker/swarm/stack/monitoring/remote_agent/ceph_common.yml b/docker/swarm/stack/monitoring/remote_agent/ceph_common.yml
new file mode 100644
index 0000000..3a269a7
--- /dev/null
+++ b/docker/swarm/stack/monitoring/remote_agent/ceph_common.yml
@@ -0,0 +1,9 @@
+parameters:
+  docker:
+    client:
+      stack:
+        monitoring:
+          service:
+            remote_agent:
+              volumes:
+                - ${ceph:common:prefix_dir}/etc/ceph:/etc/ceph
diff --git a/docker/swarm/stack/pushkin.yml b/docker/swarm/stack/pushkin.yml
index 71b5f5f..22a921d 100644
--- a/docker/swarm/stack/pushkin.yml
+++ b/docker/swarm/stack/pushkin.yml
@@ -4,11 +4,26 @@
     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_environment_id: 0
+    sfdc_sandbox_enabled: true
   docker:
     client:
       stack:
@@ -17,8 +32,8 @@
             POSTGRES_USER: ${_param:pushkin_db_user}
             POSTGRES_PASSWORD: ${_param:pushkin_db_user_password}
             POSTGRES_DB: ${_param:pushkin_db}
-            PUSHKINDBHOST: ${_param:postgresql_bind_host}
-            PUSHKINELASTICHOST: ${_param:elasticsearch_bind_host}
+            PUSHKINDBHOST: ${_param:pushkin_db_host}
+            PUSHKINELASTICHOST: ${_param:pushkin_elasticsearch}
             WEBHOOK_FROM: ${_param:webhook_from}
             EMAIL_SENDER_PASSWORD: ${_param:pushkin_email_sender_password}
             SMTP_HOST: ${_param:pushkin_smtp_host}
@@ -26,7 +41,14 @@
             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_ENVIRONMENT_ID: ${_param:sfdc_environment_id}
+            SFDC_SANDBOX_ENABLED: ${_param:sfdc_sandbox_enabled}
           service:
             pushkin-api:
               image: ${_param:docker_image_pushkin}
diff --git a/docker/swarm/stack/rundeck.yml b/docker/swarm/stack/rundeck.yml
index 0710819..8ab0554 100644
--- a/docker/swarm/stack/rundeck.yml
+++ b/docker/swarm/stack/rundeck.yml
@@ -18,7 +18,7 @@
                 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
@@ -32,4 +32,4 @@
           network:
             default:
               external:
-                name: oss_backend
\ No newline at end of file
+                name: oss_backend
diff --git a/docker/swarm/stack/security_monkey.yml b/docker/swarm/stack/security_monkey.yml
index 67233c2..3b9c272 100644
--- a/docker/swarm/stack/security_monkey.yml
+++ b/docker/swarm/stack/security_monkey.yml
@@ -2,6 +2,8 @@
   _param:
     docker_security_monkey_api_replicas: 1
     docker_security_monkey_scheduler_replicas: 1
+    secmonkey_login_id: 11
+    secmonkey_application_id: 1
     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
@@ -28,8 +30,8 @@
       project_domain_name: Default
       project_name: admin
       user_domain_name: Default
-      cacert_path: /srv/volumes/rundeck/storage/content/cis/openstack/cert.pem
-      cafile: /opt/certs/cert.pem
+      source_credentials: /srv/volumes/rundeck/storage/content/cis/openstack
+      service_credentials: /opt/os_creds
       endpoint_type: public
       ssl_verify: False
   docker:
@@ -45,6 +47,8 @@
             WEB_PORT: ${_param:security_monkey_web_port}
             API_PORT: ${_param:security_monkey_api_port}
             NGINX_PORT: ${_param:security_monkey_nginx_port}
+            NOTIFICATIONS_APP_ID: ${_param:secmonkey_application_id}
+            NOTIFICATIONS_LOGIN_ID: ${_param:secmonkey_login_id}
             NOTIFICATIONS_SERVICE_URL: ${_param:notification_service_url}
             DEFAULT_USER: ${_param:security_monkey_user}
             DEFAULT_PASSWORD: ${_param:security_monkey_password}
@@ -58,12 +62,12 @@
             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:cafile}
+            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
+            SQLALCHEMY_POOL_RECYCLE: 25000
           service:
             security-audit-api:
               image: ${_param:docker_image_security_monkey_api}
@@ -75,7 +79,7 @@
                 - ${_param:haproxy_security_monkey_exposed_port}:${_param:haproxy_security_monkey_bind_port}
               volumes:
                 - /srv/volumes/security_monkey/logs:/var/log/security_monkey/logs
-                - ${_param:security_monkey_openstack:cacert_path}:${_param:security_monkey_openstack:cafile}:ro
+                - ${_param:security_monkey_openstack:source_credentials}:${_param:security_monkey_openstack:service_credentials}:ro
             security-audit-scheduler:
               image: ${_param:docker_image_security_monkey_scheduler}
               deploy:
@@ -84,7 +88,7 @@
                   condition: any
               volumes:
                 - /srv/volumes/security_monkey/logs:/var/log/security_monkey/logs
-                - ${_param:security_monkey_openstack:cacert_path}:${_param:security_monkey_openstack:cafile}:ro
+                - ${_param:security_monkey_openstack:source_credentials}:${_param:security_monkey_openstack:service_credentials}:ro
           network:
             default:
               external:
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..1bbe404 100644
--- a/elasticsearch/server/cluster.yml
+++ b/elasticsearch/server/cluster.yml
@@ -5,6 +5,8 @@
   _param:
     java_environment_version: "8"
     java_environment_platform: openjdk
+    elasticsearch_cluster_name: elasticsearch
+    elasticsearch_version: 5
   linux:
     system:
       sysctl:
@@ -15,6 +17,8 @@
       headless: true
   elasticsearch:
     server:
+      version: ${_param:elasticsearch_version}
+      name: ${_param:elasticsearch_cluster_name}
       enabled: true
       master: true
       data: true
diff --git a/elasticsearch/server/single.yml b/elasticsearch/server/single.yml
index 6606617..419513d 100644
--- a/elasticsearch/server/single.yml
+++ b/elasticsearch/server/single.yml
@@ -2,6 +2,8 @@
 - service.java.environment.openjdk8
 - service.elasticsearch.server.single
 parameters:
+  _param:
+    elasticsearch_version: 5
   linux:
     system:
       sysctl:
@@ -12,6 +14,7 @@
       headless: true
   elasticsearch:
     server:
+      version: ${_param:elasticsearch_version}
       enabled: true
       bind:
         address: ${_param:single_address}
diff --git a/fluentd/label/default_output/drop_event.yml b/fluentd/label/default_output/drop_event.yml
new file mode 100644
index 0000000..295862c
--- /dev/null
+++ b/fluentd/label/default_output/drop_event.yml
@@ -0,0 +1,17 @@
+agent:
+  config:
+    label:
+      default_output:
+        filter:
+          drop_event:
+            tag: '**'
+            type: grep
+            exclude:
+              - name: drop_event
+                regexp: ^.+?$
+          remove_drop_event_key:
+            require:
+              - drop_event
+            tag: '**'
+            type: record_transformer
+            remove_keys: drop_event
diff --git a/fluentd/label/default_output/elasticsearch.yml b/fluentd/label/default_output/elasticsearch.yml
new file mode 100644
index 0000000..3c26d15
--- /dev/null
+++ b/fluentd/label/default_output/elasticsearch.yml
@@ -0,0 +1,15 @@
+classes:
+- service.fluentd.agent.output.elasticsearch
+parameters:
+  _params:
+    fluentd_elasticsearch_host: 127.0.0.1
+    elasticsearch_port: 9200
+  fluentd:
+    agent:
+      config:
+        label:
+          default_output:
+            match:
+              elasticsearch_output:
+                host: ${_param:fluentd_elasticsearch_host}
+                port: ${_param:elasticsearch_port}
diff --git a/fluentd/label/default_output/file.yml b/fluentd/label/default_output/file.yml
new file mode 100644
index 0000000..80707d3
--- /dev/null
+++ b/fluentd/label/default_output/file.yml
@@ -0,0 +1,27 @@
+parameters:
+  _param:
+    fluentd_default_output_file: /var/log/td-agent/default-all.log
+  fluentd:
+    agent:
+      config:
+        label:
+          default_output:
+            filter:
+              add_general_fields:
+                tag: "**"
+                type: record_transformer
+                enable_ruby: true
+                record:
+                  - name: Type
+                    value: log
+                  - name: environment_label
+                    value: ${_param:cluster_domain}
+                  - name: Hostname
+                    value: ${fluentd:dollar}{ hostname }
+                  - name: Timestamp
+                    value: ${fluentd:dollar}{ time.strftime('%Y-%m-%dT%H:%M:%S%z') }
+            match:
+              everything:
+                tag: '**'
+                type: 'file'
+                path: ${_param:fluentd_default_output_file}
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/gerrit/client/init.yml b/gerrit/client/init.yml
index 25c0b94..5456900 100644
--- a/gerrit/client/init.yml
+++ b/gerrit/client/init.yml
@@ -47,16 +47,16 @@
           - name: create
             group: devops-core
           labels:
-          - name: label-Code-Review
+          - name: Code-Review
             group: devops-core
             score: -2..+2
-          - name: label-Code-Review
+          - name: Code-Review
             group: Non-Interactive Users
             score: -1..+1
-          - name: label-Verified
+          - name: Verified
             group: Non-Interactive Users
             score: -1..+1
-          - name: label-Workflow
+          - name: Workflow
             group: devops-core
             score: -1..+1
         "refs/tags/*":
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/gerrit/server/single.yml b/gerrit/server/single.yml
index 952e82e..6704f97 100644
--- a/gerrit/server/single.yml
+++ b/gerrit/server/single.yml
@@ -38,6 +38,11 @@
         hash: sha256=45786a920a929c6258de6461bcf03ddec8925577bd485905f102ceb6e5e1e47c
 #        address: https://gerrit-ci.gerritforge.com/job/Gerrit-stable-2.13/20/artifact/buck-out/gen/gerrit.war
 #        hash: md5=2e17064b8742c4622815593ec496c571
+      receive_timeout: 5min
+      sshd:
+        threads: 64
+        batch_threads: 16
+        max_connections_per_user: 64
       database:
         engine: postgresql
         host: localhost
@@ -45,6 +50,8 @@
         name: gerrit
         user: gerrit
         password: ${_param:postgresql_gerrit_password}
+        pool_limit: 250
+        pool_max_idle: 16
   postgresql:
     server:
       version: "9.5"
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
index d9f3f33..3a7b213 100644
--- a/glance/client/image/cirros.yml
+++ b/glance/client/image/cirros.yml
@@ -2,7 +2,7 @@
 - system.glance.client
 parameters:
   _param:
-    cirros_image_url: "http://apt.mirantis.com/images/cirros-x64-20170828.qcow2"
+    cirros_image_url: "http://images.mirantis.com/cirros-x64-20170828.qcow2"
     cirros_image_name:  "cirros-0.3.0-x86_64"
   glance:
     client:
diff --git a/glance/client/image/ubuntu_trusty.yml b/glance/client/image/ubuntu_trusty.yml
index be9effc..2af6458 100644
--- a/glance/client/image/ubuntu_trusty.yml
+++ b/glance/client/image/ubuntu_trusty.yml
@@ -2,7 +2,7 @@
 - system.glance.client
 parameters:
   _param:
-    ubuntu_trusty_image_url: "http://apt.mirantis.com/images/ubuntu-14-04-x64-mcp1.1.qcow2"
+    ubuntu_trusty_image_url: "http://images.mirantis.com/ubuntu-14-04-x64-mcp1.1.qcow2"
     ubuntu_trusty_image_name:  "ubuntu-14-04-x64-mcp1.1"
   glance:
     client:
diff --git a/glance/client/image/ubuntu_xenial.yml b/glance/client/image/ubuntu_xenial.yml
index 4206584..a08a47d 100644
--- a/glance/client/image/ubuntu_xenial.yml
+++ b/glance/client/image/ubuntu_xenial.yml
@@ -2,7 +2,7 @@
 - system.glance.client
 parameters:
   _param:
-    ubuntu_xenial_image_url: "http://apt.mirantis.com/images/ubuntu-16-04-x64-mcp1.1.qcow2"
+    ubuntu_xenial_image_url: "http://images.mirantis.com/ubuntu-16-04-x64-mcp1.1.qcow2"
     ubuntu_xenial_image_name:  "ubuntu-16-04-amd64-cloudimg"
   glance:
     client:
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/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 0f54219..d0dfdf1 100644
--- a/glusterfs/server/volume/glance.yml
+++ b/glusterfs/server/volume/glance.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/influxdb.yml b/glusterfs/server/volume/influxdb.yml
index 7f2d894..9a75a2f 100644
--- a/glusterfs/server/volume/influxdb.yml
+++ b/glusterfs/server/volume/influxdb.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/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/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 35ae3d6..de70101 100644
--- a/haproxy/proxy/listen/cicd/aptly.yml
+++ b/haproxy/proxy/listen/cicd/aptly.yml
@@ -15,8 +15,8 @@
             - httplog
           balance: source
           timeout:
-            server: 10m
-            client: 10m
+            server: 90m
+            client: 90m
           binds:
             - address: ${_param:haproxy_aptly_api_bind_host}
               port: ${_param:haproxy_aptly_api_bind_port}
@@ -24,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:
@@ -45,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 349d998..ff4d5c4 100644
--- a/haproxy/proxy/listen/cicd/artifactory.yml
+++ b/haproxy/proxy/listen/cicd/artifactory.yml
@@ -12,27 +12,27 @@
           mode: http
           options:
             - forwardfor
-#            - httpchk
+            - httpchk
             - 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 3ee21b1..f6ded20 100644
--- a/haproxy/proxy/listen/cicd/gerrit.yml
+++ b/haproxy/proxy/listen/cicd/gerrit.yml
@@ -13,7 +13,7 @@
           mode: http
           options:
             - forwardfor
-#            - httpchk
+            - httpchk
             - httpclose
             - httplog
           balance: source
@@ -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 6fec3ba..d4e74bb 100644
--- a/haproxy/proxy/listen/docker/visualizer.yml
+++ b/haproxy/proxy/listen/docker/visualizer.yml
@@ -8,7 +8,7 @@
           mode: http
           options:
             - forwardfor
-#            - httpchk
+            - httpchk
             - httpclose
             - httplog
           balance: source
@@ -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/openstack/aodh.yml b/haproxy/proxy/listen/openstack/aodh.yml
index 6b024aa..acd6340 100644
--- a/haproxy/proxy/listen/openstack/aodh.yml
+++ b/haproxy/proxy/listen/openstack/aodh.yml
@@ -9,15 +9,15 @@
           - address: ${_param:cluster_vip_address}
             port: 8042
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 8042
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 8042
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 8042
             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/barbican.yml b/haproxy/proxy/listen/openstack/barbican.yml
index 04251d9..c1f9877 100644
--- a/haproxy/proxy/listen/openstack/barbican.yml
+++ b/haproxy/proxy/listen/openstack/barbican.yml
@@ -9,15 +9,15 @@
           - address: ${_param:cluster_vip_address}
             port: 9311
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 9311
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 9311
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 9311
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
@@ -28,15 +28,15 @@
           - address: ${_param:cluster_vip_address}
             port: 9312
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 9312
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 9312
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             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/cinder.yml b/haproxy/proxy/listen/openstack/cinder.yml
index a693e6e..c0bb7be 100644
--- a/haproxy/proxy/listen/openstack/cinder.yml
+++ b/haproxy/proxy/listen/openstack/cinder.yml
@@ -9,15 +9,15 @@
           - address: ${_param:cluster_vip_address}
             port: 8776
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 8776
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 8776
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 8776
             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/glance.yml b/haproxy/proxy/listen/openstack/glance.yml
index 729cc5b..144fd4e 100644
--- a/haproxy/proxy/listen/openstack/glance.yml
+++ b/haproxy/proxy/listen/openstack/glance.yml
@@ -9,15 +9,15 @@
           - address: ${_param:cluster_vip_address}
             port: 9292
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 9292
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 9292
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 9292
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
@@ -28,15 +28,15 @@
           - address: ${_param:cluster_vip_address}
             port: 9191
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 9191
             params: check
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 9191
             params: check
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 9191
             params: check
diff --git a/haproxy/proxy/listen/openstack/glare.yml b/haproxy/proxy/listen/openstack/glare.yml
index a984275..36a6337 100644
--- a/haproxy/proxy/listen/openstack/glare.yml
+++ b/haproxy/proxy/listen/openstack/glare.yml
@@ -9,15 +9,15 @@
           - address: ${_param:cluster_vip_address}
             port: 9494
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 9494
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 9494
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 9494
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/openstack/heat.yml b/haproxy/proxy/listen/openstack/heat.yml
index 2e6b918..50595ea 100644
--- a/haproxy/proxy/listen/openstack/heat.yml
+++ b/haproxy/proxy/listen/openstack/heat.yml
@@ -9,15 +9,15 @@
           - address: ${_param:cluster_vip_address}
             port: 8003
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 8003
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 8003
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 8003
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
@@ -28,15 +28,15 @@
           - address: ${_param:cluster_vip_address}
             port: 8004
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 8004
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 8004
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 8004
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
@@ -47,15 +47,15 @@
           - address: ${_param:cluster_vip_address}
             port: 8000
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 8000
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 8000
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 8000
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/openstack/horizon.yml b/haproxy/proxy/listen/openstack/horizon.yml
index 9bf838c..14f5c2b 100644
--- a/haproxy/proxy/listen/openstack/horizon.yml
+++ b/haproxy/proxy/listen/openstack/horizon.yml
@@ -9,15 +9,15 @@
           - address: ${_param:cluster_vip_address}
             port: 8078
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 8078
             params: check
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 8078
             params: check
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 8078
             params: check
\ No newline at end of file
diff --git a/haproxy/proxy/listen/openstack/ironic.yml b/haproxy/proxy/listen/openstack/ironic.yml
index 221a9cc..1713085 100644
--- a/haproxy/proxy/listen/openstack/ironic.yml
+++ b/haproxy/proxy/listen/openstack/ironic.yml
@@ -10,15 +10,15 @@
           - address: ${_param:cluster_vip_address}
             port: 6385
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 6385
             params: check
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 6385
             params: check
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 6385
             params: check
diff --git a/haproxy/proxy/listen/openstack/keystone/init.yml b/haproxy/proxy/listen/openstack/keystone/init.yml
index 4359f60..32f776e 100644
--- a/haproxy/proxy/listen/openstack/keystone/init.yml
+++ b/haproxy/proxy/listen/openstack/keystone/init.yml
@@ -7,15 +7,15 @@
           - address: ${_param:cluster_vip_address}
             port: 5000
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 5000
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 5000
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 5000
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
@@ -24,15 +24,15 @@
           - address: ${_param:cluster_vip_address}
             port: 35357
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 35357
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 35357
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 35357
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/openstack/neutron.yml b/haproxy/proxy/listen/openstack/neutron.yml
index 1f8b4d5..29bd548 100644
--- a/haproxy/proxy/listen/openstack/neutron.yml
+++ b/haproxy/proxy/listen/openstack/neutron.yml
@@ -9,15 +9,15 @@
           - address: ${_param:cluster_vip_address}
             port: 9696
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 9696
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 9696
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 9696
             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/nova-placement.yml b/haproxy/proxy/listen/openstack/nova-placement.yml
index e3b72b7..9fec963 100644
--- a/haproxy/proxy/listen/openstack/nova-placement.yml
+++ b/haproxy/proxy/listen/openstack/nova-placement.yml
@@ -15,15 +15,15 @@
               options:
               - expect status 401
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 8778
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 8778
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 8778
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/openstack/nova.yml b/haproxy/proxy/listen/openstack/nova.yml
index efffee0..1e090ef 100644
--- a/haproxy/proxy/listen/openstack/nova.yml
+++ b/haproxy/proxy/listen/openstack/nova.yml
@@ -9,15 +9,15 @@
           - address: ${_param:cluster_vip_address}
             port: 8774
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 8774
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 8774
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 8774
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
@@ -27,15 +27,15 @@
           - address: ${_param:cluster_vip_address}
             port: 8775
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 8775
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 8775
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 8775
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/openstack/novnc.yml b/haproxy/proxy/listen/openstack/novnc.yml
index 78b7d98..40b9d9c 100644
--- a/haproxy/proxy/listen/openstack/novnc.yml
+++ b/haproxy/proxy/listen/openstack/novnc.yml
@@ -10,15 +10,15 @@
           - address: ${_param:cluster_vip_address}
             port: 6080
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 6080
             params: check
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 6080
             params: check
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 6080
             params: check
diff --git a/haproxy/proxy/listen/openstack/octavia.yml b/haproxy/proxy/listen/openstack/octavia.yml
index 7360557..c2b8e6d 100644
--- a/haproxy/proxy/listen/openstack/octavia.yml
+++ b/haproxy/proxy/listen/openstack/octavia.yml
@@ -9,15 +9,15 @@
           - address: ${_param:cluster_vip_address}
             port: 9876
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 9876
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 9876
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 9876
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/openstack/sahara.yml b/haproxy/proxy/listen/openstack/sahara.yml
index 3bbf809..335c4f6 100644
--- a/haproxy/proxy/listen/openstack/sahara.yml
+++ b/haproxy/proxy/listen/openstack/sahara.yml
@@ -10,15 +10,15 @@
           - address: ${_param:cluster_vip_address}
             port: 8386
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 8386
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 8386
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 8386
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
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/hce.yml b/haproxy/proxy/listen/oss/hce.yml
new file mode 100644
index 0000000..499674c
--- /dev/null
+++ b/haproxy/proxy/listen/oss/hce.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    haproxy_hce_bind_host: ${_param:haproxy_bind_address}
+    haproxy_hce_bind_port: 8886
+    haproxy_hce_exposed_port: 18886
+    haproxy_hce_ssl:
+      enabled: false
+  haproxy:
+    proxy:
+      listen:
+        hce:
+          mode: http
+          balance: source
+          http_request:
+            - action: "add-header X-Forwarded-Proto https"
+              condition: "if { ssl_fc }"
+          binds:
+            - address: ${_param:haproxy_hce_bind_host}
+              port: ${_param:haproxy_hce_bind_port}
+              ssl: ${_param:haproxy_hce_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_hce_exposed_port}
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_hce_exposed_port}
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_hce_exposed_port}
+              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/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/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/jenkins/client/approved_scripts.yml b/jenkins/client/approved_scripts.yml
index 62bab8d..1973906 100644
--- a/jenkins/client/approved_scripts.yml
+++ b/jenkins/client/approved_scripts.yml
@@ -14,14 +14,18 @@
         - 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.Hudson getSlaves
         - method hudson.model.Item getName
         - method hudson.model.ItemGroup getItem java.lang.String
         - method hudson.model.ItemGroup getItems
         - method hudson.model.Job getBuildByNumber int
         - method hudson.model.Job getBuilds
         - method hudson.model.Job getLastBuild
+        - method hudson.model.Node getLabelString
+        - method hudson.model.Node getNodeName
         - method hudson.model.Run getEnvironment
         - method hudson.model.Run getId
         - method hudson.model.Run getNumber
@@ -48,6 +52,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
@@ -98,6 +103,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
@@ -124,9 +130,12 @@
         - staticMethod org.codehaus.groovy.runtime.ScriptBytecodeAdapter bitwiseNegate java.lang.Object
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods toBoolean java.lang.Boolean
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getAt java.lang.Object java.lang.String
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods multiply java.lang.String java.lang.Number
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods minus java.lang.String java.lang.Object
         - 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 7d87ffe..e4a3fcd 100644
--- a/jenkins/client/init.yml
+++ b/jenkins/client/init.yml
@@ -8,6 +8,8 @@
     jenkins_client_password: none
     jenkins_master_host: ${_param:control_vip_address}
     jenkins_master_port: 8081
+    jenkins_aptly_storages: "local"
+    jenkins_pipelines_branch: "master"
   jenkins:
     client:
       master:
@@ -30,6 +32,8 @@
         gerrit-trigger: {}
         git: {}
         heavy-job: {}
+        jobConfigHistory: {}
+        jira: {}
         ldap: {}
         matrix-auth: {}
         monitoring: {}
diff --git a/jenkins/client/job/aptly.yml b/jenkins/client/job/aptly.yml
index c6a5755..2ac90bb 100644
--- a/jenkins/client/job/aptly.yml
+++ b/jenkins/client/job/aptly.yml
@@ -63,6 +63,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: aptly-promote-pipeline.groovy
             param:
@@ -75,6 +76,9 @@
               RECREATE:
                 type: boolean
                 default: 'false'
+              DUMP_PUBLISH:
+                type: boolean
+                default: 'true'
               DIFF_ONLY:
                 type: boolean
                 default: '{{diff_only}}'
@@ -89,3 +93,64 @@
                 type: string
                 default: "all"
                 description: "Comma separated list (,)"
+              STORAGES:
+                type: string
+                default: "${_param:jenkins_aptly_storages}"
+                description: "Comma separated list of storage"
+      job_template:
+        aptly-all:
+          name: aptly-{{operation}}-all-{{source}}-{{target}}
+          jobs:
+            - operation: promote
+              diff_only: false
+              source: nightly
+              target: testing
+            - operation: promote
+              diff_only: false
+              source: testing
+              target: stable
+          template:
+            discard:
+              build:
+                keep_num: 25
+              artifact:
+                keep_num: 25
+            type: workflow-scm
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
+              credentials: "gerrit"
+              script: aptly-promote-pipeline.groovy
+            param:
+              SOURCE:
+                type: string
+                default: "(.*)/{{source}}"
+              TARGET:
+                type: string
+                default: "{0}/{{target}}"
+              RECREATE:
+                type: boolean
+                default: 'false'
+              DUMP_PUBLISH:
+                type: boolean
+                default: 'true'
+              DIFF_ONLY:
+                type: boolean
+                default: '{{diff_only}}'
+              APTLY_URL:
+                type: string
+                default: "${_param:jenkins_aptly_api_url}"
+              COMPONENTS:
+                type: string
+                default: "all"
+                description: "Comma separated list (,)"
+              PACKAGES:
+                type: string
+                default: "all"
+                description: "Comma separated list (,)"
+              STORAGES:
+                type: string
+                default: "${_param:jenkins_aptly_storages}"
+                description: "Comma separated list of storage"
diff --git a/jenkins/client/job/ceph/weights.yml b/jenkins/client/job/ceph/add-node.yml
similarity index 60%
rename from jenkins/client/job/ceph/weights.yml
rename to jenkins/client/job/ceph/add-node.yml
index 776e16f..29af563 100644
--- a/jenkins/client/job/ceph/weights.yml
+++ b/jenkins/client/job/ceph/add-node.yml
@@ -2,18 +2,19 @@
   jenkins:
     client:
       job:
-        ceph-enforce-weights:
+        ceph-add-node:
           type: workflow-scm
           concurrent: true
-          display_name: "Ceph - enforce OSD weights"
+          display_name: "Ceph - add node"
           discard:
             build:
               keep_num: 50
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
-            script: ceph-enforce-weights.groovy
+            script: ceph-add-node.groovy
           param:
             # general parameters
             SALT_MASTER_URL:
@@ -24,6 +25,11 @@
               type: string
               description: Credentials for login to Salt API
               default: salt
-            ADMIN_HOST:
+            HOST:
               type: string
-              description: Host with admin keyring and access to cluster management
+              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..ab3f639
--- /dev/null
+++ b/jenkins/client/job/ceph/backend-migration.yml
@@ -0,0 +1,58 @@
+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"
+            branch: "${_param:jenkins_pipelines_branch}"
+            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
index 06dc5eb..19bafca 100644
--- a/jenkins/client/job/ceph/init.yml
+++ b/jenkins/client/job/ceph/init.yml
@@ -1,3 +1,7 @@
 classes:
 - system.jenkins.client.job.ceph.remove-osd
-- system.jenkins.client.job.ceph.weights
+- 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..af678b5
--- /dev/null
+++ b/jenkins/client/job/ceph/remove-node.yml
@@ -0,0 +1,47 @@
+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"
+            branch: "${_param:jenkins_pipelines_branch}"
+            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
index 448318a..0a5801d 100644
--- a/jenkins/client/job/ceph/remove-osd.yml
+++ b/jenkins/client/job/ceph/remove-osd.yml
@@ -12,6 +12,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: ceph-remove-osd.groovy
           param:
@@ -34,6 +35,7 @@
             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)
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..43c2f0b
--- /dev/null
+++ b/jenkins/client/job/ceph/replace-failed-osd.yml
@@ -0,0 +1,54 @@
+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"
+            branch: "${_param:jenkins_pipelines_branch}"
+            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_BLOCKDB_BLOCKWAL_PARTITION:
+              type: string
+              description: Comma separated list of partitions where journal, block_db or block_wal 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
+            DMCRYPT:
+              type: boolean
+              default: 'false'
+              description: Check if replacing osds were encrypted
+            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..7717761
--- /dev/null
+++ b/jenkins/client/job/ceph/upgrade.yml
@@ -0,0 +1,75 @@
+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"
+            branch: "${_param:jenkins_pipelines_branch}"
+            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: Select to copy the disks of Ceph VMs before upgrade and backup Ceph directories on OSD nodes.
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 13ee191..383a2d3 100644
--- a/jenkins/client/job/debian/packages/extra.yml
+++ b/jenkins/client/job/debian/packages/extra.yml
@@ -148,11 +148,11 @@
             - package: telegraf
               dist: trusty
               build: telegraf
-              branch: release-1.2
+              branch: release-1.5
             - package: telegraf
               dist: xenial
               build: telegraf
-              branch: release-1.2
+              branch: release-1.5
             - package: libvirt-exporter
               dist: xenial
               build: libvirt-exporter
@@ -195,6 +195,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: build-debian-packages-{{build}}.groovy
             trigger:
diff --git a/jenkins/client/job/debian/packages/heat/resources.yml b/jenkins/client/job/debian/packages/heat/resources.yml
index 73cceb5..92bdbe0 100644
--- a/jenkins/client/job/debian/packages/heat/resources.yml
+++ b/jenkins/client/job/debian/packages/heat/resources.yml
@@ -26,6 +26,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: build-debian-packages-pipeline.groovy
             trigger:
diff --git a/jenkins/client/job/debian/packages/horizon/modules.yml b/jenkins/client/job/debian/packages/horizon/modules.yml
index 4fe4966..ebf3b21 100644
--- a/jenkins/client/job/debian/packages/horizon/modules.yml
+++ b/jenkins/client/job/debian/packages/horizon/modules.yml
@@ -160,6 +160,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: build-debian-packages-pipeline.groovy
             trigger:
diff --git a/jenkins/client/job/debian/packages/horizon/themes.yml b/jenkins/client/job/debian/packages/horizon/themes.yml
index a26977f..dbaab83 100644
--- a/jenkins/client/job/debian/packages/horizon/themes.yml
+++ b/jenkins/client/job/debian/packages/horizon/themes.yml
@@ -40,6 +40,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: build-debian-packages-pipeline.groovy
             trigger:
@@ -94,4 +95,4 @@
                 default: "amd64"
               UPLOAD_APTLY:
                 type: boolean
-                default: 'true'
\ No newline at end of file
+                default: 'true'
diff --git a/jenkins/client/job/debian/packages/salt-multi.yml b/jenkins/client/job/debian/packages/salt-multi.yml
index a57a8ab..90e6f02 100644
--- a/jenkins/client/job/debian/packages/salt-multi.yml
+++ b/jenkins/client/job/debian/packages/salt-multi.yml
@@ -6,44 +6,67 @@
           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: mirascan
+              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:
@@ -56,6 +79,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: build-debian-packages-pipeline.groovy
             trigger:
@@ -117,4 +141,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 31b8e2a..6928606 100644
--- a/jenkins/client/job/debian/packages/salt.yml
+++ b/jenkins/client/job/debian/packages/salt.yml
@@ -6,404 +6,625 @@
           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: tinyproxy
+              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
+              upload_source_package: true
               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:
@@ -416,6 +637,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: build-debian-packages-pipeline.groovy
             trigger:
@@ -473,7 +695,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/debian/packages/testing.yml b/jenkins/client/job/debian/packages/testing.yml
index c7ecf98..f150f80 100644
--- a/jenkins/client/job/debian/packages/testing.yml
+++ b/jenkins/client/job/debian/packages/testing.yml
@@ -17,6 +17,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: build-debian-packages-{{build}}.groovy
             trigger:
diff --git a/jenkins/client/job/deploy/k8s_control.yml b/jenkins/client/job/deploy/k8s_control.yml
index 7e915c2..f851176 100644
--- a/jenkins/client/job/deploy/k8s_control.yml
+++ b/jenkins/client/job/deploy/k8s_control.yml
@@ -13,6 +13,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: deploy-k8s-deployments.groovy
           param:
diff --git a/jenkins/client/job/deploy/lab/cicd.yml b/jenkins/client/job/deploy/lab/cicd.yml
index 9002c9c..d524bbc 100644
--- a/jenkins/client/job/deploy/lab/cicd.yml
+++ b/jenkins/client/job/deploy/lab/cicd.yml
@@ -14,6 +14,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: cicd-lab-pipeline.groovy
             param:
diff --git a/jenkins/client/job/deploy/lab/cleanup.yml b/jenkins/client/job/deploy/lab/cleanup.yml
index 4d2a179..93a0818 100644
--- a/jenkins/client/job/deploy/lab/cleanup.yml
+++ b/jenkins/client/job/deploy/lab/cleanup.yml
@@ -12,6 +12,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: cleanup-pipeline.groovy
           param:
@@ -70,6 +71,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: delete-broken-stacks-pipeline.groovy
           trigger:
diff --git a/jenkins/client/job/deploy/lab/component/ceph.yml b/jenkins/client/job/deploy/lab/component/ceph.yml
index e9e3d64..b927c5d 100644
--- a/jenkins/client/job/deploy/lab/component/ceph.yml
+++ b/jenkins/client/job/deploy/lab/component/ceph.yml
@@ -15,3 +15,10 @@
         stack_install: core,ceph
         stack_test: "ceph"
         job_timer: "H H * * *"
+      - stack_name: os_ha_ovs_ceph
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core,openstack,ovs,ceph
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+
diff --git a/jenkins/client/job/deploy/lab/component/kubernetes.yml b/jenkins/client/job/deploy/lab/component/kubernetes.yml
index e2598eb..62526f7 100644
--- a/jenkins/client/job/deploy/lab/component/kubernetes.yml
+++ b/jenkins/client/job/deploy/lab/component/kubernetes.yml
@@ -35,7 +35,7 @@
         job_timer: "H H(0-6) * * *"
       - stack_name: k8s_ha_calico_sm
         stack_env: devcloud
-        stack_type: heat
+        stack_type: aws
         stack_install: core,k8s,calico
         stack_test: ""
         job_timer: "H H(0-6) * * *"
diff --git a/jenkins/client/job/deploy/lab/demo.yml b/jenkins/client/job/deploy/lab/demo.yml
index 3ea8a40..2bb6ad5 100644
--- a/jenkins/client/job/deploy/lab/demo.yml
+++ b/jenkins/client/job/deploy/lab/demo.yml
@@ -9,6 +9,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: kafka-demo.groovy
           param:
diff --git a/jenkins/client/job/deploy/lab/deploy.yml b/jenkins/client/job/deploy/lab/deploy.yml
index 4a18e8e..b6bbc71 100644
--- a/jenkins/client/job/deploy/lab/deploy.yml
+++ b/jenkins/client/job/deploy/lab/deploy.yml
@@ -17,6 +17,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: cloud-deploy-pipeline.groovy
             trigger:
@@ -27,6 +28,9 @@
               ASK_ON_ERROR:
                 type: boolean
                 default: 'false'
+              SLAVE_NODE:
+                type: string
+                default: 'python'
 
               # deployments
               STACK_NAME:
@@ -68,6 +72,9 @@
                 type: string
                 default: 'deploy-stack-cleanup'
 
+              STACK_RECLASS_ADDRESS:
+                type: string
+                default: ""
               STACK_RECLASS_BRANCH:
                 type: string
                 default: ""
@@ -83,11 +90,26 @@
                 type: text
                 default: ""
                 description: "YAML with overrides for Salt deployment"
+              BOOTSTRAP_EXTRA_REPO_PARAMS:
+                type: string
+                default: ""
+                description: "Defines a list of extra repos with parameters, format: repo 1, repo priority 1, repo pin 1; repo 2, repo priority 2, repo pin 2"
+              FORMULA_PKG_REVISION:
+                type: string
+                default: ""
+                description: "Formulas revision to install on Salt Master bootstrap stage"
+              EXTRA_FORMULAS:
+                type: string
+                default: "maas memcached ntp nginx collectd sensu heka sphinx mysql grafana libvirt rsyslog glusterfs postfix xtrabackup freeipa prometheus telegraf elasticsearch kibana rundeck devops-portal rsync docker keepalived aptly jenkins gerrit artifactory influxdb horizon ceph"
+              STATIC_MGMT_NETWORK:
+                  type: boolean
+                  default: 'false'
+                  description: "Check if model contains static IP address definitions for all nodes"
 
               # aws api
               AWS_STACK_REGION:
                 type: string
-                default: "us-west-2"
+                default: "eu-central-1"
               AWS_API_CREDENTIALS:
                 type: string
                 default: "aws-credentials"
@@ -139,12 +161,12 @@
                 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.3-1_1503652362277"
+                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: "sandbox-docker-prod-local.docker.mirantis.net/mirantis/rally_tempest:0.1"
+                default: "docker-prod-local.artifactory.mirantis.com/mirantis/oscore/rally-tempest"
               TEST_TEMPEST_TARGET:
                 type: string
                 description: "Node to run tests"
diff --git a/jenkins/client/job/deploy/lab/init.yml b/jenkins/client/job/deploy/lab/init.yml
index 0fce66b..52ec947 100644
--- a/jenkins/client/job/deploy/lab/init.yml
+++ b/jenkins/client/job/deploy/lab/init.yml
@@ -12,6 +12,7 @@
   - 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..f0b67e8
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/ironic.yml
@@ -0,0 +1,80 @@
+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"
+            branch: "${_param:jenkins_pipelines_branch}"
+          type: workflow-scm
diff --git a/jenkins/client/job/deploy/openstack.yml b/jenkins/client/job/deploy/openstack.yml
index f316ab4..3595e01 100644
--- a/jenkins/client/job/deploy/openstack.yml
+++ b/jenkins/client/job/deploy/openstack.yml
@@ -13,6 +13,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: cloud-deploy-pipeline.groovy
           param:
@@ -34,6 +35,10 @@
             ASK_ON_ERROR:
                 type: boolean
                 default: 'false'
+            STATIC_MGMT_NETWORK:
+                type: boolean
+                default: 'false'
+                description: "Check if model contains static IP address definitions for all nodes"
         deploy-openstack-compute:
           type: workflow-scm
           concurrent: true
@@ -41,6 +46,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: openstack-compute-install.groovy
           param:
diff --git a/jenkins/client/job/deploy/rollout.yml b/jenkins/client/job/deploy/rollout.yml
index 06aab0a..3b05fd6 100644
--- a/jenkins/client/job/deploy/rollout.yml
+++ b/jenkins/client/job/deploy/rollout.yml
@@ -13,6 +13,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: rollout-config-change.groovy
           param:
@@ -51,11 +52,11 @@
               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.3-1_1503652362277"
+              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: "sandbox-docker-prod-local.docker.mirantis.net/mirantis/rally_tempest:0.1"
+              default: "docker-prod-local.artifactory.mirantis.com/mirantis/oscore/rally-tempest"
             TEST_TEMPEST_TARGET:
               type: string
               description: "Node to run tests"
@@ -78,6 +79,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: git-merge-branches-pipeline.groovy
           param:
diff --git a/jenkins/client/job/deploy/test.yml b/jenkins/client/job/deploy/test.yml
index 0f9b202..c226fbc 100644
--- a/jenkins/client/job/deploy/test.yml
+++ b/jenkins/client/job/deploy/test.yml
@@ -13,6 +13,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: test-service.groovy
           param:
@@ -31,12 +32,12 @@
               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.3-1_1503652362277"
+              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: "obutenko/rally_tempest_docker"
+              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"
diff --git a/jenkins/client/job/deploy/update/config.yml b/jenkins/client/job/deploy/update/config.yml
index e956736..7c75e5b 100644
--- a/jenkins/client/job/deploy/update/config.yml
+++ b/jenkins/client/job/deploy/update/config.yml
@@ -14,6 +14,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: change-config.groovy
           param:
diff --git a/jenkins/client/job/deploy/update/init.yml b/jenkins/client/job/deploy/update/init.yml
index 8816a66..4e6f460 100644
--- a/jenkins/client/job/deploy/update/init.yml
+++ b/jenkins/client/job/deploy/update/init.yml
@@ -2,10 +2,14 @@
   - 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_mcp_release
   - system.jenkins.client.job.deploy.update.upgrade_ovs_gateway
   - system.jenkins.client.job.deploy.update.upgrade_opencontrail
+  - system.jenkins.client.job.deploy.update.upgrade_opencontrail4_0
   - system.jenkins.client.job.deploy.update.restore_mysql
   - system.jenkins.client.job.deploy.update.restore_cassandra
   - system.jenkins.client.job.deploy.update.restore_zookeeper
diff --git a/jenkins/client/job/deploy/update/package.yml b/jenkins/client/job/deploy/update/package.yml
index 55a9ef0..b276ce4 100644
--- a/jenkins/client/job/deploy/update/package.yml
+++ b/jenkins/client/job/deploy/update/package.yml
@@ -14,6 +14,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: update-package.groovy
           param:
diff --git a/jenkins/client/job/deploy/update/restore_cassandra.yml b/jenkins/client/job/deploy/update/restore_cassandra.yml
index 7f53f80..115f7a2 100644
--- a/jenkins/client/job/deploy/update/restore_cassandra.yml
+++ b/jenkins/client/job/deploy/update/restore_cassandra.yml
@@ -14,6 +14,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: restore-cassandra.groovy
           param:
diff --git a/jenkins/client/job/deploy/update/restore_mysql.yml b/jenkins/client/job/deploy/update/restore_mysql.yml
index 9b2e4d7..2c4ce12 100644
--- a/jenkins/client/job/deploy/update/restore_mysql.yml
+++ b/jenkins/client/job/deploy/update/restore_mysql.yml
@@ -14,6 +14,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: xtrabackup-restore-mysql-db.groovy
           param:
diff --git a/jenkins/client/job/deploy/update/restore_zookeeper.yml b/jenkins/client/job/deploy/update/restore_zookeeper.yml
index f33607a..b6d044a 100644
--- a/jenkins/client/job/deploy/update/restore_zookeeper.yml
+++ b/jenkins/client/job/deploy/update/restore_zookeeper.yml
@@ -14,6 +14,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: restore-zookeeper.groovy
           param:
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..ec812c4
--- /dev/null
+++ b/jenkins/client/job/deploy/update/update_mirror_image.yml
@@ -0,0 +1,59 @@
+#
+# 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"
+            branch: "${_param:jenkins_pipelines_branch}"
+            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"
+            UPDATE_APTLY:
+              type: boolean
+              default: 'true'
+            UPDATE_APTLY_MIRRORS:
+              type: string
+              default: ""
+            PUBLISH_APTLY:
+              type: boolean
+              default: 'true'
+            RECREATE_APTLY_PUBLISHES:
+              type: boolean
+              default: 'false'
+            FORCE_OVERWRITE_APTLY_PUBLISHES:
+              type: boolean
+              default: 'false'
+            CLEANUP_APTLY:
+              type: boolean
+              default: 'false'
+            UPDATE_DOCKER_REGISTRY:
+              type: boolean
+              default: 'true'
+            CLEANUP_DOCKER_CACHE:
+              type: boolean
+              default: 'false'
+            UPDATE_PYPI:
+              type: boolean
+              default: 'true'
+            UPDATE_GIT:
+              type: boolean
+              default: 'true'
+            UPDATE_IMAGES:
+              type: boolean
+              default: 'true'
\ 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..f9ea6d5
--- /dev/null
+++ b/jenkins/client/job/deploy/update/update_salt_environment.yml
@@ -0,0 +1,29 @@
+#
+# 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"
+            branch: "${_param:jenkins_pipelines_branch}"
+            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/upgrade.yml b/jenkins/client/job/deploy/update/upgrade.yml
index efbd153..2c76753 100644
--- a/jenkins/client/job/deploy/update/upgrade.yml
+++ b/jenkins/client/job/deploy/update/upgrade.yml
@@ -14,6 +14,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: openstack-control-upgrade.groovy
           param:
@@ -35,3 +36,7 @@
               type: boolean
               default: 'true'
               description: "Rollback if control upgrade fails"
+            SKIP_VM_RELAUNCH:
+              type: boolean
+              default: 'false'
+              description: "Set to true if vms should not be recreated"
diff --git a/jenkins/client/job/deploy/update/upgrade_compute.yml b/jenkins/client/job/deploy/update/upgrade_compute.yml
index f95e70e..90bfc76 100644
--- a/jenkins/client/job/deploy/update/upgrade_compute.yml
+++ b/jenkins/client/job/deploy/update/upgrade_compute.yml
@@ -14,6 +14,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: openstack-compute-upgrade.groovy
           param:
diff --git a/jenkins/client/job/deploy/update/upgrade_mcp_release.yml b/jenkins/client/job/deploy/update/upgrade_mcp_release.yml
new file mode 100644
index 0000000..8587140
--- /dev/null
+++ b/jenkins/client/job/deploy/update/upgrade_mcp_release.yml
@@ -0,0 +1,33 @@
+#
+# Jobs to upgrade MCP release
+#
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      job:
+        upgrade-mcp-release:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - upgrade MCP Release"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
+            credentials: "gerrit"
+            script: upgrade-mcp-release.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            MCP_VERSION:
+              type: string
+              default: ""
+            UPDATE_LOCAL_REPOS:
+              type: boolean
+              default: 'false'
+              description: "Use only when local repositories are present"
\ No newline at end of file
diff --git a/jenkins/client/job/deploy/update/upgrade_opencontrail.yml b/jenkins/client/job/deploy/update/upgrade_opencontrail.yml
index b5d1e77..de7e46f 100644
--- a/jenkins/client/job/deploy/update/upgrade_opencontrail.yml
+++ b/jenkins/client/job/deploy/update/upgrade_opencontrail.yml
@@ -14,6 +14,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: opencontrail-upgrade.groovy
           param:
diff --git a/jenkins/client/job/deploy/update/upgrade_opencontrail4_0.yml b/jenkins/client/job/deploy/update/upgrade_opencontrail4_0.yml
new file mode 100644
index 0000000..f622371
--- /dev/null
+++ b/jenkins/client/job/deploy/update/upgrade_opencontrail4_0.yml
@@ -0,0 +1,50 @@
+#
+# Jobs to update packages on given Salt master environment
+#
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      job:
+        deploy-upgrade-opencontrail40:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - upgrade Opencontrail to 4.x"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
+            credentials: "gerrit"
+            script: opencontrail40-upgrade.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            STAGE_CONTROLLERS_UPGRADE:
+              type: boolean
+              default: 'true'
+              description: "Run upgrade on Opencontrail controllers"
+            STAGE_COMPUTES_UPGRADE:
+              type: boolean
+              default: 'true'
+              description: "Run upgrade on Opencontrail compute nodes"
+            COMPUTE_TARGET_SERVERS:
+              type: string
+              default: "cmp*"
+              description: Salt compound target to match nodes to be updated [*, G@osfamily:debian].
+            COMPUTE_TARGET_SUBSET_LIVE:
+              type: string
+              default: '1'
+              description: Number of selected nodes to live apply compute upgrade.
+            STAGE_CONTROLLERS_ROLLBACK:
+              type: boolean
+              default: 'false'
+              description: "Run rollback on Opencontrail controllers"
+            STAGE_COMPUTES_ROLLBACK:
+              type: boolean
+              default: 'false'
+              description: "Run rollback on Opencontrail compute nodes"
diff --git a/jenkins/client/job/deploy/update/upgrade_ovs_gateway.yml b/jenkins/client/job/deploy/update/upgrade_ovs_gateway.yml
index 3d12796..335492d 100644
--- a/jenkins/client/job/deploy/update/upgrade_ovs_gateway.yml
+++ b/jenkins/client/job/deploy/update/upgrade_ovs_gateway.yml
@@ -14,6 +14,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: ovs-gateway-upgrade.groovy
           param:
diff --git a/jenkins/client/job/deploy/update/utils.yml b/jenkins/client/job/deploy/update/utils.yml
index fa6ce14..1a6062e 100644
--- a/jenkins/client/job/deploy/update/utils.yml
+++ b/jenkins/client/job/deploy/update/utils.yml
@@ -9,6 +9,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: update-reclass-metadata.groovy
           param:
@@ -31,6 +32,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: update-salt-master-formulas.groovy
           param:
@@ -53,6 +55,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: update-jenkins-master-jobs.groovy
           param:
diff --git a/jenkins/client/job/docker/build-images.yml b/jenkins/client/job/docker/build-images.yml
index ca1d058..334db19 100644
--- a/jenkins/client/job/docker/build-images.yml
+++ b/jenkins/client/job/docker/build-images.yml
@@ -7,10 +7,13 @@
           jobs:
             - name: aptly
               repo: mk
+              build_trigger: ""
             - name: ci
               repo: mk
+              build_trigger: "H H(20-23) * * *"
             - name: prometheus
               repo: mcp
+              build_trigger: ""
           template:
             discard:
               build:
@@ -26,12 +29,14 @@
             trigger:
               gerrit:
                 project:
-                  "mk/docker-{{name}}":
+                  "{{repo}}/docker-{{name}}":
                     branches:
                       - master
                 event:
                   ref:
                     - updated: {}
+              pollscm:
+                spec: "{{build_trigger}}"
             param:
               IMAGE_GIT_URL:
                 type: string
@@ -54,3 +59,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
index eff5754..e1bdcd1 100644
--- a/jenkins/client/job/docker/cleanup.yml
+++ b/jenkins/client/job/docker/cleanup.yml
@@ -17,6 +17,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: docker-cleanup-pipeline.groovy
           trigger:
diff --git a/jenkins/client/job/docker/init.yml b/jenkins/client/job/docker/init.yml
index b6bab31..c5f7d44 100644
--- a/jenkins/client/job/docker/init.yml
+++ b/jenkins/client/job/docker/init.yml
@@ -19,6 +19,10 @@
               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"
@@ -38,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:
@@ -49,6 +57,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: docker-build-image-pipeline.groovy
             trigger:
diff --git a/jenkins/client/job/docker/opencontrail.yml b/jenkins/client/job/docker/opencontrail.yml
new file mode 100644
index 0000000..53a76e0
--- /dev/null
+++ b/jenkins/client/job/docker/opencontrail.yml
@@ -0,0 +1,51 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        docker-build-images-opencontrail:
+          name: "docker-build-images-opencontrail-{{version}}"
+          jobs:
+            - version: oc40
+          template:
+            discard:
+              build:
+                keep_num: 25
+              artifact:
+                keep_num: 25
+            type: workflow-scm
+            concurrent: true
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/docker-opencontrail"
+              credentials: "gerrit"
+            trigger:
+              gerrit:
+                project:
+                  "mk/docker-opencontrail":
+                    branches:
+                      - master
+                event:
+                  ref:
+                    - updated: {}
+                  comment:
+                    - addedContains:
+                        commentAddedCommentContains: '(buildcontainer|test|recheck|verify|)'
+            param:
+              IMAGE_GIT_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/mk/docker-opencontrail"
+              OC_VERSION:
+                type: string
+                default: "{{version}}"
+              IMAGE_CREDENTIALS_ID:
+                type: string
+                default: "gerrit"
+              APT_KEY:
+                type: string
+                default: "${_param:jenkins_aptly_url}/public.gpg"
+              APT_REPO_URL:
+                type: string
+                default: "${_param:jenkins_aptly_url}/xenial/ nightly"
+              REGISTRY_CREDENTIALS_ID:
+                type: string
+                default: "dockerhub"
diff --git a/jenkins/client/job/docker/oss/hce-codebase.yml b/jenkins/client/job/docker/oss/hce-codebase.yml
new file mode 100644
index 0000000..41fe789
--- /dev/null
+++ b/jenkins/client/job/docker/oss/hce-codebase.yml
@@ -0,0 +1,73 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        docker-build-images-hce-codebase:
+          name: docker-build-images-hce-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/hce":
+                  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: "hce"
+            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-hce
+            CUSTOM_GERRIT_BRANCH:
+              type: string
+              default: master
+            CI_BUILD_ARG_HCE_REPO:
+              type: string
+              default: ""
+            CI_BUILD_ARG_HCE_REF:
+              type: string
+              default: ""
diff --git a/jenkins/client/job/docker/oss/hce-docker.yml b/jenkins/client/job/docker/oss/hce-docker.yml
new file mode 100644
index 0000000..33372b9
--- /dev/null
+++ b/jenkins/client/job/docker/oss/hce-docker.yml
@@ -0,0 +1,61 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        docker-build-images-hce-docker:
+          name: docker-build-images-hce-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-hce":
+                  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: "hce"
+            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: "."
diff --git a/jenkins/client/job/docker/oss/init.yml b/jenkins/client/job/docker/oss/init.yml
index 386ea75..9b1e49b 100644
--- a/jenkins/client/job/docker/oss/init.yml
+++ b/jenkins/client/job/docker/oss/init.yml
@@ -6,6 +6,8 @@
   - 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.hce-docker
+  - system.jenkins.client.job.docker.oss.hce-codebase
   - 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/testing.yml b/jenkins/client/job/docker/testing.yml
index bf65dbc..ece8e10 100644
--- a/jenkins/client/job/docker/testing.yml
+++ b/jenkins/client/job/docker/testing.yml
@@ -23,6 +23,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: docker-build-image-pipeline.groovy
             trigger:
diff --git a/jenkins/client/job/gating.yml b/jenkins/client/job/gating.yml
index db2033e..f9e9b1a 100644
--- a/jenkins/client/job/gating.yml
+++ b/jenkins/client/job/gating.yml
@@ -33,6 +33,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: gating-pipeline.groovy
             quiet_period: 60
diff --git a/jenkins/client/job/git-mirrors/2way.yml b/jenkins/client/job/git-mirrors/2way.yml
new file mode 100644
index 0000000..330abc2
--- /dev/null
+++ b/jenkins/client/job/git-mirrors/2way.yml
@@ -0,0 +1,51 @@
+parameters:
+  _param:
+    jenkins_pollscm_spec: "H/60 * * * *"
+  jenkins:
+    client:
+      job_template:
+        git-mirror-2way-common:
+          name: git-mirror-2way-{{name}}
+          jobs:
+            - name: mcp-common-scripts
+              source: mcp/mcp-common-scripts
+              target: Mirantis/mcp-common-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"
+              branch: "${_param:jenkins_pipelines_branch}"
+              credentials: "gerrit"
+              script: git-mirror-2way-pipeline.groovy
+              github:
+                url: "https://github.com/{{target}}"
+            trigger:
+              github:
+              pollscm:
+                spec: ${_param:jenkins_pollscm_spec}
+              gerrit:
+                project:
+                  "{{source}}":
+                    branches:
+                      - master
+            param:
+              SOURCE_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/{{source}}.git"
+              TARGET_URL:
+                type: string
+                default: "git@github.com:{{target}}.git"
+              CREDENTIALS_ID:
+                type: string
+                default: "gerrit"
+              BRANCHES:
+                type: string
+                default: "{{branches}}"
diff --git a/jenkins/client/job/git-mirrors/downstream/init.yml b/jenkins/client/job/git-mirrors/downstream/init.yml
index 0ddc0ce..649ccdc 100644
--- a/jenkins/client/job/git-mirrors/downstream/init.yml
+++ b/jenkins/client/job/git-mirrors/downstream/init.yml
@@ -19,6 +19,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: git-mirror-pipeline.groovy
             trigger:
diff --git a/jenkins/client/job/git-mirrors/upstream/init.yml b/jenkins/client/job/git-mirrors/upstream/init.yml
index e11e63c..8334f23 100644
--- a/jenkins/client/job/git-mirrors/upstream/init.yml
+++ b/jenkins/client/job/git-mirrors/upstream/init.yml
@@ -18,6 +18,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: git-mirror-pipeline.groovy
             trigger:
@@ -25,7 +26,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/git-mirrors/upstream/oss.yml b/jenkins/client/job/git-mirrors/upstream/oss.yml
index af3f816..57ce1a2 100644
--- a/jenkins/client/job/git-mirrors/upstream/oss.yml
+++ b/jenkins/client/job/git-mirrors/upstream/oss.yml
@@ -7,3 +7,7 @@
         downstream: oss/rundeck-cis-jobs
         upstream: "git@github.com:Mirantis/rundeck-cis-jobs"
         branches: master
+      - name: security-monkey
+        downstream: oss/security-monkey
+        upstream: "git@github.com:Netflix/security_monkey.git"
+        branches: develop
diff --git a/jenkins/client/job/k8s-test/init.yml b/jenkins/client/job/k8s-test/init.yml
index 0157bb8..0cdaa09 100644
--- a/jenkins/client/job/k8s-test/init.yml
+++ b/jenkins/client/job/k8s-test/init.yml
@@ -1,2 +1,3 @@
 classes:
-- system.jenkins.client.job.k8s-test.mcp-k8s-test-pipeline
\ No newline at end of file
+- 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
index 7bc2f79..8490ee7 100644
--- a/jenkins/client/job/k8s-test/mcp-k8s-test-pipeline.yml
+++ b/jenkins/client/job/k8s-test/mcp-k8s-test-pipeline.yml
@@ -15,30 +15,33 @@
             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)'
+          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-virtual.docker.mirantis.net'
+              default: 'docker-dev-local.docker.mirantis.net'
               description: 'Docker registry for binaries and images'
             CALICO_DOCKER_REGISTRY:
               type: string
@@ -46,16 +49,8 @@
               description: 'Docker registry for published Calico images'
             K8S_BASE_IMAGE:
               type: string
-              default: '{docker-prod-virtual}/mirantis/base-images/debian-base:20161223134732'
+              default: 'mirantis/base-images/debian-base:20161223134732'
               description: 'Base Docker image to build k8s'
-            DOCKER_IMAGE_UNIT:
-              type: string
-              default: '{docker-prod-virtual}/mirantis/k8s-tests-images/k8s-tests-unit:latest'
-              desription: 'Docker image for k8s unit tests'
-            DOCKER_IMAGE_INTEGRATION:
-              type: string
-              default: '{docker-prod-virtual}/mirantis/k8s-tests-images/k8s-tests-integration:latest'
-              desription: 'Docker image for k8s integration tests'
             CALICO_CNI_IMAGE_REPO:
               type: string
               default: 'calico/cni'
diff --git a/jenkins/client/job/kill_stuck_jobs.yml b/jenkins/client/job/kill_stuck_jobs.yml
index 57f0b3f..cc69c6b 100644
--- a/jenkins/client/job/kill_stuck_jobs.yml
+++ b/jenkins/client/job/kill_stuck_jobs.yml
@@ -14,6 +14,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: abort-long-running-jobs.groovy
           trigger:
diff --git a/jenkins/client/job/opencontrail/build/dpdk-extra.yml b/jenkins/client/job/opencontrail/build/dpdk-extra.yml
index 0a152f1..2d4e4d8 100644
--- a/jenkins/client/job/opencontrail/build/dpdk-extra.yml
+++ b/jenkins/client/job/opencontrail/build/dpdk-extra.yml
@@ -54,6 +54,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: build-extra-dpdk-pipeline.groovy
             quiet_period: 120
diff --git a/jenkins/client/job/opencontrail/build/generic.yml b/jenkins/client/job/opencontrail/build/generic.yml
index f21eaa9..699222e 100644
--- a/jenkins/client/job/opencontrail/build/generic.yml
+++ b/jenkins/client/job/opencontrail/build/generic.yml
@@ -38,7 +38,7 @@
               ppa: mirantis-opencontrail/opencontrail-3.1.1
               upload_source_package: true
               dpdk: contrail_dpdk_2_1
-              build_trigger: "H H(20-23) * * *"
+              build_trigger: ""
             - buildname: oc311
               os: ubuntu
               dist: xenial
@@ -46,7 +46,7 @@
               ppa: mirantis-opencontrail/opencontrail-3.1.1
               upload_source_package: true
               dpdk: contrail_dpdk_2_1
-              build_trigger: "H H(20-23) * * *"
+              build_trigger: ""
             - buildname: oc32
               os: ubuntu
               dist: trusty
@@ -70,7 +70,7 @@
               ppa: mirantis-opencontrail/opencontrail-3.2.3
               upload_source_package: true
               dpdk: contrail_dpdk_2_1
-              build_trigger: "H H(20-23) * * *"
+              build_trigger: ""
             - buildname: oc323
               os: ubuntu
               dist: xenial
@@ -78,7 +78,7 @@
               ppa: mirantis-opencontrail/opencontrail-3.2.3
               upload_source_package: true
               dpdk: contrail_dpdk_2_1
-              build_trigger: "H H(20-23) * * *"
+              build_trigger: ""
             - buildname: oc40
               os: ubuntu
               dist: trusty
@@ -86,7 +86,7 @@
               ppa: mirantis-opencontrail/opencontrail-4.0
               upload_source_package: true
               dpdk: contrail_dpdk_17_02
-              build_trigger: "H H(20-23) * * *"
+              build_trigger: "H H(20-23) */3 * *"
             - buildname: oc40
               os: ubuntu
               dist: xenial
@@ -94,7 +94,23 @@
               ppa: mirantis-opencontrail/opencontrail-4.0
               upload_source_package: true
               dpdk: contrail_dpdk_17_02
-              build_trigger: "H H(20-23) * * *"
+              build_trigger: "H H(20-23) */3 * *"
+            - buildname: oc41
+              os: ubuntu
+              dist: trusty
+              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: oc41
+              os: ubuntu
+              dist: xenial
+              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
@@ -102,7 +118,7 @@
               ppa: mirantis-opencontrail/opencontrail-master
               upload_source_package: true
               dpdk: contrail_dpdk_17_02
-              build_trigger: "H H(20-23) * * *"
+              build_trigger: "H H(20-23) */7 * *"
             - buildname: oc666
               os: ubuntu
               dist: xenial
@@ -110,7 +126,7 @@
               ppa: mirantis-opencontrail/opencontrail-master
               upload_source_package: true
               dpdk: contrail_dpdk_17_02
-              build_trigger: "H H(20-23) * * *"
+              build_trigger: "H H(20-23) */7 * *"
           template:
             discard:
              build:
diff --git a/jenkins/client/job/opencontrail/git-mirrors/2way.yml b/jenkins/client/job/opencontrail/git-mirrors/2way.yml
index 349dad5..49ae2be 100644
--- a/jenkins/client/job/opencontrail/git-mirrors/2way.yml
+++ b/jenkins/client/job/opencontrail/git-mirrors/2way.yml
@@ -7,46 +7,8 @@
         git-mirror-2way:
           name: git-mirror-2way-{{name}}
           jobs:
-            - name: contrail-build
-              branches: ${_param:contrail_branches}
             - name: contrail-pipeline
-              branches: ${_param:contrail_branches}
-            - name: contrail-controller
-              branches: ${_param:contrail_branches}
-            - name: contrail-vrouter
-              branches: ${_param:contrail_branches}
-            - name: contrail-third-party
-              branches: ${_param:contrail_branches}
-            - name: contrail-generateDS
-              branches: ${_param:contrail_branches}
-            - name: contrail-sandesh
-              branches: ${_param:contrail_branches}
-            - name: contrail-packages
-              branches: ${_param:contrail_branches}
-            - name: contrail-nova-vif-driver
-              branches: ${_param:contrail_branches}
-            - name: contrail-neutron-plugin
-              branches: ${_param:contrail_branches}
-            - name: contrail-nova-extensions
-              branches: ${_param:contrail_branches}
-            - name: contrail-ceilometer-plugin
-              branches: ${_param:contrail_ceilometer_plugin_branches}
-            - name: contrail-heat
-              branches: ${_param:contrail_branches}
-            - name: contrail-web-storage
-              branches: ${_param:contrail_branches}
-            - name: contrail-web-server-manager
-              branches: ${_param:contrail_branches}
-            - name: contrail-web-controller
-              branches: ${_param:contrail_branches}
-            - name: contrail-web-core
-              branches: ${_param:contrail_branches}
-            - name: contrail-webui-third-party
-              branches: ${_param:contrail_branches}
-            - name: contrail-dpdk-extra-packages
-              branches: ${_param:contrail_dpdk_extra_branches}
-            - name: contrail-dpdk
-              branches: ${_param:contrail_dpdk_branches}
+              branches: master
           template:
             discard:
               build:
@@ -58,6 +20,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: git-mirror-2way-pipeline.groovy
               github:
@@ -72,7 +35,7 @@
                 default: "${_param:jenkins_gerrit_url}/contrail/{{name}}.git"
               TARGET_URL:
                 type: string
-                default: "https://github.com/Mirantis/{{name}}.git"
+                default: "git@github.com:Mirantis/{{name}}.git"
               CREDENTIALS_ID:
                 type: string
                 default: "gerrit"
diff --git a/jenkins/client/job/opencontrail/git-mirrors/downstream.yml b/jenkins/client/job/opencontrail/git-mirrors/downstream.yml
index 45b06b6..f92d1a7 100644
--- a/jenkins/client/job/opencontrail/git-mirrors/downstream.yml
+++ b/jenkins/client/job/opencontrail/git-mirrors/downstream.yml
@@ -58,6 +58,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: git-mirror-pipeline.groovy
               github:
@@ -91,6 +92,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: git-mirror-pipeline.groovy
             github:
diff --git a/jenkins/client/job/opencontrail/git-mirrors/upstream.yml b/jenkins/client/job/opencontrail/git-mirrors/upstream.yml
index fa9bc5b..af4c6ac 100644
--- a/jenkins/client/job/opencontrail/git-mirrors/upstream.yml
+++ b/jenkins/client/job/opencontrail/git-mirrors/upstream.yml
@@ -57,6 +57,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: git-mirror-pipeline.groovy
               github:
@@ -100,6 +101,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: git-mirror-pipeline.groovy
             github:
@@ -130,6 +132,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: git-mirror-pipeline.groovy
             github:
@@ -171,6 +174,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: git-mirror-pipeline.groovy
             github:
diff --git a/jenkins/client/job/opencontrail/init.yml b/jenkins/client/job/opencontrail/init.yml
index e07adaf..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,ocata"
-    contrail_ceilometer_plugin_branches: "master,R4.0"
+    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,R4.0.1,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:
@@ -31,5 +31,7 @@
               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..18dd008
--- /dev/null
+++ b/jenkins/client/job/oscore/init.yml
@@ -0,0 +1,12 @@
+classes:
+  - system.jenkins.client.job.oscore.security_tests
+  - system.jenkins.client.job.oscore.tests
+  - system.jenkins.client.job.oscore.qa
+parameters:
+  jenkins:
+    client:
+      view:
+        "OSCORE":
+          enabled: true
+          type: ListView
+          include_regex: "^oscore-.*"
diff --git a/jenkins/client/job/oscore/qa.yml b/jenkins/client/job/oscore/qa.yml
new file mode 100644
index 0000000..1fa2ab3
--- /dev/null
+++ b/jenkins/client/job/oscore/qa.yml
@@ -0,0 +1,48 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        oscore-build-docker-image:
+          name: "{{job_prefix}}-{{oscore-qa-project}}-build-docker-image"
+          template:
+            discard:
+              build:
+                keep_num: 25
+              artifact:
+                keep_num: 25
+            type: workflow-scm
+            concurrent: true
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/openstack-ci/openstack-pipelines.git"
+              credentials: "gerrit"
+              branch: 'master'
+              script: build-docker-image-pipeline.groovy
+            trigger:
+              gerrit:
+                project:
+                  mcp/{{oscore-qa-project}}:
+                    branches:
+                      - master
+                event:
+                  change:
+                    - merged
+            param:
+              GIT_URL:
+                type: string
+                default: "ssh://mcp-ci-gerrit@gerrit.mcp.mirantis.net:29418/mcp/{{oscore-qa-project}}"
+              GIT_REF:
+                type: string
+                default: "master"
+              GIT_CREDS_ID:
+                type: string
+                default: "mcp-ci-gerrit"
+              IMAGE_NAME:
+                type: string
+                default: "mirantis/oscore/{{oscore-qa-project}}"
+              IMAGE_TAG:
+                type: string
+                default: "latest"
+              DOCKER_REGISTRY:
+                type: string
+                default: "docker-prod-local.docker.mirantis.net"
diff --git a/jenkins/client/job/oscore/security_tests.yml b/jenkins/client/job/oscore/security_tests.yml
new file mode 100644
index 0000000..e4f5f6d
--- /dev/null
+++ b/jenkins/client/job/oscore/security_tests.yml
@@ -0,0 +1,157 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        bandit-scanner-template-downstream:
+          name: "{{job_prefix}}-bandit-downstream-{{project}}"
+          template:
+            discard:
+              build:
+                keep_num: 30
+              artifact:
+                keep_num: 30
+            type: workflow-scm
+            # Downstream jobs are uploading reports, so shouldn't be concurrent
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/openstack-ci/openstack-pipelines.git"
+              credentials: "gerrit"
+              branch: 'master'
+              script: bandit-openstack-pipeline.groovy
+            trigger:
+              gerrit:
+                project:
+                  packaging/sources/{{project}}:
+                    branches:
+                      - compare_type: "ANT"
+                        name: "mcp/**"
+                skip_vote:
+                  - successful
+                  - failed
+                  - unstable
+                  - not_built
+                event:
+                  change:
+                    - merged
+                  comment:
+                    - addedContains:
+                        commentAddedCommentContains: '^(?s:Patch Set \d+:.*(run bandit)\s*)$'
+                custom_url: '* $JOB_NAME $BUILD_URL'
+            param:
+              GERRIT_PROJECT_URL:
+                type: string
+                description: project url
+                default: ""
+              GERRIT_BRANCH:
+                type: string
+                description: Version of openstack to test
+                default: ""
+              GERRIT_USER:
+                type: string
+                description: user
+                default: "mcp-jenkins"
+              UPSTREAM:
+                type: boolean
+                description: whether to do upstream like testing
+                default: "false"
+              FAIL_ON_TESTS:
+                type: boolean
+                description: whether to do upstream like testing
+                default: "true"
+              SEVERITY:
+                type: string
+                description: Bandit args
+                default: "3"
+              CONFIDENCE:
+                type: string
+                description: confidence
+                default: "2"
+              CREDENTIALS_ID:
+                type: string
+                description: gerrit creds
+                default: "gerrit"
+              REPORT_FORMAT:
+                type: string
+                description: Format for generated report(csv,html,json)
+                default: "json"
+              UPLOAD_REPORT:
+                type: boolean
+                description: Whether to upload report
+                default: "true"
+              REPORT_HOST:
+                type: string
+                description: Reporting tool hostname
+                default: "cve-slave01-bud.infra.mirantis.net"
+              REPORT_USER:
+                type: string
+                description: User for uploading results to reporting tool
+                default: "bandit"
+              UPLOAD_CREDENTIALS_ID:
+                type: string
+                description: Credentials for uploading report
+                default: "bandit"
+        bandit-scanner-template-upstream:
+          name: "{{job_prefix}}-bandit-upstream-{{project}}"
+          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: bandit-openstack-pipeline.groovy
+            trigger:
+              gerrit:
+                project:
+                  packaging/sources/{{project}}:
+                    branches:
+                      - compare_type: "ANT"
+                        name: "mcp/**"
+                skip_vote:
+                  - successful
+                  - failed
+                  - unstable
+                  - not_built
+                event:
+                  change:
+                    - merged
+                  comment:
+                    - addedContains:
+                        commentAddedCommentContains: '^(?s:Patch Set \d+:.*(run bandit)\s*)$'
+                custom_url: '* $JOB_NAME $BUILD_URL'
+            param:
+              GERRIT_PROJECT_URL:
+                type: string
+                description: project url
+                default: ""
+              GERRIT_BRANCH:
+                type: string
+                description: Version of openstack to test
+                default: ""
+              GERRIT_USER:
+                type: string
+                description: user
+                default: "mcp-jenkins"
+              UPSTREAM:
+                type: boolean
+                description: whether to do upstream like testing
+                default: "true"
+              FAIL_ON_TESTS:
+                type: boolean
+                description: whether to do upstream like testing
+                default: "true"
+              CREDENTIALS_ID:
+                type: string
+                description: gerrit creds
+                default: "gerrit"
+              REPORT_FORMAT:
+                type: string
+                description: Format for generated report(csv,html,json)
+                default: "json"
diff --git a/jenkins/client/job/oscore/tests.yml b/jenkins/client/job/oscore/tests.yml
new file mode 100644
index 0000000..ae7d44d
--- /dev/null
+++ b/jenkins/client/job/oscore/tests.yml
@@ -0,0 +1,375 @@
+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_RECLASS_ADDRESS:
+                type: string
+                default: '{{stack_reclass_address}}'
+                description: 'Url to repository with stack salt models'
+              STACK_RECLASS_BRANCH:
+                type: string
+                default: '{{stack_reclass_branch}}'
+                description: 'Branch of repository with stack salt models'
+              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"
+              USE_PEPPER:
+                type: boolean
+                description: Whether to use pepper to connect to salt master
+                default: 'false'
+        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 f8b5bdc..9478ffd 100644
--- a/jenkins/client/job/oss/init.yml
+++ b/jenkins/client/job/oss/init.yml
@@ -1,4 +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_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 331eb59..2f399cc 100644
--- a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
+++ b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
@@ -59,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
@@ -219,6 +223,8 @@
               branches: ${_param:salt_formulas_branches}
             - name: telegraf
               branches: ${_param:salt_formulas_branches}
+            - name: tinyproxy
+              branches: ${_param:salt_formulas_branches}
             - name: varnish
               branches: ${_param:salt_formulas_branches}
             - name: xtrabackup
@@ -236,6 +242,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: git-mirror-2way-pipeline.groovy
               github:
@@ -244,6 +251,11 @@
               github:
               pollscm:
                 spec: ${_param:jenkins_pollscm_spec}
+              gerrit:
+                project:
+                  salt-formulas/{{name}}:
+                    branches:
+                      - master
             param:
               SOURCE_URL:
                 type: string
@@ -257,3 +269,70 @@
               BRANCHES:
                 type: string
                 default: "{{branches}}"
+      job:
+        git-mirror-2way-salt-formulas-scripts:
+          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"
+            branch: "${_param:jenkins_pipelines_branch}"
+            credentials: "gerrit"
+            script: git-mirror-2way-pipeline.groovy
+            github:
+              url: "https://github.com/salt-formulas/salt-formulas-scripts"
+          trigger:
+            github:
+            pollscm:
+              spec: ${_param:jenkins_pollscm_spec}
+          param:
+            SOURCE_URL:
+              type: string
+              default: "${_param:jenkins_gerrit_url}/salt-formulas/salt-formulas-scripts.git"
+            TARGET_URL:
+              type: string
+              default: "git@github.com:salt-formulas/salt-formulas-scripts.git"
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            BRANCHES:
+              type: string
+              default: "master"
+        git-mirror-2way-salt-formulas-cookiecutter:
+          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"
+            branch: "${_param:jenkins_pipelines_branch}"
+            credentials: "gerrit"
+            script: git-mirror-2way-pipeline.groovy
+            github:
+              url: "https://github.com/salt-formulas/salt-formulas-cookiecutter"
+          trigger:
+            github:
+            pollscm:
+              spec: ${_param:jenkins_pollscm_spec}
+          param:
+            SOURCE_URL:
+              type: string
+              default: "${_param:jenkins_gerrit_url}/salt-formulas/salt-formulas-cookiecutter.git"
+            TARGET_URL:
+              type: string
+              default: "git@github.com:salt-formulas/salt-formulas-cookiecutter.git"
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            BRANCHES:
+              type: string
+              default: "master"
diff --git a/jenkins/client/job/salt-formulas/release.yml b/jenkins/client/job/salt-formulas/release.yml
index c686e6e..fe6df5e 100644
--- a/jenkins/client/job/salt-formulas/release.yml
+++ b/jenkins/client/job/salt-formulas/release.yml
@@ -8,6 +8,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: release-salt-formulas-pipeline.groovy
             github:
diff --git a/jenkins/client/job/salt-formulas/tests.yml b/jenkins/client/job/salt-formulas/tests.yml
index 448c421..2e29d65 100644
--- a/jenkins/client/job/salt-formulas/tests.yml
+++ b/jenkins/client/job/salt-formulas/tests.yml
@@ -13,6 +13,7 @@
             - name: avinetworks
             - name: backupninja
             - name: barbican
+            - name: baremetal-simulator
             - name: billometer
             - name: bind
             - name: bird
@@ -29,9 +30,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
@@ -68,6 +72,7 @@
             - name: magnum
             - name: memcached
             - name: midonet
+            - name: mirascan
             - name: monasca
             - name: mongodb
             - name: murano
@@ -112,6 +117,7 @@
             - name: swift
             - name: taiga
             - name: telegraf
+            - name: tinyproxy
             - name: tftpd-hpa
             - name: varnish
             - name: xtrabackup
@@ -127,6 +133,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: test-salt-formulas-pipeline.groovy
             trigger:
@@ -166,7 +173,7 @@
           name: test-salt-formulas-env
           discard:
             build:
-              keep_num: 500
+              keep_num: 1000
             artifact:
               keep_num: 10
           type: workflow-scm
@@ -174,6 +181,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: test-salt-formulas-env.groovy
           param:
diff --git a/jenkins/client/job/salt-models/generate.yml b/jenkins/client/job/salt-models/generate.yml
index 491cfee..b2ef4e5 100644
--- a/jenkins/client/job/salt-models/generate.yml
+++ b/jenkins/client/job/salt-models/generate.yml
@@ -14,6 +14,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "jenkins-mk"
               script: generate-cookiecutter-products.groovy
             param:
diff --git a/jenkins/client/job/salt-models/git-mirrors.yml b/jenkins/client/job/salt-models/git-mirrors.yml
index 034f8d5..a04043b 100644
--- a/jenkins/client/job/salt-models/git-mirrors.yml
+++ b/jenkins/client/job/salt-models/git-mirrors.yml
@@ -12,6 +12,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: git-mirror-2way-pipeline.groovy
               github:
diff --git a/jenkins/client/job/salt-models/tests.yml b/jenkins/client/job/salt-models/tests.yml
index fc1fc5f..879a1f1 100644
--- a/jenkins/client/job/salt-models/tests.yml
+++ b/jenkins/client/job/salt-models/tests.yml
@@ -11,6 +11,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: test-salt-models-pipeline.groovy
             concurrent: true
@@ -64,6 +65,18 @@
               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:
@@ -71,6 +84,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: test-system-reclass-pipeline.groovy
             trigger:
@@ -113,6 +127,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "jenkins-mk"
               script: test-cookiecutter-reclass.groovy
             trigger:
@@ -141,18 +156,24 @@
               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"
               EXTRA_FORMULAS:
                 type: string
-                default: "xtrabackup docker haproxy aptly keepalived gerrit jenkins openldap maas"
+                default: "aptly artifactory backupninja collectd devops-portal docker elasticsearch freeipa gerrit glusterfs grafana haproxy heka horizon influxdb jenkins keepalived kibana libvirt maas memcached mysql nginx ntp openldap openssh postfix prometheus rsync rsyslog rundeck sensu sphinx telegraf xtrabackup"
       job:
         test-salt-model-node:
           name: test-salt-model-node
           discard:
             build:
-              keep_num: 500
+              keep_num: 1000
             artifact:
               keep_num: 10
           type: workflow-scm
@@ -160,6 +181,7 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: test-salt-model-node.groovy
           param:
@@ -196,3 +218,15 @@
             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 822084d..c9a2442 100644
--- a/jenkins/client/job/test_pipelines.yml
+++ b/jenkins/client/job/test_pipelines.yml
@@ -7,6 +7,8 @@
           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:
@@ -20,6 +22,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              branch: "${_param:jenkins_pipelines_branch}"
               credentials: "gerrit"
               script: test-groovy-pipeline.groovy
             trigger:
diff --git a/jenkins/client/job/validate.yml b/jenkins/client/job/validate.yml
index 7be935b..cfbd85d 100644
--- a/jenkins/client/job/validate.yml
+++ b/jenkins/client/job/validate.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
   jenkins:
     client:
       view:
@@ -20,60 +22,164 @@
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
             credentials: "gerrit"
             script: validate-cloud.groovy
-
           param:
             SALT_MASTER_URL:
               type: string
-              default: ""
+              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.3-1_1503652362277"
+              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"
-            SPT_FLOATING_NETWORK:
+              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: ""
-            SPT_USER:
+              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: ""
-            SPT_AVAILABILITY_ZONE:
+              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
+            RALLY_SCENARIOS:
+              type: string
+              default: ""
+              description: Rally scenarios directory or file with scenarios
+            RALLY_TASK_ARGS_FILE:
+              type: string
+              default: ""
+              description: Rally scenarios arguments file
+            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"
+            branch: "${_param:jenkins_pipelines_branch}"
+            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/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 70b6054..497eb50 100644
--- a/keystone/client/service/barbican.yml
+++ b/keystone/client/service/barbican.yml
@@ -7,6 +7,7 @@
         identity:
           roles:
           - creator
+          - key-manager:service-admin
           project:
             service:
               user:
@@ -16,6 +17,7 @@
                   roles:
                   - admin
                   - creator
+                  - key-manager:service-admin
           service:
             barbican:
               type: key-manager
diff --git a/keystone/client/single.yml b/keystone/client/single.yml
index 0c70390..ebf5b5f 100644
--- a/keystone/client/single.yml
+++ b/keystone/client/single.yml
@@ -6,7 +6,6 @@
 - system.keystone.client.service.heat-cfn
 - system.keystone.client.service.keystone
 - system.keystone.client.service.neutron
-- system.keystone.client.service.nova-ec2
 parameters:
   linux:
     system:
diff --git a/keystone/server/cluster.yml b/keystone/server/cluster.yml
index 0c79462..cbe89ca 100644
--- a/keystone/server/cluster.yml
+++ b/keystone/server/cluster.yml
@@ -4,6 +4,8 @@
 - system.haproxy.proxy.listen.openstack.keystone
 - system.haproxy.proxy.listen.openstack.keystone.standalone
 parameters:
+  _param:
+    keystone_tokens_expiration: 3600
   linux:
     system:
       package:
@@ -35,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 c35ef73..16c26ca 100644
--- a/keystone/server/single.yml
+++ b/keystone/server/single.yml
@@ -7,6 +7,7 @@
     mysql_admin_user: root
     mysql_admin_password: password
     mysql_keystone_password: password
+    keystone_tokens_expiration: 3600
   linux:
     system:
       package:
@@ -38,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/kibana/server/single.yml b/kibana/server/single.yml
index fe0555c..745c07a 100644
--- a/kibana/server/single.yml
+++ b/kibana/server/single.yml
@@ -1,9 +1,12 @@
 classes:
 - service.kibana.server.single
 parameters:
+  _param:
+    kibana_version: 5
   kibana:
     server:
       enabled: true
+      version: ${_param:kibana_version}
       default_app_id: "dashboard/logs"
       bind:
         address: ${_param:single_address}
diff --git a/kubernetes/pool/cluster.yml b/kubernetes/pool/cluster.yml
index 0f961a3..3dd0c40 100644
--- a/kubernetes/pool/cluster.yml
+++ b/kubernetes/pool/cluster.yml
@@ -22,3 +22,5 @@
     host:
       options:
         iptables: false
+        log-opts:
+          labels: "io.kubernetes.pod.name"
diff --git a/kubernetes/pool/single.yml b/kubernetes/pool/single.yml
index 00f22b8..67363a6 100644
--- a/kubernetes/pool/single.yml
+++ b/kubernetes/pool/single.yml
@@ -20,3 +20,5 @@
     host:
       options:
         iptables: false
+        log-opts:
+          labels: "io.kubernetes.pod.name"
diff --git a/linux/system/repo/docker.yml b/linux/system/repo/docker.yml
index c527aa8..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: keyserver.ubuntu.com
+          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/5.yml b/linux/system/repo/elasticsearch/5.yml
new file mode 100644
index 0000000..1b9e3e6
--- /dev/null
+++ b/linux/system/repo/elasticsearch/5.yml
@@ -0,0 +1,45 @@
+parameters:
+  _param:
+    elasticsearch_gpg_key: |
+      -----BEGIN PGP PUBLIC KEY BLOCK-----
+      Version: GnuPG v2.0.14 (GNU/Linux)
+
+      mQENBFI3HsoBCADXDtbNJnxbPqB1vDNtCsqhe49vFYsZN9IOZsZXgp7aHjh6CJBD
+      A+bGFOwyhbd7at35jQjWAw1O3cfYsKAmFy+Ar3LHCMkV3oZspJACTIgCrwnkic/9
+      CUliQe324qvObU2QRtP4Fl0zWcfb/S8UYzWXWIFuJqMvE9MaRY1bwUBvzoqavLGZ
+      j3SF1SPO+TB5QrHkrQHBsmX+Jda6d4Ylt8/t6CvMwgQNlrlzIO9WT+YN6zS+sqHd
+      1YK/aY5qhoLNhp9G/HxhcSVCkLq8SStj1ZZ1S9juBPoXV1ZWNbxFNGwOh/NYGldD
+      2kmBf3YgCqeLzHahsAEpvAm8TBa7Q9W21C8vABEBAAG0RUVsYXN0aWNzZWFyY2gg
+      KEVsYXN0aWNzZWFyY2ggU2lnbmluZyBLZXkpIDxkZXZfb3BzQGVsYXN0aWNzZWFy
+      Y2gub3JnPokBOAQTAQIAIgUCUjceygIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgEC
+      F4AACgkQ0n1mbNiOQrRzjAgAlTUQ1mgo3nK6BGXbj4XAJvuZDG0HILiUt+pPnz75
+      nsf0NWhqR4yGFlmpuctgCmTD+HzYtV9fp9qW/bwVuJCNtKXk3sdzYABY+Yl0Cez/
+      7C2GuGCOlbn0luCNT9BxJnh4mC9h/cKI3y5jvZ7wavwe41teqG14V+EoFSn3NPKm
+      TxcDTFrV7SmVPxCBcQze00cJhprKxkuZMPPVqpBS+JfDQtzUQD/LSFfhHj9eD+Xe
+      8d7sw+XvxB2aN4gnTlRzjL1nTRp0h2/IOGkqYfIG9rWmSLNlxhB2t+c0RsjdGM4/
+      eRlPWylFbVMc5pmDpItrkWSnzBfkmXL3vO2X3WvwmSFiQbkBDQRSNx7KAQgA5JUl
+      zcMW5/cuyZR8alSacKqhSbvoSqqbzHKcUQZmlzNMKGTABFG1yRx9r+wa/fvqP6OT
+      RzRDvVS/cycws8YX7Ddum7x8uI95b9ye1/Xy5noPEm8cD+hplnpU+PBQZJ5XJ2I+
+      1l9Nixx47wPGXeClLqcdn0ayd+v+Rwf3/XUJrvccG2YZUiQ4jWZkoxsA07xx7Bj+
+      Lt8/FKG7sHRFvePFU0ZS6JFx9GJqjSBbHRRkam+4emW3uWgVfZxuwcUCn1ayNgRt
+      KiFv9jQrg2TIWEvzYx9tywTCxc+FFMWAlbCzi+m4WD+QUWWfDQ009U/WM0ks0Kww
+      EwSk/UDuToxGnKU2dQARAQABiQEfBBgBAgAJBQJSNx7KAhsMAAoJENJ9ZmzYjkK0
+      c3MIAIE9hAR20mqJWLcsxLtrRs6uNF1VrpB+4n/55QU7oxA1iVBO6IFu4qgsF12J
+      TavnJ5MLaETlggXY+zDef9syTPXoQctpzcaNVDmedwo1SiL03uMoblOvWpMR/Y0j
+      6rm7IgrMWUDXDPvoPGjMl2q1iTeyHkMZEyUJ8SKsaHh4jV9wp9KmC8C+9CwMukL7
+      vM5w8cgvJoAwsp3Fn59AxWthN3XJYcnMfStkIuWgR7U2r+a210W6vnUxU4oN0PmM
+      cursYPyeV0NX/KQeUeNMwGTFB6QHS/anRaGQewijkrYYoTNtfllxIu9XYmiBERQ/
+      qPDlGRlOgVTd9xUfHFkzB52c70E=
+      =92oX
+      -----END PGP PUBLIC KEY BLOCK-----
+  linux:
+    system:
+      repo:
+        elasticsearch:
+          source: "deb https://artifacts.elastic.co/packages/5.x/apt stable main"
+          architectures: amd64
+          key: ${_param:elasticsearch_gpg_key}
+        elasticsearch_curator:
+          source: "deb https://packages.elastic.co/curator/5/debian stable main"
+          architectures: amd64
+          key: ${_param:elasticsearch_gpg_key}
diff --git a/linux/system/repo/elasticsearch.yml b/linux/system/repo/elasticsearch/init.yml
similarity index 100%
rename from linux/system/repo/elasticsearch.yml
rename to linux/system/repo/elasticsearch/init.yml
diff --git a/linux/system/repo/fluentd.yml b/linux/system/repo/fluentd.yml
new file mode 100644
index 0000000..bec4794
--- /dev/null
+++ b/linux/system/repo/fluentd.yml
@@ -0,0 +1,8 @@
+parameters:
+  linux:
+    system:
+      repo:
+        fluentd3:
+          source: "deb [arch=amd64] http://packages.treasuredata.com/3/ubuntu/${_param:linux_system_codename} ${_param:linux_system_codename} contrib"
+          architectures: amd64
+          key_url: "http://packages.treasuredata.com/GPG-KEY-td-agent"
\ No newline at end of file
diff --git a/linux/system/repo/kibana/5.yml b/linux/system/repo/kibana/5.yml
new file mode 100644
index 0000000..795f7d1
--- /dev/null
+++ b/linux/system/repo/kibana/5.yml
@@ -0,0 +1,40 @@
+parameters:
+  _param:
+    kibana_gpg_key: |
+      -----BEGIN PGP PUBLIC KEY BLOCK-----
+      Version: GnuPG v2.0.14 (GNU/Linux)
+
+      mQENBFI3HsoBCADXDtbNJnxbPqB1vDNtCsqhe49vFYsZN9IOZsZXgp7aHjh6CJBD
+      A+bGFOwyhbd7at35jQjWAw1O3cfYsKAmFy+Ar3LHCMkV3oZspJACTIgCrwnkic/9
+      CUliQe324qvObU2QRtP4Fl0zWcfb/S8UYzWXWIFuJqMvE9MaRY1bwUBvzoqavLGZ
+      j3SF1SPO+TB5QrHkrQHBsmX+Jda6d4Ylt8/t6CvMwgQNlrlzIO9WT+YN6zS+sqHd
+      1YK/aY5qhoLNhp9G/HxhcSVCkLq8SStj1ZZ1S9juBPoXV1ZWNbxFNGwOh/NYGldD
+      2kmBf3YgCqeLzHahsAEpvAm8TBa7Q9W21C8vABEBAAG0RUVsYXN0aWNzZWFyY2gg
+      KEVsYXN0aWNzZWFyY2ggU2lnbmluZyBLZXkpIDxkZXZfb3BzQGVsYXN0aWNzZWFy
+      Y2gub3JnPokBOAQTAQIAIgUCUjceygIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgEC
+      F4AACgkQ0n1mbNiOQrRzjAgAlTUQ1mgo3nK6BGXbj4XAJvuZDG0HILiUt+pPnz75
+      nsf0NWhqR4yGFlmpuctgCmTD+HzYtV9fp9qW/bwVuJCNtKXk3sdzYABY+Yl0Cez/
+      7C2GuGCOlbn0luCNT9BxJnh4mC9h/cKI3y5jvZ7wavwe41teqG14V+EoFSn3NPKm
+      TxcDTFrV7SmVPxCBcQze00cJhprKxkuZMPPVqpBS+JfDQtzUQD/LSFfhHj9eD+Xe
+      8d7sw+XvxB2aN4gnTlRzjL1nTRp0h2/IOGkqYfIG9rWmSLNlxhB2t+c0RsjdGM4/
+      eRlPWylFbVMc5pmDpItrkWSnzBfkmXL3vO2X3WvwmSFiQbkBDQRSNx7KAQgA5JUl
+      zcMW5/cuyZR8alSacKqhSbvoSqqbzHKcUQZmlzNMKGTABFG1yRx9r+wa/fvqP6OT
+      RzRDvVS/cycws8YX7Ddum7x8uI95b9ye1/Xy5noPEm8cD+hplnpU+PBQZJ5XJ2I+
+      1l9Nixx47wPGXeClLqcdn0ayd+v+Rwf3/XUJrvccG2YZUiQ4jWZkoxsA07xx7Bj+
+      Lt8/FKG7sHRFvePFU0ZS6JFx9GJqjSBbHRRkam+4emW3uWgVfZxuwcUCn1ayNgRt
+      KiFv9jQrg2TIWEvzYx9tywTCxc+FFMWAlbCzi+m4WD+QUWWfDQ009U/WM0ks0Kww
+      EwSk/UDuToxGnKU2dQARAQABiQEfBBgBAgAJBQJSNx7KAhsMAAoJENJ9ZmzYjkK0
+      c3MIAIE9hAR20mqJWLcsxLtrRs6uNF1VrpB+4n/55QU7oxA1iVBO6IFu4qgsF12J
+      TavnJ5MLaETlggXY+zDef9syTPXoQctpzcaNVDmedwo1SiL03uMoblOvWpMR/Y0j
+      6rm7IgrMWUDXDPvoPGjMl2q1iTeyHkMZEyUJ8SKsaHh4jV9wp9KmC8C+9CwMukL7
+      vM5w8cgvJoAwsp3Fn59AxWthN3XJYcnMfStkIuWgR7U2r+a210W6vnUxU4oN0PmM
+      cursYPyeV0NX/KQeUeNMwGTFB6QHS/anRaGQewijkrYYoTNtfllxIu9XYmiBERQ/
+      qPDlGRlOgVTd9xUfHFkzB52c70E=
+      =92oX
+      -----END PGP PUBLIC KEY BLOCK-----
+  linux:
+    system:
+      repo:
+        kibana:
+          source: "deb https://artifacts.elastic.co/packages/5.x/apt stable main"
+          key: ${_param:kibana_gpg_key}
diff --git a/linux/system/repo/kibana.yml b/linux/system/repo/kibana/init.yml
similarity index 100%
rename from linux/system/repo/kibana.yml
rename to linux/system/repo/kibana/init.yml
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/apt_mirantis/aptly.yml b/linux/system/repo/mcp/apt_mirantis/aptly.yml
new file mode 100644
index 0000000..b0cf536
--- /dev/null
+++ b/linux/system/repo/mcp/apt_mirantis/aptly.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_aptly_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_aptly:
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/aptly/ ${_param:linux_system_repo_mcp_aptly_version} main"
+          architectures: amd64
+          key_url: "http://apt.mirantis.com/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_aptly_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/cassandra.yml b/linux/system/repo/mcp/apt_mirantis/cassandra.yml
new file mode 100644
index 0000000..308f555
--- /dev/null
+++ b/linux/system/repo/mcp/apt_mirantis/cassandra.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_cassandra_version: ${_param:apt_mk_version}
+    linux_system_repo_mcp_cassandra_version_number: "21x"
+  linux:
+    system:
+      repo:
+        mcp_cassandra:
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/cassandra/ ${_param:linux_system_repo_mcp_cassandra_version} ${_param:linux_system_repo_mcp_cassandra_version_number}"
+          architectures: amd64
+          key_url: "http://apt.mirantis.com/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_cassandra_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/ceph.yml b/linux/system/repo/mcp/apt_mirantis/ceph.yml
new file mode 100644
index 0000000..2532f86
--- /dev/null
+++ b/linux/system/repo/mcp/apt_mirantis/ceph.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_ceph_version: ${_param:apt_mk_version}
+    linux_system_repo_mcp_ceph_codename: luminous
+  linux:
+    system:
+      repo:
+        mcp_ceph:
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/ceph/ ${_param:linux_system_repo_mcp_ceph_version} ${_param:linux_system_repo_mcp_ceph_codename}"
+          architectures: amd64
+          key_url: "http://apt.mirantis.com/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_ceph_version}'
+            priority: 1100
+            package: '*'
\ No newline at end of file
diff --git a/linux/system/repo/mcp/apt_mirantis/docker.yml b/linux/system/repo/mcp/apt_mirantis/docker.yml
new file mode 100644
index 0000000..cbd3097
--- /dev/null
+++ b/linux/system/repo/mcp/apt_mirantis/docker.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_docker_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_docker:
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/docker/ ${_param:linux_system_repo_mcp_docker_version} stable"
+          architectures: amd64
+          key_url: "http://apt.mirantis.com/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_docker_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/elastic.yml b/linux/system/repo/mcp/apt_mirantis/elastic.yml
new file mode 100644
index 0000000..da1b004
--- /dev/null
+++ b/linux/system/repo/mcp/apt_mirantis/elastic.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_elastic_version: ${_param:apt_mk_version}
+    linux_system_repo_mcp_elastic_version_number: "2.x"
+  linux:
+    system:
+      repo:
+        mcp_elastic:
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/elastic/${_param:linux_system_repo_mcp_elastic_version_number}/ ${_param:linux_system_repo_mcp_elastic_version} main"
+          architectures: amd64
+          key_url: "http://apt.mirantis.com/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_elastic_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/fluentd.yml b/linux/system/repo/mcp/apt_mirantis/fluentd.yml
new file mode 100644
index 0000000..da7d3ca
--- /dev/null
+++ b/linux/system/repo/mcp/apt_mirantis/fluentd.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_fluentd_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_fluentd:
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/fluentd/ ${_param:linux_system_repo_mcp_fluentd_version} main"
+          architectures: amd64
+          key_url: "http://apt.mirantis.com/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_fluentd_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/glusterfs.yml b/linux/system/repo/mcp/apt_mirantis/glusterfs.yml
new file mode 100644
index 0000000..1f5dd0e
--- /dev/null
+++ b/linux/system/repo/mcp/apt_mirantis/glusterfs.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_glusterfs_version: ${_param:apt_mk_version}
+    linux_system_repo_mcp_glusterfs_version_number: "3.12"
+  linux:
+    system:
+      repo:
+        mcp_glusterfs:
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/glusterfs/ ${_param:linux_system_repo_mcp_glusterfs_version} ${_param:linux_system_repo_mcp_glusterfs_version_number}"
+          architectures: amd64
+          key_url: "http://apt.mirantis.com/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_glusterfs_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/grafana.yml b/linux/system/repo/mcp/apt_mirantis/grafana.yml
new file mode 100644
index 0000000..2d71740
--- /dev/null
+++ b/linux/system/repo/mcp/apt_mirantis/grafana.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_grafana_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_grafana:
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/grafana/ ${_param:linux_system_repo_mcp_grafana_version} main"
+          architectures: amd64
+          key_url: "http://apt.mirantis.com/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_grafana_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/influxdb.yml b/linux/system/repo/mcp/apt_mirantis/influxdb.yml
new file mode 100644
index 0000000..f3c1fec
--- /dev/null
+++ b/linux/system/repo/mcp/apt_mirantis/influxdb.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_influxdb_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_influxdb:
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/influxdb/ ${_param:linux_system_repo_mcp_influxdb_version} main"
+          architectures: amd64
+          key_url: "http://apt.mirantis.com/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_influxdb_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/kibana.yml b/linux/system/repo/mcp/apt_mirantis/kibana.yml
new file mode 100644
index 0000000..078ebd8
--- /dev/null
+++ b/linux/system/repo/mcp/apt_mirantis/kibana.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_kibana_version: ${_param:apt_mk_version}
+    linux_system_repo_mcp_kibana_version_number: "4.6"
+  linux:
+    system:
+      repo:
+        mcp_kibana:
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/kibana/${_param:linux_system_repo_mcp_kibana_version_number}/ ${_param:linux_system_repo_mcp_kibana_version} kibana-46"
+          architectures: amd64
+          key_url: "http://apt.mirantis.com/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_kibana_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/maas.yml b/linux/system/repo/mcp/apt_mirantis/maas.yml
new file mode 100644
index 0000000..b18bf65
--- /dev/null
+++ b/linux/system/repo/mcp/apt_mirantis/maas.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_maas_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_maas:
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/maas/ ${_param:linux_system_repo_mcp_maas_version} main"
+          architectures: amd64
+          key_url: "http://apt.mirantis.com/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_maas_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/openstack.yml b/linux/system/repo/mcp/apt_mirantis/openstack.yml
new file mode 100644
index 0000000..5d11e59
--- /dev/null
+++ b/linux/system/repo/mcp/apt_mirantis/openstack.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mk_openstack_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mirantis_openstack:
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/openstack/${_param:openstack_version} ${_param:linux_system_repo_mk_openstack_version} main"
+          architectures: amd64
+          key_url: "http://apt.mirantis.com/public.gpg"
+          pin:
+          - pin: 'release l=${_param:openstack_version}'
+            priority: 1100
+            package: '*'
+        mk_openstack:
+          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.mirantis.com/public.gpg"
+          pin:
+          - pin: 'release l=${_param:linux_system_repo_mk_openstack_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/saltstack_2016_3.yml b/linux/system/repo/mcp/apt_mirantis/saltstack_2016_3.yml
new file mode 100644
index 0000000..bec95cd
--- /dev/null
+++ b/linux/system/repo/mcp/apt_mirantis/saltstack_2016_3.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_saltstack_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_saltstack:
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/salt/2016.3/ ${_param:linux_system_repo_mcp_saltstack_version} main"
+          architectures: amd64
+          key_url: "http://apt.mirantis.com/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_saltstack_version}'
+            priority: 1100
+            package: '*'
\ No newline at end of file
diff --git a/linux/system/repo/mcp/apt_mirantis/sensu.yml b/linux/system/repo/mcp/apt_mirantis/sensu.yml
new file mode 100644
index 0000000..f86b88a
--- /dev/null
+++ b/linux/system/repo/mcp/apt_mirantis/sensu.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_extra_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_extra:
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/sensu/ ${_param:linux_system_repo_mcp_extra_version} main"
+          architectures: amd64
+          key_url: "http://apt.mirantis.com/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_extra_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/apt_mirantis/ubuntu.yml b/linux/system/repo/mcp/apt_mirantis/ubuntu.yml
new file mode 100644
index 0000000..e254ed6
--- /dev/null
+++ b/linux/system/repo/mcp/apt_mirantis/ubuntu.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+  linux:
+    system:
+      repo:
+        ubuntu:
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:apt_mk_version}/ubuntu/ ${_param:linux_system_codename} main restricted universe"
+          architectures: amd64
+          default: true
+          key_id: 437D05B5
+          key_server: keyserver.ubuntu.com
+        ubuntu_updates:
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:apt_mk_version}/ubuntu/ ${_param:linux_system_codename}-updates main restricted universe"
+          architectures: amd64
+          default: true
+          key_id: 437D05B5
+          key_server: keyserver.ubuntu.com
+        ubuntu_security:
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:apt_mk_version}/ubuntu/ ${_param:linux_system_codename}-security main restricted universe"
+          architectures: amd64
+          default: true
+          key_id: 437D05B5
+          key_server: keyserver.ubuntu.com
\ No newline at end of file
diff --git a/linux/system/repo/mcp/contrail.yml b/linux/system/repo/mcp/contrail.yml
index 8dad590..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: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..465b75d 100644
--- a/linux/system/repo/mcp/openstack.yml
+++ b/linux/system/repo/mcp/openstack.yml
@@ -10,46 +10,14 @@
           architectures: amd64
           key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename}/archive-mcp${_param:openstack_version}.key"
           pin:
-          - pin: 'release a=${_param:openstack_version}'
-            priority: 1100
-            package: '*'
-        mirantis_openstack_hotfix:
-          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename} ${_param:openstack_version}-hotfix main"
-          architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename}/archive-mcp${_param:openstack_version}.key"
-          pin:
-          - pin: 'release a=${_param:openstack_version}-hotfix'
-            priority: 1100
-            package: '*'
-        mirantis_openstack_security:
-          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename} ${_param:openstack_version}-security main"
-          architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename}/archive-mcp${_param:openstack_version}.key"
-          pin:
-          - pin: 'release a=${_param:openstack_version}-security'
-            priority: 1100
-            package: '*'
-        mirantis_openstack_updates:
-          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename} ${_param:openstack_version}-updates main"
-          architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename}/archive-mcp${_param:openstack_version}.key"
-          pin:
-          - pin: 'release a=${_param:openstack_version}-updates'
-            priority: 1100
-            package: '*'
-        mirantis_openstack_holdback:
-          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename} ${_param:openstack_version}-holdback main"
-          architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename}/archive-mcp${_param:openstack_version}.key"
-          pin:
-          - pin: 'release a=${_param:openstack_version}-holdback'
+          - pin: 'release l=${_param:openstack_version}'
             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}'
+          - pin: 'release l=${_param:linux_system_repo_mk_openstack_version}'
             priority: 1100
             package: '*'
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/saltstack/rhel.yml b/linux/system/repo/saltstack/rhel.yml
index b0f28f3..ba045c5 100644
--- a/linux/system/repo/saltstack/rhel.yml
+++ b/linux/system/repo/saltstack/rhel.yml
@@ -6,9 +6,11 @@
   linux:
     system:
       repo:
-        salt:
+        saltstack:
           humanname: "SaltStack repo for RHEL/CentOS ${rhel_repo_releasever}"
           source: "https://repo.saltstack.com/yum/redhat/${_param:rhel_releasever}/${_param:rhel_basearch}/${_param:salt_version}"
           gpgkey: "https://repo.saltstack.com/yum/redhat/${_param:rhel_releasever}/${_param:rhel_basearch}/${_param:salt_version}/SALTSTACK-GPG-KEY.pub"
           gpgcheck: true
           architectures: amd64
+        salt:
+          enabled: false
diff --git a/linux/system/repo/saltstack/trusty.yml b/linux/system/repo/saltstack/trusty.yml
index 68ce215..a4bde9a 100644
--- a/linux/system/repo/saltstack/trusty.yml
+++ b/linux/system/repo/saltstack/trusty.yml
@@ -4,7 +4,9 @@
   linux:
     system:
       repo:
-        salt:
+        saltstack:
           source: "deb http://repo.saltstack.com/apt/ubuntu/14.04/amd64/${_param:salt_version} trusty main"
           architectures: amd64
-          key_url: "http://repo.saltstack.com/apt/ubuntu/14.04/amd64/${_param:salt_version}/SALTSTACK-GPG-KEY.pub"
\ No newline at end of file
+          key_url: "http://repo.saltstack.com/apt/ubuntu/14.04/amd64/${_param:salt_version}/SALTSTACK-GPG-KEY.pub"
+        salt:
+          enabled: false
diff --git a/linux/system/repo/saltstack/xenial.yml b/linux/system/repo/saltstack/xenial.yml
index aca462a..e63ff41 100644
--- a/linux/system/repo/saltstack/xenial.yml
+++ b/linux/system/repo/saltstack/xenial.yml
@@ -4,7 +4,9 @@
   linux:
     system:
       repo:
-        salt:
+        saltstack:
           source: "deb http://repo.saltstack.com/apt/ubuntu/16.04/amd64/${_param:salt_version} xenial main"
           architectures: amd64
-          key_url: "http://repo.saltstack.com/apt/ubuntu/16.04/amd64/${_param:salt_version}/SALTSTACK-GPG-KEY.pub"
\ No newline at end of file
+          key_url: "http://repo.saltstack.com/apt/ubuntu/16.04/amd64/${_param:salt_version}/SALTSTACK-GPG-KEY.pub"
+        salt:
+          enabled: false
diff --git a/linux/system/repo/saltstack_2016_3_trusty.yml b/linux/system/repo/saltstack_2016_3_trusty.yml
index c7e03d7..d968734 100644
--- a/linux/system/repo/saltstack_2016_3_trusty.yml
+++ b/linux/system/repo/saltstack_2016_3_trusty.yml
@@ -3,6 +3,8 @@
   linux:
     system:
       repo:
-        salt:
+        saltstack:
           source: "deb http://repo.saltstack.com/apt/ubuntu/14.04/amd64/2016.3 trusty main"
-          key_url: "http://repo.saltstack.com/apt/ubuntu/14.04/amd64/2016.3/SALTSTACK-GPG-KEY.pub"
\ No newline at end of file
+          key_url: "http://repo.saltstack.com/apt/ubuntu/14.04/amd64/2016.3/SALTSTACK-GPG-KEY.pub"
+        salt:
+          enabled: false
diff --git a/linux/system/repo/saltstack_2016_3_xenial.yml b/linux/system/repo/saltstack_2016_3_xenial.yml
index 413294f..ee2189a 100644
--- a/linux/system/repo/saltstack_2016_3_xenial.yml
+++ b/linux/system/repo/saltstack_2016_3_xenial.yml
@@ -3,6 +3,8 @@
   linux:
     system:
       repo:
-        salt:
+        saltstack:
           source: "deb http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.3 xenial main"
-          key_url: "http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.3/SALTSTACK-GPG-KEY.pub"
\ No newline at end of file
+          key_url: "http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.3/SALTSTACK-GPG-KEY.pub"
+        salt:
+          enabled: false
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/apt_mirantis/aptly.yml b/linux/system/repo_local/mcp/apt_mirantis/aptly.yml
new file mode 100644
index 0000000..cc9e7d4
--- /dev/null
+++ b/linux/system/repo_local/mcp/apt_mirantis/aptly.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_aptly_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_aptly:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/aptly/ ${_param:linux_system_repo_mcp_aptly_version} main"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_aptly_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo_local/mcp/apt_mirantis/cassandra.yml b/linux/system/repo_local/mcp/apt_mirantis/cassandra.yml
new file mode 100644
index 0000000..ed767ab
--- /dev/null
+++ b/linux/system/repo_local/mcp/apt_mirantis/cassandra.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_cassandra_version: ${_param:apt_mk_version}
+    linux_system_repo_mcp_cassandra_version_number: "21x"
+  linux:
+    system:
+      repo:
+        mcp_cassandra:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/cassandra/ ${_param:linux_system_repo_mcp_cassandra_version} ${_param:linux_system_repo_mcp_cassandra_version_number}"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_cassandra_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo_local/mcp/apt_mirantis/ceph.yml b/linux/system/repo_local/mcp/apt_mirantis/ceph.yml
new file mode 100644
index 0000000..05f4957
--- /dev/null
+++ b/linux/system/repo_local/mcp/apt_mirantis/ceph.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_ceph_version: ${_param:apt_mk_version}
+    linux_system_repo_mcp_ceph_codename: luminous
+  linux:
+    system:
+      repo:
+        mcp_ceph:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ceph/ ${_param:linux_system_repo_mcp_ceph_version} ${_param:linux_system_repo_mcp_ceph_codename}"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_ceph_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo_local/mcp/apt_mirantis/docker.yml b/linux/system/repo_local/mcp/apt_mirantis/docker.yml
new file mode 100644
index 0000000..84fed9f
--- /dev/null
+++ b/linux/system/repo_local/mcp/apt_mirantis/docker.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_docker_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_docker:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/docker/ ${_param:linux_system_repo_mcp_docker_version} stable"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_docker_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo_local/mcp/apt_mirantis/elastic.yml b/linux/system/repo_local/mcp/apt_mirantis/elastic.yml
new file mode 100644
index 0000000..2646273
--- /dev/null
+++ b/linux/system/repo_local/mcp/apt_mirantis/elastic.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_elastic_version: ${_param:apt_mk_version}
+    linux_system_repo_mcp_elastic_version_number: "2.x"
+  linux:
+    system:
+      repo:
+        mcp_elastic:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/elastic/${_param:linux_system_repo_mcp_elastic_version_number}/ ${_param:linux_system_repo_mcp_elastic_version} main"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_elastic_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo_local/mcp/apt_mirantis/fluentd.yml b/linux/system/repo_local/mcp/apt_mirantis/fluentd.yml
new file mode 100644
index 0000000..40682d7
--- /dev/null
+++ b/linux/system/repo_local/mcp/apt_mirantis/fluentd.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_fluentd_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_fluentd:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/fluentd/ ${_param:linux_system_repo_mcp_fluentd_version} main"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_fluentd_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo_local/mcp/apt_mirantis/glusterfs.yml b/linux/system/repo_local/mcp/apt_mirantis/glusterfs.yml
new file mode 100644
index 0000000..ca7e1bd
--- /dev/null
+++ b/linux/system/repo_local/mcp/apt_mirantis/glusterfs.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_glusterfs_version: ${_param:apt_mk_version}
+    linux_system_repo_mcp_glusterfs_version_number: "3.12"
+  linux:
+    system:
+      repo:
+        mcp_glusterfs:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/glusterfs/ ${_param:linux_system_repo_mcp_glusterfs_version} ${_param:linux_system_repo_mcp_glusterfs_version_number}"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_glusterfs_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo_local/mcp/apt_mirantis/grafana.yml b/linux/system/repo_local/mcp/apt_mirantis/grafana.yml
new file mode 100644
index 0000000..5ba6a63
--- /dev/null
+++ b/linux/system/repo_local/mcp/apt_mirantis/grafana.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_grafana_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_grafana:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/grafana/ ${_param:linux_system_repo_mcp_grafana_version} main"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_grafana_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo_local/mcp/apt_mirantis/influxdb.yml b/linux/system/repo_local/mcp/apt_mirantis/influxdb.yml
new file mode 100644
index 0000000..6bd6509
--- /dev/null
+++ b/linux/system/repo_local/mcp/apt_mirantis/influxdb.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_influxdb_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_influxdb:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/influxdb/ ${_param:linux_system_repo_mcp_influxdb_version} main"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_influxdb_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo_local/mcp/apt_mirantis/kibana.yml b/linux/system/repo_local/mcp/apt_mirantis/kibana.yml
new file mode 100644
index 0000000..c0ebe5a
--- /dev/null
+++ b/linux/system/repo_local/mcp/apt_mirantis/kibana.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_kibana_version: ${_param:apt_mk_version}
+    linux_system_repo_mcp_kibana_version_number: "4.6"
+  linux:
+    system:
+      repo:
+        mcp_kibana:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/kibana/${_param:linux_system_repo_mcp_kibana_version_number}/ ${_param:linux_system_repo_mcp_kibana_version} kibana-46"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_kibana_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo_local/mcp/apt_mirantis/maas.yml b/linux/system/repo_local/mcp/apt_mirantis/maas.yml
new file mode 100644
index 0000000..63f82c2
--- /dev/null
+++ b/linux/system/repo_local/mcp/apt_mirantis/maas.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_maas_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_maas:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/maas/ ${_param:linux_system_repo_mcp_maas_version} main"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_maas_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo_local/mcp/apt_mirantis/openstack.yml b/linux/system/repo_local/mcp/apt_mirantis/openstack.yml
new file mode 100644
index 0000000..0ce7d41
--- /dev/null
+++ b/linux/system/repo_local/mcp/apt_mirantis/openstack.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mk_openstack_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mirantis_openstack:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/openstack/${_param:openstack_version} ${_param:linux_system_repo_mk_openstack_version} main"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          pin:
+          - pin: 'release l=${_param:openstack_version}'
+            priority: 1100
+            package: '*'
\ No newline at end of file
diff --git a/linux/system/repo_local/mcp/apt_mirantis/saltstack_2016_3.yml b/linux/system/repo_local/mcp/apt_mirantis/saltstack_2016_3.yml
new file mode 100644
index 0000000..1cd567a
--- /dev/null
+++ b/linux/system/repo_local/mcp/apt_mirantis/saltstack_2016_3.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_saltstack_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_saltstack:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/salt/2016.3/ ${_param:linux_system_repo_mcp_saltstack_version} main"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_saltstack_version}'
+            priority: 1100
+            package: '*'
\ No newline at end of file
diff --git a/linux/system/repo_local/mcp/apt_mirantis/sensu.yml b/linux/system/repo_local/mcp/apt_mirantis/sensu.yml
new file mode 100644
index 0000000..5cd16cf
--- /dev/null
+++ b/linux/system/repo_local/mcp/apt_mirantis/sensu.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mcp_extra_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_extra:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/sensu/ ${_param:linux_system_repo_mcp_extra_version} main"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_extra_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo_local/mcp/apt_mirantis/ubuntu.yml b/linux/system/repo_local/mcp/apt_mirantis/ubuntu.yml
new file mode 100644
index 0000000..d510183
--- /dev/null
+++ b/linux/system/repo_local/mcp/apt_mirantis/ubuntu.yml
@@ -0,0 +1,23 @@
+parameters:
+  linux:
+    system:
+      repo:
+        ubuntu:
+          refresh_db: ${_param:linux_repo_refresh_db}
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu ${_param:linux_system_codename} main universe restricted"
+          architectures: amd64
+          default: true
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+        ubuntu-updates:
+          refresh_db: ${_param:linux_repo_refresh_db}
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu ${_param:linux_system_codename}-updates main universe restricted"
+          architectures: amd64
+          default: true
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+        ubuntu-security:
+          refresh_db: ${_param:linux_repo_refresh_db}
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu ${_param:linux_system_codename}-security main universe restricted"
+          architectures: amd64
+          default: true
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+
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/repo_local/mcp/extra.yml b/linux/system/repo_local/mcp/extra.yml
index c55ecfc..90339d3 100644
--- a/linux/system/repo_local/mcp/extra.yml
+++ b/linux/system/repo_local/mcp/extra.yml
@@ -15,3 +15,6 @@
           - pin: 'release a=${_param:linux_system_repo_mcp_extra_version}'
             priority: 1100
             package: '*'
+          - pin: 'release a=${_param:linux_system_repo_mcp_extra_version}'
+            priority: 500
+            package: 'libsodium18'
diff --git a/linux/system/repo_local/mcp/openstack.yml b/linux/system/repo_local/mcp/openstack.yml
index 83bb29b..2e69ef2 100644
--- a/linux/system/repo_local/mcp/openstack.yml
+++ b/linux/system/repo_local/mcp/openstack.yml
@@ -1,4 +1,7 @@
 parameters:
+  _param:
+    apt_mk_version: stable
+    linux_system_repo_mk_openstack_version: ${_param:apt_mk_version}
   linux:
     system:
       repo:
@@ -7,39 +10,14 @@
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           pin:
-          - pin: 'release a=${_param:openstack_version}'
+          - pin: 'release l=${_param:openstack_version}'
             priority: 1100
             package: '*'
-        mirantis_openstack_hotfix:
-          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:openstack_version}-hotfix main"
+        mk_openstack:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:linux_system_repo_mk_openstack_version} ${_param:openstack_version}"
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           pin:
-          - pin: 'release a=${_param:openstack_version}-hotfix'
-            priority: 1100
-            package: '*'
-        mirantis_openstack_security:
-          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:openstack_version}-security main"
-          architectures: amd64
-          key_url: "http://${_param:local_repo_url}/public.gpg"
-          pin:
-          - pin: 'release a=${_param:openstack_version}-security'
-            priority: 1100
-            package: '*'
-        mirantis_openstack_updates:
-          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:openstack_version}-updates main"
-          architectures: amd64
-          key_url: "http://${_param:local_repo_url}/public.gpg"
-          pin:
-          - pin: 'release a=${_param:openstack_version}-updates'
-            priority: 1100
-            package: '*'
-        mirantis_openstack_holdback:
-          refresh_db: ${_param:linux_repo_refresh_db}
-          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:openstack_version}-holdback main"
-          architectures: amd64
-          key_url: "http://${_param:local_repo_url}/public.gpg"
-          pin:
-          - pin: 'release a=${_param:openstack_version}-holdback'
+          - pin: 'release l=${_param:linux_system_repo_mk_openstack_version}'
             priority: 1100
             package: '*'
diff --git a/linux/system/repo_local/ubuntu.yml b/linux/system/repo_local/ubuntu.yml
index d510183..46994ee 100644
--- a/linux/system/repo_local/ubuntu.yml
+++ b/linux/system/repo_local/ubuntu.yml
@@ -20,4 +20,3 @@
           architectures: amd64
           default: true
           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 92%
rename from linux/system/single.yml
rename to linux/system/single/init.yml
index ccde6ad..c7c583b 100644
--- a/linux/system/single.yml
+++ b/linux/system/single/init.yml
@@ -15,14 +15,16 @@
           name: root
           home: /root
       package:
-        python-msgpack:
-          version: latest
         cloud-init:
           version: purged
-        unattended-updates:
+        unattended-upgrades:
           version: purged
         mcelog:
           version: latest
+      apt:
+        config:
+          compression-workaround:
+            "Acquire::CompressionTypes::Order": "gz"
       kernel:
         modules:
           - nf_conntrack
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/maas/region/restoredb.yml b/maas/region/restoredb.yml
new file mode 100644
index 0000000..df4ff95
--- /dev/null
+++ b/maas/region/restoredb.yml
@@ -0,0 +1,9 @@
+classes:
+- system.maas.region.single
+parameters:
+  maas:
+    region:
+      database:
+        initial_data:
+          source: ${linux:network:fqdn}
+          host: ${_param:backupninja_backup_host}
\ No newline at end of file
diff --git a/maas/region/single.yml b/maas/region/single.yml
index d3227ca..3fdc105 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
@@ -36,7 +36,7 @@
         dnssec_validation: 'no'
         enable_third_party_drivers: true
         maas_name: mas01
-        active_discovery_interval: '600'
+        active_discovery_interval: 600
         ntp_external_only: true
         upstream_dns: ${_param:dns_server01}
         enable_http_proxy: false
diff --git a/neutron/client/service/ironic_provision.yml b/neutron/client/service/ironic_provision.yml
new file mode 100644
index 0000000..fc545b6
--- /dev/null
+++ b/neutron/client/service/ironic_provision.yml
@@ -0,0 +1,21 @@
+classes:
+- service.neutron.client
+parameters:
+  neutron:
+    client:
+      server:
+        admin_identity:
+          endpoint_type: internalURL
+          network:
+            baremetal-provision-network:
+              tenant: admin
+              shared: false
+              admin_state_up: True
+              port_security_enabled: false
+              subnet:
+                baremetal-provision-subnet:
+                  cidr: ${_param:openstack_baremetal_neutron_subnet_cidr}
+                  allocation_pools:
+                    - start: ${_param:openstack_baremetal_neutron_subnet_allocation_start}
+                      end: ${_param:openstack_baremetal_neutron_subnet_allocation_end}
+                  enable_dhcp: true
diff --git a/neutron/compute/nfv/dpdk.yml b/neutron/compute/nfv/dpdk.yml
index 90f9095..0901bb8 100644
--- a/neutron/compute/nfv/dpdk.yml
+++ b/neutron/compute/nfv/dpdk.yml
@@ -1,6 +1,6 @@
 parameters:
   _param:
-    compute_dpdk_driver: uio
+    compute_ovs_vhost_socket_dir: "/run/openvswitch-vhost"
   linux:
     network:
       bridge: openvswitch
@@ -12,6 +12,10 @@
         dpdk_socket_mem: "${_param:compute_ovs_dpdk_socket_mem}"
         dpdk_lcore_mask: "${_param:compute_ovs_dpdk_lcore_mask}"
         memory_channels: "${_param:compute_ovs_memory_channels}"
+        vhost_socket_dir:
+          name: "openvswitch-vhost"
+          path: "${_param:compute_ovs_vhost_socket_dir}"
   neutron:
     compute:
       dpdk: True
+      vhost_socket_dir: "${_param:compute_ovs_vhost_socket_dir}"
diff --git a/neutron/control/cluster.yml b/neutron/control/cluster.yml
index 9beed6b..ea9596d 100644
--- a/neutron/control/cluster.yml
+++ b/neutron/control/cluster.yml
@@ -3,6 +3,7 @@
 - service.haproxy.proxy.single
 - service.neutron.control.cluster
 - system.haproxy.proxy.listen.openstack.neutron
+- system.galera.server.database.neutron
 parameters:
   linux:
     system:
@@ -10,20 +11,6 @@
         python-pymysql:
           fromrepo: ${_param:openstack_version}
           version: latest
-  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:
@@ -34,15 +21,15 @@
           - address: ${_param:cluster_vip_address}
             port: 9696
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 9696
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 9696
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 9696
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
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
index 0c2841b..4bbd8f8 100644
--- a/neutron/control/opencontrail/single.yml
+++ b/neutron/control/opencontrail/single.yml
@@ -1,20 +1,7 @@
 classes:
 - service.neutron.control.single
+- 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/openvswitch/cluster.yml b/neutron/control/openvswitch/cluster.yml
index c840e9a..80489c8 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
@@ -13,7 +14,6 @@
     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}
@@ -37,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:
@@ -61,15 +47,15 @@
           - address: ${_param:cluster_vip_address}
             port: 9696
           servers:
-          - name: ctl01
+          - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 9696
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl02
+          - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 9696
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
-          - name: ctl03
+          - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 9696
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/neutron/control/openvswitch/single.yml b/neutron/control/openvswitch/single.yml
index 1b830f6..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
@@ -11,7 +12,6 @@
     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}
@@ -33,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 e412f36..7f02325 100644
--- a/neutron/control/single.yml
+++ b/neutron/control/single.yml
@@ -1,5 +1,6 @@
 classes:
 - service.neutron.control.single
+- system.galera.server.database.neutron
 parameters:
   linux:
     system:
@@ -11,18 +12,3 @@
     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/gateway/cluster.yml b/neutron/gateway/cluster.yml
index c96c6bb..558a814 100644
--- a/neutron/gateway/cluster.yml
+++ b/neutron/gateway/cluster.yml
@@ -4,6 +4,11 @@
   _param:
     neutron_enable_qos: False
     neutron_enable_vlan_aware_vms: False
+  linux:
+    system:
+      kernel:
+        sysctl:
+          fs.inotify.max_user_instances: 4096
   neutron:
     gateway:
       dvr: ${_param:neutron_gateway_dvr}
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/graphite_web.yml b/nginx/server/proxy/graphite_web.yml
index 02035cd..2f3e1e8 100644
--- a/nginx/server/proxy/graphite_web.yml
+++ b/nginx/server/proxy/graphite_web.yml
@@ -8,7 +8,7 @@
           type: nginx_proxy
           name: graphite
           proxy:
-            host: mon
+            host: ${_param:stacklight_monitor_hostname}
             port: 80
             protocol: http
           host:
diff --git a/nginx/server/proxy/infra/sphinx.yml b/nginx/server/proxy/infra/sphinx.yml
index 5f733ac..b7bbfc1 100644
--- a/nginx/server/proxy/infra/sphinx.yml
+++ b/nginx/server/proxy/infra/sphinx.yml
@@ -8,7 +8,7 @@
           type: nginx_proxy
           name: sphinx
           proxy:
-            host: prx
+            host: ${_param:openstack_proxy_hostname}
             port: 8090
             protocol: http
           host:
diff --git a/nginx/server/proxy/openstack_api.yml b/nginx/server/proxy/openstack_api.yml
index 2b84993..4b0b3f4 100644
--- a/nginx/server/proxy/openstack_api.yml
+++ b/nginx/server/proxy/openstack_api.yml
@@ -88,7 +88,7 @@
         nginx_proxy_openstack_api_heat_cloudwatch:
           enabled: true
           type: nginx_proxy
-          name: openstack_api_heat_cfn
+          name: openstack_api_heat_cloudwatch
           proxy:
             host: ${_param:heat_service_host}
             port: 8003
@@ -100,7 +100,7 @@
         nginx_proxy_openstack_api_heat_cfn:
           enabled: true
           type: nginx_proxy
-          name: openstack_api_heat_cloudwatch
+          name: openstack_api_heat_cfn
           proxy:
             host: ${_param:heat_service_host}
             port: 8000
diff --git a/nginx/server/proxy/sensu_web.yml b/nginx/server/proxy/sensu_web.yml
index e06120d..c250a49 100644
--- a/nginx/server/proxy/sensu_web.yml
+++ b/nginx/server/proxy/sensu_web.yml
@@ -8,7 +8,7 @@
           type: nginx_proxy
           name: sensu
           proxy:
-            host: mon
+            host: ${_param:stacklight_monitor_hostname}
             port: 3000
             protocol: http
           host:
diff --git a/nginx/server/proxy/sphinx_web.yml b/nginx/server/proxy/sphinx_web.yml
index 5f733ac..b7bbfc1 100644
--- a/nginx/server/proxy/sphinx_web.yml
+++ b/nginx/server/proxy/sphinx_web.yml
@@ -8,7 +8,7 @@
           type: nginx_proxy
           name: sphinx
           proxy:
-            host: prx
+            host: ${_param:openstack_proxy_hostname}
             port: 8090
             protocol: http
           host:
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/opencontrail/client/resource/global_vrouter_config.yml b/opencontrail/client/resource/global_vrouter_config.yml
new file mode 100644
index 0000000..9537775
--- /dev/null
+++ b/opencontrail/client/resource/global_vrouter_config.yml
@@ -0,0 +1,11 @@
+parameters:
+  opencontrail:
+    client:
+      global_vrouter_config:
+        name: default-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/control/analytics.yml b/opencontrail/control/analytics.yml
index 8065742..6e56936 100644
--- a/opencontrail/control/analytics.yml
+++ b/opencontrail/control/analytics.yml
@@ -4,6 +4,9 @@
 - service.opencontrail.control.analytics
 - system.haproxy.proxy.listen.opencontrail.analytics
 parameters:
+  _param:
+    opencontrail_kafka_log_cleanup_mtime: '+7'
+    opencontrail_kafka_log_cleanup_dir: '/usr/share/kafka/logs/'
 # Temprorary fix for MOS9 packages to pin old version of kafka
   linux:
     system:
@@ -17,6 +20,12 @@
       kernel:
         modules:
         - nf_conntrack_ipv4
+      job:
+        kafka_logs_cleanup:
+          command: "find ${_param:opencontrail_kafka_log_cleanup_dir} -name '*.log.*' -type f -mtime ${_param:opencontrail_kafka_log_cleanup_mtime} -exec rm {} \\;"
+          identifier: kafka_logs_cleanup
+          hour: 0
+          minute: 0
   opencontrail:
     common:
       identity:
diff --git a/opencontrail/control/analytics4_0.yml b/opencontrail/control/analytics4_0.yml
index a122830..4ec9b4c 100644
--- a/opencontrail/control/analytics4_0.yml
+++ b/opencontrail/control/analytics4_0.yml
@@ -5,39 +5,43 @@
 - system.haproxy.proxy.listen.opencontrail.analytics
 parameters:
   _param:
+    opencontrail_kafka_log_cleanup_mtime: '+7'
+    opencontrail_kafka_log_cleanup_dir: '/usr/share/kafka/logs/'
     opencontrail_version: 4.0
     linux_repo_contrail_component: oc40
     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_message_queue_address: ${_param:openstack_message_queue_address}
+    opencontrail_analytics_image: docker-prod-local.artifactory.mirantis.com/opencontrail/opencontrail-analytics
+    opencontrail_analyticsdb_image: docker-prod-local.artifactory.mirantis.com/opencontrail/opencontrail-analyticsdb
+    opencontrail_analytics_container_name: opencontrail_analytics_1
+    opencontrail_analyticsdb_container_name: opencontrail_analyticsdb_1
 # Temprorary fix for MOS9 packages to pin old version of kafka
   linux:
     system:
-      package:
-        librdkafka1:
-          version: 0.9.0-0contrail0
-          hold: true
-        python-kafka:
-          version: 1.0.1-0contrail1
-          hold: true
       kernel:
         modules:
         - nf_conntrack_ipv4
+      job:
+        kafka_logs_cleanup:
+          command: "find ${_param:opencontrail_kafka_log_cleanup_dir} -name '*.log.*' -type f -mtime ${_param:opencontrail_kafka_log_cleanup_mtime} -exec rm {} \\;"
+          identifier: kafka_logs_cleanup
+          hour: 0
+          minute: 0
   opencontrail:
     common:
+      config_only: true
       identity:
         host: ${_param:openstack_control_address}
       network:
         host: ${_param:openstack_control_address}
     collector:
+      config_only: true
       discovery:
         host: None
-      database:
-        members:
-        - host: ${_param:opencontrail_analytics_node01_address}
-        - host: ${_param:opencontrail_analytics_node02_address}
-        - host: ${_param:opencontrail_analytics_node03_address}
+      identity:
+        host: ${_param:openstack_control_address}
       analytics:
         members:
         - host: ${_param:opencontrail_analytics_node01_address}
@@ -55,6 +59,7 @@
         - host: ${_param:opencontrail_control_node02_address}
         - host: ${_param:opencontrail_control_node03_address}
     database:
+      config_only: true
       discovery:
         host: None
       analytics:
@@ -62,3 +67,37 @@
         - host: ${_param:opencontrail_analytics_node01_address}
         - host: ${_param:opencontrail_analytics_node02_address}
         - host: ${_param:opencontrail_analytics_node03_address}
+  docker:
+    client:
+      compose:
+        opencontrail:
+          status: up
+          pull: true
+          service:
+            analytics:
+              image: ${_param:opencontrail_analytics_image}
+              container_name: ${_param:opencontrail_analytics_container_name}
+              network_mode: "host"
+              privileged: true
+              volumes:
+                - /etc/contrail:/etc/contrail
+                - /etc/redis/redis.conf:/etc/redis/redis.conf
+            analyticsdb:
+              image: ${_param:opencontrail_analyticsdb_image}
+              container_name: ${_param:opencontrail_analyticsdb_container_name}
+              volumes:
+                - /etc/cassandra/cassandra-env-analytics.sh:/etc/cassandra/cassandra-env.sh
+                - /etc/cassandra/cassandra_analytics.yaml:/etc/cassandra/cassandra.yaml
+                - /etc/cassandra/logback.xml:/etc/cassandra/logback.xml
+                - /etc/contrail:/etc/contrail
+                - /var/lib/analyticsdb:/var/lib/cassandra
+                - /var/lib/analyticsdb_zookeeper_data:/var/lib/zookeeper
+                - /var/lib/zookeeper/myid:/var/lib/zookeeper/myid
+                - /usr/share/kafka/config/server.properties:/usr/share/kafka/config/server.properties
+                - /usr/share/kafka/config/consumer.properties:/usr/share/kafka/config/consumer.properties
+                - /usr/share/kafka/config/zookeeper.properties:/usr/share/kafka/config/zookeeper.properties
+                - /usr/share/kafka/logs:/usr/share/kafka/logs
+                - /etc/zookeeper/conf/zoo_analytics.cfg:/etc/zookeeper/conf/zoo.cfg
+                - /etc/zookeeper/conf/log4j.properties:/etc/zookeeper/conf/log4j.properties
+              network_mode: "host"
+              privileged: true
diff --git a/opencontrail/control/cluster.yml b/opencontrail/control/cluster.yml
index a4126d6..28c12c4 100644
--- a/opencontrail/control/cluster.yml
+++ b/opencontrail/control/cluster.yml
@@ -5,6 +5,9 @@
 - system.haproxy.proxy.listen.opencontrail.control
 - system.haproxy.proxy.listen.opencontrail.analytics
 parameters:
+  _param:
+    opencontrail_kafka_log_cleanup_mtime: '+7'
+    opencontrail_kafka_log_cleanup_dir: '/usr/share/kafka/logs/'
 # Temprorary fix for MOS9 packages to pin old version of kafka
   linux:
     system:
@@ -16,6 +19,12 @@
       kernel:
         modules:
         - nf_conntrack_ipv4
+      job:
+        kafka_logs_cleanup:
+          command: "find ${_param:opencontrail_kafka_log_cleanup_dir} -name '*.log.*' -type f -mtime ${_param:opencontrail_kafka_log_cleanup_mtime} -exec rm {} \\;"
+          identifier: kafka_logs_cleanup
+          hour: 0
+          minute: 0
   opencontrail:
     web:
       database:
diff --git a/opencontrail/control/cluster4_0.yml b/opencontrail/control/cluster4_0.yml
index cd12eef..611eb24 100644
--- a/opencontrail/control/cluster4_0.yml
+++ b/opencontrail/control/cluster4_0.yml
@@ -6,37 +6,44 @@
 - system.haproxy.proxy.listen.opencontrail.analytics
 parameters:
   _param:
+    opencontrail_kafka_log_cleanup_mtime: '+7'
+    opencontrail_kafka_log_cleanup_dir: '/usr/share/kafka/logs/'
     opencontrail_version: 4.0
     linux_repo_contrail_component: oc40
     opencontrail_message_queue_node01_address: ${_param:openstack_control_node01_address}
     opencontrail_message_queue_node02_address: ${_param:openstack_control_node02_address}
     opencontrail_message_queue_node03_address: ${_param:openstack_control_node03_address}
     opencontrail_message_queue_address: ${_param:openstack_control_address}
+    opencontrail_analytics_image: docker-prod-local.artifactory.mirantis.com/opencontrail/opencontrail-analytics
+    opencontrail_analyticsdb_image: docker-prod-local.artifactory.mirantis.com/opencontrail/opencontrail-analyticsdb
+    opencontrail_controller_image: docker-prod-local.artifactory.mirantis.com/opencontrail/opencontrail-controller
+    opencontrail_controller_container_name: opencontrail_controller_1
+    opencontrail_analytics_container_name: opencontrail_analytics_1
+    opencontrail_analyticsdb_container_name: opencontrail_analyticsdb_1
+    analytics_vip_address: ${_param:opencontrail_analytics_address}
 # Temprorary fix for MOS9 packages to pin old version of kafka
   linux:
     system:
-      package:
-        librdkafka1:
-          version: 0.9.0-0contrail0
-        python-kafka:
-          version: 1.0.1-0contrail1
       kernel:
         modules:
         - nf_conntrack_ipv4
+      job:
+        kafka_logs_cleanup:
+          command: "find ${_param:opencontrail_kafka_log_cleanup_dir} -name '*.log.*' -type f -mtime ${_param:opencontrail_kafka_log_cleanup_mtime} -exec rm {} \\;"
+          identifier: kafka_logs_cleanup
+          hour: 0
+          minute: 0
   opencontrail:
     common:
+      config_only: true
       identity:
         host: ${_param:openstack_control_address}
       network:
         host: ${_param:openstack_control_address}
     collector:
+      config_only: true
       discovery:
         host: None
-      database:
-        members:
-        - host: ${_param:cluster_node01_address}
-        - host: ${_param:cluster_node02_address}
-        - host: ${_param:cluster_node03_address}
       analytics:
         members:
         - host: ${_param:cluster_node01_address}
@@ -54,6 +61,7 @@
         - host: ${_param:cluster_node02_address}
         - host: ${_param:cluster_node03_address}
     database:
+      config_only: true
       discovery:
         host: None
       analytics:
@@ -62,6 +70,7 @@
         - host: ${_param:cluster_node02_address}
         - host: ${_param:cluster_node03_address}
     config:
+      config_only: true
       network:
         host: ${_param:openstack_control_address}
       bind:
@@ -84,6 +93,9 @@
         region: ${_param:openstack_region}
         host: ${_param:openstack_control_address}
     control:
+      config_only: true
+      identity:
+        host: ${_param:openstack_control_address}
       analytics:
         members:
         - host: ${_param:cluster_node01_address}
@@ -102,6 +114,7 @@
       discovery:
         host: None
     web:
+      config_only: true
       analytics:
         host: ${_param:opencontrail_control_address}
       cache:
@@ -109,6 +122,55 @@
       identity:
         host: ${_param:openstack_control_address}
       database:
-        port: 9042
+        port: 9041
       network:
         host: ${_param:openstack_control_address}
+  docker:
+    client:
+      compose:
+        opencontrail:
+          status: up
+          pull: true
+          service:
+            controller:
+              image: ${_param:opencontrail_controller_image}
+              container_name: ${_param:opencontrail_controller_container_name}
+              volumes:
+                - /etc/contrail:/etc/contrail
+                - /var/lib/configdb:/var/lib/cassandra
+                - /var/lib/config_zookeeper_data:/var/lib/zookeeper
+                - /var/lib/zookeeper/myid:/var/lib/zookeeper/myid
+                - /etc/cassandra/cassandra-env.sh:/etc/cassandra/cassandra-env.sh
+                - /etc/cassandra/cassandra.yaml:/etc/cassandra/cassandra.yaml
+                - /etc/cassandra/logback.xml:/etc/cassandra/logback.xml
+                - /etc/zookeeper/conf/zoo.cfg:/etc/zookeeper/conf/zoo.cfg
+                - /etc/zookeeper/conf/log4j.properties:/etc/zookeeper/conf/log4j.properties
+              network_mode: "host"
+              privileged: true
+            analytics:
+              image: ${_param:opencontrail_analytics_image}
+              container_name: ${_param:opencontrail_analytics_container_name}
+              network_mode: "host"
+              privileged: true
+              volumes:
+                - /etc/contrail:/etc/contrail
+                - /etc/redis/redis.conf:/etc/redis/redis.conf
+            analyticsdb:
+              image: ${_param:opencontrail_analyticsdb_image}
+              container_name: ${_param:opencontrail_analyticsdb_container_name}
+              volumes:
+                - /etc/cassandra/cassandra-env-analytics.sh:/etc/cassandra/cassandra-env.sh
+                - /etc/cassandra/cassandra_analytics.yaml:/etc/cassandra/cassandra.yaml
+                - /etc/cassandra/logback.xml:/etc/cassandra/logback.xml
+                - /etc/contrail:/etc/contrail
+                - /var/lib/analyticsdb:/var/lib/cassandra
+                - /var/lib/analyticsdb_zookeeper_data:/var/lib/zookeeper
+                - /var/lib/zookeeper/myid:/var/lib/zookeeper/myid
+                - /usr/share/kafka/config/server.properties:/usr/share/kafka/config/server.properties
+                - /usr/share/kafka/config/consumer.properties:/usr/share/kafka/config/consumer.properties
+                - /usr/share/kafka/config/zookeeper.properties:/usr/share/kafka/config/zookeeper.properties
+                - /usr/share/kafka/logs:/usr/share/kafka/logs
+                - /etc/zookeeper/conf/zoo_analytics.cfg:/etc/zookeeper/conf/zoo.cfg
+                - /etc/zookeeper/conf/log4j.properties:/etc/zookeeper/conf/log4j.properties
+              network_mode: "host"
+              privileged: true
diff --git a/opencontrail/control/control4_0.yml b/opencontrail/control/control4_0.yml
index 32b51e5..2fe76e8 100644
--- a/opencontrail/control/control4_0.yml
+++ b/opencontrail/control/control4_0.yml
@@ -9,13 +9,18 @@
     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_controller_image: docker-prod-local.artifactory.mirantis.com/opencontrail/opencontrail-controller
+    opencontrail_controller_container_name: opencontrail_controller_1
+    analytics_vip_address: ${_param:opencontrail_analytics_address}
   opencontrail:
     common:
+      config_only: true
       identity:
         host: ${_param:openstack_control_address}
       network:
         host: ${_param:openstack_control_address}
     config:
+      config_only: true
       network:
         host: ${_param:openstack_control_address}
       bind:
@@ -38,6 +43,7 @@
         region: ${_param:openstack_region}
         host: ${_param:openstack_control_address}
     control:
+      config_only: true
       analytics:
         members:
         - host: ${_param:opencontrail_analytics_node01_address}
@@ -56,6 +62,7 @@
       discovery:
         host: None
     web:
+      config_only: true
       analytics:
         host: ${_param:opencontrail_analytics_address}
       cache:
@@ -63,10 +70,11 @@
       identity:
         host: ${_param:openstack_control_address}
       database:
-        port: 9042
+        port: 9041
       network:
         host: ${_param:openstack_control_address}
     database:
+      config_only: true
       analytics:
         members:
         - host: ${_param:opencontrail_analytics_node01_address}
@@ -77,3 +85,25 @@
       kernel:
         modules:
         - nf_conntrack_ipv4
+  docker:
+    client:
+      compose:
+        opencontrail:
+          status: up
+          pull: true
+          service:
+            controller:
+              image: ${_param:opencontrail_controller_image}
+              container_name: ${_param:opencontrail_controller_container_name}
+              volumes:
+                - /etc/contrail:/etc/contrail
+                - /var/lib/configdb:/var/lib/cassandra
+                - /var/lib/config_zookeeper_data:/var/lib/zookeeper
+                - /var/lib/zookeeper/myid:/var/lib/zookeeper/myid
+                - /etc/cassandra/cassandra-env.sh:/etc/cassandra/cassandra-env.sh
+                - /etc/cassandra/cassandra.yaml:/etc/cassandra/cassandra.yaml
+                - /etc/cassandra/logback.xml:/etc/cassandra/logback.xml
+                - /etc/zookeeper/conf/zoo.cfg:/etc/zookeeper/conf/zoo.cfg
+                - /etc/zookeeper/conf/log4j.properties:/etc/zookeeper/conf/log4j.properties
+              network_mode: "host"
+              privileged: true
diff --git a/opencontrail/control/single.yml b/opencontrail/control/single.yml
index 064418e..2ba745b 100644
--- a/opencontrail/control/single.yml
+++ b/opencontrail/control/single.yml
@@ -2,6 +2,9 @@
 - service.opencontrail.control.single
 - service.haproxy.proxy.single
 parameters:
+  _param:
+    opencontrail_kafka_log_cleanup_mtime: '+7'
+    opencontrail_kafka_log_cleanup_dir: '/usr/share/kafka/logs/'
 # Temprorary fix for MOS9 packages to pin old version of kafka
   linux:
     system:
@@ -15,6 +18,12 @@
       kernel:
         modules:
         - nf_conntrack_ipv4
+      job:
+        kafka_logs_cleanup:
+          command: "find ${_param:opencontrail_kafka_log_cleanup_dir} -name '*.log.*' -type f -mtime ${_param:opencontrail_kafka_log_cleanup_mtime} -exec rm {} \\;"
+          identifier: kafka_logs_cleanup
+          hour: 0
+          minute: 0
   haproxy:
     proxy:
       listen:
diff --git a/opencontrail/control/single4_0.yml b/opencontrail/control/single4_0.yml
index 365ed20..fcbd6af 100644
--- a/opencontrail/control/single4_0.yml
+++ b/opencontrail/control/single4_0.yml
@@ -3,21 +3,31 @@
 - service.haproxy.proxy.single
 parameters:
   _param:
+    opencontrail_kafka_log_cleanup_mtime: '+7'
+    opencontrail_kafka_log_cleanup_dir: '/usr/share/kafka/logs/'
     opencontrail_version: 4.0
     linux_repo_contrail_component: oc40
+    opencontrail_analytics_image: docker-prod-local.artifactory.mirantis.com/opencontrail/opencontrail-analytics
+    opencontrail_analyticsdb_image: docker-prod-local.artifactory.mirantis.com/opencontrail/opencontrail-analyticsdb
+    opencontrail_controller_image: docker-prod-local.artifactory.mirantis.com/opencontrail/opencontrail-controller
+    opencontrail_controller_container_name: opencontrail_controller_1
+    opencontrail_analytics_container_name: opencontrail_analytics_1
+    opencontrail_analyticsdb_container_name: opencontrail_analyticsdb_1
 # Temprorary fix for MOS9 packages to pin old version of kafka
   linux:
     system:
       package:
-        librdkafka1:
-          version: 0.9.0-0contrail0
-        python-kafka:
-          version: 1.0.1-0contrail1
         contrail-api-cli:
           version: latest
       kernel:
         modules:
         - nf_conntrack_ipv4
+      job:
+        kafka_logs_cleanup:
+          command: "find ${_param:opencontrail_kafka_log_cleanup_dir} -name '*.log.*' -type f -mtime ${_param:opencontrail_kafka_log_cleanup_mtime} -exec rm {} \\;"
+          identifier: kafka_logs_cleanup
+          hour: 0
+          minute: 0
   haproxy:
     proxy:
       listen:
@@ -73,11 +83,13 @@
           password: ${_param:opencontrail_stats_password}
   opencontrail:
     common:
+      config_only: true
       identity:
         host: ${_param:openstack_control_address}
       network:
         host: ${_param:openstack_control_address}
     config:
+      config_only: true
       network:
         host: ${_param:openstack_control_address}
       bind:
@@ -96,6 +108,7 @@
         region: ${_param:openstack_region}
         host: ${_param:openstack_control_address}
     control:
+      config_only: true
       analytics:
         members:
         - host: ${_param:single_address}
@@ -108,6 +121,7 @@
       discovery:
         host: None
     web:
+      config_only: true
       analytics:
         host: ${_param:single_address}
       cache:
@@ -115,14 +129,18 @@
       identity:
         host: ${_param:openstack_control_address}
       database:
-        port: 9042
+        port: 9041
       network:
         host: ${_param:openstack_control_address}
     database:
+      config_only: true
       analytics:
         members:
         - host: ${_param:single_address}
     collector:
+      config_only: true
+      identity:
+        host: ${_param:openstack_control_address}
       discovery:
         host: None
       database:
@@ -138,3 +156,52 @@
       config:
         members:
         - host: ${_param:single_address}
+  docker:
+    client:
+      compose:
+        opencontrail:
+          status: up
+          pull: true
+          service:
+            controller:
+              image: ${_param:opencontrail_controller_image}
+              container_name: ${_param:opencontrail_controller_container_name}
+              volumes:
+                - /etc/contrail:/etc/contrail
+                - /var/lib/configdb:/var/lib/cassandra
+                - /var/lib/config_zookeeper_data:/var/lib/zookeeper
+                - /var/lib/zookeeper/myid:/var/lib/zookeeper/myid
+                - /etc/cassandra/cassandra-env.sh:/etc/cassandra/cassandra-env.sh
+                - /etc/cassandra/cassandra.yaml:/etc/cassandra/cassandra.yaml
+                - /etc/cassandra/logback.xml:/etc/cassandra/logback.xml
+                - /etc/zookeeper/conf/zoo.cfg:/etc/zookeeper/conf/zoo.cfg
+                - /etc/zookeeper/conf/log4j.properties:/etc/zookeeper/conf/log4j.properties
+              network_mode: "host"
+              privileged: true
+            analytics:
+              image: ${_param:opencontrail_analytics_image}
+              container_name: ${_param:opencontrail_analytics_container_name}
+              network_mode: "host"
+              privileged: true
+              volumes:
+                - /etc/contrail:/etc/contrail
+                - /etc/redis/redis.conf:/etc/redis/redis.conf
+            analyticsdb:
+              image: ${_param:opencontrail_analyticsdb_image}
+              container_name: ${_param:opencontrail_analyticsdb_container_name}
+              volumes:
+                - /etc/cassandra/cassandra-env-analytics.sh:/etc/cassandra/cassandra-env.sh
+                - /etc/cassandra/cassandra_analytics.yaml:/etc/cassandra/cassandra.yaml
+                - /etc/cassandra/logback.xml:/etc/cassandra/logback.xml
+                - /etc/contrail:/etc/contrail
+                - /var/lib/analyticsdb:/var/lib/cassandra
+                - /var/lib/analyticsdb_zookeeper_data:/var/lib/zookeeper
+                - /var/lib/zookeeper/myid:/var/lib/zookeeper/myid
+                - /usr/share/kafka/config/server.properties:/usr/share/kafka/config/server.properties
+                - /usr/share/kafka/config/consumer.properties:/usr/share/kafka/config/consumer.properties
+                - /usr/share/kafka/config/zookeeper.properties:/usr/share/kafka/config/zookeeper.properties
+                - /usr/share/kafka/logs:/usr/share/kafka/logs
+                - /etc/zookeeper/conf/zoo_analytics.cfg:/etc/zookeeper/conf/zoo.cfg
+                - /etc/zookeeper/conf/log4j.properties:/etc/zookeeper/conf/log4j.properties
+              network_mode: "host"
+              privileged: true
diff --git a/openssh/server/team/all.yml b/openssh/server/team/all.yml
index 1fea51d..5daf27d 100644
--- a/openssh/server/team/all.yml
+++ b/openssh/server/team/all.yml
@@ -1,21 +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.mmo_devops
 - system.openssh.server.team.presales
 - system.openssh.server.team.services
-# avoid teams w/sudo group restrictions, or override restrictions
-#- system.openssh.server.team.support
 - 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/k8s_team.yml b/openssh/server/team/k8s_team.yml
index 9ec2b88..934afd6 100644
--- a/openssh/server/team/k8s_team.yml
+++ b/openssh/server/team/k8s_team.yml
@@ -1,3 +1,5 @@
+classes:
+- system.openssh.server.team.members.ashestakov
 parameters:
   _param:
     linux_system_user_sudo: true
diff --git a/openssh/server/team/l1_support.yml b/openssh/server/team/l1_support.yml
index 9d2a4c9..8f1d5c1 100644
--- a/openssh/server/team/l1_support.yml
+++ b/openssh/server/team/l1_support.yml
@@ -1,5 +1,6 @@
 ## DEPRECATED, this class will be removed 01/2018
-#  please use support.yml instead
+## please integrate submodule opscare instead
+## https://gerrit.mirantis.com/#/admin/projects/mmo-support/reclass-opscare
 classes:
 - system.linux.system.sudo
 # L1
@@ -13,6 +14,7 @@
 - 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
diff --git a/openssh/server/team/l2_support.yml b/openssh/server/team/l2_support.yml
index d231abc..91c7fa8 100644
--- a/openssh/server/team/l2_support.yml
+++ b/openssh/server/team/l2_support.yml
@@ -1,5 +1,6 @@
 ## DEPRECATED, this class will be removed 01/2018
-#  please use support3.yml instead
+## please integrate submodule opscare instead
+## https://gerrit.mirantis.com/#/admin/projects/mmo-support/reclass-opscare
 classes:
 - system.linux.system.sudo
 # L2
diff --git a/openssh/server/team/maintenance.yml b/openssh/server/team/maintenance.yml
new file mode 100644
index 0000000..44e8639
--- /dev/null
+++ b/openssh/server/team/maintenance.yml
@@ -0,0 +1,9 @@
+classes:
+- system.linux.system.sudo
+- system.openssh.server.team.members.astupnikov
+- system.openssh.server.team.members.dmeltsaykin
+- system.openssh.server.team.members.myatsenko
+- system.openssh.server.team.members.omolchanov
+parameters:
+  _param:
+    linux_system_user_sudo: 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/astupnikov.yml b/openssh/server/team/members/astupnikov.yml
new file mode 100644
index 0000000..d4522f6
--- /dev/null
+++ b/openssh/server/team/members/astupnikov.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        astupnikov:
+          enabled: true
+          name: astupnikov
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Alexey Stupnikov
+          home: /home/astupnikov
+          email: astupnikov@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        astupnikov:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDrV6q403BYodTCb8BCsWlkW6AHxvtCH5JxI9gUANsvbQd9n8fd16xqgXVecCRBJOS4PVauLNiQPMaj6ZuFeRZ8ZXvX498eNSNa5WhBbSwk0X/DqdK1LN/MStTAtL60JQV0yQSY+BghVJkREw4MJJBksyP0X+OG5AB+ijh/bjsabYr+EQNK+WJblrsRvNNCbjiWPcjzXVMxUrzphB09CYMwWFgx1An5jS7c1EGvXrzf0aK1KkadhGnXcjPACFaMGPYmu5HNgQcRnzNXDQU6PLGeyqNnZYZjHdQWZR88cQywznqzI8y9P4qSOTVStYoKLlYsdQFRTw8sJrRpPZupgSED astupnikov@astupnikov-srv
+          user: ${linux:system:user:astupnikov}
diff --git a/openssh/server/team/members/cade.yml b/openssh/server/team/members/cade.yml
index 6b14ff3..fb22394 100644
--- a/openssh/server/team/members/cade.yml
+++ b/openssh/server/team/members/cade.yml
@@ -3,7 +3,7 @@
     system:
       user:
         cade:
-          enabled: true
+          enabled: false
           name: cade
           sudo: ${_param:linux_system_user_sudo}
           full_name: Cade Ekblad-Frank
@@ -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/crh.yml b/openssh/server/team/members/crh.yml
new file mode 100644
index 0000000..8179415
--- /dev/null
+++ b/openssh/server/team/members/crh.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        crh:
+          enabled: true
+          name: crh
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Christian Huebner
+          home: /home/crh
+          email: chuebner@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        crh:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDjW4PSMoILjoZWDM8RnbiW6HXHBFntnDd6jgAlokJhTpYIjzUHpoh/OqphraKbNFnPbzL2nkIbaKZqKj+uuvbsitHnApmdFgSpOmBRGeaSExA30GqweYrIMKN5JAQTbONZWLSm+LD689CXRv2s6Th/YMELYfoi2W0pkvwiBdr+/0NxpdRvJydCn36SE6wOigu4uJXIXeNqIjTD+x4sW6GB54Ugbg+SMmI9D5ONlmfEj8K/ZmG1THdPGOLlquy/VLiuOBuwNoJCBV9shsGEmdg8NiOu8NPupQlsbmClZDbBAklJ0AF6ElAwKSiqCOhbaa7hu4qJFrCKC+XAgYxS9t7r
+          user: ${linux:system:user:crh}
diff --git a/openssh/server/team/members/daniillapshin.yml b/openssh/server/team/members/daniillapshin.yml
index 0098977..0796ca7 100644
--- a/openssh/server/team/members/daniillapshin.yml
+++ b/openssh/server/team/members/daniillapshin.yml
@@ -3,7 +3,7 @@
     system:
       user:
         dlapshin:
-          enabled: true
+          enabled: false
           name: dlapshin
           sudo: ${_param:linux_system_user_sudo}
           full_name: Daniil Lapshin
@@ -14,7 +14,7 @@
       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/dbogaczyk.yml b/openssh/server/team/members/dbogaczyk.yml
new file mode 100644
index 0000000..109706c
--- /dev/null
+++ b/openssh/server/team/members/dbogaczyk.yml
@@ -0,0 +1,19 @@
+parameters:
+  linux:
+    system:
+      user:
+        dbogaczyk:
+          enabled: true
+          name: dbogaczyk
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Dariusz Bogaczyk
+          home: /home/dbogaczyk
+          email: dbogaczyk@mirantis.com
+  openssh:
+    server:
+      user:
+        dbogaczyk:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC471IhcUC1BZlCWdD012E49P9BLGp08Tp45Zn2EQrSPuMUf6kuNyogU6ZSwRPvW9yzTd8DSNKEqr80hYyoX/SDURsKfZaw5iIKFWhj4M/0AODrx01h6Z6r+l4Oj7cgIe4Y24Qbkg0da9Z1nhy+QjKM7So6n+5IBwQLq0IyEuYkljnY7G1cjlDiw41f+S8euIHMZcOP86t+6UJswdwlLswXrF/QZOlkyXTl7N0Yf1z4ehpO8TpFfd9hdsO8Gh0pBfJ1P+ORveeowldDu9zIv4UUs8D8Q+nuujw2JB42XxiK0dq2xXvHUxwsg7+06gD0N5VHJOZTdJBtsEdOBFPO8GZj dbogaczyk@mirantis.com
+          user: ${linux:system:user:dbogaczyk}
diff --git a/openssh/server/team/members/dkruglov.yml b/openssh/server/team/members/dkruglov.yml
new file mode 100644
index 0000000..1df2a6b
--- /dev/null
+++ b/openssh/server/team/members/dkruglov.yml
@@ -0,0 +1,19 @@
+parameters:
+  linux:
+    system:
+      user:
+        dkruglov:
+          enabled: true
+          name: dkruglov
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Dmitriy Kruglov
+          home: /home/dkruglov
+          email: dkruglov@mirantis.com
+  openssh:
+    server:
+      user:
+        dkruglov:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDd0peqhFCRgFhxsAV23TJ6la96FH7CFd/XYW67vaxWrlWSZsba9+aMMpNFPjNfrcAqZsKNlRk3EOEAHyS4JQHcOzQAxYU5kCnqg2YnIY3bp4ihDwF/V+4xMRvt8avdlo9qBFQGqiX7iPleMM089wiATi6NYsacooqNEhrjf3NvqeJBK2NLS82aSdOFF7reC58hyomArD1dJE1usF28l5+i8d8ALlzOlMLLaIRPFmbJeT43S+VXNycREektwVbXvF+Lmt2FST1oQD2KMd+aWltLsGg2KlXwlzMIod1UuYx0ZcIk7o1GYY7duNP+gmldj+TTqAgqlOChusw8iAdOUPff dkruglov@mirantis.com
+          user: ${linux:system:user:dkruglov}
diff --git a/openssh/server/team/members/dmeltsaykin.yml b/openssh/server/team/members/dmeltsaykin.yml
new file mode 100644
index 0000000..1b5ff2e
--- /dev/null
+++ b/openssh/server/team/members/dmeltsaykin.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        dmeltsaykin:
+          enabled: true
+          name: dmeltsaykin
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Denis Meltsaykin
+          home: /home/dmeltsaykin
+          email: dmeltsaykin@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        dmeltsaykin:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqfNIy3WuxzRzOY/GBNGOnP5UrCFWZ8uMzW6hEl4wgIEYYIcv8o+C1/hvrfHimG/I/rAwYRS6Dx0bZ7m49zATNxe+EVer3BV63ru34Hzel/XxxyD34ULmrDgvP3olaAKFI17gVOFQ7hCBzDRp3s4YN3ojQspPyeiO+Jt8OwVomxJWgLauAHhl7Z/XPVHpT/fssJGG/eC4oOz4RZ4jAk0BH3Yl8s63grfwrgB79H/+nr0UvBdTkBn3T5WiC4gxnm+jQQwci7/BLQsg1Z3OykfTuyftIexNyVVy/SmdsGi37RJGFKRMMovoZx+261JgaHWBoHqBJa5UpV2usi9z3Py2z avgoor@MacBook-Pro-Denis.local
+          user: ${linux:system:user:dmeltsaykin}
diff --git a/openssh/server/team/members/ecantwell.yml b/openssh/server/team/members/ecantwell.yml
index 309c40b..d662836 100644
--- a/openssh/server/team/members/ecantwell.yml
+++ b/openssh/server/team/members/ecantwell.yml
@@ -3,7 +3,7 @@
     system:
       user:
         ecantwell:
-          enabled: true
+          enabled: false
           name: ecantwell
           sudo: ${_param:linux_system_user_sudo}
           full_name: Erick Cantwell
@@ -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/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/korlowska.yml b/openssh/server/team/members/korlowska.yml
index f175273..cde10d1 100644
--- a/openssh/server/team/members/korlowska.yml
+++ b/openssh/server/team/members/korlowska.yml
@@ -11,7 +11,6 @@
           email: korlowska@mirantis.com
   openssh:
     server:
-      enabled: true
       user:
         korlowska:
           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/maximefimov.yml b/openssh/server/team/members/maximefimov.yml
index 9baaaaf..1915548 100644
--- a/openssh/server/team/members/maximefimov.yml
+++ b/openssh/server/team/members/maximefimov.yml
@@ -19,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/michaelpetersen.yml b/openssh/server/team/members/michaelpetersen.yml
index 4ac6ee6..e19ed2f 100644
--- a/openssh/server/team/members/michaelpetersen.yml
+++ b/openssh/server/team/members/michaelpetersen.yml
@@ -3,7 +3,7 @@
     system:
       user:
         mpetersen:
-          enabled: true
+          enabled: false
           name: mpetersen
           sudo: ${_param:linux_system_user_sudo}
           full_name: Michael Petersen
@@ -14,7 +14,7 @@
       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/miwinski.yml b/openssh/server/team/members/miwinski.yml
index 5dc9d80..676fd3c 100644
--- a/openssh/server/team/members/miwinski.yml
+++ b/openssh/server/team/members/miwinski.yml
@@ -11,7 +11,6 @@
           email: miwinski@mirantis.com
   openssh:
     server:
-      enabled: true
       user:
         miwinski:
           enabled: true
diff --git a/openssh/server/team/members/mlos.yml b/openssh/server/team/members/mlos.yml
index 6b30817..fe7b8f4 100644
--- a/openssh/server/team/members/mlos.yml
+++ b/openssh/server/team/members/mlos.yml
@@ -11,7 +11,6 @@
           email: mlos@mirantis.com
   openssh:
     server:
-      enabled: true
       user:
         mlos:
           enabled: true
diff --git a/openssh/server/team/members/mniedbala.yml b/openssh/server/team/members/mniedbala.yml
index 30f7f30..a4ca5c8 100644
--- a/openssh/server/team/members/mniedbala.yml
+++ b/openssh/server/team/members/mniedbala.yml
@@ -11,7 +11,6 @@
           email: mniedbala@mirantis.com
   openssh:
     server:
-      enabled: true
       user:
         mniedbala:
           enabled: true
diff --git a/openssh/server/team/members/mpolreich.yml b/openssh/server/team/members/mpolreich.yml
index a4658aa..cfe8b70 100644
--- a/openssh/server/team/members/mpolreich.yml
+++ b/openssh/server/team/members/mpolreich.yml
@@ -16,5 +16,5 @@
         mpolreich:
           enabled: true
           public_keys:
-            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC0N+ds8BGTR+ZQo9NSRGRbjv3T8AbPmtSw2nClXxetRdmHpM/mU7/5iD7qfkCXtNptKeCG/Qk44wlijnAtjztJK1qfvyphHe3etZxLnqhYMm73Yy++yKPE/ywFPFb+7kd0BDy2iZqohZpX3gUi5iDnvXUInHNqqtTv3xFe2kmn3lq5bSRuUMtr61nZ7z/fkX8kNfoGxKrm7bhSo5zq4sjTrj3lk1LKZc1HYji3RwrzBM0z4eyed1BaJyDNtG+eFN4nOnvVn59452AR8SmKJXRErk37rEoQn80xszypzybooFPN5dpdB6u9b4xquFCOD83usb8kEjKY9VIYGuXxEEts1KIF20J+xd8UnZU8d4JL50G8JY8zdNgurR3ZyMD2okuord4cpHF8SVecsAyRV6nuhDxVtF2Xn/RriY02jrLoRPsS+3nIrKt9H8vpQZMYJ+jgEpekZhhVfz4AP3pATzOrWENzNXj5G1bLJs1C9aTtwE27EnKW73XekX/GLsehCwsQ21JvDX8PMxJwLVfqvkRlrc5GILEIVgjZ82Cj6Eens1QobymRAEWuEpZxkPx6u0kGO62ri8zFx8+NYwYDz3mwhHDRT34T/Rvzy/9V9xVjkUQOj9cZ3eYBnC1MffJjx8heHDmSQmUd+99zKa9Hzr74z3AvR3AIgFqmu7kx5fIMew== ubuntu@thinkpad-x1
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDC6jbVpCqvru+Te2RGLPy/AkcaoRqyqxdBi3OjjXdRjPQYGNuAEFgmlQDZvs5xBMAKOcrcCl8wLcFb3mmpr9+xBJAdR4K0bEqwMfCKRejsN+6AubCbrOeoWb9SsTdvBOl7rOFyICt/XuSNX56C8k1hJojC0U21DIertWSCd8h5RExE8Skqd9+KdHSFa+TZffWbysMrwba29UBt7XsAPuQr1BUOqhA8JOx146ul5HszitCOSvglre8pSJKpw6a4Fk/cb1J8Oc/AfSMdTvTLAfuF+d2Mw6SEawFEocSXq0WKCdZfJpZrWPr6SEB+7zoq3kvhIWgUH2ypYZvvqf0EVlWx polreichmartin@gmail.com
           user: ${linux:system:user:mpolreich}
\ No newline at end of file
diff --git a/openssh/server/team/members/mwilson.yml b/openssh/server/team/members/mwilson.yml
index 720edf3..9f2d63d 100644
--- a/openssh/server/team/members/mwilson.yml
+++ b/openssh/server/team/members/mwilson.yml
@@ -3,7 +3,7 @@
     system:
       user:
         mwilson:
-          enabled: true
+          enabled: false
           name: mwilson
           sudo: ${_param:linux_system_user_sudo}
           full_name: Mike Wilson
@@ -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/myatsenko.yml b/openssh/server/team/members/myatsenko.yml
new file mode 100644
index 0000000..01c2417
--- /dev/null
+++ b/openssh/server/team/members/myatsenko.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        myatsenko:
+          enabled: true
+          name: myatsenko
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Maksym Yatsenko
+          home: /home/myatsenko
+          email: myatsenko@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        myatsenko:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3wCjIm2PVzViGp5NFxeDHLVLxSq67gR+mm4jarHyDVb8wz9kfSG6cWGXNZhrqse7NgpDZpurFunFddXQBOgR6LmOfo9sDlcl4oT0+OnWHgyK6RMYcigkVYVYI5W2f5M+3Dz/KjV1S/VmRYlh/tz46PECV+Y93RaUUXS/91Uv19SAzuCd3Rj0l43HY5ROZNK0VZSrIsnhOqLZxF71v0jY/AbFxswooMH0NCM7XFqVBsRjwclfQjIGkV1j4xeWGM1xWkvvHCSEz2JdeAR5w3C7mhCzPpQJXvQGJNuccyZzoNbHPgDdFPx76MGj/VdmeUu5yKnFSnNNoQ1CcbxmaYeJ7 myatsenko@myatsenko-pc
+          user: ${linux:system:user:myatsenko}
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/omolchanov.yml b/openssh/server/team/members/omolchanov.yml
new file mode 100644
index 0000000..61289ed
--- /dev/null
+++ b/openssh/server/team/members/omolchanov.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        omolchanov:
+          enabled: true
+          name: omolchanov
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Oleksii Molchanov
+          home: /home/omolchanov
+          email: omolchanov@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        myatsenko:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCulNT7qgpJtIoLshljGonHfWk5IYh/MhzO2PEh3GnzrsnI8Mgv2W8TCD4ZB7RbSP6Jt74T7P6F4Mgzag/Nxjwimh7cUJoJZQH54QC4GVBN+YG+CRjEhIDn/OEM9q+6fnAWqBLBf/k0pzeRxWM4mLpcU+6DSPS57qjEKG5OfLCgFbBFg+4EdGP9HNVTLcMBglo7vTWtvzaGjJgH0XFXjx1fXW9JftEmwMzNdoYpQ/a19JYC2x5vu0cGWUjdMWmrzJbnTJ7SwnVYfD2mhUYDi8WGy/nCk67tb6qKCAUN5kvCEWrMPDhVEcBfvyhXU2wVnZHJbOoZxrBiici9q2U7KDYT alex@alex-B85M-DS3H
+          user: ${linux:system:user:omolchanov}
diff --git a/openssh/server/team/members/pmathews.yml b/openssh/server/team/members/pmathews.yml
index 91904a7..749fed7 100644
--- a/openssh/server/team/members/pmathews.yml
+++ b/openssh/server/team/members/pmathews.yml
@@ -3,7 +3,7 @@
     system:
       user:
         pmathews:
-          enabled: true
+          enabled: false
           name: pmathews
           sudo: ${_param:linux_system_user_sudo}
           full_name: Paul Mathews
@@ -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/pruzicka.yml b/openssh/server/team/members/pruzicka.yml
new file mode 100644
index 0000000..d56d3d6
--- /dev/null
+++ b/openssh/server/team/members/pruzicka.yml
@@ -0,0 +1,19 @@
+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:
+      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/pstefanski.yml b/openssh/server/team/members/pstefanski.yml
new file mode 100644
index 0000000..cd14386
--- /dev/null
+++ b/openssh/server/team/members/pstefanski.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        pstefanski:
+          enabled: true
+          name: pstefanski
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Pawel Stefanski
+          home: /home/pstefanski
+          email: pstefanski@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        pstefanski:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEmhgYMXA98zTAHALZKpgD4MIhHsUcAbrw0dM5AroBKiGBAEqlClxKxzsg7cC7yv4P8TloIoV656ywtgiRIfTAYoXGANxBgkeDfHFzlBQ7yYf8xU1Cl5jBG2xB9FnPJQYtxFJD36dAsUPQ4ykROw0epfBv+CCqgqmh6AWuIRnY8vGx6o3oKu4eZ4P0iSGuN2ITfVkGc32WoXFI0qIZPrnWLmIf4+LwbeA3aNZ54La5Er2wgrzdwF3D2MOBg964gCnuauUneY4WDkO81W+yUB7MA1n/WQP5dgLwdNTXiMtyNtuXs+QeEzlag2fRvMkmsUoU7oaIC3iuW8mf6967n+ED
+          user: ${linux:system:user:pstefanski}
diff --git a/openssh/server/team/members/scottmachtmes.yml b/openssh/server/team/members/scottmachtmes.yml
index 369db34..fc466fa 100644
--- a/openssh/server/team/members/scottmachtmes.yml
+++ b/openssh/server/team/members/scottmachtmes.yml
@@ -3,7 +3,7 @@
     system:
       user:
         smachtmes:
-          enabled: true
+          enabled: false
           name: smachtmes
           sudo: ${_param:linux_system_user_sudo}
           full_name: Scott Machtmes
@@ -14,7 +14,7 @@
       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/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/zahedkhurasani.yml b/openssh/server/team/members/zahedkhurasani.yml
index f5411fd..3b6f9c8 100644
--- a/openssh/server/team/members/zahedkhurasani.yml
+++ b/openssh/server/team/members/zahedkhurasani.yml
@@ -3,7 +3,7 @@
     system:
       user:
         zkhurasani:
-          enabled: true
+          enabled: false
           name: zkhurasani
           sudo: ${_param:linux_system_user_sudo}
           full_name: Zahed Khurasani
@@ -14,7 +14,7 @@
       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 1fe82c6..986c5e3 100644
--- a/openssh/server/team/mmo_devops.yml
+++ b/openssh/server/team/mmo_devops.yml
@@ -1,3 +1,4 @@
+## DEPRECATED, this class will be removed 01/2018
 classes:
 # DevOps/SRE Team
 - system.openssh.server.team.members.cade
diff --git a/openssh/server/team/oscore_devops.yml b/openssh/server/team/oscore_devops.yml
index 149d765..b5505a8 100644
--- a/openssh/server/team/oscore_devops.yml
+++ b/openssh/server/team/oscore_devops.yml
@@ -2,7 +2,6 @@
 - system.linux.system.sudo
 - 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:
diff --git a/openssh/server/team/qa_scale.yml b/openssh/server/team/qa_scale.yml
index a3f4a91..98c5540 100644
--- a/openssh/server/team/qa_scale.yml
+++ b/openssh/server/team/qa_scale.yml
@@ -1,25 +1,8 @@
+classes:
+- system.openssh.server.team.members.listomin
+- system.openssh.server.team.members.sgalkin
+- system.openssh.server.team.members.obasov
+
 parameters:
   _param:
     linux_system_user_sudo: true
-  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
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
index 564fc32..40694d2 100644
--- a/openssh/server/team/services.yml
+++ b/openssh/server/team/services.yml
@@ -1,9 +1,16 @@
 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
+- system.openssh.server.team.members.dbogaczyk
+- system.openssh.server.team.members.dkruglov
+- system.openssh.server.team.members.sflorczak
 parameters:
-  linux:
-    system:
-      user:
-        mniedbala:
-          sudo: true
+  _param:
+    linux_system_user_sudo: true
diff --git a/openssh/server/team/stacklight.yml b/openssh/server/team/stacklight.yml
index 1133135..b46ac24 100644
--- a/openssh/server/team/stacklight.yml
+++ b/openssh/server/team/stacklight.yml
@@ -18,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
@@ -81,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
@@ -95,6 +95,20 @@
           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
+        crh:
+          enabled: true
+          name: crh
+          sudo: true
+          full_name: Christian Huebner
+          home: /home/crh
+          email: chuebner@mirantis.com
   openssh:
     client:
       enabled: true
@@ -111,68 +125,76 @@
           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}
+        crh:
+          enabled: true
+          public_keys:
+          - ${public_keys:crh}
+          user: ${linux:system:user:crh}
   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:
@@ -182,14 +204,20 @@
     vgusev:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrCyaZjs8hiwx38LfpeQ2z9n9ptwQ7gFrhq2z5sK9q/LQMCubbnp5xhyF0SMY1jmQUewBOKXhnq3QSX+DmtNsnhitnZBw2BE5PBXllCBWMMiWULfAYvB0of728Q3EEjrtyfHkt7o2E+CvreVJcVI4kBwjKh5WpVBZ8mmkW/sexLGMuYu0bUWjCddu6ZlhUa+y14VZKOKp44auemza1VL/UzqOVZkBAfR2gPV2pBG3Im+SlnOlDRxKPEXQbsn3u/sNeZq0wSY++khY86AU7jAKfL2NiNsoA7CyB0jTEKwYO3vOWOhECifZuHwY/TNWyRFWM2ImW3mT9aO7nE4w4jXXJ vgusev@vgusev
     mpolreich:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC0N+ds8BGTR+ZQo9NSRGRbjv3T8AbPmtSw2nClXxetRdmHpM/mU7/5iD7qfkCXtNptKeCG/Qk44wlijnAtjztJK1qfvyphHe3etZxLnqhYMm73Yy++yKPE/ywFPFb+7kd0BDy2iZqohZpX3gUi5iDnvXUInHNqqtTv3xFe2kmn3lq5bSRuUMtr61nZ7z/fkX8kNfoGxKrm7bhSo5zq4sjTrj3lk1LKZc1HYji3RwrzBM0z4eyed1BaJyDNtG+eFN4nOnvVn59452AR8SmKJXRErk37rEoQn80xszypzybooFPN5dpdB6u9b4xquFCOD83usb8kEjKY9VIYGuXxEEts1KIF20J+xd8UnZU8d4JL50G8JY8zdNgurR3ZyMD2okuord4cpHF8SVecsAyRV6nuhDxVtF2Xn/RriY02jrLoRPsS+3nIrKt9H8vpQZMYJ+jgEpekZhhVfz4AP3pATzOrWENzNXj5G1bLJs1C9aTtwE27EnKW73XekX/GLsehCwsQ21JvDX8PMxJwLVfqvkRlrc5GILEIVgjZ82Cj6Eens1QobymRAEWuEpZxkPx6u0kGO62ri8zFx8+NYwYDz3mwhHDRT34T/Rvzy/9V9xVjkUQOj9cZ3eYBnC1MffJjx8heHDmSQmUd+99zKa9Hzr74z3AvR3AIgFqmu7kx5fIMew== ubuntu@thinkpad-x1
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDC6jbVpCqvru+Te2RGLPy/AkcaoRqyqxdBi3OjjXdRjPQYGNuAEFgmlQDZvs5xBMAKOcrcCl8wLcFb3mmpr9+xBJAdR4K0bEqwMfCKRejsN+6AubCbrOeoWb9SsTdvBOl7rOFyICt/XuSNX56C8k1hJojC0U21DIertWSCd8h5RExE8Skqd9+KdHSFa+TZffWbysMrwba29UBt7XsAPuQr1BUOqhA8JOx146ul5HszitCOSvglre8pSJKpw6a4Fk/cb1J8Oc/AfSMdTvTLAfuF+d2Mw6SEawFEocSXq0WKCdZfJpZrWPr6SEB+7zoq3kvhIWgUH2ypYZvvqf0EVlWx polreichmartin@gmail.com
     isvetlov:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9lvegjKq6OP7cgF9YU9mPOk1/mfJbov3YnYnhiW1Ks0hrWZyAo+0TV3O7LgWZ8jqD9abbYaOiWCt4d9ABkLUJfCLNAqOJRapJ+tybPAxJKx4eV8pptJ7UF0EdItasTdd+gqJJ4Krk869rwmqVQ4hethdykjhKyWu3bG+uVtFUF5xUj9zaT9NThA6/Xhz0idAiTO8ArmLng4W8ne45gANaHIWXpIsklo6GLUSZwl4z6j2z4joxNJsB1hrw0msT56F26ctkDo6thNMAzPMyZsLjYJBJIRYhdC1d4Up9114nVcY4pzYw76+zXU9zED2XNRLdyAaxFlwXvumAs3iMLI8Z isvetlov@isvetlov-mac.local
     akholkin:
       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
+    crh:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDjW4PSMoILjoZWDM8RnbiW6HXHBFntnDd6jgAlokJhTpYIjzUHpoh/OqphraKbNFnPbzL2nkIbaKZqKj+uuvbsitHnApmdFgSpOmBRGeaSExA30GqweYrIMKN5JAQTbONZWLSm+LD689CXRv2s6Th/YMELYfoi2W0pkvwiBdr+/0NxpdRvJydCn36SE6wOigu4uJXIXeNqIjTD+x4sW6GB54Ugbg+SMmI9D5ONlmfEj8K/ZmG1THdPGOLlquy/VLiuOBuwNoJCBV9shsGEmdg8NiOu8NPupQlsbmClZDbBAklJ0AF6ElAwKSiqCOhbaa7hu4qJFrCKC+XAgYxS9t7r
diff --git a/openssh/server/team/support.yml b/openssh/server/team/support.yml
index 1005a83..1c59bb8 100644
--- a/openssh/server/team/support.yml
+++ b/openssh/server/team/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
@@ -10,6 +13,7 @@
 - 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
@@ -85,8 +89,6 @@
             - ${linux:system:user:nkabanova:name}
             - ${linux:system:user:rsoto:name}
             - ${linux:system:user:rsafonov:name}
-            - ${linux:system:user:smachtmes:name}
-            - ${linux:system:user:zkhurasani:name}
             # L2OPS
             - ${linux:system:user:aepifanov:name}
             - ${linux:system:user:apetrenko:name}
@@ -103,12 +105,9 @@
             - ${linux:system:user:oliemieshko:name}
             - ${linux:system:user:sovsianikov:name}
             - ${linux:system:user:pmichalec:name}
-            - ${linux:system:user:pmathews:name}
             - ${linux:system:user:pcizinsky:name}
             - ${linux:system:user:osmola:name}
-            - ${linux:system:user:cade:name}
             - ${linux:system:user:jmosher:name}
-            - ${linux:system:user:ecantwell:name}
             - ${linux:system:user:lmercl:name}
       sudo:
         enabled: true
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..c47e241 100644
--- a/postgresql/client/security_monkey.yml
+++ b/postgresql/client/security_monkey.yml
@@ -24,5 +24,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/notification/pushkin.yml b/prometheus/alertmanager/notification/pushkin.yml
index 905a292..dd4f760 100644
--- a/prometheus/alertmanager/notification/pushkin.yml
+++ b/prometheus/alertmanager/notification/pushkin.yml
@@ -18,5 +18,5 @@
             enabled: true
             webhook_configs:
               pushkin-vip:
-                url: "${_param:alertmanager_notification_pushkin_host}:${_param:alertmanager_notification_pushkin_port}/webhook?app=stacklight"
+                url: "http://${_param:alertmanager_notification_pushkin_host}:${_param:alertmanager_notification_pushkin_port}/webhook?app=stacklight_alertmanager"
                 send_resolved: true
diff --git a/prometheus/server/init.yml b/prometheus/server/init.yml
index 99fdceb..5d115ac 100644
--- a/prometheus/server/init.yml
+++ b/prometheus/server/init.yml
@@ -4,6 +4,7 @@
     prometheus_server_data_directory: /data
   prometheus:
     server:
+      version: 2.0
       dir:
         data: /srv/volumes/local/prometheus/data
         config: /srv/volumes/local/prometheus/config
diff --git a/reclass/storage/system/ceph_mon_cluster.yml b/reclass/storage/system/ceph_mon_cluster.yml
index 85beafb..91b76f6 100644
--- a/reclass/storage/system/ceph_mon_cluster.yml
+++ b/reclass/storage/system/ceph_mon_cluster.yml
@@ -12,6 +12,7 @@
           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}
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/kubernetes_control_single.yml b/reclass/storage/system/kubernetes_control_single.yml
index 1ce0cd5..22e1883 100644
--- a/reclass/storage/system/kubernetes_control_single.yml
+++ b/reclass/storage/system/kubernetes_control_single.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     kubernetes_control_node01_hostname: ctl01
+    kubernetes_control_node01_deploy_address: ${_param:kubernetes_control_node01_address}
     kubernetes_control_system_codename: xenial
   reclass:
     storage:
@@ -14,3 +15,4 @@
             salt_master_host: ${_param:reclass_config_master}
             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/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/stacklightv2_server_cluster.yml b/reclass/storage/system/stacklightv2_server_cluster.yml
index 81bf22a..d150ab0 100644
--- a/reclass/storage/system/stacklightv2_server_cluster.yml
+++ b/reclass/storage/system/stacklightv2_server_cluster.yml
@@ -12,8 +12,8 @@
           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: ${_param:stacklight_monitor_system_codename}
diff --git a/rundeck/client/init.yml b/rundeck/client/init.yml
index 31b7ee9..f97b8da 100644
--- a/rundeck/client/init.yml
+++ b/rundeck/client/init.yml
@@ -17,3 +17,4 @@
         credentials:
           username: ${_param:rundeck_client_username}
           password: ${_param:rundeck_client_password}
+          api_token: ${_param:rundeck_client_password}
diff --git a/rundeck/client/project/cicd.yml b/rundeck/client/project/cicd.yml
index ed8b256..4cbcd40 100644
--- a/rundeck/client/project/cicd.yml
+++ b/rundeck/client/project/cicd.yml
@@ -6,6 +6,7 @@
     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
+      endpoint_type: publicURL
       username: admin
       password: password
       cert: plain-certificate
@@ -47,6 +48,9 @@
         cis/openstack/auth_url:
           type: password
           content: ${_param:rundeck_cis_openstack:auth_url}
+        cis/openstack/endpoint_type:
+          type: password
+          content: ${_param:rundeck_cis_openstack:endpoint_type}
         cis/openstack/username:
           type: password
           content: ${_param:rundeck_cis_openstack:username}
diff --git a/rundeck/server/docker.yml b/rundeck/server/docker.yml
index 492d135..d7f1a18 100644
--- a/rundeck/server/docker.yml
+++ b/rundeck/server/docker.yml
@@ -3,12 +3,11 @@
   - service.rundeck.server.single
 parameters:
   _param:
-    rundeck_postgresql_username: rundeck
-    rundeck_postgresql_password: password
-    rundeck_postgresql_database: rundeck
-    rundeck_postgresql_host: ${_param:control_vip_address}
-    rundeck_postgresql_port: 5432
     rundeck_server_ssh_timeout: 300000
+    rundeck_forward_iframe: False
+    rundeck_iframe_host: "external-proxy-endpoint"
+    rundeck_iframe_port: ${_param:haproxy_rundeck_exposed_port}
+    rundeck_iframe_ssl: False
   rundeck:
     server:
       user:
@@ -16,17 +15,15 @@
         gid: 550
       home_dir: /srv/volumes/rundeck
       root_dir: /srv/volumes/rundeck
-      datasource:
-        engine: postgresql
-        host: ${_param:rundeck_postgresql_host}
-        port: ${_param:rundeck_postgresql_port}
-        username: ${_param:rundeck_postgresql_username}
-        password: ${_param:rundeck_postgresql_password}
-        database: ${_param:rundeck_postgresql_database}
       api:
         host: ${_param:haproxy_rundeck_bind_host}
         port: ${_param:haproxy_rundeck_bind_port}
         https: ${_param:haproxy_rundeck_ssl:enabled}
+      iframe:
+        external_forward: ${_param:rundeck_forward_iframe}
+        host: ${_param:rundeck_iframe_host}
+        port: ${_param:rundeck_iframe_port}
+        https: ${_param:rundeck_iframe_ssl}
       ssh:
         user: ${_param:rundeck_runbook_user}
         private_key: ${_param:rundeck_runbook_private_key}
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..aea524c 100644
--- a/salt/control/virt.yml
+++ b/salt/control/virt.yml
@@ -45,3 +45,15 @@
       xxxlarge:
         - system:
             size: 500000
+      xxxxlarge:
+        - system:
+            size: 700000
+      huge:
+        - system:
+            size: 1000000
+      xhuge:
+        - system:
+            size: 1500000
+      xxhuge:
+        - system:
+            size: 3000000
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/pkg/foundation.yml b/salt/master/formula/pkg/foundation.yml
index 3111419..5d530d4 100644
--- a/salt/master/formula/pkg/foundation.yml
+++ b/salt/master/formula/pkg/foundation.yml
@@ -34,3 +34,6 @@
             lldp:
               source: pkg
               name: salt-formula-lldp
+            tinyproxy:
+              source: pkg
+              name: salt-formula-tinyproxy
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/pillar/composite/init.yml b/salt/master/pillar/composite/init.yml
new file mode 100644
index 0000000..c095d59
--- /dev/null
+++ b/salt/master/pillar/composite/init.yml
@@ -0,0 +1,2 @@
+classes:
+- service.salt.master.pillar.composite
diff --git a/salt/master/pillar/composite/nacl.yml b/salt/master/pillar/composite/nacl.yml
new file mode 100644
index 0000000..a2d382b
--- /dev/null
+++ b/salt/master/pillar/composite/nacl.yml
@@ -0,0 +1,2 @@
+classes:
+- service.salt.master.pillar.composite.nacl
diff --git a/salt/master/pillar/composite/reclass.yml b/salt/master/pillar/composite/reclass.yml
new file mode 100644
index 0000000..0b5443b
--- /dev/null
+++ b/salt/master/pillar/composite/reclass.yml
@@ -0,0 +1,2 @@
+classes:
+- service.salt.master.pillar.composite.reclass
diff --git a/salt/master/pillar/composite/saltclass.yml b/salt/master/pillar/composite/saltclass.yml
new file mode 100644
index 0000000..8ff5e0b
--- /dev/null
+++ b/salt/master/pillar/composite/saltclass.yml
@@ -0,0 +1,2 @@
+classes:
+- service.salt.master.pillar.composite.saltclass
diff --git a/salt/master/pillar/reclass.yml b/salt/master/pillar/reclass.yml
new file mode 100644
index 0000000..cfeca33
--- /dev/null
+++ b/salt/master/pillar/reclass.yml
@@ -0,0 +1,2 @@
+classes:
+- service.salt.master.pillar.reclass
diff --git a/salt/master/pkg.yml b/salt/master/pkg.yml
index dba30d0..ac839f8 100644
--- a/salt/master/pkg.yml
+++ b/salt/master/pkg.yml
@@ -9,5 +9,4 @@
 - system.salt.master.formula.pkg.stacklight
 - system.salt.master.formula.pkg.monitoring
 - system.salt.master.formula.pkg.helm
-- system.salt.master.formula.pkg.ceph
-- system.linux.system.repo.mcp.salt
+- system.salt.master.formula.pkg.ceph
\ No newline at end of file
diff --git a/salt/minion/cert/etcd_server_single.yml b/salt/minion/cert/etcd_server_single.yml
index f9fc585..d333fb8 100644
--- a/salt/minion/cert/etcd_server_single.yml
+++ b/salt/minion/cert/etcd_server_single.yml
@@ -7,7 +7,7 @@
           authority: ${_param:salt_minion_ca_authority}
           common_name: ${linux:system:name}
           signing_policy: cert_open
-          alternative_names: IP:127.0.0.1,DNS:${linux:system:name},DNS:${linux:network:fqdn}
+          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
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