Merge "Ldap searching support for kqueen"
diff --git a/apache/server/proxy/openstack/ironic.yml b/apache/server/proxy/openstack/ironic.yml
new file mode 100644
index 0000000..d6bd7d3
--- /dev/null
+++ b/apache/server/proxy/openstack/ironic.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    apache_proxy_ssl:
+      enabled: false
+    apache_proxy_openstack_api_host: ${_param:cluster_public_host}
+    apache_proxy_openstack_api_address: 0.0.0.0
+    apache_proxy_openstack_ironic_host: ${_param:ironic_service_host}
+  apache:
+    server:
+      site:
+        apache_proxy_openstack_api_ironic:
+          enabled: true
+          type: proxy
+          name: openstack_api_ironic
+          check: false
+          proxy:
+            host: ${_param:apache_proxy_openstack_ironic_host}
+            port: 6385
+            protocol: http
+          host:
+            name: ${_param:apache_proxy_openstack_api_host}
+            port: 6385
+            address: ${_param:apache_proxy_openstack_api_address}
+          ssl: ${_param:apache_proxy_ssl}
diff --git a/aptly/client/publisher.yml b/aptly/client/publisher.yml
index 9aae28b..050bcea 100644
--- a/aptly/client/publisher.yml
+++ b/aptly/client/publisher.yml
@@ -6,4 +6,4 @@
       enabled: true
       source:
         engine: docker
-        image: tcpcloud/aptly-publisher
+        image: mirantis/aptly-publisher
diff --git a/aptly/server/docker.yml b/aptly/server/docker.yml
index c33f169..11ebc66 100644
--- a/aptly/server/docker.yml
+++ b/aptly/server/docker.yml
@@ -9,7 +9,7 @@
     aptly_server_mirror_sources: false
     aptly_server_mirror_ubuntu_sources: ${_param:aptly_server_mirror_sources}
     docker_image_aptly:
-      base: tcpcloud/aptly
+      base: mirantis/aptly
   aptly:
     server:
       enabled: true
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/cassandra.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/cassandra.yml
index 938fc7b..41f7e0c 100644
--- a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/cassandra.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/cassandra.yml
@@ -20,4 +20,4 @@
           publisher:
             component: ${_param:mirror_mirantis_openstack_trusty_cassandra_components}
             distributions:
-              - ubuntu-trusty/cassandra/${_param:apt_mk_version}/
\ No newline at end of file
+              - ubuntu-trusty/cassandra/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/artifactory/client/init.yml b/artifactory/client/init.yml
index 614266e..7eab16e 100644
--- a/artifactory/client/init.yml
+++ b/artifactory/client/init.yml
@@ -45,6 +45,8 @@
             rclass: remote
             packageType: generic
             url: http://dl-cdn.alpinelinux.org/alpine/
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           apk-virtual:
             rclass: virtual
@@ -57,16 +59,22 @@
             rclass: remote
             packageType: debian
             url: https://apt.dockerproject.org/repo
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           artifactory-pro-debian:
             rclass: remote
             packageType: debian
             url: https://jfrog.bintray.com/artifactory-pro-debs
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           artifactory-pro-rpm:
             rclass: remote
             packageType: yum
             url: http://jfrog.bintray.com/artifactory-pro-rpms
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           binary-dev-local:
             rclass: local
@@ -98,6 +106,8 @@
             rclass: remote
             packageType: generic
             url: https://artifactory.mcp.mirantis.net/artifactory/binary-prod-virtual
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           centos:
             rclass: virtual
@@ -115,6 +125,8 @@
             rclass: remote
             packageType: yum
             url: http://mirror.centos.org/centos/
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           centos-virtual:
             rclass: virtual
@@ -132,31 +144,43 @@
             rclass: remote
             packageType: debian
             url: http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.1/debian/
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           debian-nginx:
             rclass: remote
             packageType: debian
             url: http://nginx.org/packages/debian/
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           debian-percona-remote:
             rclass: remote
             packageType: debian
             url: http://repo.percona.com/apt
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           debian-rabbitmq-remote:
             rclass: remote
             packageType: debian
             url: http://www.rabbitmq.com/debian/
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           debian-remote:
             rclass: remote
             packageType: debian
             url: http://ftp.us.debian.org/debian
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           debian-security-remote:
             rclass: remote
             packageType: debian
             url: http://security.debian.org/
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           debian-virtual:
             rclass: virtual
@@ -197,43 +221,76 @@
             packageType: docker
             url: https://registry-1.docker.io/
             description: "Remote repository for DockerHub"
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           gcs-remote:
             rclass: remote
             packageType: generic
             url: https://storage.googleapis.com
             description: "Has zero downloads. Can be removed."
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           gerrit-plugins:
             rclass: remote
             packageType: generic
             url: http://builds.quelltextlich.at/gerrit/nightly
             description: "Overlaps with maven-local. We should resolve overlap and remove this repo."
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
+
+          helm-local:
+            rclass: local
+            packageType: helm
+            description: "Helm Chart Repository (local)"
+            notes: "https://mirantis.jira.com/browse/PROD-18913"
+            propertySets:
+            - artifactory
+
+          helm-virtual:
+            rclass: virtual
+            packageType: helm
+            description: "Helm Chart Repository (virtual one having correct index)"
+            notes: "https://mirantis.jira.com/browse/PROD-19175"
+            repositories:
+            - helm-local
+            defaultDeploymentRepo: helm-local
 
           jcenter:
             rclass: remote
             packageType: maven
             url: https://jcenter.bintray.com
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           jenkins-deb-pkgs:
             rclass: remote
             packageType: generic
             url: https://pkg.jenkins.io/debian-stable/binary
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           jenkins-plugins:
             rclass: remote
             packageType: generic
             url: http://mirrors.jenkins-ci.org/plugins
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           jenkins-plugins-jars:
             rclass: remote
             packageType: maven
             url: https://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           jenkins-updates:
             rclass: remote
             packageType: generic
             url: https://updates.jenkins.io/
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           k8s-tests-images:
             rclass: local
@@ -262,6 +319,8 @@
             rclass: remote
             packageType: maven
             url: http://repo.jfrog.org/artifactory/remote-repos/mysql/mysql-connector-java/
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           pypi-local:
             rclass: local
@@ -271,6 +330,8 @@
             rclass: remote
             packageType: pypi
             url: https://pypi.python.org
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           pypi-virtual:
             rclass: virtual
@@ -288,6 +349,8 @@
             rclass: remote
             packageType: debian
             url: http://us.archive.ubuntu.com/ubuntu/
+            unusedArtifactsCleanupEnabled: true
+            unusedArtifactsCleanupPeriodHours: 720
 
           ubuntu-virtual:
             rclass: virtual
diff --git a/debmirror/mirror_mirantis_com/ubuntu/xenial.yml b/debmirror/mirror_mirantis_com/ubuntu/xenial.yml
index 20cf1e0..4a199bf 100644
--- a/debmirror/mirror_mirantis_com/ubuntu/xenial.yml
+++ b/debmirror/mirror_mirantis_com/ubuntu/xenial.yml
@@ -6,6 +6,7 @@
     client:
       enabled: true
       mirrors:
+        # This mirror is used to build unmodified(no meta changes) but reduced offline ubuntu-mirror.
         mirror_mirantis_com_ubuntu_xenial:
           force: ${_param:mirror_mirantis_com_ubuntu_xenial_force}
           lock_target: True
@@ -19,22 +20,71 @@
           dist: [ xenial , xenial-security, xenial-updates ]
           section: [ main , multiverse, restricted, universe ]
           # Don't exclude main/x11 - its required for many pkgs.
-          exclude_deb_section: [games, gnome, Xfce, sound, electronics, graphics, hamradio,
-            doc, localization, kde, video, translations, news, multiverse/games, multiverse/gnome,
-            multiverse/Xfce, multiverse/sound, multiverse/electronics, multiverse/graphics,
-            multiverse/hamradio, multiverse/doc, multiverse/localization, multiverse/kde, multiverse/video,
-            multiverse/translations, multiverse/news, multiverse/x11, universe/games, universe/gnome,
-            universe/Xfce, universe/sound, universe/electronics, universe/hamradio, universe/doc,
-            universe/localization, universe/kde, universe/video, universe/translations, universe/news,
-            universe/x11, universe/graphics, restricted/games, restricted/gnome, restricted/Xfce,
-            restricted/sound, restricted/electronics, restricted/graphics, restricted/hamradio,
-            restricted/doc, restricted/localization, restricted/kde, restricted/video, restricted/translations,
-            restricted/news, restricted/x11]
+          exclude_deb_section:
+          - games
+          - gnome
+          - Xfce
+          - sound
+          - electronics
+          - graphics
+          - hamradio
+          - doc
+          - localization
+          - kde
+          - video
+          - translations
+          - news
+          - multiverse/games
+          - multiverse/gnome
+          - multiverse/Xfce
+          - multiverse/sound
+          - multiverse/electronics
+          - multiverse/graphics
+          - multiverse/hamradio
+          - multiverse/doc
+          - multiverse/localization
+          - multiverse/kde
+          - multiverse/video
+          - multiverse/translations
+          - multiverse/news
+          - multiverse/x11
+          - universe/games
+          - universe/gnome
+          - universe/Xfce
+          - universe/sound
+          - universe/electronics
+          - universe/hamradio
+          - universe/doc
+          - universe/localization
+          - universe/kde
+          - universe/video
+          - universe/translations
+          - universe/news
+          - universe/x11
+          - universe/graphics
+          - restricted/games
+          - restricted/gnome
+          - restricted/Xfce
+          - restricted/sound
+          - restricted/electronics
+          - restricted/graphics
+          - restricted/hamradio
+          - restricted/doc
+          - restricted/localization
+          - restricted/kde
+          - restricted/video
+          - restricted/translations
+          - restricted/news
+          - restricted/x11
+          - main/debug
+          - multiverse/debug
+          - restricted/debug
+          - universe/debug
+          # Updating filter, please always start from section, aka main|universe|multiverse
           filter:
             1: "--exclude='android*'"
-            2: "--exclude='/firefox*'"
+            2: "--exclude='/(main|universe)/f/firefox'"
             3: "--exclude='/chromium-browser*'"
-            4: "--exclude='/ceph*'"
             5: "--exclude='/*-wallpapers*'"
             6: "--exclude='/language-pack-(?!en)'"
             7: "--exclude='thunderbird*'"
@@ -59,35 +109,68 @@
             27: "--exclude='/*(.xorg)*joystick'"
             28: "--exclude='/xserver-xorg-video(.*vivid|.*wily|.*utopic)'"
             30: "--exclude='/*universe.*bluez.*'"
-            31: "--exclude='/main/m/maas/'" # ppa should be always used
             32: "--exclude='/main/a/a11y-profile-manager/'"
             33: "--exclude='/universe/.*(alsa|ubuntuone|telepathy|debian-multimedia|kodi|mediaplayer|nagios|getfem|gammaray|geotranz)'"
             34: "--exclude='/universe/.*(pyqt|usb-creator|gcc-mingw-w64|gcc-snapshot)'"
             35: "--exclude='/universe/q/qt'"
-            36: "--exclude='/universe/g/glusterfs/'" # ppa should be always used
-            37: "--exclude='/universe/d/docker.io/'" # ppa should be always used
-            38: "--exclude='/universe/a/aptly'" # ppa should be always used
-            39: "--exclude='/universe/e/elasticsearch'" # ppa should be always used
-            40: "--exclude='/universe/g/grafana/'" # ppa should be always used
-            41: "--exclude='/universe/i/influxdb(?!.*python)'" # ppa should be always used
-            42: "--exclude='/universe/s/salt'" # ppa should be always used
-            43: "--exclude='/universe/z/zabbix'" # ppa should be always used
-            44: "--exclude='/universe/.*(brasero|mediascanner2|mediatomb|mediawiki|qtmultimedia|pidgin|skype|eclipse|esys-particle|fusion)'"
+            36: "--exclude='/universe/.*(brasero|mediascanner2|mediatomb|mediawiki|qtmultimedia|pidgin|skype|eclipse|esys-particle|fusion|0/0ad|e/emboss|e/empathy|g/globus)'"
+            84: "--exclude='/multiverse/(v/virtualbox|w/wine|playonlinux)'"
+            86: "--exclude='/main/(m/mozc/|n/nut/|o/oxide-qt/|o/orbit2/|q/(qtbase-opensource-src|qtdeclarative-opensource-src)/|t/telepathy-glib|w/webkit2gtk|w/webrtc-audio-processing)'"
+            87: "--exclude='universe/(s/syncevolution|r/r-bioc-)'"
+            88: "--exclude='universe/t/texlive-lang/texlive-lang-(?!.*english)'"
             89: "--exclude='/universe/k/(kde)'"
             90: "--exclude='/universe/p/(psi-plus|puppet-module|plasma|pcl/)'"
             91: "--exclude='golang-github-*'"
             92: "--exclude='/(llvm-toolchain|address-book|amule|openclipart|rhythmbox|gimp|sonic-visualiser|games|bsdgame|gazebo|arduino|webkitgtk|widelands|wxwidget|warzone|wings3d).*'"
             93: "--exclude='/(asterisk|abiword|webbrowser-app|imagemagick|.*clamav|wireshar|vlc|.*transmission|tryton-modules|trilinos|tomboy|wine1|wine-dev|compiz|mythtv|ubuntustudio).*'"
-            94: "--exclude='/(ceilometer|nova|openstack-debian-images).*'"
+            94: "--exclude='/universe/o/(openstack-debian-images).*'"
             95: "--exclude='/gcc-.*-cross.*'"
             96: "--exclude='/(nvidia).*'"
-            97: "--exclude='linux-*-(.*azure|.*aws|gke|.*azure-edge|.*linux-oem)'"
-            98: "--exclude='/.*(arm64|powerpc|s390x|armel|armhf|sparc64|mips64|ppc64el|mipsn32)(?!.*amd64)'"
-            99: "--exclude='/*universe.*(-armel-|-arm-)(?!.*amd64)'"
+            # List of unused linux kernels and unsupported arch
+            300: "--exclude='/.*(arm64|powerpc|s390x|armel|armhf|sparc64|mips64|ppc64el|mipsn32)(?!.*amd64)'"
+            301: "--exclude='(main|universe)/l/linux-*-(.*azure|.*aws|gke|.*azure-edge|.*oem/|.*euclid/)'"
+            302: "--exclude='/*universe.*(-armel-|-arm-)(?!.*amd64)'"
+            303: "--exclude='/main/l/linux(.*)/linux-source-*'"
+            # List of packages, that should be fetched from fresh ppa or other mirror
+            # So,removing them from upstream mirror.
+            500: "--exclude='/main/m/maas/'"
+            501: "--exclude='/universe/g/glusterfs/'"
+            502: "--exclude='/universe/d/(docker-|docker.io)/'"
+            503: "--exclude='/(main|universe)/c/ceph'"
+            504: "--exclude='/universe/a/aptly'"
+            505: "--exclude='/universe/e/elasticsearch'"
+            506: "--exclude='/universe/g/grafana/'"
+            507: "--exclude='/universe/i/influxdb(?!.*python)'"
+            508: "--exclude='/universe/s/salt'"
+            509: "--exclude='/universe/z/zabbix'"
+            510: "--exclude='(universe|main)/(o|d|n)/(openvswitch|dpdk|networking-ovs-dpdk)'"
+            511: "--exclude='/main/libv/.*(libvirt)'"
+            512: "--exclude='/main/s/.*(seabios)'"
+            513: "--exclude='/universe/.*libvirt'"
+            514: "--exclude='/(universe|main)/c/(cinder|ceilometer)'"
+            515: "--exclude='/(universe|main)/p/python-(cinder|ceilometer)client'"
+            516: "--exclude='/(universe|main)/n/(nova|neutron)'"
+            517: "--exclude='/(universe|main)/p/python-(nova|neutron)client'"
+            518: "--exclude='/(universe|main)/g/(glance)'"
+            519: "--exclude='/(universe|main)/p/python-(glance)client'"
+            520: "--exclude='/(universe|main)/b/(barbican)'"
+            521: "--exclude='/(universe|main)/k/(keystone)'"
+            522: "--exclude='/(universe|main)/d/(designate)'"
+            523: "--exclude='/(universe|main)/p/python-(barbican|keystone|designate)client'"
+            524: "--exclude='/(universe|main)/h/(horizon|heat)'"
+            525: "--exclude='/(universe|main)/p/python-(horizon|heat)client'"
+            526: "--exclude='/(universe|main)/m/(murano|mistral|manila)'"
+            527: "--exclude='/(universe|main)/p/python-(murano|mistral|manila)client'"
+            528: "--exclude='/(universe|main)/i/(ironic)'"
+            529: "--exclude='/(universe|main)/a/(aodh)'"
+            530: "--exclude='/(universe|main)/p/python-(ironic|aodh)client'"
             # List of extra includes, founded after tests.
