Merge "Define a separate dir for OVS DPDK vhostuser sockets"
diff --git a/.releasenotes/notes/oss-cluster-60617c0d44ca6c0a.yaml b/.releasenotes/notes/oss-cluster-60617c0d44ca6c0a.yaml
new file mode 100644
index 0000000..3dddf61
--- /dev/null
+++ b/.releasenotes/notes/oss-cluster-60617c0d44ca6c0a.yaml
@@ -0,0 +1,9 @@
+---
+prelude: >
+  Implemented the OSS nodes definition for standalone OSS deployments
+
+features:
+  - Implemented the OSS nodes definition for standalone OSS deployments.
+    Now, deployment engineers have ability to switch the placement of the OSS
+    services that are by default binded to StackLight monitoring nodes.
+
diff --git a/.releasenotes/notes/remove-repo-includes-from-system-d4af8a0ac985d4e5.yaml b/.releasenotes/notes/remove-repo-includes-from-system-d4af8a0ac985d4e5.yaml
index 8ab3536..c0d8932 100644
--- a/.releasenotes/notes/remove-repo-includes-from-system-d4af8a0ac985d4e5.yaml
+++ b/.releasenotes/notes/remove-repo-includes-from-system-d4af8a0ac985d4e5.yaml
@@ -1,19 +1,23 @@
 ---
 summary: >
-    Removed included classes for linux.system.repo from the system level reclass
-    model because they were breaking installation from local repos.
+    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.
+  - 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.
+    - ``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.
\ No newline at end of file
+  - MCP deployments can now be installed from local repositories without
+    problems.
+
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/mcp/apt_mk/extra.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/extra.yml
index 61fdf17..89e3da0 100644
--- a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/extra.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/extra.yml
@@ -1,10 +1,10 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_trusty_extra_source: http://apt-mk.mirantis.com/trusty/
+    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-mk.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_trusty_extra_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mirantis_openstack_trusty_extra_gpgkeys:
       - A76882D3
   aptly:
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/mitaka.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/mitaka.yml
index 19e7a01..6ad0019 100644
--- a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/mitaka.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/mitaka.yml
@@ -1,10 +1,10 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mk_openstack_xenial_mitaka_source: http://apt-mk.mirantis.com/trusty/
+    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-mk.mirantis.com/public.gpg"
+    mirror_mk_openstack_xenial_mitaka_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mk_openstack_xenial_mitaka_gpgkeys:
       - A76882D3
   aptly:
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc31.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc31.yml
index 3617a1c..5678d34 100644
--- a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc31.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc31.yml
@@ -1,10 +1,10 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mcp_opencontrail_trusty_oc31_source: http://apt-mk.mirantis.com/trusty/
+    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-mk.mirantis.com/public.gpg"
+    mirror_mcp_opencontrail_trusty_oc31_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mcp_opencontrail_trusty_oc31_gpgkeys:
       - A76882D3
   aptly:
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc311.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc311.yml
index 602751d..026abdc 100644
--- a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc311.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc311.yml
@@ -1,10 +1,10 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mcp_opencontrail_trusty_oc311_source: http://apt-mk.mirantis.com/trusty/
+    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-mk.mirantis.com/public.gpg"
+    mirror_mcp_opencontrail_trusty_oc311_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mcp_opencontrail_trusty_oc311_gpgkeys:
       - A76882D3
   aptly:
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc32.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc32.yml
index 9b4a7c8..a9f388b 100644
--- a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc32.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc32.yml
@@ -1,10 +1,10 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mcp_opencontrail_trusty_oc32_source: http://apt-mk.mirantis.com/trusty/
+    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-mk.mirantis.com/public.gpg"
+    mirror_mcp_opencontrail_trusty_oc32_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mcp_opencontrail_trusty_oc32_gpgkeys:
       - A76882D3
   aptly:
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc323.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc323.yml
index cf62aff..10b503e 100644
--- a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc323.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/oc323.yml
@@ -1,10 +1,10 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mcp_opencontrail_trusty_oc323_source: http://apt-mk.mirantis.com/trusty/
+    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-mk.mirantis.com/public.gpg"
+    mirror_mcp_opencontrail_trusty_oc323_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mcp_opencontrail_trusty_oc323_gpgkeys:
       - A76882D3
   aptly:
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/salt.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/salt.yml
index 7b3b85d..5e06a4e 100644
--- a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/salt.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/salt.yml
@@ -1,10 +1,10 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_trusty_salt_source: http://apt-mk.mirantis.com/trusty/
+    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-mk.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_trusty_salt_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mirantis_openstack_trusty_salt_gpgkeys:
       - A76882D3
   aptly:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/main.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/main.yml