-            100: "--include='/main(.*)manpages'"
-            101: "--include='/main(.*)python-(.*)doc'"
-            102: "--include='/main(.*)python-(.*)network'"
-            103: "--include='/main(.*)unittest2'" # openstack* pkgs
-            104: "--include='/main(.*)libbluetooth3'" # python-guestfs
+            800: "--include='/main(.*)manpages'"
+            801: "--include='/main(.*)python-(.*)doc'"
+            802: "--include='/main(.*)python-(.*)network'"
+            803: "--include='/main(.*)unittest2'" # openstack* pkgs
+            804: "--include='/main(.*)libbluetooth3'" # python-guestfs
+            805: "--include='/main(.*)llvm-toolchain-5.0'" # pki-ca: < 389-ds-base < dogtag
+
+
 
diff --git a/docker/client/compose/service/gerrit.yml b/docker/client/compose/service/gerrit.yml
index eeb126e..50d933b 100644
--- a/docker/client/compose/service/gerrit.yml
+++ b/docker/client/compose/service/gerrit.yml
@@ -2,8 +2,8 @@
   - system.docker.client.compose
 parameters:
   _param:
-    docker_image_gerrit: tcpcloud/gerrit:2.13.6
-    docker_image_mysql: tcpcloud/mysql:5.6
+    docker_image_gerrit: mirantis/gerrit:2.13.6
+    docker_image_mysql: mirantis/mysql:5.6
     gerrit_ldap_server: ""
     gerrit_ldap_bind_user: ""
     gerrit_ldap_bind_password: ""
diff --git a/docker/client/compose/service/jenkins.yml b/docker/client/compose/service/jenkins.yml
index 7db9da5..5054909 100644
--- a/docker/client/compose/service/jenkins.yml
+++ b/docker/client/compose/service/jenkins.yml
@@ -2,7 +2,7 @@
   - system.docker.client.compose
 parameters:
   _param:
-    docker_image_jenkins: tcpcloud/jenkins:2.100
+    docker_image_jenkins: mirantis/jenkins:2.100
     jenkins_master_extra_opts: ""
     jenkins_master_executors_num: 4
     jenkins_master_max_concurent_requests: 40
diff --git a/docker/swarm/stack/aptly.yml b/docker/swarm/stack/aptly.yml
index 89ec5ec..a7928f7 100644
--- a/docker/swarm/stack/aptly.yml
+++ b/docker/swarm/stack/aptly.yml
@@ -4,8 +4,11 @@
   _param:
     docker_stack_aptly_public_replicas: 3
     docker_image_aptly:
-      api: tcpcloud/aptly-api
-      public: tcpcloud/aptly-public
+      # This image is temporary replacement for mirantis/aptly-api because of acquire_by_hash bug
+      # https://github.com/smira/aptly/pull/697. We waiting for new release of aptly
+      api: breton/aptly-api
+      #api: mirantis/aptly-api
+      public: mirantis/aptly-public
   docker:
     client:
       stack:
diff --git a/docker/swarm/stack/gerrit.yml b/docker/swarm/stack/gerrit.yml
index 49d0a11..ad3ea6d 100644
--- a/docker/swarm/stack/gerrit.yml
+++ b/docker/swarm/stack/gerrit.yml
@@ -2,8 +2,8 @@
 - system.docker
 parameters:
   _param:
-    docker_image_gerrit: tcpcloud/gerrit:2.13.6
-    docker_image_mysql: tcpcloud/mysql:5.6
+    docker_image_gerrit: mirantis/gerrit:2.13.6
+    docker_image_mysql: mirantis/mysql:5.6
     gerrit_ldap_server: ""
     gerrit_ldap_bind_user: ""
     gerrit_ldap_bind_password: ""
diff --git a/docker/swarm/stack/jenkins/master.yml b/docker/swarm/stack/jenkins/master.yml
index d08bf71..890f8da 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.100
+    docker_image_jenkins: mirantis/jenkins:2.100
     jenkins_master_extra_opts: ""
     jenkins_master_executors_num: 4
     jenkins_master_max_concurent_requests: 40
diff --git a/docker/swarm/stack/jenkins/slave.yml b/docker/swarm/stack/jenkins/slave.yml
index 12a14d4..42a0031 100644
--- a/docker/swarm/stack/jenkins/slave.yml
+++ b/docker/swarm/stack/jenkins/slave.yml
@@ -2,7 +2,7 @@
 - system.docker
 parameters:
   _param:
-    docker_image_jenkins_slave: tcpcloud/jnlp-slave
+    docker_image_jenkins_slave: mirantis/jnlp-slave
     jenkins_master_host: ${_param:control_vip_address}
     jenkins_master_port: 8081
     jenkins_secret: "7c40abc1a7df2d26dd6b2e4421af17218df75a16fcbd5e3aa6017d9f47eaeabe"
diff --git a/docker/swarm/stack/jenkins/slave_ssl.yml b/docker/swarm/stack/jenkins/slave_ssl.yml
new file mode 100644
index 0000000..6099cd7
--- /dev/null
+++ b/docker/swarm/stack/jenkins/slave_ssl.yml
@@ -0,0 +1,17 @@
+docker:
+  client:
+    stack:
+      jenkins:
+        service:
+          slave01:
+            volumes:
+              - /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro
+              - /srv/salt/pki/${_param:cluster_name}/${salt:minion:cert:proxy:common_name}-with-chain.crt:/etc/ssl/certs/proxy-with-chain.crt:ro
+          slave02:
+            volumes:
+              - /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro
+              - /srv/salt/pki/${_param:cluster_name}/${salt:minion:cert:proxy:common_name}-with-chain.crt:/etc/ssl/certs/proxy-with-chain.crt:ro
+          slave03:
+            volumes:
+              - /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro
+              - /srv/salt/pki/${_param:cluster_name}/${salt:minion:cert:proxy:common_name}-with-chain.crt:/etc/ssl/certs/proxy-with-chain.crt:ro
\ No newline at end of file
diff --git a/docker/swarm/stack/ldap.yml b/docker/swarm/stack/ldap.yml
index a5fe135..f4866f1 100644
--- a/docker/swarm/stack/ldap.yml
+++ b/docker/swarm/stack/ldap.yml
@@ -1,7 +1,7 @@
 parameters:
   _param:
     docker_image_openldap: osixia/openldap:1.1.8
-    docker_image_phpldapadmin: tcpcloud/phpldapadmin:0.6.12
+    docker_image_phpldapadmin: mirantis/phpldapadmin:0.6.12
   docker:
     client:
       stack:
diff --git a/docker/swarm/stack/monitoring/alertmanager.yml b/docker/swarm/stack/monitoring/alertmanager.yml
index 662baf4..1f15be5 100644
--- a/docker/swarm/stack/monitoring/alertmanager.yml
+++ b/docker/swarm/stack/monitoring/alertmanager.yml
@@ -1,6 +1,9 @@
 classes:
 - system.prometheus.alertmanager.container
 parameters:
+  _param:
+    alertmanager_external_url: ${_param:cluster_public_host}
+    alertmanager_external_proto: http
   docker:
     client:
       stack:
@@ -34,4 +37,4 @@
                 ALERTMANAGER_BIND_PORT: ${prometheus:alertmanager:bind:port}
                 ALERTMANAGER_BIND_ADDRESS: ${prometheus:alertmanager:bind:address}
                 ALERTMANAGER_DISCOVERY_DOMAIN: 'monitoring_alertmanager'
-                ALERTMANAGER_EXTERNAL_URL: "http://${_param:stacklight_monitor_address}:15011"
+                ALERTMANAGER_EXTERNAL_URL: "${_param:alertmanager_external_proto}://${_param:alertmanager_external_url}:15011"
diff --git a/docker/swarm/stack/monitoring/prometheus/global.yml b/docker/swarm/stack/monitoring/prometheus/global.yml
index d86f456..6114f44 100644
--- a/docker/swarm/stack/monitoring/prometheus/global.yml
+++ b/docker/swarm/stack/monitoring/prometheus/global.yml
@@ -7,3 +7,5 @@
             server:
               deploy:
                 mode: global
+              environment:
+                PROMETHEUS_USE_STATIC_DATADIR: "true"
diff --git a/fluentd/label/default_output/elasticsearch.yml b/fluentd/label/default_output/elasticsearch.yml
index 5960c49..aa96b31 100644
--- a/fluentd/label/default_output/elasticsearch.yml
+++ b/fluentd/label/default_output/elasticsearch.yml
@@ -1,7 +1,7 @@
 classes:
 - service.fluentd.agent.output.elasticsearch
 parameters:
-  _params:
+  _param:
     fluentd_elasticsearch_host: 127.0.0.1
     elasticsearch_port: 9200
   fluentd:
diff --git a/gerrit/client/project/docker_images.yml b/gerrit/client/project/docker_images.yml
index cc35eb3..c5574a6 100644
--- a/gerrit/client/project/docker_images.yml
+++ b/gerrit/client/project/docker_images.yml
@@ -5,7 +5,7 @@
         mk/docker-aptly:
           enabled: true
           description: Aptly docker images
-          upstream: https://github.com/tcpcloud/docker-aptly
+          upstream: https://github.com/Mirantis/docker-aptly
           access: ${gerrit:client:default_access}
           require_change_id: true
           require_agreement: false
@@ -13,7 +13,7 @@
         mk/python-flask-hello:
           enabled: true
           description: Flask hello demo application
-          upstream: https://github.com/tcpcloud/python-flask-hello
+          upstream: https://github.com/Mirantis/python-flask-hello
           access: ${gerrit:client:default_access}
           require_change_id: true
           require_agreement: false
diff --git a/gerrit/client/project/vnf_onboarding.yml b/gerrit/client/project/vnf_onboarding.yml
index 9cefb95..1e7d238 100644
--- a/gerrit/client/project/vnf_onboarding.yml
+++ b/gerrit/client/project/vnf_onboarding.yml
@@ -42,3 +42,11 @@
           require_change_id: true
           require_agreement: false
           merge_content: true
+        vnf-onboarding/platform-tests:
+          enabled: true
+          description: VNF onboarding platform tests
+          upstream: https://gerrit.mcp.mirantis.net/vnf-onboarding/platform-tests
+          access: ${gerrit:client:default_access}
+          require_change_id: true
+          require_agreement: false
+          merge_content: true
diff --git a/glusterfs/server/cluster.yml b/glusterfs/server/cluster.yml
index 87aa0e9..16453c9 100644
--- a/glusterfs/server/cluster.yml
+++ b/glusterfs/server/cluster.yml
@@ -2,6 +2,8 @@
 - service.glusterfs.server
 parameters:
   glusterfs:
+    monitoring:
+      glusterfs_service_host: ${_param:glusterfs_service_host}
     _support:
       iptables:
         enabled: false
diff --git a/haproxy/proxy/listen/radosgw.yml b/haproxy/proxy/listen/radosgw.yml
index 434555d..350abbf 100644
--- a/haproxy/proxy/listen/radosgw.yml
+++ b/haproxy/proxy/listen/radosgw.yml
@@ -2,12 +2,12 @@
   _param:
     haproxy_radosgw_bind_port: 8080
     haproxy_radosgw_source_port: 8080
-    ceph_rgw_node01_hostname: ${_param:cluster_node01_hostname}
-    ceph_rgw_node02_hostname: ${_param:cluster_node02_hostname}
-    ceph_rgw_node03_hostname: ${_param:cluster_node03_hostname}
-    ceph_rgw_node01_address: ${_param:cluster_node01_address}
-    ceph_rgw_node02_address: ${_param:cluster_node02_address}
-    ceph_rgw_node03_address: ${_param:cluster_node03_address}
+    haproxy_ceph_rgw_node01_hostname: ${_param:cluster_node01_hostname}
+    haproxy_ceph_rgw_node02_hostname: ${_param:cluster_node02_hostname}
+    haproxy_ceph_rgw_node03_hostname: ${_param:cluster_node03_hostname}
+    haproxy_ceph_rgw_node01_address: ${_param:cluster_node01_address}
+    haproxy_ceph_rgw_node02_address: ${_param:cluster_node02_address}
+    haproxy_ceph_rgw_node03_address: ${_param:cluster_node03_address}
   haproxy:
     proxy:
       listen:
@@ -18,15 +18,15 @@
             - address: ${_param:cluster_vip_address}
               port: ${_param:haproxy_radosgw_bind_port}
           servers:
-            - name: ${_param:ceph_rgw_node01_hostname}
-              host: ${_param:ceph_rgw_node01_address}
+            - name: ${_param:haproxy_ceph_rgw_node01_hostname}
+              host: ${_param:haproxy_ceph_rgw_node01_address}
               port: ${_param:haproxy_radosgw_source_port}
               params: check
-            - name: ${_param:ceph_rgw_node02_hostname}
-              host: ${_param:ceph_rgw_node02_address}
+            - name: ${_param:haproxy_ceph_rgw_node02_hostname}
+              host: ${_param:haproxy_ceph_rgw_node02_address}
               port: ${_param:haproxy_radosgw_source_port}
               params: check
-            - name: ${_param:ceph_rgw_node03_hostname}
-              host: ${_param:ceph_rgw_node03_address}
+            - name: ${_param:haproxy_ceph_rgw_node03_hostname}
+              host: ${_param:haproxy_ceph_rgw_node03_address}
               port: ${_param:haproxy_radosgw_source_port}
               params: check
diff --git a/jenkins/client/approved_scripts.yml b/jenkins/client/approved_scripts.yml
index 8122e8c..70aa9e6 100644
--- a/jenkins/client/approved_scripts.yml
+++ b/jenkins/client/approved_scripts.yml
@@ -57,6 +57,8 @@
         - method java.util.LinkedHashMap$LinkedHashIterator hasNext
         - method java.util.List add int java.lang.Object
         - method java.util.List subList int int
+        - method java.util.Map containsValue java.lang.Object
+        - method java.util.Map get java.lang.Object
         - method java.util.Map remove java.lang.Object
         - method java.util.Map size
         - method java.util.Map isEmpty
@@ -144,3 +146,5 @@
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods intersect java.util.List java.lang.Iterable
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods reverse java.util.List
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getAt java.util.Collection java.lang.String
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods init java.util.List
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods asBoolean java.lang.CharSequence
diff --git a/jenkins/client/job/deploy/lab/deploy.yml b/jenkins/client/job/deploy/lab/deploy.yml
index 6e716f9..5b63d94 100644
--- a/jenkins/client/job/deploy/lab/deploy.yml
+++ b/jenkins/client/job/deploy/lab/deploy.yml
@@ -1,6 +1,12 @@
 parameters:
   _param:
     jenkins_deploy_jobs: []
+    heat_stack_zone_job_param:
+      type: string
+      default: "mcp-mk"
+    openstack_api_projects_job_param:
+      type: string
+      default: "mcp-mk"
   jenkins:
     client:
       job_template:
@@ -125,9 +131,7 @@
               HEAT_STACK_ENVIRONMENT:
                 type: string
                 default: "{{stack_env}}"
-              HEAT_STACK_ZONE:
-                type: string
-                default: "mcp-mk"
+              HEAT_STACK_ZONE: ${_param:heat_stack_zone_job_param}
               HEAT_STACK_PUBLIC_NET:
                 type: string
                 default: "public"
@@ -139,9 +143,7 @@
               OPENSTACK_API_CREDENTIALS:
                 type: string
                 default: "openstack-devcloud-credentials"
-              OPENSTACK_API_PROJECT:
-                type: string
-                default: "mcp-mk"
+              OPENSTACK_API_PROJECT: ${_param:openstack_api_projects_job_param}
               OPENSTACK_API_PROJECT_DOMAIN:
                 type: string
                 default: "default"
diff --git a/jenkins/client/job/deploy/lab/release/mcp05.yml b/jenkins/client/job/deploy/lab/release/mcp05.yml
index 61d5399..a80820f 100644
--- a/jenkins/client/job/deploy/lab/release/mcp05.yml
+++ b/jenkins/client/job/deploy/lab/release/mcp05.yml
@@ -5,7 +5,7 @@
     jenkins_deploy_jobs:
       - stack_name: virtual_mcp05_ovs_dvr
         stack_env: devcloud_virtual_mcp05_dvr
-        stack_install: core,openstack,dvr
+        stack_install: core,openstack,ovs
         stack_type: heat
         stack_test: ""
         job_timer: ""
diff --git a/jenkins/client/job/deploy/lab/release/mcp10.yml b/jenkins/client/job/deploy/lab/release/mcp10.yml
index 66f08af..bf02797 100644
--- a/jenkins/client/job/deploy/lab/release/mcp10.yml
+++ b/jenkins/client/job/deploy/lab/release/mcp10.yml
@@ -18,7 +18,7 @@
         job_timer: ""
       - stack_name: mcp10_dvr
         stack_env: devcloud
-        stack_install: core,kvm,openstack,dvr
+        stack_install: core,kvm,openstack,ovs
         stack_type: physical
         stack_test: openstack
         job_timer: ""
@@ -38,7 +38,7 @@
         job_timer: "H H(0-6) * * *"
       - stack_name: virtual_mcp10_ovs_dvr
         stack_env: devcloud
-        stack_install: core,openstack,dvr
+        stack_install: core,openstack,ovs
         stack_type: heat
         stack_test: ""
         job_timer: "H H(0-6) * * *"
diff --git a/jenkins/client/job/deploy/lab/release/mcp11.yml b/jenkins/client/job/deploy/lab/release/mcp11.yml
index 7f12594..9670ef4 100644
--- a/jenkins/client/job/deploy/lab/release/mcp11.yml
+++ b/jenkins/client/job/deploy/lab/release/mcp11.yml
@@ -11,7 +11,7 @@
         job_timer: ""
       - stack_name: virtual_mcp11_dvr
         stack_env: devcloud
-        stack_install: core,openstack,dvr
+        stack_install: core,openstack,ovs
         stack_type: heat
         stack_test: ""
         job_timer: ""
@@ -83,7 +83,7 @@
         job_timer: ""
       - stack_name: virtual_mcp_mitaka_dvr
         stack_env: devcloud
-        stack_install: core,openstack,dvr
+        stack_install: core,openstack,ovs
         stack_type: heat
         stack_test: ""
         job_timer: ""
@@ -95,19 +95,19 @@
         job_timer: ""
       - stack_name: virtual_mcp_newton_dvr
         stack_env: devcloud
-        stack_install: core,openstack,dvr
+        stack_install: core,openstack,ovs
         stack_type: heat
         stack_test: ""
         job_timer: ""
       - stack_name: virtual_mcp_pike_dvr
         stack_env: devcloud
-        stack_install: core,openstack,dvr
+        stack_install: core,openstack,ovs
         stack_type: heat
         stack_test: ""
         job_timer: ""
       - stack_name: virtual_mcp_pike_dvr_ssl
         stack_env: devcloud
-        stack_install: core,openstack,dvr
+        stack_install: core,openstack,ovs
         stack_type: heat
         stack_test: ""
         job_timer: ""
diff --git a/jenkins/client/job/deploy/update/cloud_update.yml b/jenkins/client/job/deploy/update/cloud_update.yml
index 0480557..3034ea5 100644
--- a/jenkins/client/job/deploy/update/cloud_update.yml
+++ b/jenkins/client/job/deploy/update/cloud_update.yml
@@ -48,6 +48,18 @@
               type: boolean
               default: 'true'
               description: "Stop API services before update"
+            TARGET_KERNEL_UPDATES:
+              type: string
+              default: "cfg,ctl,prx,msg,dbs"
+              description: "Comma separated list of nodes to update kernel if newer version is available (Valid values are cfg,ctl,prx,msg,dbs,log,mon,mtr,ntw,nal,gtw-virtual,cmn,rgw,cid,cmp,kvm,osd,gtw-physical)"
+            TARGET_REBOOT:
+              type: string
+              default: "cfg,ctl,prx,msg,dbs"
+              description: "Comma separated list of nodes to reboot after update or physical machine rollback (Valid values are cfg,ctl,prx,msg,dbs,log,mon,mtr,ntw,nal,gtw-virtual,cmn,rgw,cid,cmp,kvm,osd,gtw-physical)"
+            TARGET_HIGHSTATE:
+              type: string
+              default: "cfg,ctl,prx,msg,dbs"
+              description: "Comma separated list of nodes to run Salt Highstate on after update or physical machine rollback (Valid values are cfg,ctl,prx,msg,dbs,log,mon,mtr,ntw,nal,gtw-virtual,cmn,rgw,cid,cmp,kvm,osd,gtw-physical)"
             TARGET_UPDATES:
               type: string
               default: "cfg,ctl,prx,msg,dbs"
@@ -124,10 +136,6 @@
               type: string
               default: "gtw01*"
               description: "Salt targeted physical or virtual GTW nodes (ex. gtw01*)"
-            REBOOT:
-              type: boolean
-              default: 'false'
-              description: "Reboot nodes after update"
             ROLLBACK_PKG_VERSIONS:
               type: string
               default: ""
diff --git a/jenkins/client/job/docker/build-images.yml b/jenkins/client/job/docker/build-images.yml
index 334db19..12c84c1 100644
--- a/jenkins/client/job/docker/build-images.yml
+++ b/jenkins/client/job/docker/build-images.yml
@@ -55,7 +55,7 @@
                 default: ""
               REGISTRY_CREDENTIALS_ID:
                 type: string
-                default: "dockerhub"
+                default: "mirantis-dockerhub"
               DOCKER_GIT_TAG:
                 type: boolean
                 default: "true"
diff --git a/jenkins/client/job/docker/init.yml b/jenkins/client/job/docker/init.yml
index d4c15b6..e3619b1 100644
--- a/jenkins/client/job/docker/init.yml
+++ b/jenkins/client/job/docker/init.yml
@@ -76,7 +76,7 @@
             param:
               IMAGE_NAME:
                 type: string
-                default: "tcpcloud/{{name}}"
+                default: "mirantis/{{name}}"
               IMAGE_GIT_URL:
                 type: string
                 default: "${_param:jenkins_gerrit_url}/mk/docker-{{name}}"
@@ -97,7 +97,7 @@
                 default: ""
               REGISTRY_CREDENTIALS_ID:
                 type: string
-                default: "dockerhub"
+                default: "mirantis-dockerhub"
               DOCKER_GIT_TAG:
                 type: boolean
                 default: "true"
diff --git a/jenkins/client/job/docker/testing.yml b/jenkins/client/job/docker/testing.yml
index ece8e10..109cdac 100644
--- a/jenkins/client/job/docker/testing.yml
+++ b/jenkins/client/job/docker/testing.yml
@@ -1,7 +1,7 @@
 parameters:
   _param:
     jenkins_docker_registry_url: ""
-    jenkins_docker_registry_credentials: "dockerhub"
+    jenkins_docker_registry_credentials: "mirantis-dockerhub"
   jenkins:
     client:
       job_template:
@@ -34,7 +34,7 @@
             param:
               IMAGE_NAME:
                 type: string
-                default: "tcpcloud/{{name}}"
+                default: "mirantis/{{name}}"
               IMAGE_GIT_URL:
                 type: string
                 default: "${_param:jenkins_gerrit_url}/mk/python-flask-hello"
diff --git a/jenkins/client/job/git-mirrors/2way.yml b/jenkins/client/job/git-mirrors/2way.yml
index ba17f9f..bb6b44b 100644
--- a/jenkins/client/job/git-mirrors/2way.yml
+++ b/jenkins/client/job/git-mirrors/2way.yml
@@ -1,7 +1,7 @@
 parameters:
   _param:
     jenkins_pollscm_spec: "H/60 * * * *"
-    job_description: <br>Syncronizes code projects with GitHub.<br>
+    job_description_2way: <br>Syncronizes code projects with GitHub.<br>
   jenkins:
     client:
       job_template:
@@ -20,8 +20,12 @@
               source: mcp/mcp-offline-model
               target: Mirantis/mcp-offline-model
               branches: "master"
+            - name: mcp-drivetrain-model
+              source: mcp/mcp-drivetrain-model
+              target: Mirantis/mcp-drivetrain-model
+              branches: "master"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_2way}
             discard:
               build:
                 keep_num: 10
diff --git a/jenkins/client/job/git-mirrors/downstream/docker_images.yml b/jenkins/client/job/git-mirrors/downstream/docker_images.yml
index ff1c649..6904d8d 100644
--- a/jenkins/client/job/git-mirrors/downstream/docker_images.yml
+++ b/jenkins/client/job/git-mirrors/downstream/docker_images.yml
@@ -5,9 +5,9 @@
     jenkins_git_mirror_downstream_jobs:
       - name: docker-aptly
         downstream: mk/docker-aptly
-        upstream: "https://github.com/tcpcloud/docker-aptly"
+        upstream: "https://github.com/Mirantis/docker-aptly"
         branches: master
       - name: python-flask-hello
         downstream: mk/python-flask-hello
-        upstream: "https://github.com/tcpcloud/python-flask-hello"
+        upstream: "https://github.com/Mirantis/python-flask-hello"
         branches: master
diff --git a/jenkins/client/job/git-mirrors/downstream/vnf_ondoarding.yml b/jenkins/client/job/git-mirrors/downstream/vnf_ondoarding.yml
new file mode 100644
index 0000000..bb53937
--- /dev/null
+++ b/jenkins/client/job/git-mirrors/downstream/vnf_ondoarding.yml
@@ -0,0 +1,35 @@
+classes:
+  - system.jenkins.client.job.git-mirrors.downstream
+parameters:
+  _param:
+    gerrit_vnf_onboaring_pipelines_repo: "https://gerrit.mcp.mirantis.net/vnf-onboarding/pipelines"
+    gerrit_vnf_onboaring_nginx_repo: "https://gerrit.mcp.mirantis.net/vnf-onboarding/nginx-vnf"
+    gerrit_vnf_onboaring_avi_repo: "https://gerrit.mcp.mirantis.net/vnf-onboarding/avi-loadbalancer"
+    gerrit_vnf_onboaring_metaswitch_repo: "https://gerrit.mcp.mirantis.net/vnf-onboarding/metaswitch-vsbc"
+    gerrit_vnf_onboaring_platform_tests_repo: "https://gerrit.mcp.mirantis.net/vnf-onboarding/platform-tests"
+    gerrit_vnf_onboaring_nfv_platform_repo: "https://gerrit.mcp.mirantis.net/vnf-onboarding/nfv-platform"
+    jenkins_git_mirror_downstream_jobs:
+      - name: vnf-pipelines
+        downstream: vnf-onboarding/pipelines
+        upstream: ${_param:gerrit_vnf_onboaring_pipelines_repo}
+        branches: master
+      - name: nginx-vnf
+        downstream: vnf-onboarding/nginx-vnf
+        upstream: ${_param:gerrit_vnf_onboaring_nginx_repo}
+        branches: master
+      - name: avi-loadbalancer
+        downstream: vnf-onboarding/avi-loadbalancer
+        upstream: ${_param:gerrit_vnf_onboaring_avi_repo}
+        branches: master
+      - name: metaswitch-vsbc
+        downstream: vnf-onboarding/metaswitch-vsbc
+        upstream: ${_param:gerrit_vnf_onboaring_metaswitch_repo}
+        branches: master
+      - name: platform-tests
+        downstream: vnf-onboarding/platform-tests
+        upstream: ${_param:gerrit_vnf_onboaring_platform_tests_repo}
+        branches: master
+      - name: nfv-platform
+        downstream: vnf-onboarding/nfv-platform
+        upstream: ${_param:gerrit_vnf_onboaring_nfv_platform_repo}
+        branches: master
\ No newline at end of file
diff --git a/jenkins/client/job/git-mirrors/upstream/docker_images.yml b/jenkins/client/job/git-mirrors/upstream/docker_images.yml
index 2dc60b3..7160c7f 100644
--- a/jenkins/client/job/git-mirrors/upstream/docker_images.yml
+++ b/jenkins/client/job/git-mirrors/upstream/docker_images.yml
@@ -5,7 +5,7 @@
     jenkins_git_mirror_upstream_jobs:
       - name: docker-aptly
         downstream: mk/docker-aptly
-        upstream: "git@github.com:tcpcloud/docker-aptly"
+        upstream: "git@github.com:Mirantis/docker-aptly"
         branches: master
       - name: docker-gerrit
         downstream: mk/docker-gerrit
@@ -22,4 +22,4 @@
       - name: docker-openldap
         downstream: mk/docker-openldap
         upstream: "git@github.com:Mirantis/docker-openldap"
-        branches: stable,master
\ No newline at end of file
+        branches: stable,master
diff --git a/jenkins/client/job/image/centos.yml b/jenkins/client/job/image/centos.yml
index d478ccc..d5856e4 100644
--- a/jenkins/client/job/image/centos.yml
+++ b/jenkins/client/job/image/centos.yml
@@ -72,3 +72,9 @@
             OPENSTACK_API_CLIENT:
               type: string
               default: ""
+            IMAGE_NAME:
+              type: string
+              default: centos-7-x64
+            EXTRA_VARIABLES:
+              type: text
+              default: ""
\ No newline at end of file
diff --git a/jenkins/client/job/image/debian.yml b/jenkins/client/job/image/debian.yml
index 31c46b3..ab17c06 100644
--- a/jenkins/client/job/image/debian.yml
+++ b/jenkins/client/job/image/debian.yml
@@ -72,3 +72,9 @@
             OPENSTACK_API_CLIENT:
               type: string
               default: ""
+            IMAGE_NAME:
+              type: string
+              default: debian-8-x64
+            EXTRA_VARIABLES:
+              type: text
+              default: ""
diff --git a/jenkins/client/job/image/ubuntu.yml b/jenkins/client/job/image/ubuntu.yml
index fa84813..8d7e1de 100644
--- a/jenkins/client/job/image/ubuntu.yml
+++ b/jenkins/client/job/image/ubuntu.yml
@@ -79,6 +79,12 @@
             OPENSTACK_API_CLIENT:
               type: string
               default: ""