index 3625d51..5ae8bdb 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/main.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/main.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-backports-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/multiverse.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/multiverse.yml
index 96dc420..d04b27a 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/multiverse.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/multiverse.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-backports-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/restricted.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/restricted.yml
index 712bebc..21b6a27 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/restricted.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/restricted.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-backports-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/universe.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/universe.yml
index f18b504..0134502 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/universe.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-backports/universe.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-backports-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/main.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/main.yml
index 7164628..6aadd64 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/main.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/main.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-proposed-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/multiverse.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/multiverse.yml
index 9227036..af81ef1 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/multiverse.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/multiverse.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-proposed-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/restricted.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/restricted.yml
index f5378b9..519cb0f 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/restricted.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/restricted.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-proposed-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/universe.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/universe.yml
index b6f321b..f3a5c34 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/universe.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-proposed/universe.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-proposed-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/main.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/main.yml
index 1a797f7..9b0dbf6 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/main.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/main.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-security-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/multiverse.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/multiverse.yml
index b38e42b..6bb3f80 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/multiverse.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/multiverse.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-security-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/restricted.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/restricted.yml
index 76d2b4a..1810a8d 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/restricted.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/restricted.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-security-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/universe.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/universe.yml
index 33d42f5..8700025 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/universe.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-security/universe.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-security-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/main.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/main.yml
index d7db631..bc4e985 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/main.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/main.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-updates-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/multiverse.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/multiverse.yml
index 518b0ff..1b0b21b 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/multiverse.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/multiverse.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-updates-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/restricted.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/restricted.yml
index 1b7ea0f..7a6c4a6 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/restricted.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/restricted.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-updates-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/universe.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/universe.yml
index 3f4d815..f64f9b3 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/universe.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty-updates/universe.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-updates-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/main.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/main.yml
index 3a054e7..33b4693 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/main.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/main.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/multiverse.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/multiverse.yml
index 37a0b05..68f1586 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/multiverse.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/multiverse.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/restricted.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/restricted.yml
index dca087a..78d552c 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/restricted.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/restricted.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/universe.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/universe.yml
index a112b94..f24c1ab 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/universe.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu/trusty/universe.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_trusty_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_trusty-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
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/mcp/apt_mk/extra.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/extra.yml
index fbdc0f9..1f2b7d8 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/extra.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/extra.yml
@@ -1,10 +1,10 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_extra_source: http://apt-mk.mirantis.com/xenial/
+    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-mk.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_extra_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mirantis_openstack_xenial_extra_gpgkeys:
       - A76882D3
   aptly:
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc31.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc31.yml
index b7a8def..a2b64a0 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc31.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc31.yml
@@ -1,10 +1,10 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mcp_opencontrail_xenial_oc31_source: http://apt-mk.mirantis.com/xenial/
+    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-mk.mirantis.com/public.gpg"
+    mirror_mcp_opencontrail_xenial_oc31_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mcp_opencontrail_xenial_oc31_gpgkeys:
       - A76882D3
   aptly:
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc311.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc311.yml
index bfbb099..c09a324 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc311.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc311.yml
@@ -1,10 +1,10 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mcp_opencontrail_xenial_oc311_source: http://apt-mk.mirantis.com/xenial/
+    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-mk.mirantis.com/public.gpg"
+    mirror_mcp_opencontrail_xenial_oc311_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mcp_opencontrail_xenial_oc311_gpgkeys:
       - A76882D3
   aptly:
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc32.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc32.yml
index 012634b..95f33e8 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc32.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc32.yml
@@ -1,10 +1,10 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mcp_opencontrail_xenial_oc32_source: http://apt-mk.mirantis.com/xenial/
+    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-mk.mirantis.com/public.gpg"
+    mirror_mcp_opencontrail_xenial_oc32_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mcp_opencontrail_xenial_oc32_gpgkeys:
       - A76882D3
   aptly:
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc323.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc323.yml
index 064ea75..deceada 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc323.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/oc323.yml
@@ -1,10 +1,10 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mcp_opencontrail_xenial_oc323_source: http://apt-mk.mirantis.com/xenial/
+    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-mk.mirantis.com/public.gpg"
+    mirror_mcp_opencontrail_xenial_oc323_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mcp_opencontrail_xenial_oc323_gpgkeys:
       - A76882D3
   aptly:
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/ocata.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/ocata.yml
index 8282405..b42fdbe 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/ocata.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/ocata.yml
@@ -1,10 +1,10 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mk_openstack_xenial_ocata_source: http://apt-mk.mirantis.com/xenial/
+    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-mk.mirantis.com/public.gpg"
+    mirror_mk_openstack_xenial_ocata_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mk_openstack_xenial_ocata_gpgkeys:
       - A76882D3
   aptly:
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/salt.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/salt.yml
index fd78f2c..8e872b7 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/salt.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/salt.yml
@@ -1,10 +1,10 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_xenial_salt_source: http://apt-mk.mirantis.com/xenial/
+    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-mk.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_xenial_salt_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mirantis_openstack_xenial_salt_gpgkeys:
       - A76882D3
   aptly:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/main.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/main.yml