+            IMAGE_NAME:
+              type: string
+              default: ubuntu-14-04-x64
+            EXTRA_VARIABLES:
+              type: text
+              default: ""
         build-image-ubuntu-16-04:
           type: workflow-scm
           concurrent: false
@@ -145,3 +151,9 @@
             OPENSTACK_API_CLIENT:
               type: string
               default: ""
+            IMAGE_NAME:
+              type: string
+              default: ubuntu-16-04-x64
+            EXTRA_VARIABLES:
+              type: text
+              default: ""
\ No newline at end of file
diff --git a/jenkins/client/job/oscore/init.yml b/jenkins/client/job/oscore/init.yml
index 4df13c4..2f45ef8 100644
--- a/jenkins/client/job/oscore/init.yml
+++ b/jenkins/client/job/oscore/init.yml
@@ -5,7 +5,7 @@
   - system.jenkins.client.job.oscore.salt_virtual_models
 parameters:
   _param:
-     job_description: <br>Deploy and test OpenStack.<br>
+     job_description_oscore: <br>Deploy and test OpenStack.<br>
   jenkins:
     client:
       view:
diff --git a/jenkins/client/job/oscore/qa.yml b/jenkins/client/job/oscore/qa.yml
index c8908e7..eb565a2 100644
--- a/jenkins/client/job/oscore/qa.yml
+++ b/jenkins/client/job/oscore/qa.yml
@@ -5,7 +5,7 @@
         oscore-build-docker-image:
           name: "{{job_prefix}}-{{oscore-qa-project}}-build-docker-image"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 25
@@ -50,7 +50,7 @@
         oscore-docker-image-systest-template:
           name: "{{job_prefix}}-{{oscore-qa-project}}-image-systest-{{model}}"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
diff --git a/jenkins/client/job/oscore/salt_virtual_models.yml b/jenkins/client/job/oscore/salt_virtual_models.yml
index 82b51ee..17c4aa8 100644
--- a/jenkins/client/job/oscore/salt_virtual_models.yml
+++ b/jenkins/client/job/oscore/salt_virtual_models.yml
@@ -4,7 +4,7 @@
       job:
         oscore-test_virtual_model:
           concurrent: true
-          description: ${_param:job_description}
+          description: ${_param:job_description_oscore}
           discard:
             build:
               keep_num: 30
@@ -47,6 +47,10 @@
               type: string
               description: Version of formulas for salt-master bootstrap
               default: "nightly"
+            BOOTSTRAP_EXTRA_REPO_PARAMS:
+              type: string
+              default: ""
+              description: "Defines a list of extra repos with parameters, format: repo 1, repo priority 1, repo pin 1; repo 2, repo priority 2, repo pin 2"
             # openstack api
             OPENSTACK_API_URL:
               type: string
@@ -97,7 +101,7 @@
           type: workflow-scm
         oscore-test_virtual_models:
           concurrent: true
-          description: ${_param:job_description}
+          description: ${_param:job_description_oscore}
           discard:
             build:
               keep_num: 30
diff --git a/jenkins/client/job/oscore/security_tests.yml b/jenkins/client/job/oscore/security_tests.yml
index d564574..8c6e39d 100644
--- a/jenkins/client/job/oscore/security_tests.yml
+++ b/jenkins/client/job/oscore/security_tests.yml
@@ -5,7 +5,7 @@
         bandit-scanner-template-downstream:
           name: "{{job_prefix}}-bandit-downstream-{{project}}"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -95,7 +95,7 @@
         bandit-scanner-template-upstream:
           name: "{{job_prefix}}-bandit-upstream-{{project}}"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
diff --git a/jenkins/client/job/oscore/tests.yml b/jenkins/client/job/oscore/tests.yml
index 122f793..d06160e 100644
--- a/jenkins/client/job/oscore/tests.yml
+++ b/jenkins/client/job/oscore/tests.yml
@@ -5,7 +5,7 @@
         test-openstack-component-formula:
           name: "{{job_prefix}}-formula-systest-{{model}}-{{openstack_version}}"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -147,7 +147,7 @@
         test-openstack-component-periodic:
           name: "{{job_prefix}}-{{milestone}}-{{model}}-{{openstack_version}}-{{formula_pkg_revision}}"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -286,7 +286,7 @@
         test-runner-template:
           name: "{{job_prefix}}-{{test_type}}-runner"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -381,7 +381,7 @@
         results-checker-template:
           name: "{{job_prefix}}-{{test_type}}-results-checker"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -454,7 +454,7 @@
         deploy-kvm-virtual-template:
           name: "{{job_prefix}}-deploy-kvm-VMs"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -536,7 +536,7 @@
         oscore-oscc-ci-template:
           name: "{{job_prefix}}-oscc-ci"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -574,10 +574,6 @@
               STACK_RECLASS_ADDRESS:
                 type: string
                 default: "{{stack_reclass_address}}"
-              OPENSTACK_RELEASES:
-                type: string
-                default: "{{openstack_releases}}"
-                description: "OpenStack releases with comma delimeter which have to be testes. For example: pike,ocata"
               SOURCE_REPO_NAME:
                 type: string
                 description: "Name of the repo where packages are stored"
@@ -598,10 +594,14 @@
                 type: boolean
                 default: "{{auto_promote}}"
                 description: Enable to autopromote repo
+              TEST_SCHEMAS:
+                type: string
+                default: "{{test_schemas}}"
+                description: "Defines structure to pass aio:cluster-name1:branch1,branch2|multinode:cluster-name2:branch1,branch2"
         build-salt-formula-refspec-template:
           name: "{{job_prefix}}-build-salt-formula-refspec"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -671,7 +671,7 @@
         test-salt-formula-refspec-template:
           name: "{{job_prefix}}-test-salt-formula-refspec"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -688,7 +688,7 @@
             trigger:
               gerrit:
                 project:
-                  "^salt-formulas/(nova|cinder|glance|keystone|horizon|neutron|designate|heat|ironic|barbican|aodh|ceilometer|gnocchi|panko|manila|salt|linux|reclass|galera|memcached|rabbitmq|bind|apache)$":
+                  "^salt-formulas/(nova|cinder|glance|keystone|horizon|neutron|designate|heat|ironic|barbican|aodh|ceilometer|gnocchi|panko|manila|salt|linux|reclass|galera|memcached|rabbitmq|bind|apache|runtest)$":
                     compare_type: 'REG_EXP'
                     branches:
                       - master
@@ -764,7 +764,7 @@
         test-deploy-virtual-model-change-template:
           name: "{{job_prefix}}-deploy-virtual-model-change-{{job_suffix}}"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
diff --git a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
index cccd01a..a2b000a 100644
--- a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
+++ b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
@@ -1,7 +1,7 @@
 parameters:
   _param:
     jenkins_pollscm_spec: "H/60 * * * *"
-    job_description: <br>Syncronizes code projects with GitHub.<br>
+    job_description_2way: <br>Syncronizes code projects with GitHub.<br>
   jenkins:
     client:
       job_template:
@@ -369,7 +369,7 @@
               branches: ${_param:salt_formulas_branches}
               notification_recipients: ${_param:salt_formulas_notification_recipients}
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_2way}
             discard:
               build:
                 keep_num: 10
@@ -415,7 +415,7 @@
                 default: "{{notification_recipients}}"
       job:
         git-mirror-2way-salt-formulas-scripts:
-          description: ${_param:job_description}
+          description: ${_param:job_description_2way}
           discard:
             build:
               keep_num: 10
@@ -449,7 +449,7 @@
               type: string
               default: "master"
         git-mirror-2way-salt-formulas-cookiecutter:
-          description: ${_param:job_description}
+          description: ${_param:job_description_2way}
           discard:
             build:
               keep_num: 10
diff --git a/jenkins/client/job/salt-models/tests.yml b/jenkins/client/job/salt-models/tests.yml
index bebc115..80135b5 100644
--- a/jenkins/client/job/salt-models/tests.yml
+++ b/jenkins/client/job/salt-models/tests.yml
@@ -294,7 +294,7 @@
                 default: "1"
               EXTRA_FORMULAS:
                 type: string
-                default: "aptly artifactory backupninja collectd devops-portal docker elasticsearch freeipa gerrit glusterfs grafana haproxy heka horizon influxdb jenkins keepalived kibana libvirt maas memcached mysql nginx ntp openldap openssh postfix prometheus rsync rsyslog rundeck sensu sphinx telegraf xtrabackup watchdog"
+                default: "aptly artifactory backupninja collectd devops-portal docker elasticsearch fluentd freeipa gerrit glusterfs grafana haproxy heka horizon influxdb jenkins keepalived kibana libvirt maas memcached mysql nginx ntp openldap openssh postfix prometheus rsync rsyslog rundeck sensu sphinx telegraf xtrabackup watchdog"
       job:
         test-salt-model-node:
           name: test-salt-model-node
diff --git a/jenkins/client/job/validate.yml b/jenkins/client/job/validate.yml
index 168dcfd..c97c0ad 100644
--- a/jenkins/client/job/validate.yml
+++ b/jenkins/client/job/validate.yml
@@ -364,3 +364,43 @@
             PROXY:
               type: string
               default: ""