index f9ad68e..1fbb17d 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/main.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/main.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-backports-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/multiverse.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/multiverse.yml
index 3ef9908..be45547 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/multiverse.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/multiverse.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-backports-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/restricted.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/restricted.yml
index 5a32ee2..dcf8ede 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/restricted.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/restricted.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-backports-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/universe.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/universe.yml
index aca402e..9945a73 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/universe.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-backports/universe.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-backports-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/main.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/main.yml
index 920a16f..1ec8777 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/main.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/main.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-proposed-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/multiverse.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/multiverse.yml
index aa6cf27..48a2ddc 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/multiverse.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/multiverse.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-proposed-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/restricted.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/restricted.yml
index 78aef0b..d301c81 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/restricted.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/restricted.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-proposed-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/universe.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/universe.yml
index 618e4e8..8ddd769 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/universe.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-proposed/universe.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-proposed-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/main.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/main.yml
index dc1309a..a4977cc 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/main.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/main.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-security-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/multiverse.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/multiverse.yml
index 77fcd1c..8b40566 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/multiverse.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/multiverse.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-security-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/restricted.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/restricted.yml
index b6046ff..82beadd 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/restricted.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/restricted.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-security-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/universe.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/universe.yml
index 0a41112..6383be6 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/universe.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-security/universe.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-security-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/main.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/main.yml
index a97dcc4..810e8f6 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/main.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/main.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-updates-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/multiverse.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/multiverse.yml
index 2373c56..13546b2 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/multiverse.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/multiverse.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-updates-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/restricted.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/restricted.yml
index 74aba0b..870caa0 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/restricted.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/restricted.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-updates-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/universe.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/universe.yml
index cf8c817..cf050fd 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/universe.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial-updates/universe.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-updates-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/main.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/main.yml
index 4d9db03..c1e5969 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/main.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/main.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-main_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/multiverse.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/multiverse.yml
index a74c520..aff82a6 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/multiverse.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/multiverse.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-multiverse_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/restricted.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/restricted.yml
index bde6b36..78a8ca9 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/restricted.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/restricted.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-restricted_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/universe.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/universe.yml
index b24cc1a..c0c67ff 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/universe.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu/xenial/universe.yml
@@ -2,7 +2,8 @@
   _param:
     linux_system_country_code: cz
     aptly_server_mirror_ubuntu_xenial_sources: ${_param:aptly_server_mirror_ubuntu_sources}
-    mirror_xenial-universe_source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
+    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:
diff --git a/artifactory/client/init.yml b/artifactory/client/init.yml
index 05c05be..614266e 100644
--- a/artifactory/client/init.yml
+++ b/artifactory/client/init.yml
@@ -16,121 +16,287 @@
           ldap_account_base: ${_param:artifactory_security_ldap_root_dn}
           ldap_searchFilter: ${_param:artifactory_security_ldap_searchFilter}
         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/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/rgw/cluster.yml b/ceph/rgw/cluster.yml
index fbee1fc..31aae9a 100644
--- a/ceph/rgw/cluster.yml
+++ b/ceph/rgw/cluster.yml
@@ -1,7 +1,5 @@
 classes:
 - system.haproxy.proxy.single
 - system.haproxy.proxy.listen.radosgw
-- system.linux.system.repo.ceph
-- system.linux.system.repo.ubuntu
 - service.keepalived.cluster.single
 - service.ceph.radosgw.cluster
diff --git a/ceph/rgw/single.yml b/ceph/rgw/single.yml
index 4dba033..c140ec8 100644
--- a/ceph/rgw/single.yml
+++ b/ceph/rgw/single.yml
@@ -1,4 +1,2 @@
 classes:
-- system.linux.system.repo.ceph
-- system.linux.system.repo.ubuntu
 - service.ceph.radosgw.single
diff --git a/docker/host.yml b/docker/host.yml
index 7e5fb8c..c3cc808 100644
--- a/docker/host.yml
+++ b/docker/host.yml
@@ -10,3 +10,6 @@
       insecure_registries:
         - ${_param:cluster_vip_address}:5000
         - ${_param:cluster_public_host}:5000
+      options:
+        ipv6: true
+        fixed-cidr-v6: fc00::/7
diff --git a/docker/swarm/stack/jenkins/master.yml b/docker/swarm/stack/jenkins/master.yml
index e974dee..1237fe3 100644
--- a/docker/swarm/stack/jenkins/master.yml
+++ b/docker/swarm/stack/jenkins/master.yml
@@ -2,7 +2,7 @@
 - system.docker
 parameters:
   _param:
-    docker_image_jenkins: tcpcloud/jenkins:2.83
+    docker_image_jenkins: tcpcloud/jenkins:2.89
     jenkins_master_extra_opts: ""
     jenkins_master_executors_num: 4
     jenkins_master_max_concurent_requests: 40
diff --git a/docker/swarm/stack/pushkin.yml b/docker/swarm/stack/pushkin.yml
index a1fc0a8..d0a3bce 100644
--- a/docker/swarm/stack/pushkin.yml
+++ b/docker/swarm/stack/pushkin.yml
@@ -8,6 +8,7 @@
     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
@@ -30,7 +31,7 @@
             POSTGRES_USER: ${_param:pushkin_db_user}
             POSTGRES_PASSWORD: ${_param:pushkin_db_user_password}
             POSTGRES_DB: ${_param:pushkin_db}
-            PUSHKINDBHOST: ${_param:postgresql_bind_host}
+            PUSHKINDBHOST: ${_param:pushkin_db_host}
             PUSHKINELASTICHOST: ${_param:pushkin_elasticsearch}
             WEBHOOK_FROM: ${_param:webhook_from}
             EMAIL_SENDER_PASSWORD: ${_param:pushkin_email_sender_password}
diff --git a/fluentd/label/default_output/file.yml b/fluentd/label/default_output/file.yml
new file mode 100644
index 0000000..c67e1e0
--- /dev/null
+++ b/fluentd/label/default_output/file.yml
@@ -0,0 +1,28 @@
+parameters:
+  _param:
+    fluentd_default_output_file: /var/log/td-agent/default-all.log
+  fluentd:
+    agent:
+      config:
+        dollar: '$'
+        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:config:dollar}{ hostname }
+                  - name: Timestamp
+                    value: ${fluentd:config:dollar}{ time.strftime('%Y-%m-%dT%H:%M:%S%z') }
+            match:
+              everything:
+                tag: '**'
+                type: 'file'
+                path: ${_param:fluentd_default_output_file}
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/haproxy/proxy/listen/cicd/aptly.yml b/haproxy/proxy/listen/cicd/aptly.yml
index 682e0d3..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}
diff --git a/jenkins/client/approved_scripts.yml b/jenkins/client/approved_scripts.yml
index daafadd..7d470b6 100644
--- a/jenkins/client/approved_scripts.yml
+++ b/jenkins/client/approved_scripts.yml
@@ -127,6 +127,7 @@
         - 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
         - method java.io.File listFiles
         - method java.lang.String concat java.lang.String
         - method org.jenkinsci.plugins.workflow.steps.FlowInterruptedException getCauses
diff --git a/jenkins/client/init.yml b/jenkins/client/init.yml
index 5e3f4a1..3eeac91 100644
--- a/jenkins/client/init.yml
+++ b/jenkins/client/init.yml
@@ -31,6 +31,7 @@
         git: {}
         heavy-job: {}
         jobConfigHistory: {}
+        jira: {}
         ldap: {}
         matrix-auth: {}
         monitoring: {}
diff --git a/jenkins/client/job/ceph/add-node.yml b/jenkins/client/job/ceph/add-node.yml
index 6ae22ad..9fee51e 100644
--- a/jenkins/client/job/ceph/add-node.yml
+++ b/jenkins/client/job/ceph/add-node.yml
@@ -2,7 +2,7 @@
   jenkins:
     client:
       job:
-        ceph-remove-osd:
+        ceph-add-node:
           type: workflow-scm
           concurrent: true
           display_name: "Ceph - add node"
diff --git a/jenkins/client/job/ceph/backend-migration.yml b/jenkins/client/job/ceph/backend-migration.yml
new file mode 100644
index 0000000..a8736a2
--- /dev/null
+++ b/jenkins/client/job/ceph/backend-migration.yml
@@ -0,0 +1,57 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        ceph-backend-migration:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Ceph - backend migration"
+          discard:
+            build:
+              keep_num: 50
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: ceph-backend-migration.groovy
+          param:
+            # general parameters
+            SALT_MASTER_URL:
+              type: string
+              description: URL of Salt master
+              default: "http://${_param:salt_master_host}:6969"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              description: Credentials for login to Salt API
+              default: salt
+            TARGET:
+              type: string
+              description: OSD hosts (minion ids) to be targeted
+              default: 'osd*'
+            OSD:
+              type: string
+              description: OSD ids to be migrated (comma-separated list - 1,2,3)
+              default: '*'
+            ADMIN_HOST:
+              type: string
+              description: Host with admin keyring and access to cluster management
+              default: 'cmn01*'
+            CLUSTER_FLAGS:
+              type: string
+              description: Flags to be aplied before pipeline and after pipeline (comma-separated list)
+            WAIT_FOR_HEALTHY:
+              type: boolean
+              default: 'true'
+              description: Wait for healthy during pipeline
+            PER_OSD_CONTROL:
+              type: boolean
+              default: 'true'
+              description: Set to true if Ceph status verification after every osd disk migration is desired
+            PER_OSD_HOST_CONTROL:
+              type: boolean
+              default: 'true'
+              description: Set to true if Ceph status verificaton after whole OSD host migration is desired
+            ORIGIN_BACKEND:
+              type: string
+              description: Ceph backend before migration
+              default: 'filestore'
diff --git a/jenkins/client/job/ceph/init.yml b/jenkins/client/job/ceph/init.yml
index 4cfc6db..19bafca 100644
--- a/jenkins/client/job/ceph/init.yml
+++ b/jenkins/client/job/ceph/init.yml
@@ -3,4 +3,5 @@
 - 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