+        cvp-stacklight:
+          type: workflow-scm
+          name: cvp-stacklight
+          display_name: "CVP - Stacklight tests"
+          discard:
+            build:
+              keep_num: 20
+            artifact:
+              keep_num: 20
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
+            credentials: "gerrit"
+            script: cvp-runner.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+              description: Full Salt API address [e.g. https://10.10.10.2:6969]
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            TESTS_REPO:
+              type: string
+              default: "https://github.com/legan4ik/stacklight-pytest"
+              description: Url for cvp-stacklight-tests
+            TESTS_SETTINGS:
+              type: string
+              default: "SL_AUTOCONF=True"
+              description: "Additional environment variables to export"
+            TESTS_SET:
+              type: string
+              default: "stacklight-pytest/stacklight_tests/tests/prometheus/"
+              description: "Leave empty for full run or choose a file, e.g. test_dashboards.py"
+            PROXY:
+              type: string
+              default: ""
+              description: Proxy address to clone repo and install python requirements
diff --git a/jenkins/client/job/vnf-onboarding/init.yml b/jenkins/client/job/vnf-onboarding/init.yml
index cd97fef..0e0a847 100644
--- a/jenkins/client/job/vnf-onboarding/init.yml
+++ b/jenkins/client/job/vnf-onboarding/init.yml
@@ -1,6 +1,7 @@
 classes:
   - system.jenkins.client.job.vnf-onboarding.test_avi_loadbalancer
   - system.jenkins.client.job.vnf-onboarding.test_nginx_vnf
+  - system.jenkins.client.job.vnf-onboarding.test_platform
 
 parameters:
   _param:
@@ -9,3 +10,6 @@
     vnf_openstack_api_url: "${_param:cluster_public_protocol}://${_param:cluster_public_host}:5000/v2.0"
     vnf_openstack_api_credentials: "test-openstack"
     vnf_elastic_url: "${_param:stacklight_log_address}:${_param:cluster_elasticsearch_port}"
+    vnf_docker_registry_path: "docker-dev-local.docker.mirantis.net/mirantis/vnf-onboarding"
+    vnf_artifactory_url: "https://artifactory.mcp.mirantis.net/artifactory/vnf-onboarding-sandbox"
+    contrail_api_url: "http://127.0.0.1:8082"
diff --git a/jenkins/client/job/vnf-onboarding/test_avi_loadbalancer.yml b/jenkins/client/job/vnf-onboarding/test_avi_loadbalancer.yml
index f30b2b7..2bc206b 100644
--- a/jenkins/client/job/vnf-onboarding/test_avi_loadbalancer.yml
+++ b/jenkins/client/job/vnf-onboarding/test_avi_loadbalancer.yml
@@ -73,9 +73,40 @@
             NFV_PLATFORM_REPO_CREDENTIALS:
               type: string
               default: "${_param:vnf_gerrit_credentials}"
+            CONTRAIL_ENABLED:
+              type: boolean
+              default: false
+            CONTRAIL_API_URL:
+              type: string
+              default: "${_param:contrail_api_url}"
             CI_OPTIONS:
               type: string
               default: "CFY_AGENT_NET=cfm-net CFY_AGENT_FLAVOR=cfy.agent CFY_AGENT_IMAGE=ubuntu1 CFY_AGENT_USER=cfyuser CFY_SG=cfm-sg CFY_SSH_KEY_ID=openstack_key"
+            VNF_ARTIFACTORY_URL:
+              type: string
+              default: "${_param:vnf_artifactory_url}"
+            VNF_ARTIFACTORY_PLUGINS_DIR:
+              type: string
+              default: "${_param:vnf_artifactory_url}/cloudify/plugins/"
+            VNF_DOCKER_REGISTRY_PATH:
+              type: string
+              default: "${_param:vnf_docker_registry_path}"
+            VNF_DOCKER_CLI_TAG:
+              type: string
+              default: "latest"
+            VNF_DOCKER_SCRUN_TAG:
+              type: string
+              default: "latest"
+            VNF_DOCKER_AVICFG_TAG:
+              type: string
+              default: "latest"
+            VNF_PLUGINS:
+              type: string
+              description: "Plugins to fetch from artifactory and install during build package step"
+              default: "vnf_onboarding_tools-0.1-py27-none-linux_x86_64_Ubuntu_xenial"
             VNF_OPTIONS:
               type: string
               default: "AVI_VERSION=17.2.3 AVI_USERNAME=admin AVI_PASSWORD=Swordfish1234 AVI_IMAGE_PASSWORD=58NFaGDJm(PJH0G AVI_OS_FLAVOR=avi_ctrl.small AVI_OS_IMAGE=avi-control-17.2.3"
+            VNF_DOCKER_CLI_PLATFORM:
+              type: string
+              default: "ubuntu"
diff --git a/jenkins/client/job/vnf-onboarding/test_nginx_vnf.yml b/jenkins/client/job/vnf-onboarding/test_nginx_vnf.yml
index 8a86363..2dc1a31 100644
--- a/jenkins/client/job/vnf-onboarding/test_nginx_vnf.yml
+++ b/jenkins/client/job/vnf-onboarding/test_nginx_vnf.yml
@@ -74,9 +74,37 @@
             NFV_PLATFORM_REPO_CREDENTIALS:
               type: string
               default: "${_param:vnf_gerrit_credentials}"
+            CONTRAIL_ENABLED:
+              type: boolean
+              default: false
+            CONTRAIL_API_URL:
+              type: string
+              default: "${_param:contrail_api_url}"
             CI_OPTIONS:
               type: string
               default: "CFY_AGENT_NET=cfm-net CFY_AGENT_FLAVOR=cfy.agent CFY_AGENT_IMAGE=ubuntu1 CFY_AGENT_USER=cfyuser CFY_SG=cfm-sg CFY_SSH_KEY_ID=openstack_key"
+            VNF_ARTIFACTORY_URL:
+              type: string
+              default: "${_param:vnf_artifactory_url}"
+            VNF_ARTIFACTORY_PLUGINS_DIR:
+              type: string
+              default: "${_param:vnf_artifactory_url}/cloudify/plugins/"
+            VNF_DOCKER_REGISTRY_PATH:
+              type: string
+              default: "${_param:vnf_docker_registry_path}"
+            VNF_DOCKER_CLI_TAG:
+              type: string
+              default: "latest"
+            VNF_DOCKER_SCRUN_TAG:
+              type: string
+              default: "latest"
+            VNF_PLUGINS:
+              type: string
+              description: "Plugins to fetch from artifactory and install during build package step"
+              default: "vnf_onboarding_tools-0.1-py27-none-linux_x86_64_Ubuntu_xenial"
             VNF_OPTIONS:
               type: string
               default: ""
+            VNF_DOCKER_CLI_PLATFORM:
+              type: string
+              default: "ubuntu"
diff --git a/jenkins/client/job/vnf-onboarding/test_platform.yml b/jenkins/client/job/vnf-onboarding/test_platform.yml
new file mode 100644
index 0000000..1dd0051
--- /dev/null
+++ b/jenkins/client/job/vnf-onboarding/test_platform.yml
@@ -0,0 +1,99 @@
+parameters:
+  jenkins:
+    client:
+      plugin:
+        gerrit-trigger: {}
+      job:
+        platform_validation_pipeline:
+          type: workflow-scm
+          name: platform_validation_pipeline
+          display_name: "Validate OpenStack platform before deploy of VNF"
+          discard:
+            build:
+              keep_num: 20
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/vnf-onboarding/pipelines"
+            credentials: "${_param:vnf_gerrit_credentials}"
+            script: test_platform.groovy
+          param:
+            OPENSTACK_API_CREDENTIALS:
+              type: string
+              description: "OpenStack admin user credentials for running tests"
+              default: "${_param:vnf_openstack_api_credentials}"
+            OS_PROJECT_NAME:
+              type: string
+              description: "OpenStack project name for running tests"
+              default: "platform-test"
+            OS_AUTH_URL:
+              type: string
+              description: "OpenStack auth url"
+              default: "http://${_param:openstack_control_address}:35357/v3"
+            IMAGE_ID:
+              type: string
+              description: "Specify image id to execute tests against custom images"
+              default: ""
+            FLAVOR_ID:
+              type: string
+              description: "Specify flavor id to execute tests against custom images"
+              default: ""
+            MIN_COMPUTE_NODES:
+              type: string
+              description: "Specify number of compute nodes of environment"
+              default: '2'
+            FIXED_SHARED_NETWORK_NAME:
+              type: string
+              description: "Shared network that will be used in tests."
+              default: "test-shared"
+            COMPUTE_NODE_HOST_NAME:
+              type: string
+              description: "To run CPU pinning/NUMA topology tests against specific node"
+              default: ''
+            COMPUTE_AVAILABILITY_ZONE:
+              type: string
+              description: "To run CPU pinning/NUMA topology tests against specific node"
+              default: 'nova'
+            COMPUTE_NUMA_NODE_COUNT:
+              type: string
+              description: "Number of NUMA node for NUMA topology testing."
+              default: '2'
+            IMAGE_SSH_USER:
+              type: string
+              description: "Specify user name to login in test OpenStack VMs"
+              default: "cirros"
+            VNF_PLATFORM_TESTS_REPO:
+              type: string
+              description: "Repository with testing framework"
+              default: "${_param:jenkins_gerrit_url}vnf-onboarding/platform-tests"
+            VNF_PLATFORM_TESTS_BRANCH:
+              type: string
+              default: "master"
+            VNF_PLATFORM_TESTS_REPO_CREDENTIALS:
+              type: string
+              default: "${_param:vnf_gerrit_credentials}"
+            TEMPEST_IMAGE_DOCKER_REGISTRY_PATH:
+              type: string
+              description: "Path for docker image with testing tool.  If empty, image will be build using VNF_PLATFORM_TESTS_* parameters."
+              default: ${_param:vnf_docker_registry_path}
+            TEMPEST_IMAGE_NAME:
+              type: string
+              description: "Name of docker image with testing tool"
+              default: "platform_tests:latest"
+            ELASTIC_URL:
+              type: string
+              description: "URL to elastic search API"
+              default: "${_param:vnf_elastic_url}"
+            ELASTIC_TRANSFER_REPO:
+              type: string
+              description: "Repository with scripts for transfering test results to elastic search"
+              default: "${_param:jenkins_gerrit_url}/vnf-onboarding/nfv-platform"
+            ELASTIC_TRANSFER_REPO_CREDENTIALS:
+              type: string
+              default: "${_param:vnf_gerrit_credentials}"
+            ELASTIC_TRANSFER_REPO_BRANCH:
+              type: string
+              default: "master"
+            DOCKER_TEMPEST_PARAMS:
+              type: string
+              description: "Pass custom parameters for tempest container"
+              default: ""
diff --git a/jenkins/slave/docker.yml b/jenkins/slave/docker.yml
index ea3639b..227dd51 100644
--- a/jenkins/slave/docker.yml
+++ b/jenkins/slave/docker.yml
@@ -15,4 +15,7 @@
             hosts:
             - ALL
             commands:
-            - /usr/bin/docker
\ No newline at end of file
+            - /usr/bin/docker
+      package:
+        docker-ce:
+          version: latest
diff --git a/jenkins/slave/python.yml b/jenkins/slave/python.yml
new file mode 100644
index 0000000..d53caf2
--- /dev/null
+++ b/jenkins/slave/python.yml
@@ -0,0 +1,10 @@
+ classes:
+   - system.jenkins.slave
+ parameters:
+   linux:
+     system:
+       package:
+         python:
+           version: latest
+         python-virtualenv:
+           version: latest
diff --git a/keepalived/cluster/instance/openstack_web_public_vip.yml b/keepalived/cluster/instance/openstack_web_public_vip.yml
index 1080e62..144ddf2 100644
--- a/keepalived/cluster/instance/openstack_web_public_vip.yml
+++ b/keepalived/cluster/instance/openstack_web_public_vip.yml
@@ -11,7 +11,7 @@
     cluster:
       vrrp_scripts:
         check_pidof:
-          args: "haproxy"
+          args: "nginx"
           interval: 10
           rise: 1
           fall: 1
@@ -23,4 +23,4 @@
           interface: ${_param:keepalived_openstack_web_public_vip_interface}
           virtual_router_id: 132
           priority: ${_param:keepalived_vip_priority}
-          track_script: check_pidof
+          track_script: check_pidof
\ No newline at end of file
diff --git a/keystone/client/os_client_config/admin_identity.yml b/keystone/client/os_client_config/admin_identity.yml
new file mode 100644
index 0000000..35cdf19
--- /dev/null
+++ b/keystone/client/os_client_config/admin_identity.yml
@@ -0,0 +1,19 @@
+parameters:
+  keystone:
+    client:
+      os_client_config:
+        enabled: true
+        cfgs:
+          root:
+            content:
+              clouds:
+                admin_identity:
+                  region_name: ${_param:openstack_region}
+                  identity_api_version: '3'
+                  auth:
+                    username: 'admin'
+                    password: ${_param:keystone_admin_password}
+                    user_domain_name: 'Default'
+                    project_name: 'admin'
+                    project_domain_name: 'Default'
+                    auth_url: ${_param:keystone_service_protocol}://${_param:keystone_service_host}:5000
diff --git a/keystone/client/single.yml b/keystone/client/single.yml
index a79ed7e..ad2d55a 100644
--- a/keystone/client/single.yml
+++ b/keystone/client/single.yml
@@ -1,4 +1,5 @@
 classes:
+- system.keystone.client.os_client_config.admin_identity
 - system.keystone.client.service.cinder
 - system.keystone.client.service.cinder2
 - system.keystone.client.service.glance
diff --git a/kibana/client/vnf-onboarding/init.yml b/kibana/client/vnf-onboarding/init.yml
new file mode 100644
index 0000000..fc66ea0
--- /dev/null
+++ b/kibana/client/vnf-onboarding/init.yml
@@ -0,0 +1,138 @@
+classes:
+  - service.kibana.client
+
+parameters:
+  kibana:
+    client:
+      enabled: true
+      object:
+        vnf_tests_v1c:
+          enabled: true
+          type: index-pattern
+          content:
+            title: vnf_tests_v1c
+            timeFieldName: timestamp
+            fields: "[{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"result_details.Complete requests\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.Failed requests\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.HTML transferred, bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.Non-2xx responses\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.Requests per second, #/sec\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.TC_Connect_avg, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.TC_Connect_max, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.TC_Connect_sd, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.TC_Processing_avg, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.TC_Processing_max, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.TC_Processing_sd, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.TC_Total_avg, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.TC_Total_max, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.TC_Total_sd, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.TC_Waiting_avg, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.TC_Waiting_max, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.TC_Waiting_sd, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.Time per request, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.Time taken for tests, seconds\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.Total transferred, bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.Transfer rate, Kbytes/sec\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.value\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.warnings.count\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"result_details.warnings.message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"test_description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"test_errors.count\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"test_errors.message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"test_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"test_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"test_parameters.Concurrency Level\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"test_parameters.Document Length, bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"test_parameters.Document Path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"test_parameters.Server Hostname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"test_parameters.Server Port\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"test_parameters.Server Software\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"test_parameters.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"test_parameters.value\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"test_result\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"test_run_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"test_scenario_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"test_scenario_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"vnf_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"vnf_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"vnf_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]"
+        search-VNF-TESTS:
+          enabled: true
+          type: search
+          content:
+            title: "VNF tests"
+            hits: 0
+            columns:
+              - test_result
+              - test_run_id
+              - vnf_name
+              - test_scenario_name
+              - test_name
+            sort:
+              - timestamp
+              - desc
+            version: 1
+            kibanaSavedObjectMeta:
+              searchSourceJSON: "{\"index\":\"vnf_tests_v1c\",\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"highlight\":{\"pre_tags\":[\"@kibana-highlighted-field@\"],\"post_tags\":[\"@/kibana-highlighted-field@\"],\"fields\":{\"*\":{}},\"require_field_match\":false,\"fragment_size\":2147483647}}"
+        dashboard-VNF-TESTS:
+          enabled: true
+          type: dashboard
+          content:
+            title: "VNF validation"
+            hits: 0
+            panelsJSON: "[{\"id\":\"VNF-TEST-RESULTS-BY-SCENARIO\",\"type\":\"visualization\",\"panelIndex\":5,\"size_x\":8,\"size_y\":8,\"col\":1,\"row\":1},{\"id\":\"VNF-TESTS-BY-CI-JOB\",\"type\":\"visualization\",\"panelIndex\":6,\"size_x\":4,\"size_y\":4,\"col\":9,\"row\":5},{\"id\":\"VNF-TESTS-BY-TEST-SCENARIO\",\"type\":\"visualization\",\"panelIndex\":7,\"size_x\":4,\"size_y\":4,\"col\":9,\"row\":1}]"
+            optionsJSON: "{\"darkTheme\":false}"
+            uiStateJSON: "{}"
+            version: 1
+            timeRestore: true
+            timeTo: now
+            timeFrom: now-30d
+            kibanaSavedObjectMeta:
+              searchSourceJSON: "{\"filter\":[{\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}}}]}"
+        VNF-TEST-RESULTS-BY-SCENARIO:
+          enabled: true
+          type: visualization
+          content:
+            title: "VNF test results by scenario"
+            visState: "{\"title\":\"VNF test results by scenario\",\"type\":\"histogram\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"addLegend\":true,\"scale\":\"linear\",\"mode\":\"stacked\",\"times\":[],\"addTimeMarker\":false,\"defaultYExtents\":false,\"setYExtents\":false,\"yAxis\":{}},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"3\",\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"interval\":\"d\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"4\",\"type\":\"filters\",\"schema\":\"group\",\"params\":{\"filters\":[{\"input\":{\"query\":{\"query_string\":{\"query\":\"test_result:passed\",\"analyze_wildcard\":true}}},\"label\":\"PASSED\"},{\"input\":{\"query\":{\"query_string\":{\"query\":\"test_result:failed\",\"analyze_wildcard\":true}}},\"label\":\"FAILED\"}]}},{\"id\":\"5\",\"type\":\"terms\",\"schema\":\"split\",\"params\":{\"field\":\"test_scenario_id\",\"size\":0,\"order\":\"desc\",\"orderBy\":\"1\",\"row\":true}}],\"listeners\":{}}"
+            uiStateJSON: "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}},\"vis\":{\"legendOpen\":true,\"colors\":{\"FAILED\":\"#BF1B00\"}}}"
+            version: 1
+            kibanaSavedObjectMeta:
+              searchSourceJSON: "{\"index\":\"vnf_tests_v1c\",\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}},\"filter\":[]}"
+        VNF-TESTS-BY-CI-JOB:
+          enabled: true
+          type: visualization
+          content:
+            title: "VNF tests by CI job"
+            visState: "{\"title\":\"VNF tests by CI job\",\"type\":\"pie\",\"params\":{\"addLegend\":true,\"addTooltip\":true,\"isDonut\":false,\"shareYAxis\":true,\"legendPosition\":\"right\",\"type\":\"pie\"},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"filters\",\"schema\":\"segment\",\"params\":{\"filters\":[{\"input\":{\"query\":{\"query_string\":{\"query\":\"test_run_id: run-test_ab-jenkins-test_nginx_vnf-*\",\"analyze_wildcard\":true}}},\"label\":\"test_nginx\"},{\"input\":{\"query\":{\"query_string\":{\"query\":\"test_run_id: run-jenkins-test_avi_loadbalancer-*\",\"analyze_wildcard\":true}}},\"label\":\"test_avi_loadbalancer\"},{\"input\":{\"query\":{\"query_string\":{\"query\":\"test_run_id: run-test_ab-jenkins-test_nginx_vnf_no_cfy-*\",\"analyze_wildcard\":true}}},\"label\":\"test_nginx_vnf_no_cfy\"},{\"input\":{\"query\":{\"query_string\":{\"query\":\"test_run_id: run-jenkins-test_vnf_onboarding-*\"}}},\"label\":\"test_vnf_onboarding\"},{\"input\":{\"query\":{\"query_string\":{\"query\":\"test_run_id: run-test_ab-jenkins-dpyzhov*\",\"analyze_wildcard\":true}}},\"label\":\"jenkins-dpyzhov\"},{\"input\":{\"query\":{\"query_string\":{\"query\":\"test_run_id: run-test_balancing-jenkins-test_avi_loadbalancer-*\"}}},\"label\":\"test_avi_loadbalancer-balancing\"}],\"json\":\"\"}}],\"listeners\":{}}"
+            uiStateJSON: "{}"
+            version: 1
+            kibanaSavedObjectMeta:
+              searchSourceJSON: "{\"index\":\"vnf_tests_v1c\",\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}},\"filter\":[]}"
+        VNF-TESTS-BY-TEST-SCENARIO:
+          enabled: true
+          type: visualization
+          content:
+            title: "VNF tests by test scenario"
+            visState: "{\"title\":\"VNF tests by test scenario\",\"type\":\"pie\",\"params\":{\"addLegend\":true,\"addTooltip\":true,\"isDonut\":false,\"shareYAxis\":true},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"test_scenario_id\",\"size\":0,\"order\":\"desc\",\"orderBy\":\"1\"}}],\"listeners\":{}}"
+            uiStateJSON: "{}"
+            version: 1
+            kibanaSavedObjectMeta:
+              searchSourceJSON: "{\"index\":\"vnf_tests_v1c\",\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}},\"filter\":[]}"
+        platform_test_v1b:
+          enabled: true
+          type: index-pattern
+          content:
+            title: platform_test_v1b
+            timeFieldName: timestamp
+            fields: "[{\"name\":\"test_errors.count\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"test_description\",\"type\":\"string\",\"count\":2,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.TC_Processing_max, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_volume_boot_pattern.testcase_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.Time per request, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_create_servers_on_different_hosts.duration\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_numa_topology.testcase_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_create_list_port_with_address_pair.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.failures\",\"type\":\"number\",\"count\":1,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.TC_Waiting_max, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_nova_watchdog.duration\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_update_port_with_cidr_address_pair.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_snapshot_pattern.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"test_errors.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_create_ebs_image_and_check_boot.duration\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.TC_Waiting_sd, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.HTML transferred, bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_volume_boot_pattern.duration\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_numa_topology.duration\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.Total transferred, bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.TC_Total_max, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_connectivity_check.testcase_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"result_details.testcases.test_create_list_port_with_address_pair.testcase_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.warnings.count\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.TC_Connect_avg, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_create_server_from_volume_snapshot.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_update_port_with_address_pair.duration\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"vnf_name\",\"type\":\"string\",\"count\":1,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_update_port_with_multiple_ip_mac_address_pair.testcase_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"test_parameters.Concurrency Level\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"test_errors.message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_cpu_pinning.duration\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_update_port_with_multiple_ip_mac_address_pair.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"test_run_id\",\"type\":\"string\",\"count\":1,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_cpu_pinning.testcase_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.TC_Connect_sd, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_create_servers_on_same_host.testcase_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.TC_Processing_avg, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_create_servers_on_different_hosts.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_create_servers_on_different_hosts_with_list_of_servers.testcase_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"test_result\",\"type\":\"string\",\"count\":1,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.Requests per second, #/sec\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_update_port_with_multiple_ip_mac_address_pair.duration\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_create_server_from_volume_snapshot.duration\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.success\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"vnf_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_create_servers_on_same_host.duration\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.expected_failures\",\"type\":\"number\",\"count\":2,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_create_ebs_image_and_check_boot.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_create_ebs_image_and_check_boot.testcase_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_create_servers_on_different_hosts.testcase_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"test_parameters.Document Length, bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_update_port_with_cidr_address_pair.testcase_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.skipped\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.TC_Connect_max, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_nova_watchdog.testcase_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_create_servers_on_different_hosts_with_list_of_servers.duration\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.Failed requests\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"test_parameters.Document Path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_cpu_pinning.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.TC_Total_sd, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.Time taken for tests, seconds\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_create_server_from_volume_snapshot.testcase_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_nova_watchdog.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_update_port_with_cidr_address_pair.duration\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"test_name\",\"type\":\"string\",\"count\":2,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.TC_Total_avg, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_connectivity_check.duration\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_snapshot_pattern.testcase_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.TC_Processing_sd, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"result_details.testcases.test_volume_boot_pattern.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.Complete requests\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"test_scenario_id\",\"type\":\"string\",\"count\":2,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_snapshot_pattern.duration\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.TC_Waiting_avg, ms\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_create_servers_on_same_host.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"vnf_id\",\"type\":\"string\",\"count\":1,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.warnings.message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_numa_topology.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_create_list_port_with_address_pair.duration\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.Transfer rate, Kbytes/sec\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"test_id\",\"type\":\"string\",\"count\":1,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"test_scenario_name\",\"type\":\"string\",\"count\":2,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"test_parameters.Server Port\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"test_parameters.Server Hostname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_connectivity_check.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.unexpected_success\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_update_port_with_address_pair.testcase_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.testcases.test_create_servers_on_different_hosts_with_list_of_servers.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.tests_duration\",\"type\":\"number\",\"count\":2,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"test_parameters.Server Software\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"result_details.Non-2xx responses\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"result_details.testcases.test_update_port_with_address_pair.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]"
+        search-PLATFORM-TESTS:
+          enabled: true
+          type: search
+          content:
+            title: "Platform tests"
+            hits: 0
+            columns:
+              - test_result
+              - test_run_id
+              - test_name
+              - test_scenario_name
+              - result_details.failures
+            sort:
+              - timestamp
+              - desc
+            version: 1
+            kibanaSavedObjectMeta:
+              searchSourceJSON: "{\"index\":\"platform_test_v1b\",\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}},\"filter\":[],\"highlight\":{\"pre_tags\":[\"@kibana-highlighted-field@\"],\"post_tags\":[\"@/kibana-highlighted-field@\"],\"fields\":{\"*\":{}},\"require_field_match\":false,\"fragment_size\":2147483647}}"
+        dashboard-PLATFORM-TESTS:
+          enabled: true
+          type: dashboard
+          content:
+            title: "Platform tests"
+            hits: 0
+            panelsJSON: "[{\"id\":\"PLATFORM-TEST-RESULTS-BY-TEST-NAME\",\"type\":\"visualization\",\"panelIndex\":1,\"size_x\":7,\"size_y\":8,\"col\":1,\"row\":1},{\"id\":\"PLATFORM-TESTS-BY-TEST-NAME\",\"type\":\"visualization\",\"panelIndex\":2,\"size_x\":5,\"size_y\":8,\"col\":8,\"row\":1}]"
+            optionsJSON: "{\"darkTheme\":false}"
+            uiStateJSON: "{}"
+            version: 1
+            timeRestore: true
+            timeTo: now
+            timeFrom: now-30d
+            kibanaSavedObjectMeta:
+              searchSourceJSON: "{\"filter\":[{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}}}]}"
+        PLATFORM-TEST-RESULTS-BY-TEST-NAME:
+          enabled: true
+          type: visualization
+          content:
+            title: "Platform test results by test name"
+            visState: "{\"title\":\"Platform test results by test name\",\"type\":\"histogram\",\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"defaultYExtents\":false,\"mode\":\"stacked\",\"scale\":\"linear\",\"setYExtents\":false,\"shareYAxis\":true,\"times\":[],\"yAxis\":{}},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"3\",\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"interval\":\"d\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"4\",\"type\":\"filters\",\"schema\":\"group\",\"params\":{\"filters\":[{\"input\":{\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"test_result:passed\"}}},\"label\":\"PASSED\"},{\"input\":{\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"test_result:failed\"}}},\"label\":\"FAILED\"}]}},{\"id\":\"5\",\"type\":\"terms\",\"schema\":\"split\",\"params\":{\"field\":\"test_name\",\"size\":0,\"order\":\"desc\",\"orderBy\":\"1\",\"row\":true}}],\"listeners\":{}}"
+            uiStateJSON: "{\"spy\":{\"mode\":{\"fill\":false,\"name\":null}},\"vis\":{\"colors\":{\"FAILED\":\"#BF1B00\"},\"legendOpen\":true}}"
+            version: 1
+            kibanaSavedObjectMeta:
+              searchSourceJSON: "{\"index\":\"platform_test_v1b\",\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}},\"filter\":[]}"
+        PLATFORM-TESTS-BY-TEST-NAME:
+          enabled: true
+          type: visualization
+          content:
+            title: "Platform tests by test name"
+            visState: "{\"title\":\"Platform tests by test name\",\"type\":\"pie\",\"params\":{\"addLegend\":true,\"addTooltip\":true,\"isDonut\":false,\"shareYAxis\":true},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"test_name\",\"size\":0,\"order\":\"desc\",\"orderBy\":\"1\"}}],\"listeners\":{}}"
+            uiStateJSON: "{}"
+            version: 1
+            kibanaSavedObjectMeta:
+              searchSourceJSON: "{\"index\":\"platform_test_v1b\",\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}},\"filter\":[]}"
diff --git a/kubernetes/control/flask_hello.yml b/kubernetes/control/flask_hello.yml
index f7b41e5..3d07f26 100644
--- a/kubernetes/control/flask_hello.yml
+++ b/kubernetes/control/flask_hello.yml
@@ -19,7 +19,7 @@
               name: flask-hello
           container:
             flask-hello:
-              image: ${_param:cicd_control_address}:5000/tcpcloud/python-flask-hello
+              image: ${_param:cicd_control_address}:5000/Mirantis/python-flask-hello
               image_pull_policy: Always
               ports:
               - port: 5000
diff --git a/linux/system/repo/mcp/apt_mirantis/saltstack.yml b/linux/system/repo/mcp/apt_mirantis/saltstack.yml
new file mode 100644
index 0000000..6fcd5a1
--- /dev/null
+++ b/linux/system/repo/mcp/apt_mirantis/saltstack.yml
@@ -0,0 +1,14 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    salt_version: 2016.3
+    linux_system_repo_mcp_saltstack_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_saltstack:
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_saltstack_version}/saltstack-${_param:salt_version}/${_param:linux_system_codename}/ ${_param:linux_system_codename} main"
+          architectures: amd64
+          key_id: 0E08A149DE57BFBE
+          key_server: keyserver.ubuntu.com
+          clean_file: true
diff --git a/linux/system/repo_local/mcp/apt_mirantis/saltstack.yml b/linux/system/repo_local/mcp/apt_mirantis/saltstack.yml
new file mode 100644
index 0000000..5b2a904
--- /dev/null
+++ b/linux/system/repo_local/mcp/apt_mirantis/saltstack.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+    salt_version: 2016.3
+    linux_system_repo_mcp_saltstack_version: ${_param:apt_mk_version}
+  linux:
+    system:
+      repo:
+        mcp_saltstack:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/salt/${_param:salt_version}/ ${_param:linux_system_repo_mcp_saltstack_version} main"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_saltstack_version}'
+            priority: 1100
+            package: '*'
\ No newline at end of file
diff --git a/manila/client/init.yml b/manila/client/init.yml
new file mode 100644
index 0000000..2fdadfd
--- /dev/null
+++ b/manila/client/init.yml
@@ -0,0 +1,4 @@
+classes:
+- service.manila.client
+- system.keystone.client.os_client_config.admin_identity
+- system.manila.client.share_type
diff --git a/manila/client/share_type/default.yml b/manila/client/share_type/default.yml
new file mode 100644
index 0000000..bafd387
--- /dev/null
+++ b/manila/client/share_type/default.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    manila_share_type_default_extra_specs:
+      driver_handles_share_servers: False
+      snapshot_support: True
+  manila:
+    client:
+      enabled: true
+      server:
+        admin_identity:
+          share_type:
+            default:
+              name: 'default'
+              # Extra quotes are required to make sure automatic conversion to float
+              # not happening.
+              microversion: '"2.40"'
+              extra_specs: ${_param:manila_share_type_default_extra_specs}
diff --git a/manila/client/share_type/init.yml b/manila/client/share_type/init.yml
new file mode 100644
index 0000000..ca69e74
--- /dev/null
+++ b/manila/client/share_type/init.yml
@@ -0,0 +1,2 @@
+classes:
+- system.manila.client.share_type.default
diff --git a/neutron/client/service/public.yml b/neutron/client/service/public.yml
index c3e2ca3..532a8cf 100644
--- a/neutron/client/service/public.yml
+++ b/neutron/client/service/public.yml
@@ -21,5 +21,5 @@
                   allocation_pools:
                     - start: ${_param:openstack_public_neutron_subnet_allocation_start}
                       end: ${_param:openstack_public_neutron_subnet_allocation_end}
-                  gateway: ${_param:openstack_public_neutron_subnet_gateway}
+                  gateway_ip: ${_param:openstack_public_neutron_subnet_gateway}
                   enable_dhcp: False