index 9ba449c..4a5efe3 100644
--- a/jenkins/client/job/ceph/remove-node.yml
+++ b/jenkins/client/job/ceph/remove-node.yml
@@ -2,7 +2,7 @@
   jenkins:
     client:
       job:
-        ceph-remove-osd:
+        ceph-remove-node:
           type: workflow-scm
           concurrent: true
           display_name: "Ceph - remove node"
diff --git a/jenkins/client/job/ceph/replace-failed-osd.yml b/jenkins/client/job/ceph/replace-failed-osd.yml
index 50e644b..57081ec 100644
--- a/jenkins/client/job/ceph/replace-failed-osd.yml
+++ b/jenkins/client/job/ceph/replace-failed-osd.yml
@@ -2,7 +2,7 @@
   jenkins:
     client:
       job:
-        ceph-remove-osd:
+        ceph-replace-failed-osd:
           type: workflow-scm
           concurrent: true
           display_name: "Ceph - replace failed OSD"
@@ -40,14 +40,6 @@
               type: string
               description: Host with admin keyring and correct crushmap file in /etc/ceph/crushmap
               default: 'cmn01*'
-            ENFORCE_CRUSHMAP:
-              type: boolean
-              default: 'false'
-              description: Set to true if the prepared crush map should be enforced
-            WAIT_FOR_PG_REBALANCE:
-              type: boolean
-              default: 'true'
-              description: Wait for PGs to rebalance after osd is removed from crush map
             WAIT_FOR_HEALTHY:
               type: boolean
               default: 'false'
diff --git a/jenkins/client/job/ceph/upgrade.yml b/jenkins/client/job/ceph/upgrade.yml
new file mode 100644
index 0000000..9b58f3b
--- /dev/null
+++ b/jenkins/client/job/ceph/upgrade.yml
@@ -0,0 +1,74 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        ceph-upgrade:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Ceph - upgrade"
+          discard:
+            build:
+              keep_num: 50
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: ceph-upgrade.groovy
+          param:
+            # general parameters
+            SALT_MASTER_URL:
+              type: string
+              description: URL of Salt master
+              default: "http://${_param:salt_master_host}:6969"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              description: Credentials for login to Salt API
+              default: salt
+            ADMIN_HOST:
+              type: string
+              description: Host with admin keyring and correct crushmap file in /etc/ceph/crushmap
+              default: 'cmn01*'
+            WAIT_FOR_HEALTHY:
+              type: boolean
+              default: 'true'
+              description: Wait for healthy during pipeline
+            CLUSTER_FLAGS:
+              type: string
+              default: 'sortbitwise,noout'
+              description: Flags to be aplied before pipeline and after pipeline (comma-separated list)
+            ORIGIN_RELEASE:
+              type: string
+              description: Ceph release version before upgrade
+              default: 'jewel'
+            TARGET_RELEASE:
+              type: string
+              description: Ceph release version after upgrade
+              default: 'luminous'
+            STAGE_UPGRADE_MON:
+              type: boolean
+              default: 'true'
+              description: Set to True if Ceph mon nodes upgrade is desired
+            STAGE_UPGRADE_MGR:
+              type: boolean
+              default: 'true'
+              description: Set to True if Ceph mgr nodes upgrade or new deploy is desired
+            STAGE_UPGRADE_OSD:
+              type: boolean
+              default: 'true'
+              description: Set to True if Ceph osd nodes upgrade is desired
+            STAGE_UPGRADE_RGW:
+              type: boolean
+              default: 'true'
+              description: Set to True if Ceph rgw nodes upgrade is desired
+            STAGE_UPGRADE_CLIENT:
+              type: boolean
+              default: 'true'
+              description: Set to True if Ceph client nodes upgrade is desired (includes for example ctl/cmp nodes)
+            STAGE_FINALIZE:
+              type: boolean
+              default: 'true'
+              description: Set to True if configs recommended for TARGET_RELEASE should be set after upgrade is done
+            BACKUP_ENABLED:
+              type: boolean
+              default: 'true'
+              description: Set to True if disks of Ceph VMs should be copied before upgrade
diff --git a/jenkins/client/job/debian/packages/salt.yml b/jenkins/client/job/debian/packages/salt.yml
index 41fdb7a..74665e7 100644
--- a/jenkins/client/job/debian/packages/salt.yml
+++ b/jenkins/client/job/debian/packages/salt.yml
@@ -71,6 +71,9 @@
             - name: docker
               upload_source_package: false
               dist: trusty
+            - name: dogtag
+              upload_source_package: false
+              dist: trusty
             - name: dovecot
               upload_source_package: false
               dist: trusty
@@ -83,6 +86,9 @@
             - name: fluentbit
               upload_source_package: false
               dist: trusty
+            - name: fluentd
+              upload_source_package: false
+              dist: trusty
             - name: foreman
               upload_source_package: false
               dist: trusty
@@ -290,6 +296,9 @@
             - 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
@@ -371,6 +380,9 @@
             - name: docker
               upload_source_package: true
               dist: xenial
+            - name: dogtag
+              upload_source_package: true
+              dist: xenial
             - name: dovecot
               upload_source_package: true
               dist: xenial
@@ -599,6 +611,9 @@
             - 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
diff --git a/jenkins/client/job/deploy/lab/deploy.yml b/jenkins/client/job/deploy/lab/deploy.yml
index 108e30d..d7f56e9 100644
--- a/jenkins/client/job/deploy/lab/deploy.yml
+++ b/jenkins/client/job/deploy/lab/deploy.yml
@@ -90,6 +90,9 @@
                 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"
 
               # aws api
               AWS_STACK_REGION:
diff --git a/jenkins/client/job/deploy/update/upgrade.yml b/jenkins/client/job/deploy/update/upgrade.yml
index efbd153..415e0b4 100644
--- a/jenkins/client/job/deploy/update/upgrade.yml
+++ b/jenkins/client/job/deploy/update/upgrade.yml
@@ -35,3 +35,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/oscore/init.yml b/jenkins/client/job/oscore/init.yml
index 171ff6e..fc06d59 100644
--- a/jenkins/client/job/oscore/init.yml
+++ b/jenkins/client/job/oscore/init.yml
@@ -1,5 +1,6 @@
 classes:
   - system.jenkins.client.job.oscore.tests
+  - system.jenkins.client.job.oscore.qa
 parameters:
   jenkins:
     client:
@@ -7,4 +8,4 @@
         "OSCORE":
           enabled: true
           type: ListView
-          include_regex: "^oscore-.*"
\ No newline at end of file
+          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/tests.yml b/jenkins/client/job/oscore/tests.yml
index b25f8a5..85346e1 100644
--- a/jenkins/client/job/oscore/tests.yml
+++ b/jenkins/client/job/oscore/tests.yml
@@ -104,6 +104,10 @@
                 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
@@ -159,6 +163,9 @@
                 type: string
                 description: Job for results processing
                 default: "{{proc_results_job}}"
+              SLAVE_NODE:
+                type: string
+                default: 'python'
               # salt
               SALT_MASTER_CREDENTIALS:
                 type: string
@@ -185,6 +192,10 @@
                 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
@@ -196,6 +207,10 @@
                 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:
diff --git a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
index 34b7460..2de63a5 100644
--- a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
+++ b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
@@ -61,6 +61,8 @@
               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
@@ -221,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
diff --git a/jenkins/client/job/salt-formulas/tests.yml b/jenkins/client/job/salt-formulas/tests.yml
index d35b179..950c79f 100644
--- a/jenkins/client/job/salt-formulas/tests.yml
+++ b/jenkins/client/job/salt-formulas/tests.yml
@@ -29,10 +29,12 @@
             - name: dekapod
             - name: devops-portal
             - name: docker
+            - name: dogtag
             - name: dovecot
             - name: elasticsearch
             - name: etcd
             - name: fluentbit
+            - name: fluentd
             - name: foreman
             - name: freeipa
             - name: galera
@@ -113,6 +115,7 @@
             - name: swift
             - name: taiga
             - name: telegraf
+            - name: tinyproxy
             - name: tftpd-hpa
             - name: varnish
             - name: xtrabackup
diff --git a/jenkins/client/job/salt-models/tests.yml b/jenkins/client/job/salt-models/tests.yml
index e60fe22..0440b28 100644
--- a/jenkins/client/job/salt-models/tests.yml
+++ b/jenkins/client/job/salt-models/tests.yml
@@ -70,6 +70,12 @@
               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:
@@ -147,12 +153,18 @@
               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: "xtrabackup docker haproxy aptly keepalived gerrit jenkins openldap maas backupninja"
       job:
         test-salt-model-node:
           name: test-salt-model-node
@@ -208,3 +220,9 @@
             LEGACY_TEST_MODE:
               type: boolean
               default: "false"
+            APT_REPOSITORY:
+              type: string
+              default: ""
+            APT_REPOSITORY_GPG:
+              type: string
+              default: ""
diff --git a/jenkins/client/job/validate.yml b/jenkins/client/job/validate.yml
index 88b0435..6d3ecda 100644
--- a/jenkins/client/job/validate.yml
+++ b/jenkins/client/job/validate.yml
@@ -59,6 +59,22 @@
                 - 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: ""