diff --git a/nginx/server/proxy/openstack/cinder.yml b/nginx/server/proxy/openstack/cinder.yml
new file mode 100644
index 0000000..c89fa11
--- /dev/null
+++ b/nginx/server/proxy/openstack/cinder.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_cinder_host: ${_param:cinder_service_host}
+    nginx_proxy_openstack_cinder_protocol: 'http'
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_cinder:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_cinder
+          check: false
+          proxy:
+            host: ${_param:nginx_proxy_openstack_cinder_host}
+            port: 8776
+            protocol: ${_param:nginx_proxy_openstack_cinder_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8776
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/glance.yml b/nginx/server/proxy/openstack/glance.yml
new file mode 100644
index 0000000..3479296
--- /dev/null
+++ b/nginx/server/proxy/openstack/glance.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_glance_protocol: 'http'
+    nginx_proxy_openstack_glance_host: ${_param:glance_service_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_glance:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_glance
+          check: false
+          underscores_in_headers: true
+          proxy:
+            host: ${_param:nginx_proxy_openstack_glance_host}
+            port: 9292
+            protocol: ${_param:nginx_proxy_openstack_glance_protocol}
+            size: 30000m
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 9292
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/heat.yml b/nginx/server/proxy/openstack/heat.yml
new file mode 100644
index 0000000..bfb7745
--- /dev/null
+++ b/nginx/server/proxy/openstack/heat.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_heat_host: ${_param:heat_service_host}
+    nginx_proxy_openstack_heat_protocol: 'http'
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_heat:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_heat
+          check: false
+          proxy:
+            host: ${_param:nginx_proxy_openstack_heat_host}
+            port: 8004
+            protocol: ${_param:nginx_proxy_openstack_heat_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8004
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/heat_cfn.yml b/nginx/server/proxy/openstack/heat_cfn.yml
new file mode 100644
index 0000000..99bb2d3
--- /dev/null
+++ b/nginx/server/proxy/openstack/heat_cfn.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_heat_host: ${_param:heat_service_host}
+    nginx_proxy_openstack_heat_protocol: 'http'
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_heat_cfn:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_heat_cfn
+          proxy:
+            host: ${_param:nginx_proxy_openstack_heat_host}
+            port: 8000
+            protocol: ${_param:nginx_proxy_openstack_heat_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8000
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/heat_cloudwatch.yml b/nginx/server/proxy/openstack/heat_cloudwatch.yml
new file mode 100644
index 0000000..2c6a30a
--- /dev/null
+++ b/nginx/server/proxy/openstack/heat_cloudwatch.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_heat_host: ${_param:heat_service_host}
+    nginx_proxy_openstack_heat_protocol: 'http'
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_heat_cloudwatch:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_heat_cloudwatch
+          proxy:
+            host: ${_param:nginx_proxy_openstack_heat_host}
+            port: 8003
+            protocol: ${_param:nginx_proxy_openstack_heat_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8003
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/keystone.yml b/nginx/server/proxy/openstack/keystone.yml
new file mode 100644
index 0000000..bf6646a
--- /dev/null
+++ b/nginx/server/proxy/openstack/keystone.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_keystone_host: ${_param:keystone_service_host}
+    nginx_proxy_openstack_keystone_protocol: 'http'
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_keystone:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_keystone
+          check: false
+          proxy:
+            host: ${_param:nginx_proxy_openstack_keystone_host}
+            port: 5000
+            protocol: ${_param:nginx_proxy_openstack_keystone_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 5000
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/keystone_private.yml b/nginx/server/proxy/openstack/keystone_private.yml
new file mode 100644
index 0000000..bffae74
--- /dev/null
+++ b/nginx/server/proxy/openstack/keystone_private.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_keystone_host: ${_param:keystone_service_host}
+    nginx_proxy_openstack_keystone_protocol: 'http'
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_keystone_private:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_keystone_private
+          check: false
+          proxy:
+            host: ${_param:nginx_proxy_openstack_keystone_host}
+            port: 35357
+            protocol: ${_param:nginx_proxy_openstack_keystone_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 35357
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/neutron.yml b/nginx/server/proxy/openstack/neutron.yml
new file mode 100644
index 0000000..9ee5796
--- /dev/null
+++ b/nginx/server/proxy/openstack/neutron.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_neutron_host: ${_param:neutron_service_host}
+    nginx_proxy_openstack_neutron_protocol: 'http'
+  nginx:
+    server:
+      site:
+        nginx_proxy_openstack_api_neutron:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_neutron
+          check: false
+          proxy:
+            host: ${_param:nginx_proxy_openstack_neutron_host}
+            port: 9696
+            protocol: ${_param:nginx_proxy_openstack_neutron_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 9696
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/nova.yml b/nginx/server/proxy/openstack/nova.yml
new file mode 100644
index 0000000..456e056
--- /dev/null
+++ b/nginx/server/proxy/openstack/nova.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_nova_host: ${_param:nova_service_host}
+    nginx_proxy_openstack_nova_protocol: 'http'
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_nova:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_nova
+          check: false
+          proxy:
+            host: ${_param:nginx_proxy_openstack_nova_host}
+            port: 8774
+            protocol: ${_param:nginx_proxy_openstack_nova_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8774
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/nova_ec2.yml b/nginx/server/proxy/openstack/nova_ec2.yml
new file mode 100644
index 0000000..27b3f91
--- /dev/null
+++ b/nginx/server/proxy/openstack/nova_ec2.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_nova_host: ${_param:nova_service_host}
+    nginx_proxy_openstack_nova_protocol: 'http'
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_nova_ec2:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_nova_ec2
+          check: false
+          proxy:
+            host: ${_param:nginx_proxy_openstack_nova_host}
+            port: 8773
+            protocol: ${_param:nginx_proxy_openstack_nova_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8773
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack_api.yml b/nginx/server/proxy/openstack_api.yml
index 26a25da..f9f363d 100644
--- a/nginx/server/proxy/openstack_api.yml
+++ b/nginx/server/proxy/openstack_api.yml
@@ -1,160 +1,11 @@
-parameters:
-  _param:
-    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
-    nginx_proxy_openstack_api_address: 0.0.0.0
-    nginx_proxy_openstack_keystone_host: ${_param:keystone_service_host}
-    nginx_proxy_openstack_nova_host: ${_param:nova_service_host}
-    nginx_proxy_openstack_cinder_host: ${_param:cinder_service_host}
-    nginx_proxy_openstack_glance_host: ${_param:glance_service_host}
-    nginx_proxy_openstack_neutron_host: ${_param:neutron_service_host}
-    nginx_proxy_openstack_heat_host: ${_param:heat_service_host}
-    nginx_proxy_openstack_keystone_protocol: 'http'
-    nginx_proxy_openstack_nova_protocol: 'http'
-    nginx_proxy_openstack_cinder_protocol: 'http'
-    nginx_proxy_openstack_glance_protocol: 'http'
-    nginx_proxy_openstack_neutron_protocol: 'http'
-    nginx_proxy_openstack_heat_protocol: 'http'
-  nginx:
-    server:
-      enabled: true
-      site:
-        nginx_proxy_openstack_api_keystone:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_keystone
-          check: false
-          proxy:
-            host: ${_param:nginx_proxy_openstack_keystone_host}
-            port: 5000
-            protocol: ${_param:nginx_proxy_openstack_keystone_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 5000
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_keystone_private:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_keystone_private
-          check: false
-          proxy:
-            host: ${_param:nginx_proxy_openstack_keystone_host}
-            port: 35357
-            protocol: ${_param:nginx_proxy_openstack_keystone_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 35357
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_nova:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_nova
-          check: false
-          proxy:
-            host: ${_param:nginx_proxy_openstack_nova_host}
-            port: 8774
-            protocol: ${_param:nginx_proxy_openstack_nova_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 8774
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_cinder:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_cinder
-          check: false
-          proxy:
-            host: ${_param:nginx_proxy_openstack_cinder_host}
-            port: 8776
-            protocol: ${_param:nginx_proxy_openstack_cinder_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 8776
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_glance:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_glance
-          check: false
-          underscores_in_headers: true
-          proxy:
-            host: ${_param:nginx_proxy_openstack_glance_host}
-            port: 9292
-            protocol: ${_param:nginx_proxy_openstack_glance_protocol}
-            size: 30000m
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 9292
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_neutron:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_neutron
-          check: false
-          proxy:
-            host: ${_param:nginx_proxy_openstack_neutron_host}
-            port: 9696
-            protocol: ${_param:nginx_proxy_openstack_neutron_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 9696
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_heat_cloudwatch:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_heat_cloudwatch
-          proxy:
-            host: ${_param:nginx_proxy_openstack_heat_host}
-            port: 8003
-            protocol: ${_param:nginx_proxy_openstack_heat_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 8003
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_heat_cfn:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_heat_cfn
-          proxy:
-            host: ${_param:nginx_proxy_openstack_heat_host}
-            port: 8000
-            protocol: ${_param:nginx_proxy_openstack_heat_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 8000
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_heat:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_heat
-          check: false
-          proxy:
-            host: ${_param:nginx_proxy_openstack_heat_host}
-            port: 8004
-            protocol: ${_param:nginx_proxy_openstack_heat_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 8004
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_nova_ec2:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_nova_ec2
-          check: false
-          proxy:
-            host: ${_param:nginx_proxy_openstack_nova_host}
-            port: 8773
-            protocol: ${_param:nginx_proxy_openstack_nova_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 8773
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
+classes:
+- system.nginx.server.proxy.openstack.cinder
+- system.nginx.server.proxy.openstack.glance
+- system.nginx.server.proxy.openstack.heat
+- system.nginx.server.proxy.openstack.heat_cfn
+- system.nginx.server.proxy.openstack.heat_cloudwatch
+- system.nginx.server.proxy.openstack.keystone
+- system.nginx.server.proxy.openstack.keystone_private
+- system.nginx.server.proxy.openstack.neutron
+- system.nginx.server.proxy.openstack.nova
+- system.nginx.server.proxy.openstack.nova_ec2
diff --git a/nova/compute/cluster.yml b/nova/compute/cluster.yml
index f32fffd..c88dcc7 100644
--- a/nova/compute/cluster.yml
+++ b/nova/compute/cluster.yml
@@ -97,4 +97,9 @@
       user:
         public_key: ${_param:nova_compute_ssh_public}
         private_key: ${_param:nova_compute_ssh_private}
+      # Due to bug in qemu, migration will not work when fqdn is higher than 64 chars.
+      # https://bugzilla.redhat.com/show_bug.cgi?id=1568939
+      # Set migration address explicitly to avoid such problems.
+      libvirt:
+        migration_inbound_addr: ${_param:single_address}
       my_ip: ${_param:single_address}
diff --git a/nova/compute/single.yml b/nova/compute/single.yml
index 483a1d3..786e792 100644
--- a/nova/compute/single.yml
+++ b/nova/compute/single.yml
@@ -93,4 +93,9 @@
       user:
         public_key: ${_param:nova_compute_ssh_public}
         private_key: ${_param:nova_compute_ssh_private}
+      # Due to bug in qemu, migration will not work when fqdn is higher than 64 chars.
+      # https://bugzilla.redhat.com/show_bug.cgi?id=1568939
+      # Set migration address explicitly to avoid such problems.
+      libvirt:
+        migration_inbound_addr: ${_param:single_address}
       my_ip: ${_param:single_address}
diff --git a/openssh/server/team/l1_support.yml b/openssh/server/team/l1_support.yml
index 8f1d5c1..79db71d 100644
--- a/openssh/server/team/l1_support.yml
+++ b/openssh/server/team/l1_support.yml
@@ -24,6 +24,7 @@
 - system.openssh.server.team.members.nkabanova
 - system.openssh.server.team.members.renesoto
 - system.openssh.server.team.members.rsafonov
+- system.openssh.server.team.members.mmazepa
 - system.openssh.server.team.members.scottmachtmes
 - system.openssh.server.team.members.zahedkhurasani
 parameters:
diff --git a/openssh/server/team/maintenance.yml b/openssh/server/team/maintenance.yml
index 44e8639..33cc697 100644
--- a/openssh/server/team/maintenance.yml
+++ b/openssh/server/team/maintenance.yml
@@ -1,9 +1,11 @@
 classes:
 - system.linux.system.sudo
-- system.openssh.server.team.members.astupnikov
 - system.openssh.server.team.members.dmeltsaykin
-- system.openssh.server.team.members.myatsenko
 - system.openssh.server.team.members.omolchanov
+- system.openssh.server.team.members.ibumarskov
+- system.openssh.server.team.members.vkhlyunev
+- system.openssh.server.team.members.vjigulin
+- system.openssh.server.team.members.dtsapikov
 parameters:
   _param:
     linux_system_user_sudo: true
diff --git a/openssh/server/team/mcp_qa.yml b/openssh/server/team/mcp_qa.yml
index e80d339..b898218 100644
--- a/openssh/server/team/mcp_qa.yml
+++ b/openssh/server/team/mcp_qa.yml
@@ -296,7 +296,7 @@
     ssokolov:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHuIo/dLh5qt+8jV4UUPqDo6ktJc12HVFg10S3hinjJUlAOxq8554l0LMvxmiZSrIjxGE/qUr8PlRgjLi4x4zQDggBdNGC/S4zcYNEiTQ7HaOFOjEJ0si6ODZfssQsr/A/bXdNOZE/nIZTUhTddJG+3nKUvuPnTeOQLqEOp4IFJwwvwnD2Wo4I1nc6+yDSJLuG8ANLtLlStzpMKr8wHvPWCUcB9B1oeeOVtw9+vEKxuUBkheXnXMh7shiyt4vmaFVbcgcHGPg8DjP8alKeAbIk0AYhiuNHV/rFzL+/kfImS94gU93A8vt0U2vCj8golqt2huxJblKDr4Abq1lDXLwn ssm@n104309
     mshalamov:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDISS6h3QAYC7u5njMks8Wsb6dHd/+HnU4nCEkqn7At5V7IdhD8K7m/9woyEdsDEPEHfqIkS7VAtjZbWlpUdNDFFos6yDFusOqLOoEOVdhuVZISUQZpsZExQ7poUN+w2Z9wmxSZ5sAL5iaamMDKhxR/ANL+olnXRxl4qmWSm4RYgQ5z4+Md1gorsy1Lnz1rEalhbUFPtfwiQgWZzNiTat0oMuRVOTASHjvE7+Tu8yt3nZ63OzGGzCBIq94PITh9wjRqoRn71PM8Q4U/UWhMApQSh/GWB0Y5VaCfIHdvnI0V+OIVGecd6sMgqVIy3DH+P4afZ6xIJ5jjeAi27HhuM/Tqr0yHn5TRa95WoH/zp8GVIdNxiBGZdhxEwzUctKzXN9LKmWRd37xywmrnLWdFtDWgE4I4xxadAU1qQqENeGoNnHofalrMPF95VZApkA7kDMNedrPha0bwbErX8gjtVs0K8QCLSc2n94obOCSQKTBx/NEq2Nq28mr9FKcmtFmu5sQYab4AbUmh7e+CHZYUCg0TIWcSEfPjSjur3AwvTq+4rJ0vUCqhthQspgLhkomzaWG1bhSeNs3Tq2Pq9l1kBsaMao2zu0uYu4Na2YzptsqAue7MybHLQW8O7TyMycfGNGv23i1g/EZWUhVyGQswEThkvafymZi5EUm5AbYf7ud0FQ== mshalamov@mirantis.com
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzGhXA8t3nWeeM8+L3drG+4ACt9pOS1CVAAsW634Q6EtbxSzpsdp3NEJ3X8jKmfiwGZmqUiJ0G0lzS+vHdQ4vJ58M9f7YpXYYah8/557YLvIgg+F/3cltS7PHSE3jqNZgQBHG0f4SRwiBq4zhWhDOCXtzHmsT4EUj+9K6EOlPk7SjrOQAZA0XcPl//lw8g5zHAAC6phNa+WzHLzQSyWAZZhIKyvbXTHpSAUAww5rIlquucxVMbnbqlSOD4FTikSOLQa9iq4Nx10c3ZZTD3xTMuissSj5XJU5LaO7qlraOBsKTlkO0T+VS1aMnfJ943QSI2wu6epKWWHAFXV7Z2nsTL mshalamov@mirantis.com
     schipiga:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDamKTbqCQCGW1JLo+4PgntC1TkRrwbDOELyRVHxAlc56CcJE9QjrNnCOTqvgRoAmIC+P86nzUQxwSREMd0qgVCefAxKQVFVQ38oym9G90TF0nx4fFT3hUhEQwjMBjHhR2Vo+uUwbT2Hg51U1gBPx/WFa0U5Cf7V6+XNJ3r22W4XG8OrbuAoapwl4WN1346HEj3d0U6Z8Unsqjx9pRpZ1eYCeng4emLZ1UOhvLBfw22vSTkujjjRdfY6g52Gv4hRsgsS+JWulO+z/qd1GFcUp9j+yIvur+eeTWHelAbXq4kRNQfQjAs6nMM8Hp8gPa5jLYqMz2GgD96p8wOQCdK2nyL schipiga@mirantis.com
     obutenko:
diff --git a/openssh/server/team/members/dtsapikov.yml b/openssh/server/team/members/dtsapikov.yml
new file mode 100644
index 0000000..82b3526
--- /dev/null
+++ b/openssh/server/team/members/dtsapikov.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        dtsapikov:
+          enabled: true
+          name: dtsapikov
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Dmitry Tsapikov
+          home: /home/dtsapikov
+          email: dtsapikov@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        dtsapikov:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDqcQyBOTEtVB82WmUSOpFN2e3/38BxaX3+Gq0lIsBatGK4WlTeSlrnquq9ANenAUzf6yphPy5sQFiegf8mVJ2jD7a8N7MH2K1zVsQUIM2d84SA4f8YxUOyBsAL32nesmxrsFvGQiV2U1XRIuuNqTqjrX5gsTUznkVqYZWvmvoEVT/GsoFKH7aPb7w88/3EAXysSkfJBTEINjWV14+jpv5u/hWv/K/UU/gptx9aEUw9bYUaH5rW8lW9nyIp+BPT0z5BvHTtk+KIDjqS2SEAYVnV/qWoHIU1rGDXbAXcNgN0iFVdOfLhvenxhkyXV/9+UFoAibLBzBTrXxbnoK5AkTyF dtsapikov@Dmitrys-MacBook-Pro.local
+          user: ${linux:system:user:dtsapikov}
diff --git a/openssh/server/team/members/ibumarskov.yml b/openssh/server/team/members/ibumarskov.yml
new file mode 100644
index 0000000..ba87f1e
--- /dev/null
+++ b/openssh/server/team/members/ibumarskov.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        ibumarskov:
+          enabled: true
+          name: ibumarskov
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Ilya Bumarskov
+          home: /home/ibumarskov
+          email: ibumarskov@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        ibumarskov:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDay30C5s6TWCxj2DFgAvSITpuou2bsHQbbtRVVo5vbVWzZExsVr6v9mfqqWIbBwqnoGLDehEf58pczlvSb7np+/uVheFeIoocPoL0hgvK5PveS6Hb5niTBXVUk1pgtbDXWmlLmpUCMQUiX5zEE47x04/orrkqaLkWsZoGyXD9aFEjfZNmFWP38JDUDqv/r1awmi6L2UonDegN5L4PrQTlRk0ZoNUKeGYndHHY2Waop50ZsLtiS7JorIzMvicOtdOnZjZmTvrg9EYoHwS2ZWtPOjvwOtSRziOFdltCjxhHgh7jmETdTLLuvJHVKr8UXMO8tWmqet+LaJOzJNpBfSTKR ibumarskov@ubuntu
+          user: ${linux:system:user:ibumarskov}
diff --git a/openssh/server/team/members/mcp-scale.yml b/openssh/server/team/members/mcp-scale.yml
new file mode 100644
index 0000000..d9376ba
--- /dev/null
+++ b/openssh/server/team/members/mcp-scale.yml
@@ -0,0 +1,23 @@
+parameters:
+  linux:
+    system:
+      user:
+        mos-scale-jenkins:
+          enabled: true
+          name: mos-scale-jenkins
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: MCP Scale team
+          home: /home/mos-scale-jenkins
+          email: mos-scale-jenkins@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        mos-scale-jenkins:
+          enabled: true
+          public_keys: ${public_keys:mos-scale-jenkins}
+          user: ${linux:system:user:mos-scale-jenkins}
+  public_keys:
+    mos-scale-jenkins:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp0evjOaK8c8SKYK4r2+0BN7g+8YSvQ2n8nFgOURCyvkJqOHi1qPGZmuN0CclYVdVuZiXbWw3VxRbSW3EH736VzgY1U0JmoTiSamzLHaWsXvEIW8VCi7boli539QJP0ikJiBaNAgZILyCrVPN+A6mfqtacs1KXdZ0zlMq1BPtFciR1JTCRcVs5vP2Wwz5QtY2jMIh3aiwkePjMTQPcfmh1TkOlxYu5IbQyZ3G1ahA0mNKI9a0dtF282av/F6pwB/N1R1nEZ/9VtcN2I1mf1NW/tTHEEcTzXYo1R/8K9vlqAN8QvvGLZtZduGviNVNoNWvoxaXxDt8CPv2B2NCdQFZp
+
diff --git a/openssh/server/team/members/mmazepa.yml b/openssh/server/team/members/mmazepa.yml
new file mode 100644
index 0000000..a8aa3ba
--- /dev/null
+++ b/openssh/server/team/members/mmazepa.yml
@@ -0,0 +1,22 @@
+parameters:
+  linux:
+    system:
+      user:
+        mmazepa:
+          enabled: true
+          name: mmazepa
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Margarita Mazepa
+          home: /home/mmazepa
+          email: mmazepa@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        mmazepa:
+          enabled: true
+          public_keys: ${public_keys:mmazepa}
+          user: ${linux:system:user:mmazepa}
+  public_keys:
+    mmazepa:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDcMaBZDgLdCaOtoSd76IMIS+eJvOZSkidAIeBw/XuKz1jXfftdjUwWUNV+51Q+trvGE/Z/Puv4KCzTxnBhqo2n2HsO+LWGUn1Kg9SIQv6leSnfl62nLaTi2iiE7G+JEk3It9/cqonJkTWsXiid0Ve27GooxlInlgpwfk0VE6zSeYBdBIwtdi/l/lenkkdcSSu+lOe58kDxUziZvvheZ08LwczPWYxYd3pmDmFi5WHOhVPoxR+9LICSNc012N9VU3E/h99nz7Bx2wmdBq+OE4ManHhUP90ntJmLkak7CoSsPOpNOtpkLfTbW/m2XVaWoUKT39s4aU8ItQ3tdWMzuWr/ margarita@wargyrl
diff --git a/openssh/server/team/members/vdrok.yml b/openssh/server/team/members/vdrok.yml
new file mode 100644
index 0000000..44611fb
--- /dev/null
+++ b/openssh/server/team/members/vdrok.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        vdrok:
+          enabled: true
+          name: vdrok
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Vladyslav Drok
+          home: /home/vdrok
+          email: vdrok@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        vdrok:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCpnn6IyistbIGnzeV3DOWR+u/QLl1cuQspwuvcl1FxeZljkdIgLXcNVzFaFHSX+rOgrOLpcFf3X+dwnB55EoUDj85IOwKz1tVoD5Df42xZMnmjnvOaAScVTStrdcWxzpB6bWt/+GWpt1br3pLpTjqZxa1YipT7tz6bs7cNKplvQuBaoYeG/x9ycRhLIhYXFYOtHD/lxwTRqHnvpwdNKRYPtfakR/kaeZEaYQoJlVcAq0AKzws8l87InoWnjGo/NrBJTvgiLQPYw6uJ9mf17p2GVv1JGCbEpPKnRLyIitdwCFjYEwAKoSsisf2TdH9iY1DWwJEuPzsvjM2ZCPcc7baV vlad@carbon
+          user: ${linux:system:user:vdrok}
diff --git a/openssh/server/team/members/vjigulin.yml b/openssh/server/team/members/vjigulin.yml
new file mode 100644
index 0000000..58e3a00
--- /dev/null
+++ b/openssh/server/team/members/vjigulin.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        vjigulin:
+          enabled: true
+          name: vjigulin
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Vladimir Jigulin
+          home: /home/vjigulin
+          email: vjigulin@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        vjigulin:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDI+OmVDWql8hAOtHIN03zmd0vOj6lzgRwgT5/atyJHbkcl9y5CuB5+DdlXplMcPnm7lH+2u9LnWr21dcal3DuoHYSavnRKvyZZfTDDyvWB1FGYwM8igrdrrSGGuhl5yLlRbuXdQzlfo889s0LYtymKDdXIdo+WDdC/jDnVgUXA6J4TWQ/D2U9GLXRoT10J0duN664bbbdmJhSq7Qehq94k2as7Jy9R3HtvT+DIITrCVua3yPg0Zm+SxCA8xT8g3VKtdKTJdTlDG6o6PXWHR3W9jfNbO6CayLTBaiAFXqbKAol31yCaRbcDZfnoWfmFVu6rsQ90WZv4L9gK05uNBH1z mogaika@mogaika
+          user: ${linux:system:user:vjigulin}
diff --git a/openssh/server/team/members/vkhlyunev.yml b/openssh/server/team/members/vkhlyunev.yml
new file mode 100644
index 0000000..9779831
--- /dev/null
+++ b/openssh/server/team/members/vkhlyunev.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        vkhlyunev:
+          enabled: true
+          name: vkhlyunev
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Vladimir Khlyunev
+          home: /home/vkhlyunev
+          email: vkhlyunev@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        vkhlyunev:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1v5pWSan9H2Wl64C8bKWmbULp0QgJUi9FqPyuw1bfS5GfHLxejPxaDzec0uSx0PXWzS9afwIO7aGA1dg+dvdl1iPy9jfpkQbGGsusmSsbLvf6+WLVsPk90Bvoc4anmEsG2DWT1SGR65d/imjlwsnlbHTQIm0YucjDjV/p2MmYlbaFLm+ynfo9mt1mP954GDPKQHvyBpxvAIEHL3xAcnNXcpSXm2jhCNsNGUSpY+R7gin2q8MtrpzQNeZZ8degUMpgba7CTXN1sws2dc3UayJ8KZkyRVJNk6mpt2jey03izJzXzt3ux3hg5lToELvEIMDdHOPHT0b0U7f2H+eBCfH/ vkhlyunev@cz7317
+          user: ${linux:system:user:vkhlyunev}
diff --git a/openssh/server/team/oscore_devops.yml b/openssh/server/team/oscore_devops.yml
index 49207eb..12ef0c6 100644
--- a/openssh/server/team/oscore_devops.yml
+++ b/openssh/server/team/oscore_devops.yml
@@ -4,6 +4,7 @@
 - system.openssh.server.team.members.vnogin
 - system.openssh.server.team.members.mkarpin
 - system.openssh.server.team.members.iudovichenko
+- system.openssh.server.team.members.vdrok
 parameters:
   _param:
     linux_system_user_sudo: true
diff --git a/openssh/server/team/qa_scale.yml b/openssh/server/team/qa_scale.yml
index 98c5540..20a4e7d 100644
--- a/openssh/server/team/qa_scale.yml
+++ b/openssh/server/team/qa_scale.yml
@@ -2,6 +2,8 @@
 - system.openssh.server.team.members.listomin
 - system.openssh.server.team.members.sgalkin
 - system.openssh.server.team.members.obasov
+- system.openssh.server.team.members.mikhailkraynov
+- system.openssh.server.team.members.mcp-scale
 
 parameters:
   _param:
diff --git a/openssh/server/team/services_qa.yml b/openssh/server/team/services_qa.yml
index 3e64bd3..682dd8a 100644
--- a/openssh/server/team/services_qa.yml
+++ b/openssh/server/team/services_qa.yml
@@ -16,6 +16,12 @@
           sudo: true
           full_name: Mikhail Chernik
           home: /home/mchernik
+        ozhurba:
+          enabled: true
+          name: ozhurba
+          sudo: true
+          full_name: Oleksii Zhurba
+          home: /home/ozhurba
   openssh:
     server:
       enabled: true
@@ -30,8 +36,15 @@
           public_keys:
           - ${public_keys:mchernik}
           user: ${linux:system:user:mchernik}
+        ozhurba:
+          enabled: true
+          public_keys:
+          - ${public_keys:ozhurba}
+          user: ${linux:system:user:ozhurba}
   public_keys:
     npliashechnikov:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxy9ZNE+36U1W3vPxzMx++AujS8Ay9ZgJrfaa6YsWl1FeN87VuGucslHjLqFfiIYJLQl3m7tSLiAujQ/izBKDbfA5hd5z7JaCRB1LE+CehmCL0UVwsHflAi0tPn1tDrTcVGf/BRH0FsoZJo+KpOwohYGN8BMOpUIAP2SkGrE7cGbPrd9NbRqPW80iyIzsNIqzVKTcsh0CcJcr05V5n3or0GvteDMxl+mjAi6hpfx06a/bEfPLV10Ftl4+nIkbXr0KWA68uy7XmTlH+qgVUCMGwRP4mFaU63+uX45WboLKQ0aacPX833qvZJTIPe2FhAygoVoBwgOKBzrbnicBa9U+AQ== dkth1p3@lxf01p581
     mchernik:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCiYzcWNIP1K3DnSfztIZdMTl6zSr133eixsHDWWqI71Fj5UOny4kMH2P/qYk0WHhm7P9kwBNDgmJBY/eO5jb00D2w9BGHyvsOnkpAgzw5neL4ivRT7qLWkRdbcLo8AAFQN7VW+bgMb8gFfYWfttHyfkbJOQlU2xmi8fvhQ+2IM/12S0f0lP2uIYgVn8g9f+1OmtXKOWi/cKx0+6NYsuFjM2oVRlBhwlhPD2mI00rSL6zYjz/8GapPPkylQnds09NueNmrScjsPmJl6lPzU8maxHABZ/KctIZW/0ucMolv/3Ybm5FJIsj6YGUdz7AWzdE9o4tSfugFR3P7Ng/scxXpZ migel@mungo
+    ozhurba:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUwubPT8GWUeuPCdPeYlIuN8OaD0umc0JuyKWf5ViVhX3VqB6CwS6/ddm9fpbAedV/8J5l/Sl/usK/WuCPVBgKEuGtidRcrABxRt49q+aum5WRd6bsYv4UxFZmaDHKgg6g8LR7Ii26GPM/HdM1CdqnxpVicz7QRj3pgLDYLippg7RAktKkp4Jw7gkBFNR7UXGHr/5qX08VoUadbgWQP7OdHdgSxysqkSiN1Rr9URWEpwZ5wfblkbEzR1JBg6kYJAP3sTJvOQguFvFCVu6++/UX2wbrrc0+0eAO31lFUAIjboYLpWDj5Sj/ER3uwTX0dJw0wpSsa9lHn/LSZrJhrA5v ozhurba@zhurba-mac
diff --git a/openssh/server/team/support.yml b/openssh/server/team/support.yml
index 1c59bb8..046aa9b 100644
--- a/openssh/server/team/support.yml
+++ b/openssh/server/team/support.yml
@@ -21,6 +21,7 @@
 - system.openssh.server.team.members.mikhailkraynov
 - system.openssh.server.team.members.renesoto
 - system.openssh.server.team.members.rsafonov
+- system.openssh.server.team.members.mmazepa
 - system.openssh.server.team.members.scottmachtmes
 - system.openssh.server.team.members.zahedkhurasani
 # L2OPS
diff --git a/prometheus/alertmanager/notification/email.yml b/prometheus/alertmanager/notification/email.yml
index 02b44ff..fdbc05e 100644
--- a/prometheus/alertmanager/notification/email.yml
+++ b/prometheus/alertmanager/notification/email.yml
@@ -1,6 +1,7 @@
 parameters:
   prometheus:
     alertmanager:
+      enabled: true
       config:
         route:
           routes:
@@ -8,7 +9,8 @@
               receiver: SMTP
               match_re:
                 - label: route
-                  value: email
+                  value: '(.*email.*)'
+              continue: true
         receiver:
           SMTP:
             enabled: true
diff --git a/prometheus/alertmanager/notification/pushkin.yml b/prometheus/alertmanager/notification/pushkin.yml
index a78b6fd..ec749d7 100644
--- a/prometheus/alertmanager/notification/pushkin.yml
+++ b/prometheus/alertmanager/notification/pushkin.yml
@@ -1,15 +1,18 @@
 parameters:
-    _param:
-      alertmanager_notification_pushkin_host: ${_param:haproxy_pushkin_bind_host}
-      alertmanager_notification_pushkin_port: ${_param:haproxy_pushkin_bind_port}
-parameters:
+  _param:
+    alertmanager_notification_pushkin_host: ${_param:haproxy_pushkin_bind_host}
+    alertmanager_notification_pushkin_port: ${_param:haproxy_pushkin_bind_port}
   prometheus:
     alertmanager:
+      enabled: true
       config:
         route:
           routes:
             pushkin:
               receiver: HTTP-pushkin
+              match_re:
+                - label: route
+                  value: '(.*pushkin.*)'
               continue: true
         receiver:
           HTTP-pushkin:
diff --git a/prometheus/alertmanager/notification/slack.yml b/prometheus/alertmanager/notification/slack.yml
index 2158adb..a86c403 100644
--- a/prometheus/alertmanager/notification/slack.yml
+++ b/prometheus/alertmanager/notification/slack.yml
@@ -1,11 +1,16 @@
 parameters:
   prometheus:
     alertmanager:
+      enabled: true
       config:
         route:
           routes:
             slack:
               receiver: HTTP-slack
+              match_re:
+                - label: route
+                  value: '(.*slack.*)'
+              continue: true
         receiver:
           HTTP-slack:
             enabled: true
diff --git a/salt/master/formula/git/foundation.yml b/salt/master/formula/git/foundation.yml
index dbc7d19..01affb5 100644
--- a/salt/master/formula/git/foundation.yml
+++ b/salt/master/formula/git/foundation.yml
@@ -12,6 +12,10 @@
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-bind.git'
               revision: ${_param:salt_master_environment_revision}
+            debmirror:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-debmirror.git'
+              revision: ${_param:salt_master_environment_revision}
             gerrit:
               module:
                 gerrit.py:
diff --git a/salt/master/formula/git/watchdog.yml b/salt/master/formula/git/watchdog.yml
new file mode 100644
index 0000000..0daab5c
--- /dev/null
+++ b/salt/master/formula/git/watchdog.yml
@@ -0,0 +1,10 @@
+parameters:
+  salt:
+    master:
+      environment:
+        dev:
+          formula:
+            watchdog:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-watchdog.git'
+              revision: ${_param:salt_master_environment_revision}
\ No newline at end of file
diff --git a/salt/master/formula/pkg/foundation.yml b/salt/master/formula/pkg/foundation.yml
index 5d530d4..c34f6a0 100644
--- a/salt/master/formula/pkg/foundation.yml
+++ b/salt/master/formula/pkg/foundation.yml
@@ -13,6 +13,9 @@
             bind:
               source: pkg
               name: salt-formula-bind
+            debmirror:
+              source: pkg
+              name: salt-formula-debmirror
             gerrit:
               source: pkg
               name: salt-formula-gerrit
diff --git a/salt/master/formula/pkg/watchdog.yml b/salt/master/formula/pkg/watchdog.yml
new file mode 100644
index 0000000..9a77953
--- /dev/null
+++ b/salt/master/formula/pkg/watchdog.yml
@@ -0,0 +1,9 @@
+parameters:
+  salt:
+    master:
+      environment:
+        prd:
+          formula:
+            watchdog:
+              source: pkg
+              name: salt-formula-watchdog