@@ -102,6 +118,14 @@
               type: string
               default: "m1.tiny"
               description: Flavor name for Rally scenarios
+            RALLY_CONFIG_REPO:
+              type: string
+              default: ""
+              description: Git repository with configuration files for Rally
+            RALLY_CONFIG_BRANCH:
+              type: string
+              default: ""
+              description: Git branch which will be used during the checkout
             AVAILABILITY_ZONE:
               type: string
               default: "nova"
@@ -114,3 +138,38 @@
               type: boolean
               default: 'true'
               description: If chosen then previous build results will be used in the current build
+        cvp-sanity:
+          type: workflow-scm
+          name: validate-cvp-sanity
+          display_name: "CVP - Sanity checks"
+          discard:
+            build:
+              keep_num: 20
+            artifact:
+              keep_num: 20
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: cvp-sanity.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: ""
+              description: Full Salt API address [e.g. https://10.10.10.2:6969]
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            SANITY_TESTS_REPO:
+              type: string
+              default: "https://github.com/Mirantis/cvp-sanity-checks"
+              description: Url for cvp-sanity-checks
+            SANITY_TESTS_SET:
+              type: string
+              default: ""
+              description: Leave empty for full run or choose a file, e.g. test_mtu.py
+            PROXY:
+              type: string
+              default: ""
+              description: Proxy address to clone repo and install python requirements
diff --git a/kubernetes/control/init.yml b/kubernetes/control/init.yml
index 87aee26..6e5fb40 100644
--- a/kubernetes/control/init.yml
+++ b/kubernetes/control/init.yml
@@ -1,3 +1,2 @@
 classes:
   - service.kubernetes.control.cluster
-  - system.linux.system.repo.docker_legacy
diff --git a/kubernetes/master/cluster.yml b/kubernetes/master/cluster.yml
index 4164267..f21f003 100644
--- a/kubernetes/master/cluster.yml
+++ b/kubernetes/master/cluster.yml
@@ -3,7 +3,6 @@
 - service.keepalived.cluster.single
 - service.haproxy.proxy.single
 - system.haproxy.proxy.listen.kubernetes.apiserver
-- system.linux.system.repo.docker_legacy
 parameters:
   _param:
     kubernetes_netchecker_agent_image: quay.io/l23network/k8s-netchecker-agent:v1.0
diff --git a/kubernetes/master/single.yml b/kubernetes/master/single.yml
index a546233..cc8d8ab 100644
--- a/kubernetes/master/single.yml
+++ b/kubernetes/master/single.yml
@@ -1,6 +1,5 @@
 classes:
 - service.kubernetes.master.single
-- system.linux.system.repo.docker_legacy
 parameters:
   _param:
     kubernetes_netchecker_agent_image: quay.io/l23network/k8s-netchecker-agent:v1.0
diff --git a/kubernetes/pool/cluster.yml b/kubernetes/pool/cluster.yml
index 252a0b7..0f961a3 100644
--- a/kubernetes/pool/cluster.yml
+++ b/kubernetes/pool/cluster.yml
@@ -1,7 +1,6 @@
 classes:
 - service.kubernetes.pool.cluster
 - service.docker.host
-- system.linux.system.repo.docker_legacy
 parameters:
   _param:
     # component docker images
diff --git a/kubernetes/pool/single.yml b/kubernetes/pool/single.yml
index c2505bb..00f22b8 100644
--- a/kubernetes/pool/single.yml
+++ b/kubernetes/pool/single.yml
@@ -1,7 +1,6 @@
 classes:
 - service.kubernetes.pool.single
 - service.docker.host
-- system.linux.system.repo.docker_legacy
 parameters:
   _param:
     # component docker images
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/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..baa363a 100644
--- a/linux/system/repo/mcp/openstack.yml
+++ b/linux/system/repo/mcp/openstack.yml
@@ -13,42 +13,10 @@
           - 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'
-            priority: 1100
-            package: '*'
         mk_openstack:
-          source: "deb [arch=amd64] http://apt-mk.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mk_openstack_version} ${_param:openstack_version}"
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mk_openstack_version} ${_param:openstack_version}"
           architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          key_url: "http://apt.mirantis.com/public.gpg"
           pin:
           - pin: 'release a=${_param:linux_system_repo_mk_openstack_version}'
             priority: 1100
diff --git a/linux/system/repo/mcp/salt/init.yml b/linux/system/repo/mcp/salt/init.yml
index 6d79919..61a2d2e 100644
--- a/linux/system/repo/mcp/salt/init.yml
+++ b/linux/system/repo/mcp/salt/init.yml
@@ -6,9 +6,9 @@
     system:
       repo:
         mcp_salt:
-          source: "deb [arch=amd64] http://apt-mk.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_salt_version} salt"
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_salt_version} salt"
           architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          key_url: "http://apt.mirantis.com/public.gpg"
           clean_file: true
           pin:
           - pin: 'release a=${_param:linux_system_repo_mcp_salt_version}'
diff --git a/linux/system/repo/mcp/salt/unstable.yml b/linux/system/repo/mcp/salt/unstable.yml
index b0b992e..8350413 100644
--- a/linux/system/repo/mcp/salt/unstable.yml
+++ b/linux/system/repo/mcp/salt/unstable.yml
@@ -7,9 +7,9 @@
     system:
       repo:
         mcp_salt_unstable:
-          source: "deb [arch=amd64] http://apt-mk.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_salt_unstable_version} salt"
+          source: "deb [arch=amd64] http://apt.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_salt_unstable_version} salt"
           architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          key_url: "http://apt.mirantis.com/public.gpg"
           clean_file: true
           pin:
           - pin: 'release a=${_param:linux_system_repo_mcp_salt_unstable_version}'
diff --git a/linux/system/repo/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/openstack.yml b/linux/system/repo_local/mcp/openstack.yml
index 83bb29b..a25cc57 100644
--- a/linux/system/repo_local/mcp/openstack.yml
+++ b/linux/system/repo_local/mcp/openstack.yml
@@ -10,36 +10,3 @@
           - pin: 'release a=${_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"
-          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'
-            priority: 1100
-            package: '*'
diff --git a/linux/system/single/debian.yml b/linux/system/single/debian.yml
index b6d0b2b..bb3cb54 100644
--- a/linux/system/single/debian.yml
+++ b/linux/system/single/debian.yml
@@ -8,3 +8,7 @@
       package:
         python-msgpack:
           version: latest
+      apt:
+        config:
+          compression-workaround:
+            "Acquire::CompressionTypes::Order": "gz"
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 5d0e6a1..e8b29cc 100644
--- a/nova/compute/cluster.yml
+++ b/nova/compute/cluster.yml
@@ -1,5 +1,6 @@
 classes:
 - service.nova.compute.kvm
+- service.iptables.server
 parameters:
   _param:
     nova_vncproxy_url: https://${_param:cluster_public_host}:6080
@@ -94,3 +95,15 @@
         public_key: ${_param:nova_compute_ssh_public}
         private_key: ${_param:nova_compute_ssh_private}
       my_ip: ${_param:single_address}
+      libvirt:
+        uri: qemu+unix:///system?socket=/var/run/libvirt/libvirt-sock
+  iptables:
+    service:
+      enabled: true
+      chain:
+        INPUT:
+          rules:
+            # deny any connections to libvirt port
+            - destination_port: 16509
+              protocol: tcp
+              jump: DROP
\ No newline at end of file
diff --git a/nova/compute/single.yml b/nova/compute/single.yml
index b915145..d5126df 100644
--- a/nova/compute/single.yml
+++ b/nova/compute/single.yml
@@ -2,6 +2,7 @@
 - nova
 classes:
 - service.nova.compute.kvm
+- service.iptables.server
 parameters:
   _param:
     nova_vncproxy_url: https://${_param:cluster_public_host}:6080
@@ -90,3 +91,15 @@
         public_key: ${_param:nova_compute_ssh_public}
         private_key: ${_param:nova_compute_ssh_private}
       my_ip: ${_param:single_address}
+      libvirt:
+        uri: qemu+unix:///system?socket=/var/run/libvirt/libvirt-sock
+  iptables:
+    service:
+      enabled: true
+      chain:
+        INPUT:
+          rules:
+            # deny any connections to libvirt port
+            - destination_port: 16509
+              protocol: tcp
+              jump: DROP
\ No newline at end of file
diff --git a/openssh/server/team/all.yml b/openssh/server/team/all.yml
index 5106c73..5daf27d 100644
--- a/openssh/server/team/all.yml
+++ b/openssh/server/team/all.yml
@@ -1,13 +1,11 @@
 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
@@ -17,6 +15,8 @@
 - 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/l1_support.yml b/openssh/server/team/l1_support.yml
index 1db07d6..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
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/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/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/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/stacklight.yml b/openssh/server/team/stacklight.yml
index 403e7e1..b46ac24 100644
--- a/openssh/server/team/stacklight.yml
+++ b/openssh/server/team/stacklight.yml
@@ -102,6 +102,13 @@
           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
@@ -178,6 +185,11 @@
           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
@@ -192,7 +204,7 @@
     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:
@@ -207,3 +219,5 @@
       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 1b09ef0..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
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/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/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/master/formula/git/openstack.yml b/salt/master/formula/git/openstack.yml
index 3472f2e..cd9df0a 100644
--- a/salt/master/formula/git/openstack.yml
+++ b/salt/master/formula/git/openstack.yml
@@ -8,10 +8,10 @@
               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'
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 663572b..3d22c41 100644
--- a/salt/master/formula/pkg/openstack.yml
+++ b/salt/master/formula/pkg/openstack.yml
@@ -7,9 +7,9 @@
             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
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