Merge "Kqueen service support for Drivetrain"
diff --git a/README.rst b/README.rst
index b418f37..231e9a9 100644
--- a/README.rst
+++ b/README.rst
@@ -25,14 +25,14 @@
   Name of the Physical Function interface (pF)
 
 `sriov_nic01_numvfs`
-  Number of Virtual Functions (VF), for number of 
+  Number of Virtual Functions (VF), for number of
   supported VF check documentation for your network interface card.
 
 `sriov_nic01_physical_network`
   Default **physnet1**, label for physical network the interface belongs to.
 
 `sriov_unsafe_interrupts`
-  Default **False**, needs to be set **True** if your hw platform does not 
+  Default **False**, needs to be set **True** if your hw platform does not
   support interrupt remapping.
 
 
@@ -112,7 +112,7 @@
   - grafana_prometheus_port
   - grafana_prometheus_is_default (default true)
 
-Backwark compatiblity
+Backward compatiblity
 ---------------------
 
 The class **grafana.client.single** configures grafana client and an InfluxDB
diff --git a/apache/server/site/barbican.yml b/apache/server/site/barbican.yml
index 78c9f02..55f5cf5 100644
--- a/apache/server/site/barbican.yml
+++ b/apache/server/site/barbican.yml
@@ -30,11 +30,11 @@
             port: 9311
           log:
             custom:
-              format: >-
-                %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+              format: 'combined'
+              file: '/var/log/barbican/barbican-api.log'
             error:
               enabled: true
-              format: '%M'
+              file: '/var/log/barbican/barbican-api.log'
         barbican_admin:
           enabled: false
           available: true
@@ -48,3 +48,14 @@
             user: barbican
             group: barbican
             display_name: '%{GROUP}'
+          host:
+            address: ${_param:apache_barbican_api_address}
+            name: ${_param:apache_barbican_api_host}
+            port: 9312
+          log:
+            custom:
+              format: 'combined'
+              file: '/var/log/barbican/barbican-api.log'
+            error:
+              enabled: true
+              file: '/var/log/barbican/barbican-api.log'
diff --git a/ceilometer/server/cluster.yml b/ceilometer/server/cluster.yml
index 11488fb..6f8d3f8 100644
--- a/ceilometer/server/cluster.yml
+++ b/ceilometer/server/cluster.yml
@@ -13,7 +13,7 @@
       secret: ${_param:ceilometer_secret_key}
       ttl: 86400
       publisher:
-        default:
+        default: {}
       bind:
         host: ${_param:cluster_local_address}
         port: 8777
diff --git a/debmirror/mirror_mirantis_com/ubuntu/xenial.yml b/debmirror/mirror_mirantis_com/ubuntu/xenial.yml
index a0f8657..20cf1e0 100644
--- a/debmirror/mirror_mirantis_com/ubuntu/xenial.yml
+++ b/debmirror/mirror_mirantis_com/ubuntu/xenial.yml
@@ -18,13 +18,18 @@
           log_file: "/var/log/debmirror/mirror_mirantis_com_ubuntu_xenial.log"
           dist: [ xenial , xenial-security, xenial-updates ]
           section: [ main , multiverse, restricted, universe ]
-          exclude_deb_section: [ games, gnome, Xfce, sound, electronics, graphics, hamradio , doc, localization, kde, video,  translations, news, x11,
-                                 multiverse/games, multiverse/gnome, multiverse/Xfce, multiverse/sound, multiverse/electronics, multiverse/graphics,
-                                 multiverse/hamradio , multiverse/doc, multiverse/localization, multiverse/kde, multiverse/video,  multiverse/translations, multiverse/news, multiverse/x11,
-                                 universe/games, universe/gnome, universe/Xfce, universe/sound, universe/electronics, universe/hamradio , universe/doc, universe/localization, universe/kde,
-                                 universe/video,  universe/translations, universe/news, universe/x11, universe/graphics,
-                                 restricted/games, restricted/gnome, restricted/Xfce, restricted/sound, restricted/electronics, restricted/graphics, restricted/hamradio , restricted/doc,
-                                 restricted/localization, restricted/kde, restricted/video,  restricted/translations, restricted/news, restricted/x11 ]
+          # 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]
           filter:
             1: "--exclude='android*'"
             2: "--exclude='/firefox*'"
@@ -54,14 +59,35 @@
             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)'"
+            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).*'"
+            94: "--exclude='/(ceilometer|nova|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 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
+
diff --git a/gerrit/client/init.yml b/gerrit/client/init.yml
index 8b097ee..5d719d4 100644
--- a/gerrit/client/init.yml
+++ b/gerrit/client/init.yml
@@ -59,13 +59,34 @@
             score: -1..+1
         "refs/tags/*":
           actions:
+          - name: pushTag
+            group: Administrators
+            force: true
+          - name: pushTag
+            group: Project Owners
+            force: true
           - name: pushSignedTag
             group: devops-core
+          - name: pushSignedTag
+            group: Administrators
+          - name: pushSignedTag
+            group: Project Owners
           - name: create
             group: devops-core
+          - name: create
+            group: Administrators
           - name: push
             group: devops-core
+          - name: push
+            group: Administrators
+            force: true
           - name: forgeCommitter
             group: devops-core
+          - name: forgeCommitter
+            group: Administrators
           - name: forgeAuthor
             group: devops-core
+          - name: forgeAuthor
+            group: Administrators
+          - name: forgeServerAsCommitter
+            group: Administrators
diff --git a/gnocchi/server/cluster.yml b/gnocchi/server/cluster.yml
index bbae551..062b60e 100644
--- a/gnocchi/server/cluster.yml
+++ b/gnocchi/server/cluster.yml
@@ -5,6 +5,21 @@
 - system.haproxy.proxy.listen.openstack.gnocchi
 - system.keepalived.cluster.instance.openstack_telemetry_vip
 parameters:
+  _param:
+    gnocchi_memcached_node01_address: ${_param:cluster_node01_address}
+    gnocchi_memcached_node02_address: ${_param:cluster_node02_address}
+    gnocchi_memcached_node03_address: ${_param:cluster_node03_address}
   gnocchi:
     server:
       enable_proxy_headers_parsing: true
+      identity:
+        host: ${_param:openstack_control_address}
+      cache:
+        engine: memcached
+        members:
+        - host: ${_param:gnocchi_memcached_node01_address}
+          port: 11211
+        - host: ${_param:gnocchi_memcached_node02_address}
+          port: 11211
+        - host: ${_param:gnocchi_memcached_node03_address}
+          port: 11211
diff --git a/haproxy/proxy/listen/stacklight/prometheus_relay.yml b/haproxy/proxy/listen/stacklight/prometheus_relay.yml
new file mode 100644
index 0000000..23c9286
--- /dev/null
+++ b/haproxy/proxy/listen/stacklight/prometheus_relay.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    cluster_prometheus_relay_port: 8080
+  haproxy:
+    proxy:
+      listen:
+        prometheus_relay:
+          service_name: prometheus_relay
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: ${_param:cluster_prometheus_relay_port}
+          servers:
+          - name: ${_param:cluster_node01_hostname}
+            host: ${_param:cluster_node01_address}
+            port: ${_param:prometheus_relay_bind_port}
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+          - name: ${_param:cluster_node02_hostname}
+            host: ${_param:cluster_node02_address}
+            port: ${_param:prometheus_relay_bind_port}
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+          - name: ${_param:cluster_node03_hostname}
+            host: ${_param:cluster_node03_address}
+            port: ${_param:prometheus_relay_bind_port}
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/jenkins/client/job/debian/packages/salt.yml b/jenkins/client/job/debian/packages/salt.yml
index 8bb7c79..ad35faa 100644
--- a/jenkins/client/job/debian/packages/salt.yml
+++ b/jenkins/client/job/debian/packages/salt.yml
@@ -7,672 +7,895 @@
           jobs:
             - name: aodh
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: apache
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: aptcacher
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: aptly
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: artifactory
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: avinetworks
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: backupninja
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: baremetal-simulator
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: billometer
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: bind
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: bird
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: cadf
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: calico
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: cassandra
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: ccp
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: ceph
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: chrony
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: collectd
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: debmirror
               upload_source_package: true
+              upload_to_aptly: true
               dist: trusty
             - name: dekapod
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: designate
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: devops-portal
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: docker
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: dogtag
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: dovecot
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: elasticsearch
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: etcd
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: fluentbit
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: fluentd
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: foreman
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: freeipa
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: galera
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: gerrit
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: git
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: gitlab
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: glusterfs
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: grafana
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: graphite
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: haproxy
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: heka
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: heketi
               upload_source_package: true
+              upload_to_aptly: true
               dist: trusty
             - name: influxdb
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: iptables
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: ironic
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: isc-dhcp
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: java
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: jenkins
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: kedb
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: keepalived
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: kibana
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: letsencrypt
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: libvirt
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: linux
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: lldp
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: logrotate
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: maas
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: magnum
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: manila
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: memcached
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: mirascan
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: midonet
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: monasca
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: mongodb
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: murano
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: mysql
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: nagios
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: network
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: nfs
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: nginx
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: nodejs
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: ntp
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: octavia
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: opencontrail
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: openldap
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: openssh
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: openvpn
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: openvstorage
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: oslo-templates
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: owncloud
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: postfix
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: postgresql
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: powerdns
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: pritunl
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: prometheus
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: python
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: rabbitmq
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: reclass
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: redis
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: roundcube
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: rsync
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: rsyslog
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: rundeck
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: runtest
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: sahara
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: salt
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: sensu
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: sentry
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: shibboleth
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: sphinx
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: spinnaker
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: statsd
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: supervisor
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: taiga
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: telegraf
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: tinyproxy
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: tftpd-hpa
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: varnish
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: xtrabackup
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: zookeeper
               upload_source_package: false
+              upload_to_aptly: true
               dist: trusty
             - name: aodh
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: apache
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: aptcacher
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: aptly
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: artifactory
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: avinetworks
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: barbican
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: baremetal-simulator
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: backupninja
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: billometer
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: bind
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: bird
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: cadf
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: calico
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: cassandra
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: ccp
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: ceph
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: chrony
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: collectd
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: debmirror
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: dekapod
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: designate
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: devops-portal
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: docker
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: dogtag
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: dovecot
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: elasticsearch
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: etcd
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: fluentbit
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: fluentd
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: foreman
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: freeipa
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: galera
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: gerrit
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: git
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: gitlab
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: glusterfs
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: gnocchi
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: grafana
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: graphite
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: haproxy
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: heka
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: heketi
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: helm
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: influxdb
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: iptables
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: ironic
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: isc-dhcp
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: java
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: jenkins
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: kedb
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: keepalived
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: kibana
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: letsencrypt
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: libvirt
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: linux
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: lldp
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: logrotate
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: maas
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: magnum
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: manila
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: memcached
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: mirascan
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: midonet
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: monasca
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: mongodb
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: murano
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: mysql
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: nagios
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: network
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: nfs
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: nginx
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: nodejs
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: ntp
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: octavia
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: opencontrail
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: openldap
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: openssh
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: openvpn
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: openvstorage
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: oslo-templates
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: owncloud
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: panko
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: postfix
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: postgresql
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: pritunl
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: prometheus
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: powerdns
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: python
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: rabbitmq
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: reclass
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: redis
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: roundcube
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: rsync
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: rundeck
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: rsyslog
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: runtest
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: sahara
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: salt
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: sensu
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: sentry
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: shibboleth
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: sphinx
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: spinnaker
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: statsd
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: supervisor
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: taiga
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: telegraf
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: tinyproxy
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: tftpd-hpa
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: varnish
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: watchdog
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: xtrabackup
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
             - name: zookeeper
               upload_source_package: true
+              upload_to_aptly: true
               dist: xenial
           template:
             discard:
@@ -746,7 +969,7 @@
                 default: '{{upload_source_package}}'
               UPLOAD_APTLY:
                 type: boolean
-                default: 'true'
+                default: '{{upload_to_aptly}}'
               DEBUG:
                 type: boolean
                 default: 'false'
diff --git a/jenkins/client/job/deploy/lab/component/kubernetes.yml b/jenkins/client/job/deploy/lab/component/kubernetes.yml
index 62526f7..8cbf766 100644
--- a/jenkins/client/job/deploy/lab/component/kubernetes.yml
+++ b/jenkins/client/job/deploy/lab/component/kubernetes.yml
@@ -25,7 +25,7 @@
         stack_env: devcloud
         stack_type: heat
         stack_install: core,k8s,calico
-        stack_test: ""
+        stack_test: "k8s"
         job_timer: "H H(0-6) * * *"
       - stack_name: k8s_ha_contrail
         stack_env: devcloud
diff --git a/jenkins/client/job/deploy/lab/deploy.yml b/jenkins/client/job/deploy/lab/deploy.yml
index 76a077d..6e716f9 100644
--- a/jenkins/client/job/deploy/lab/deploy.yml
+++ b/jenkins/client/job/deploy/lab/deploy.yml
@@ -165,7 +165,7 @@
                 default: "http://127.0.0.1:8080"
               TEST_K8S_CONFORMANCE_IMAGE:
                 type: string
-                default: "docker-dev-virtual.docker.mirantis.net/mirantis/kubernetes/k8s-conformance:v1.7.5-2_1504192939316"
+                default: "docker-prod-virtual.docker.mirantis.net/mirantis/kubernetes/k8s-conformance:v1.8.9-7"
 
               TEST_TEMPEST_IMAGE:
                 type: string
diff --git a/jenkins/client/job/deploy/lab/init.yml b/jenkins/client/job/deploy/lab/init.yml
index 52ec947..6d197a1 100644
--- a/jenkins/client/job/deploy/lab/init.yml
+++ b/jenkins/client/job/deploy/lab/init.yml
@@ -1,6 +1,5 @@
 classes:
   - system.jenkins.client.job.deploy.lab.cicd
-  - system.jenkins.client.job.deploy.lab.test-devops-portal-cicd
   - system.jenkins.client.job.deploy.lab.demo
   - system.jenkins.client.job.deploy.lab.cleanup
   - system.jenkins.client.job.deploy.lab.release.mcp05
diff --git a/jenkins/client/job/deploy/lab/test-devops-portal-cicd.yml b/jenkins/client/job/deploy/lab/test-devops-portal-cicd.yml
deleted file mode 100644
index 8dfc70e..0000000
--- a/jenkins/client/job/deploy/lab/test-devops-portal-cicd.yml
+++ /dev/null
@@ -1,115 +0,0 @@
-parameters:
-  jenkins:
-    client:
-      job_template:
-        deploy_heat_test_cicd:
-          name: deploy-heat-{{name}}
-          jobs:
-            - name: test-cicd-lab-dev
-              lab: cicd_lab_dev
-          template:
-            type: workflow-scm
-            concurrent: true
-            display_name: "Deploy {{name}} heat stack"
-            scm:
-              type: git
-              url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
-              credentials: "gerrit"
-              script: test-func-devops-portal-pipeline.groovy
-            param:
-              # heat
-              HEAT_STACK_DELETE:
-                type: boolean
-                default: 'true'
-                description: "Delete heat stack at the end of job"
-              HEAT_STACK_REUSE:
-                type: boolean
-                default: 'false'
-                description: "Reuse existing stack and only orchestrate deployment"
-              HEAT_STACK_KEEP_INTACT:
-                type: boolean
-                default: 'false'
-                description: "Save current deployment status without re-orchestrating"
-              HEAT_TEMPLATE_URL:
-                type: string
-                default: "${_param:jenkins_gerrit_url}/mk/heat-templates"
-              HEAT_TEMPLATE_CREDENTIALS:
-                type: string
-                default: "gerrit"
-              HEAT_TEMPLATE_BRANCH:
-                type: string
-                default: "master"
-              HEAT_STACK_NAME:
-                type: string
-                description: Heat stack name. Will be generated if missing.
-              HEAT_STACK_TEMPLATE:
-                type: string
-                default: "{{lab}}"
-              HEAT_STACK_ENVIRONMENT:
-                type: string
-                default: "devcloud"
-              HEAT_STACK_ZONE:
-                type: string
-                default: "mcp-oss"
-              HEAT_STACK_PUBLIC_NET:
-                type: string
-                default: "public"
-
-              # salt master
-              SALT_MASTER_CREDENTIALS:
-                type: string
-                default: "salt-qa-credentials"
-              SSH_PUBLIC_KEY:
-                type: string
-                description: "User's public SSH key to be able to login when stack is deployed"
-
-              # openstack api
-              OPENSTACK_API_URL:
-                type: string
-                default: "https://cloud-cz.bud.mirantis.net:5000"
-              OPENSTACK_API_CREDENTIALS:
-                type: string
-                default: "openstack-devcloud-credentials"
-              OPENSTACK_API_PROJECT:
-                type: string
-                default: "mcp-oss"
-              OPENSTACK_API_CLIENT:
-                type: string
-                default: ""
-              OPENSTACK_API_VERSION:
-                type: string
-                default: "3"
-              OPENSTACK_API_PROJECT_DOMAIN:
-                type: string
-                default: "default"
-              OPENSTACK_API_USER_DOMAIN_ID:
-                type: string
-                default: "default"
-              OPENSTACK_API_PROJECT_ID:
-                type: string
-                default: ""
-              OPENSTACK_API_USER_DOMAIN:
-                type: string
-                default: "default"
-
-              # devops-portal-tests
-              DEVOPS_PORTAL_TESTS_URL:
-                type: string
-                default: "${_param:jenkins_gerrit_url}/oss/devops-portal-tests"
-              DEVOPS_PORTAL_TESTS_CREDENTIALS:
-                type: string
-                default: "gerrit"
-              DEVOPS_PORTAL_TESTS_BRANCH:
-                type: string
-                default: "master"
-              DEVOPS_PORTAL_TESTS_RUN_LOCAL:
-                type: boolean
-                default: 'true'
-                description: "Run on swarm master node"
-              DEVOPS_PORTAL_TESTS_CONFIG:
-                type: string
-                description: "Path to the service-configuration file in json-format"
-              DEVOPS_PORTAL_TESTS_MARK:
-                type: string
-                default: "ALL"
-                description: "Mark specific tests to run: healthcheck, functional (default = all)"
diff --git a/jenkins/client/job/deploy/update/cloud_update.yml b/jenkins/client/job/deploy/update/cloud_update.yml
new file mode 100644
index 0000000..8fc84ee
--- /dev/null
+++ b/jenkins/client/job/deploy/update/cloud_update.yml
@@ -0,0 +1,150 @@
+#
+# Jobs to update cloud packages on given Salt master environment
+#
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      job:
+        deploy-update-cloud:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - update cloud"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
+            credentials: "gerrit"
+            script: cloud-update.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            SNAPSHOT_NAME:
+              type: string
+              default: "updateSnapshot1"
+              description: "Live snapshot name"
+            CFG_NODE_PROVIDER:
+              type: string
+              default: ""
+              description: "Physical machine hosting Salt-Master VM (ex. kvm01*)"
+            INTERACTIVE:
+              type: boolean
+              default: 'false'
+              description: "Ask interactive questions during pipeline run"
+            PER_NODE:
+              type: boolean
+              default: 'true'
+              description: "Target nodes will be managed one by one"
+            ROLLBACK_BY_REDEPLOY:
+              type: boolean
+              default: 'false'
+              description: "Omit taking live snapshots. Rollback is planned to be done by redeployment"
+            STOP_SERVICES:
+              type: boolean
+              default: 'true'
+              description: "Stop API services before update"
+            TARGET_UPDATES:
+              type: string
+              default: "cfg,ctl,prx,msg,dbs"
+              description: "Comma separated list of nodes to update (Valid values are cfg,ctl,prx,msg,dbs,log,mon,mtr,ntw,nal,gtw-virtual,cmn,rgw,cid,cmp,kvm,osd,gtw-physical)"
+            TARGET_ROLLBACKS:
+              type: string
+              default: ""
+              description: "Comma separated list of nodes to rollback (Valid values are ctl,prx,msg,dbs,log,mon,mtr,ntw,nal,gtw-virtual,cmn,rgw,cmp,kvm,osd,gtw-physical)"
+            TARGET_MERGES:
+              type: string
+              default: ""
+              description: "Comma separated list of nodes to merge (Valid values are cfg,ctl,prx,msg,dbs,log,mon,mtr,ntw,nal,gtw-virtual,cmn,rgw,cid)"
+            CTL_TARGET:
+              type: string
+              default: "ctl*"
+              description: "Salt targeted CTL nodes (ex. ctl*)"
+            PRX_TARGET:
+              type: string
+              default: "prx*"
+              description: "Salt targeted PRX nodes (ex. prx*)"
+            MSG_TARGET:
+              type: string
+              default: "msg*"
+              description: "Salt targeted MSG nodes (ex. msg*)"
+            DBS_TARGET:
+              type: string
+              default: "dbs*"
+              description: "Salt targeted DBS nodes (ex. dbs*)"
+            LOG_TARGET:
+              type: string
+              default: "log*"
+              description: "Salt targeted LOG nodes (ex. log*)"
+            MON_TARGET:
+              type: string
+              default: "mon*"
+              description: "Salt targeted MON nodes (ex. mon*)"
+            MTR_TARGET:
+              type: string
+              default: "mtr*"
+              description: "Salt targeted MTR nodes (ex. mtr*)"
+            NTW_TARGET:
+              type: string
+              default: "ntw*"
+              description: "Salt targeted NTW nodes (ex. ntw*)"
+            NAL_TARGET:
+              type: string
+              default: "nal*"
+              description: "Salt targeted NAL nodes (ex. nal*)"
+            CMN_TARGET:
+              type: string
+              default: "cmn*"
+              description: "Salt targeted CMN nodes (ex. cmn*)"
+            RGW_TARGET:
+              type: string
+              default: "rgw*"
+              description: "Salt targeted RGW nodes (ex. rgw*)"
+            CID_TARGET:
+              type: string
+              default: "cid*"
+              description: "Salt targeted CID nodes (ex. cid*)"
+            CMP_TARGET:
+              type: string
+              default: "cmp001*"
+              description: "Salt targeted physical compute nodes (ex. cmp001*)"
+            KVM_TARGET:
+              type: string
+              default: "kvm01*"
+              description: "Salt targeted physical KVM nodes (ex. kvm01*)"
+            CEPH_OSD_TARGET:
+              type: string
+              default: "osd001*"
+              description: "Salt targeted physical Ceph OSD nodes (ex. osd001*)"
+            GTW_TARGET:
+              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: ""
+              description: "Space separated list of pkgs=versions to rollback to on physical targeted machines (ex. pkg_name1=pkg_version1 pkg_name2=pkg_version2)"
+            PURGE_PKGS:
+              type: string
+              default: ""
+              description: "Space separated list of pkgs=versions to be purged on physical targeted machines (ex. pkg_name1=pkg_version1 pkg_name2=pkg_version2)"
+            REMOVE_PKGS:
+              type: string
+              default: ""
+              description: "Space separated list of pkgs=versions to be removed on physical targeted machines (ex. pkg_name1=pkg_version1 pkg_name2=pkg_version2)"
+            RESTORE_GALERA:
+              type: boolean
+              default: 'false'
+              description: "Restore Galera DB"
+            RESTORE_CONTRAIL_DB:
+              type: boolean
+              default: 'false'
+              description: "Restore Cassandra and Zookeeper DBs for OpenContrail"
diff --git a/jenkins/client/job/deploy/update/init.yml b/jenkins/client/job/deploy/update/init.yml
index 0b10ff2..fb1f5cf 100644
--- a/jenkins/client/job/deploy/update/init.yml
+++ b/jenkins/client/job/deploy/update/init.yml
@@ -14,3 +14,4 @@
   - system.jenkins.client.job.deploy.update.restore_cassandra
   - system.jenkins.client.job.deploy.update.restore_zookeeper
   - system.jenkins.client.job.deploy.update.virt_snapshot
+  - system.jenkins.client.job.deploy.update.cloud_update
diff --git a/jenkins/client/job/deploy/update/update_mirror_image.yml b/jenkins/client/job/deploy/update/update_mirror_image.yml
index ec812c4..2b2dc26 100644
--- a/jenkins/client/job/deploy/update/update_mirror_image.yml
+++ b/jenkins/client/job/deploy/update/update_mirror_image.yml
@@ -10,7 +10,7 @@
         deploy-update-mirror-image:
           type: workflow-scm
           concurrent: true
-          display_name: "Deploy - update mirror image"
+          display_name: "Deploy - update local mirror"
           scm:
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
@@ -30,6 +30,9 @@
             UPDATE_APTLY_MIRRORS:
               type: string
               default: ""
+            RECREATE_APTLY_MIRRORS:
+              type: boolean
+              default: 'true'
             PUBLISH_APTLY:
               type: boolean
               default: 'true'
@@ -42,6 +45,9 @@
             CLEANUP_APTLY:
               type: boolean
               default: 'false'
+            UPDATE_DEBMIRRORS:
+              type: boolean
+              default: 'true'
             UPDATE_DOCKER_REGISTRY:
               type: boolean
               default: 'true'
@@ -54,6 +60,6 @@
             UPDATE_GIT:
               type: boolean
               default: 'true'
-            UPDATE_IMAGES:
+            UPDATE_FILES:
               type: boolean
               default: 'true'
\ No newline at end of file
diff --git a/jenkins/client/job/git-mirrors/2way.yml b/jenkins/client/job/git-mirrors/2way.yml
index 4b4d0a3..ba17f9f 100644
--- a/jenkins/client/job/git-mirrors/2way.yml
+++ b/jenkins/client/job/git-mirrors/2way.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     jenkins_pollscm_spec: "H/60 * * * *"
+    job_description: <br>Syncronizes code projects with GitHub.<br>
   jenkins:
     client:
       job_template:
@@ -20,6 +21,7 @@
               target: Mirantis/mcp-offline-model
               branches: "master"
           template:
+            description: ${_param:job_description}
             discard:
               build:
                 keep_num: 10
diff --git a/jenkins/client/job/git-mirrors/downstream/pipelines.yml b/jenkins/client/job/git-mirrors/downstream/pipelines.yml
index 7bf366c..271a725 100644
--- a/jenkins/client/job/git-mirrors/downstream/pipelines.yml
+++ b/jenkins/client/job/git-mirrors/downstream/pipelines.yml
@@ -2,12 +2,14 @@
   - system.jenkins.client.job.git-mirrors.downstream
 parameters:
   _param:
+    gerrit_pipeline_library_repo: https://github.com/Mirantis/pipeline-library
+    gerrit_mk_pipelines_repo: https://github.com/Mirantis/mk-pipelines
     jenkins_git_mirror_downstream_jobs:
       - name: pipeline-library
         downstream: mcp-ci/pipeline-library
-        upstream: "https://github.com/Mirantis/pipeline-library"
+        upstream: "${_param:gerrit_pipeline_library_repo}"
         branches: master
       - name: mk-pipelines
         downstream: mk/mk-pipelines
-        upstream: "https://github.com/Mirantis/mk-pipelines"
+        upstream: "${_param:gerrit_mk_pipelines_repo}"
         branches: master
diff --git a/jenkins/client/job/opencontrail/git-mirrors/upstream.yml b/jenkins/client/job/opencontrail/git-mirrors/upstream.yml
index af4c6ac..0f60c76 100644
--- a/jenkins/client/job/opencontrail/git-mirrors/upstream.yml
+++ b/jenkins/client/job/opencontrail/git-mirrors/upstream.yml
@@ -46,6 +46,8 @@
               branches: ${_param:contrail_dpdk_extra_branches}
             - name: contrail-dpdk
               branches: ${_param:contrail_dpdk_branches}
+            - name: contrail-third-party-cache-fixup
+              branches: ${_param:contrail_third_party_cache_fixup_branches}
           template:
             discard:
               build:
diff --git a/jenkins/client/job/opencontrail/init.yml b/jenkins/client/job/opencontrail/init.yml
index 34cc4e5..d2ecdb6 100644
--- a/jenkins/client/job/opencontrail/init.yml
+++ b/jenkins/client/job/opencontrail/init.yml
@@ -9,6 +9,7 @@
     contrail_ceilometer_plugin_branches: "master,R4.0,R4.1"
     contrail_kubernetes_branches: "master,origin-1.1,origin-1.1.3,release-1.1,release-1.2"
     contrail_dpdk_branches: "master,R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,R3.2.3.x,R4.0,R4.0.1,R4.1,contrail_dpdk_17_02,contrail_dpdk_17_05,contrail_dpdk_1_7,contrail_dpdk_2_0,contrail_dpdk_2_1"
+    contrail_third_party_cache_fixup_branches: "master"
   jenkins:
     client:
       view:
diff --git a/jenkins/client/job/oscore/init.yml b/jenkins/client/job/oscore/init.yml
index 18dd008..4df13c4 100644
--- a/jenkins/client/job/oscore/init.yml
+++ b/jenkins/client/job/oscore/init.yml
@@ -2,11 +2,17 @@
   - system.jenkins.client.job.oscore.security_tests
   - system.jenkins.client.job.oscore.tests
   - system.jenkins.client.job.oscore.qa
+  - system.jenkins.client.job.oscore.salt_virtual_models
 parameters:
+  _param:
+     job_description: <br>Deploy and test OpenStack.<br>
   jenkins:
     client:
       view:
         "OSCORE":
           enabled: true
-          type: ListView
+          type: CategorizedJobsView
           include_regex: "^oscore-.*"
+          categories:
+            - group_regex: "oscore-bandit-*"
+              naming_rule: "Bandit"
diff --git a/jenkins/client/job/oscore/qa.yml b/jenkins/client/job/oscore/qa.yml
index 258baa7..c8908e7 100644
--- a/jenkins/client/job/oscore/qa.yml
+++ b/jenkins/client/job/oscore/qa.yml
@@ -5,6 +5,7 @@
         oscore-build-docker-image:
           name: "{{job_prefix}}-{{oscore-qa-project}}-build-docker-image"
           template:
+            description: ${_param:job_description}
             discard:
               build:
                 keep_num: 25
@@ -49,6 +50,7 @@
         oscore-docker-image-systest-template:
           name: "{{job_prefix}}-{{oscore-qa-project}}-image-systest-{{model}}"
           template:
+            description: ${_param:job_description}
             discard:
               build:
                 keep_num: 30
@@ -164,18 +166,10 @@
                 type: string
                 default: "3"
               # test
-              TEST_TEMPEST_CONF:
-                type: string
-                description: Tempest configuration file path inside container
-                default: "{{tempest_conf}}"
               TEST_CONF:
                 type: string
                 description: Tempest configuration file path inside container
                 default: "{{test_conf}}"
-              TEST_TEMPEST_TARGET:
-                type: string
-                description: Node to run tests
-                default: "{{tempest_target}}"
               TEST_TARGET:
                 type: string
                 description: Node to run tests
diff --git a/jenkins/client/job/oscore/salt_virtual_models.yml b/jenkins/client/job/oscore/salt_virtual_models.yml
new file mode 100644
index 0000000..82b51ee
--- /dev/null
+++ b/jenkins/client/job/oscore/salt_virtual_models.yml
@@ -0,0 +1,170 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        oscore-test_virtual_model:
+          concurrent: true
+          description: ${_param:job_description}
+          discard:
+            build:
+              keep_num: 30
+            artifact:
+              keep_num: 30
+          plugin_properties:
+            throttleconcurrents:
+              enabled: true
+              throttle_option: category
+              categories:
+                - oscore-ci-ha-builds
+          display_name: oscore-test-virtual-model
+          name: oscore-test-virtual-model
+          param:
+            CREDENTIALS_ID:
+              default: gerrit
+              type: string
+              description: "Name of creadentials to use when connecting to gerrit"
+            HEAT_STACK_ZONE:
+              type: string
+              description: "Heat stack zone where build stack"
+              default: "mcp-oscore-ci"
+            STACK_RECLASS_ADDRESS:
+              type: string
+              default: 'https://gerrit.mcp.mirantis.net/salt-models/mcp-virtual-lab'
+              description: 'Url to repository with stack salt models'
+            STACK_RECLASS_BRANCH:
+              type: string
+              default: 'master'
+              description: 'Branch of repository with stack salt models'
+            STACK_CLUSTER_NAME:
+              type: string
+              default: ""
+              description: "Cluster name to use from reclass"
+            STACK_DELETE:
+              type: boolean
+              default: 'false'
+              description: "Enable it when stack have to be deleted."
+            FORMULA_PKG_REVISION:
+              type: string
+              description: Version of formulas for salt-master bootstrap
+              default: "nightly"
+            # openstack api
+            OPENSTACK_API_URL:
+              type: string
+              default: "https://cloud-cz.bud.mirantis.net:5000"
+            OPENSTACK_API_CREDENTIALS:
+              type: string
+              default: "openstack-devcloud-credentials"
+            OPENSTACK_API_PROJECT:
+              type: string
+              default: "mcp-oscore-ci"
+            OPENSTACK_API_PROJECT_DOMAIN:
+              type: string
+              default: "default"
+            OPENSTACK_API_PROJECT_ID:
+              type: string
+              default: ""
+            OPENSTACK_API_USER_DOMAIN:
+              type: string
+              default: "default"
+            OPENSTACK_API_CLIENT:
+              type: string
+              default: ""
+            OPENSTACK_API_VERSION:
+              type: string
+              default: "3"
+            # Test params
+            TEST_CONF:
+              type: string
+              description: Tempest configuration file path inside container
+              default: "/home/rally/rally_reports/tempest_generated.conf"
+            TEST_TARGET:
+              type: string
+              description: Node to run tests
+              default: "cfg01*"
+            TEST_CONCURRENCY:
+              type: string
+              description: How much test threads to run
+              default: "2"
+            RUN_SMOKE:
+              type: boolean
+              default: "false"
+              description: Enabling of running smoke tests
+          scm:
+            script: test-virtual-model-pipeline.groovy
+            type: git
+            url: "${_param:jenkins_gerrit_url}/openstack-ci/openstack-pipelines"
+            credentials: "gerrit"
+          type: workflow-scm
+        oscore-test_virtual_models:
+          concurrent: true
+          description: ${_param:job_description}
+          discard:
+            build:
+              keep_num: 30
+            artifact:
+              keep_num: 30
+          trigger:
+              timer:
+               spec: "H 05 * * *"
+          display_name: oscore-test-virtual-models
+          name: oscore-test-virtual-models
+          param:
+            CREDENTIALS_ID:
+              default: gerrit
+              type: string
+              description: "Name of creadentials to use when connecting to gerrit"
+            HEAT_STACK_ZONE:
+              type: string
+              description: "Heat stack zone where build stack"
+              default: "mcp-oscore-ci"
+            STACK_RECLASS_ADDRESS:
+              type: string
+              default: 'https://gerrit.mcp.mirantis.net/salt-models/mcp-virtual-lab'
+              description: 'Url to repository with stack salt models'
+            STACK_RECLASS_BRANCH:
+              type: string
+              default: 'master'
+              description: 'Branch of repository with stack salt models'
+            STACK_CLUSTER_NAMES:
+              type: string
+              default: "virtual-mcp-pike-ovs,virtual-mcp-pike-dvr,virtual-mcp-pike-dvr-ssl"
+              description: "Comma separated list of cluster names to test."
+            STACK_DELETE:
+              type: boolean
+              default: 'true'
+              description: "Enable it when stack have to be deleted."
+            FORMULA_PKG_REVISION:
+              type: string
+              description: Version of formulas for salt-master bootstrap
+              default: "nightly"
+            # openstack api
+            OPENSTACK_API_URL:
+              type: string
+              default: "https://cloud-cz.bud.mirantis.net:5000"
+            OPENSTACK_API_CREDENTIALS:
+              type: string
+              default: "openstack-devcloud-credentials"
+            OPENSTACK_API_PROJECT:
+              type: string
+              default: "mcp-oscore-ci"
+            OPENSTACK_API_PROJECT_DOMAIN:
+              type: string
+              default: "default"
+            OPENSTACK_API_PROJECT_ID:
+              type: string
+              default: ""
+            OPENSTACK_API_USER_DOMAIN:
+              type: string
+              default: "default"
+            OPENSTACK_API_CLIENT:
+              type: string
+              default: ""
+            OPENSTACK_API_VERSION:
+              type: string
+              default: "3"
+          scm:
+            script: test-virtual-models-pipeline.groovy
+            type: git
+            url: "${_param:jenkins_gerrit_url}/openstack-ci/openstack-pipelines"
+            credentials: "gerrit"
+          type: workflow-scm
diff --git a/jenkins/client/job/oscore/security_tests.yml b/jenkins/client/job/oscore/security_tests.yml
index 36b5441..d564574 100644
--- a/jenkins/client/job/oscore/security_tests.yml
+++ b/jenkins/client/job/oscore/security_tests.yml
@@ -5,6 +5,7 @@
         bandit-scanner-template-downstream:
           name: "{{job_prefix}}-bandit-downstream-{{project}}"
           template:
+            description: ${_param:job_description}
             discard:
               build:
                 keep_num: 30
@@ -94,6 +95,7 @@
         bandit-scanner-template-upstream:
           name: "{{job_prefix}}-bandit-upstream-{{project}}"
           template:
+            description: ${_param:job_description}
             discard:
               build:
                 keep_num: 30
diff --git a/jenkins/client/job/oscore/tests.yml b/jenkins/client/job/oscore/tests.yml
index 3000d71..122f793 100644
--- a/jenkins/client/job/oscore/tests.yml
+++ b/jenkins/client/job/oscore/tests.yml
@@ -5,6 +5,7 @@
         test-openstack-component-formula:
           name: "{{job_prefix}}-formula-systest-{{model}}-{{openstack_version}}"
           template:
+            description: ${_param:job_description}
             discard:
               build:
                 keep_num: 30
@@ -103,26 +104,14 @@
                 type: string
                 default: "3"
               # test
-              TEST_TEMPEST_CONF:
-                type: string
-                description: Tempest configuration file path inside container
-                default: "{{tempest_conf}}"
               TEST_CONF:
                 type: string
                 description: Tempest configuration file path inside container
                 default: "{{test_conf}}"
-              TEST_TEMPEST_TARGET:
-                type: string
-                description: Node to run tests
-                default: "{{tempest_target}}"
               TEST_TARGET:
                 type: string
                 description: Node to run tests
                 default: "{{test_target}}"
-              TEST_TEMPEST_PATTERN:
-                type: string
-                description: Run tests matched to pattern only
-                default: "tempest"
               TEST_PATTERN:
                 type: string
                 description: Run tests matched to pattern only
@@ -158,6 +147,7 @@
         test-openstack-component-periodic:
           name: "{{job_prefix}}-{{milestone}}-{{model}}-{{openstack_version}}-{{formula_pkg_revision}}"
           template:
+            description: ${_param:job_description}
             discard:
               build:
                 keep_num: 30
@@ -265,26 +255,14 @@
                 type: string
                 description: Product milestone
                 default: "{{milestone}}"
-              TEST_TEMPEST_CONF:
-                type: string
-                description: Tempest configuration file path inside container
-                default: "{{tempest_conf}}"
               TEST_CONF:
                 type: string
                 description: Tempest configuration file path inside container
                 default: "{{test_conf}}"
-              TEST_TEMPEST_TARGET:
-                type: string
-                description: Node to run tests
-                default: "{{tempest_target}}"
               TEST_TARGET:
                 type: string
                 description: Node to run tests
                 default: "{{test_target}}"
-              TEST_TEMPEST_PATTERN:
-                type: string
-                description: Run tests matched to pattern only
-                default: "{{test_pattern}}"
               TEST_PATTERN:
                 type: string
                 description: Run tests matched to pattern only
@@ -308,6 +286,7 @@
         test-runner-template:
           name: "{{job_prefix}}-{{test_type}}-runner"
           template:
+            description: ${_param:job_description}
             discard:
               build:
                 keep_num: 30
@@ -359,16 +338,9 @@
                 type: boolean
                 default: 'false'
                 description: Upload results to testrail or not
-              TEST_TEMPEST_TARGET:
-                type: string
-                description: Salt target to run tests
               TEST_TARGET:
                 type: string
                 description: Salt target to run tests
-              TEST_TEMPEST_IMAGE:
-                type: string
-                description: Url to tempest docker image
-                default: "{{test_image}}"
               TEST_IMAGE:
                 type: string
                 description: Url to tempest docker image
@@ -377,30 +349,16 @@
                 type: string
                 description: Path to local docker image
                 default: ''
-              TEST_TEMPEST_PATTERN:
-                type: string
-                description: Run tests matched to pattern only
               TEST_PATTERN:
                 type: string
                 description: Run tests matched to pattern only
-              TEST_TEMPEST_SET:
-                type: string
-                description: Run tests matched by tempest set only
               TEST_SET:
                 type: string
                 description: Run tests matched by tempest set only
-              TEST_TEMPEST_CONCURRENCY:
-                type: string
-                description: How much test threads to run
-                default: "2"
               TEST_CONCURRENCY:
                 type: string
                 description: How much test threads to run
                 default: "2"
-              TEST_TEMPEST_CONF:
-                type: string
-                description: Tempest configuration file path inside container
-                default: "mcp.conf"
               TEST_CONF:
                 type: string
                 description: Tempest configuration file path inside container
@@ -423,6 +381,7 @@
         results-checker-template:
           name: "{{job_prefix}}-{{test_type}}-results-checker"
           template:
+            description: ${_param:job_description}
             discard:
               build:
                 keep_num: 30
@@ -460,9 +419,6 @@
                 type: string
                 default: "{{testrail_credentials}}"
                 description: Credentials for results upload to testrail
-              TEST_TEMPEST_TARGET:
-                type: string
-                description: Node to run tests
               TEST_TARGET:
                 type: string
                 description: Node to run tests
@@ -498,6 +454,7 @@
         deploy-kvm-virtual-template:
           name: "{{job_prefix}}-deploy-kvm-VMs"
           template:
+            description: ${_param:job_description}
             discard:
               build:
                 keep_num: 30
@@ -579,6 +536,7 @@
         oscore-oscc-ci-template:
           name: "{{job_prefix}}-oscc-ci"
           template:
+            description: ${_param:job_description}
             discard:
               build:
                 keep_num: 30
@@ -643,6 +601,7 @@
         build-salt-formula-refspec-template:
           name: "{{job_prefix}}-build-salt-formula-refspec"
           template:
+            description: ${_param:job_description}
             discard:
               build:
                 keep_num: 30
@@ -712,6 +671,7 @@
         test-salt-formula-refspec-template:
           name: "{{job_prefix}}-test-salt-formula-refspec"
           template:
+            description: ${_param:job_description}
             discard:
               build:
                 keep_num: 30
@@ -728,7 +688,7 @@
             trigger:
               gerrit:
                 project:
-                  "^salt-formulas/(nova|cinder|glance|keystone|horizon|neutron|designate|heat|ironic|barbican|salt|linux|reclass|galera|memcached|rabbitmq|bind|apache)$":
+                  "^salt-formulas/(nova|cinder|glance|keystone|horizon|neutron|designate|heat|ironic|barbican|aodh|ceilometer|gnocchi|panko|manila|salt|linux|reclass|galera|memcached|rabbitmq|bind|apache)$":
                     compare_type: 'REG_EXP'
                     branches:
                       - master
@@ -804,6 +764,7 @@
         test-deploy-virtual-model-change-template:
           name: "{{job_prefix}}-deploy-virtual-model-change-{{job_suffix}}"
           template:
+            description: ${_param:job_description}
             discard:
               build:
                 keep_num: 30
diff --git a/jenkins/client/job/oss/init.yml b/jenkins/client/job/oss/init.yml
index 9478ffd..5aecb0b 100644
--- a/jenkins/client/job/oss/init.yml
+++ b/jenkins/client/job/oss/init.yml
@@ -1,5 +1,6 @@
 classes:
   - system.jenkins.client.job.oss.test_devops_portal
+  - system.jenkins.client.job.oss.test_devops_portal_backend
   - system.jenkins.client.job.oss.test_devops_portal_nightly
   - system.jenkins.client.job.oss.test_pushkin_codebase
   - system.jenkins.client.job.oss.test_security_monkey_openstack
diff --git a/jenkins/client/job/oss/test_devops_portal_backend.yml b/jenkins/client/job/oss/test_devops_portal_backend.yml
new file mode 100644
index 0000000..0c23847
--- /dev/null
+++ b/jenkins/client/job/oss/test_devops_portal_backend.yml
@@ -0,0 +1,99 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        test-oss-devops-portal-backend:
+          name: test-oss-devops-portal-backend
+          discard:
+            build:
+              keep_num: 15
+            artifact:
+              keep_num: 15
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
+            credentials: "gerrit"
+            script: test-devops-portal-backend-pipeline.groovy
+          param:
+            # heat
+            HEAT_STACK_NAME:
+              type: string
+              description: Heat stack name. Will be generated if missing.
+            # salt master
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt-qa-credentials"
+            SSH_PUBLIC_KEY:
+              type: string
+              description: "User's public SSH key to be able to login when stack is deployed"
+            # openstack api
+            OPENSTACK_API_URL:
+              type: string
+              default: "https://cloud-cz.bud.mirantis.net:5000"
+            OPENSTACK_API_CREDENTIALS:
+              type: string
+              default: "openstack-devcloud-credentials"
+            OPENSTACK_API_PROJECT:
+              type: string
+              default: "mcp-oss"
+            OPENSTACK_API_CLIENT:
+              type: string
+              default: ""
+            OPENSTACK_API_VERSION:
+              type: string
+              default: "3"
+            OPENSTACK_API_PROJECT_DOMAIN:
+              type: string
+              default: "default"
+            OPENSTACK_API_USER_DOMAIN_ID:
+              type: string
+              default: "default"
+            OPENSTACK_API_PROJECT_ID:
+              type: string
+              default: ""
+            OPENSTACK_API_USER_DOMAIN:
+              type: string
+              default: "default"
+            # devops-portal-tests
+            DEVOPS_PORTAL_TESTS_URL:
+              type: string
+              default: "${_param:jenkins_gerrit_url}/oss/devops-portal-tests"
+            DEVOPS_PORTAL_TESTS_CREDENTIALS:
+              type: string
+              default: "gerrit"
+            DEVOPS_PORTAL_TESTS_BRANCH:
+              type: string
+              default: "master"
+            DEVOPS_PORTAL_BIND_IP:
+              type: string
+              default: "0.0.0.0"
+            DEVOPS_PORTAL_BIND_PORT:
+              type: string
+              default: "8012"
+            # testrail
+            TESTRAIL_REPORT:
+                type: boolean
+                default: false
+            TESTRAIL_URL:
+                type: string
+                default: "https://mirantis.testrail.com"
+            TESTRAIL_QA_CREDENTIALS:
+                type: string
+                default: "oscore-qa-credentials"
+            TESTRAIL_PROJECT:
+                type: string
+                default: "Mirantis Cloud Platform"
+            TESTRAIL_PLAN:
+                type: string
+                default: "[MCP] [Auto] DevOps Portal"
+            TESTRAIL_SUITE:
+                type: string
+                default: "[MCP] DevOps Portal"
+            TESTRAIL_MILESTONE:
+                type: string
+                default: "MCP-Q18.1"
+            TESTRAIL_RUN:
+                type: string
+                default: "[MCP] [Auto] DevOps Portal test run"
diff --git a/jenkins/client/job/oss/test_devops_portal_nightly.yml b/jenkins/client/job/oss/test_devops_portal_nightly.yml
index 34a8bec..b654846 100644
--- a/jenkins/client/job/oss/test_devops_portal_nightly.yml
+++ b/jenkins/client/job/oss/test_devops_portal_nightly.yml
@@ -32,3 +32,27 @@
             NIGHTLY_BUILD:
                 type: boolean
                 default: true
+            TESTRAIL_REPORT:
+                type: boolean
+                default: false
+            TESTRAIL_URL:
+                type: string
+                default: "https://mirantis.testrail.com"
+            TESTRAIL_QA_CREDENTIALS:
+                type: string
+                default: "oscore-qa-credentials"
+            TESTRAIL_PROJECT:
+                type: string
+                default: "Mirantis Cloud Platform"
+            TESTRAIL_PLAN:
+                type: string
+                default: "[MCP] [Auto] DevOps Portal"
+            TESTRAIL_SUITE:
+                type: string
+                default: "[MCP] DevOps Portal"
+            TESTRAIL_MILESTONE:
+                type: string
+                default: "MCP-Q18.1"
+            TESTRAIL_RUN:
+                type: string
+                default: "[MCP] [Auto] DevOps Portal test run"
diff --git a/jenkins/client/job/saas/init.yml b/jenkins/client/job/saas/init.yml
index 5ec05c1..33ebbe4 100644
--- a/jenkins/client/job/saas/init.yml
+++ b/jenkins/client/job/saas/init.yml
@@ -1,2 +1,3 @@
 classes:
   - system.jenkins.client.job.saas.test_saas_ui
+  - system.jenkins.client.job.saas.test_saas_core_auth
diff --git a/jenkins/client/job/saas/test_saas_core_auth.yml b/jenkins/client/job/saas/test_saas_core_auth.yml
new file mode 100644
index 0000000..1ff2339
--- /dev/null
+++ b/jenkins/client/job/saas/test_saas_core_auth.yml
@@ -0,0 +1,43 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        test-saas-core-auth:
+          name: test-saas-core-auth
+          discard:
+            build:
+              keep_num: 15
+            artifact:
+              keep_num: 15
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
+            credentials: "gerrit"
+            script: test-saas-core-auth-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                "saas/core/auth":
+                  branches:
+                    - master
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeTrivialRebase: false
+                      excludeNoCodeChange: false
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: '^(?s:Patch Set \d+:.*(test|recheck|reverify)\s*)$'
+          param:
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            DEFAULT_GIT_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/saas/core/auth"
+            DEFAULT_GIT_REF:
+                type: string
+                default: master
diff --git a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
index a23f4d0..cccd01a 100644
--- a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
+++ b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     jenkins_pollscm_spec: "H/60 * * * *"
+    job_description: <br>Syncronizes code projects with GitHub.<br>
   jenkins:
     client:
       job_template:
@@ -368,6 +369,7 @@
               branches: ${_param:salt_formulas_branches}
               notification_recipients: ${_param:salt_formulas_notification_recipients}
           template:
+            description: ${_param:job_description}
             discard:
               build:
                 keep_num: 10
@@ -413,6 +415,7 @@
                 default: "{{notification_recipients}}"
       job:
         git-mirror-2way-salt-formulas-scripts:
+          description: ${_param:job_description}
           discard:
             build:
               keep_num: 10
@@ -446,6 +449,7 @@
               type: string
               default: "master"
         git-mirror-2way-salt-formulas-cookiecutter:
+          description: ${_param:job_description}
           discard:
             build:
               keep_num: 10
diff --git a/jenkins/client/job/salt-models/tests.yml b/jenkins/client/job/salt-models/tests.yml
index 57e15b8..bebc115 100644
--- a/jenkins/client/job/salt-models/tests.yml
+++ b/jenkins/client/job/salt-models/tests.yml
@@ -67,6 +67,9 @@
               CONFIG_NODE_NAME_PATTERN:
                 type: string
                 default: "{{config_node_name}}"
+              RECLASS_VERSION:
+                type: string
+                default: "master"
               MAX_CPU_PER_JOB:
                 type: string
                 default: "2"
@@ -180,6 +183,10 @@
               RECLASS_IGNORE_CLASS_NOTFOUND:
                 type: boolean
                 default: "{{reclass_ignore_class_notfound}}"
+              RECLASS_VERSION:
+                type: string
+                default: "master"
+                description: "Version (branch) of Reclass we will use"
               LEGACY_TEST_MODE:
                 type: boolean
                 default: "{{legacy_test_mode}}"
@@ -273,6 +280,9 @@
               RECLASS_MODEL_BRANCH:
                 type: string
                 default: master
+              DISTRIB_REVISION:
+                type: string
+                default: 'nightly'
               SYSTEM_GIT_URL:
                 type: string
                 default: ""
@@ -284,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"
+                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"
       job:
         test-salt-model-node:
           name: test-salt-model-node
@@ -338,6 +348,10 @@
             SYSTEM_GIT_REF:
               type: string
               default: ""
+            RECLASS_VERSION:
+              type: string
+              default: "master"
+              description: "Version (branch) of Reclass we will use"
             MAX_CPU_PER_JOB:
               type: string
               default: "2"
diff --git a/jenkins/client/job/validate.yml b/jenkins/client/job/validate.yml
index b0546c3..168dcfd 100644
--- a/jenkins/client/job/validate.yml
+++ b/jenkins/client/job/validate.yml
@@ -234,7 +234,7 @@
             TEMPEST_TEST_PATTERN:
               type: string
               default: "set=smoke"
-              description: Use set=smoke (or identity,full...] or just test name
+              description: Use set=smoke (or identity,full...) or just test name
             TEMPEST_ENDPOINT_TYPE:
               type: choice
               choices:
@@ -276,11 +276,11 @@
               description: Credentials to the Salt API
             TEMPEST_TARGET_NODE:
               type: string
-              default: ""
+              default: "${_param:cicd_control_node03_hostname}.${_param:cluster_domain}"
               description: Node where container with tempest will be run
             TEST_IMAGE:
               type: string
-              default: "rallyforge/rally"
+              default: "xrally/xrally-openstack:0.9.1"
               description: Docker image to use for running Rally/Tempest
             TARGET_NODES:
               type: string
@@ -296,7 +296,7 @@
               description: If you have any problems with timeouts (e.g. while waiting for node to be up/down), please increase this value
             SKIP_LIST_PATH:
               type: string
-              default: "/home/rally/cvp-configuration/tempest/skip-list.yaml"
+              default: "cvp-configuration/tempest/skip-list.yaml"
               description: path to skip-list file inside container
             PROXY:
               type: string
@@ -305,7 +305,7 @@
             TEMPEST_TEST_PATTERN:
               type: string
               default: "set=smoke"
-              description: Use set=smoke (or identity,full...] or just test name
+              description: Use set=smoke (or identity,full...) or just test name
             MANUAL_CONFIRMATION:
               type: boolean
               default: 'false'
@@ -316,7 +316,7 @@
               description: Can be repo url (local or remote) or path to folder (inside container) with Tempest
             TOOLS_REPO:
               type: string
-              default: "${_param:gerrit_public_host}/cvp-configuration"
+              default: "https://github.com/Mirantis/cvp-configuration"
               description: URL of repo where testing tools, scenarios, configs are located.
         cvp-perf:
           type: workflow-scm
diff --git a/keystone/client/service/aodh.yml b/keystone/client/service/aodh.yml
index c4d49b8..e7b0dbb 100644
--- a/keystone/client/service/aodh.yml
+++ b/keystone/client/service/aodh.yml
@@ -2,6 +2,7 @@
   _param:
     cluster_public_protocol: https
     aodh_service_protocol: http
+    aodh_public_host: ${_param:cluster_public_host}
   keystone:
     client:
       server:
@@ -19,7 +20,7 @@
               description: OpenStack Alarming Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:cluster_public_host}
+                public_address: ${_param:aodh_public_host}
                 public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8042
                 public_path: '/'
diff --git a/keystone/client/service/ceilometer.yml b/keystone/client/service/ceilometer.yml
index 90e0d3e..40f4ebf 100644
--- a/keystone/client/service/ceilometer.yml
+++ b/keystone/client/service/ceilometer.yml
@@ -2,6 +2,7 @@
   _param:
     cluster_public_protocol: https
     ceilometer_service_protocol: http
+    ceilometer_public_host: ${_param:cluster_public_host}
   keystone:
     client:
       server:
@@ -19,7 +20,7 @@
               description: OpenStack Telemetry Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:cluster_public_host}
+                public_address: ${_param:ceilometer_public_host}
                 public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8777
                 public_path: '/'
diff --git a/keystone/client/service/gnocchi.yml b/keystone/client/service/gnocchi.yml
index dec6b83..6707764 100644
--- a/keystone/client/service/gnocchi.yml
+++ b/keystone/client/service/gnocchi.yml
@@ -2,6 +2,7 @@
   _param:
     cluster_public_protocol: https
     gnocchi_service_protocol: http
+    gnocchi_public_host: ${_param:cluster_public_host}
   keystone:
     client:
       server:
@@ -19,7 +20,7 @@
               description: OpenStack Metric Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:cluster_public_host}
+                public_address: ${_param:gnocchi_public_host}
                 public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8041
                 public_path: '/'
diff --git a/keystone/client/service/panko.yml b/keystone/client/service/panko.yml
index b7c9fc3..6f86b36 100644
--- a/keystone/client/service/panko.yml
+++ b/keystone/client/service/panko.yml
@@ -2,6 +2,7 @@
   _param:
     cluster_public_protocol: https
     panko_service_protocol: http
+    panko_public_host: ${_param:cluster_public_host}
   keystone:
     client:
       server:
@@ -19,7 +20,7 @@
               description: OpenStack Event Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:cluster_public_host}
+                public_address: ${_param:panko_public_host}
                 public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8977
                 public_path: '/'
diff --git a/manila/control/cluster.yml b/manila/control/cluster.yml
index 0bf4c69..ff6ca10 100644
--- a/manila/control/cluster.yml
+++ b/manila/control/cluster.yml
@@ -9,5 +9,7 @@
       version: ${_param:openstack_version}
     api:
       enabled: true
+      version: ${_param:openstack_version}
     scheduler:
       enabled: true
+      version: ${_param:openstack_version}
diff --git a/manila/control/single.yml b/manila/control/single.yml
index 5029c67..3e14e96 100644
--- a/manila/control/single.yml
+++ b/manila/control/single.yml
@@ -8,5 +8,7 @@
       version: ${_param:openstack_version}
     api:
       enabled: true
+      version: ${_param:openstack_version}
     scheduler:
       enabled: true
+      version: ${_param:openstack_version}
diff --git a/manila/share/backend/lvm.yml b/manila/share/backend/lvm.yml
index 488de4d..4dd589b 100644
--- a/manila/share/backend/lvm.yml
+++ b/manila/share/backend/lvm.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    manila_share_address: ${_param:single_address}
   linux:
     storage:
       lvm:
@@ -14,7 +16,7 @@
           type: lvm
           enabled: true
           lvm_share_export_ips:
-            - "${_param:single_address}"
+            - "${_param:manila_share_address}"
           dhss: false
           share_driver: manila.share.drivers.lvm.LVMShareDriver
           lvm_share_volume_group: manila-volume
diff --git a/manila/share/init.yml b/manila/share/init.yml
new file mode 100644
index 0000000..2c6558e
--- /dev/null
+++ b/manila/share/init.yml
@@ -0,0 +1,10 @@
+classes:
+ - service.manila.common.cluster
+parameters:
+  manila:
+    common:
+      dhss: false
+      version: ${_param:openstack_version}
+    share:
+      enabled: true
+      version: ${_param:openstack_version}
diff --git a/neutron/control/opendaylight/cluster.yml b/neutron/control/opendaylight/cluster.yml
index 7a62e8b..1f8142e 100644
--- a/neutron/control/opendaylight/cluster.yml
+++ b/neutron/control/opendaylight/cluster.yml
@@ -17,7 +17,6 @@
         password: admin
         ovsdb_connection: tcp:127.0.0.1:6639
         router: ${_param:opendaylight_router}
-        enable_websocket: true
         mechanism:
           ovs:
             driver: ${_param:opendaylight_driver}
diff --git a/neutron/control/opendaylight/single.yml b/neutron/control/opendaylight/single.yml
index e0c3ea9..297cfa0 100644
--- a/neutron/control/opendaylight/single.yml
+++ b/neutron/control/opendaylight/single.yml
@@ -15,7 +15,6 @@
         password: admin
         ovsdb_connection: tcp:127.0.0.1:6639
         router: ${_param:opendaylight_router}
-        enable_websocket: true
         mechanism:
           ovs:
             driver: ${_param:opendaylight_driver}
diff --git a/openssh/server/team/members/iudovichenko.yml b/openssh/server/team/members/iudovichenko.yml
new file mode 100644
index 0000000..d7e611d
--- /dev/null
+++ b/openssh/server/team/members/iudovichenko.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        iudovichenko:
+          enabled: true
+          name: iudovichenko
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Ivan Udovichenko
+          home: /home/iudovichenko
+          email: iudovichenko@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        iudovichenko:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1Dxt3m6w1jZjDxLJEWi2X5uXYZwpJVmfcOoXayofmxvdRyXe5OAEFZpdiPeCgwwcKZGvLjJ0/KXsoBuQw++XhdzZnE1+zaAjpB7fzkTQq4QRvEOMr3z16/AdJdYlqcZH4n3USUhahGdfhpCVDAo1YyYGDTzUH3r1DtYPAGbNiNgb7xu8H3iwp9UiI2t6kH3tx7db2wbVJ6HpnIlA1/Yj4W5j4Cz8f8MnG5oTnmZwT0hXwX/TCPyW56bHOGCAVpHINM+ZU4jUoHMUxjwd4mjMw4TIjID5b+ks91MdBhe/9IDRDrIUK2sK4h+S4ciuD6IAT637DD8/n8P6Vj8qDR0rP
+          user: ${linux:system:user:iudovichenko}
diff --git a/openssh/server/team/oscore_devops.yml b/openssh/server/team/oscore_devops.yml
index b5505a8..49207eb 100644
--- a/openssh/server/team/oscore_devops.yml
+++ b/openssh/server/team/oscore_devops.yml
@@ -3,6 +3,7 @@
 - system.openssh.server.team.members.vsaienko
 - system.openssh.server.team.members.vnogin
 - system.openssh.server.team.members.mkarpin
+- system.openssh.server.team.members.iudovichenko
 parameters:
   _param:
     linux_system_user_sudo: true
diff --git a/panko/server/cluster.yml b/panko/server/cluster.yml
index d2d4b9b..c258c9a 100644
--- a/panko/server/cluster.yml
+++ b/panko/server/cluster.yml
@@ -3,4 +3,24 @@
 - service.haproxy.proxy.single
 - system.apache.server.site.panko
 - system.haproxy.proxy.listen.openstack.panko
-- system.keepalived.cluster.instance.openstack_telemetry_vip
\ No newline at end of file
+- system.keepalived.cluster.instance.openstack_telemetry_vip
+parameters:
+  _param:
+    panko_memcached_node01_address: ${_param:cluster_node01_address}
+    panko_memcached_node02_address: ${_param:cluster_node02_address}
+    panko_memcached_node03_address: ${_param:cluster_node03_address}
+  panko:
+    server:
+      identity:
+        host: ${_param:openstack_control_address}
+      database:
+        host: ${_param:openstack_database_address}
+      cache:
+        engine: memcached
+        members:
+        - host: ${_param:panko_memcached_node01_address}
+          port: 11211
+        - host: ${_param:panko_memcached_node02_address}
+          port: 11211
+        - host: ${_param:panko_memcached_node03_address}
+          port: 11211
\ No newline at end of file
diff --git a/prometheus/alertmanager/notification/pushkin.yml b/prometheus/alertmanager/notification/pushkin.yml
index dd4f760..a78b6fd 100644
--- a/prometheus/alertmanager/notification/pushkin.yml
+++ b/prometheus/alertmanager/notification/pushkin.yml
@@ -10,9 +10,7 @@
           routes:
             pushkin:
               receiver: HTTP-pushkin
-              match_re:
-                - label: route
-                  value:  .+?
+              continue: true
         receiver:
           HTTP-pushkin:
             enabled: true
diff --git a/prometheus/alertmanager/notification/slack.yml b/prometheus/alertmanager/notification/slack.yml
index c33e013..2158adb 100644
--- a/prometheus/alertmanager/notification/slack.yml
+++ b/prometheus/alertmanager/notification/slack.yml
@@ -6,9 +6,6 @@
           routes:
             slack:
               receiver: HTTP-slack
-              match_re:
-                - label: route
-                  value: slack
         receiver:
           HTTP-slack:
             enabled: true
diff --git a/prometheus/server/alert/etcd.yml b/prometheus/server/alert/etcd.yml
new file mode 100644
index 0000000..9c456ab
--- /dev/null
+++ b/prometheus/server/alert/etcd.yml
@@ -0,0 +1,140 @@
+parameters:
+  prometheus:
+    server:
+        alert:
+          InsufficientMembers:
+            if: >-
+              count(up{job="etcd"} == 0) > (count(up{job="etcd"}) / 2 - 1)
+            for: 3m
+            labels:
+              severity: critical
+            annotations:
+              description: 'If one more etcd member goes down the cluster will be unavailable'
+              summary: 'etcd cluster insufficient members'
+          NoLeader:
+            if: >-
+              etcd_server_has_leader{job="etcd"} == 0
+            for: 1m
+            labels:
+              severity: critical
+            annotations:
+              description: 'etcd member {{ $labels.instance }} has no leader'
+              summary: 'etcd member has no leader'
+          HighNumberOfLeaderChanges:
+            if: >-
+              increase(etcd_server_leader_changes_seen_total{job="etcd"}[1h]) > 3
+            labels:
+              severity: warning
+            annotations:
+              description: 'etcd instance {{ $labels.instance }} has seen {{ $value }} leader changes within the last hour'
+              summary: 'a high number of leader changes within the etcd cluster are happening'
+          HighNumberOfFailedGRPCRequests:
+            if: >-
+              sum(rate(grpc_server_handled_total{grpc_code!="OK",job="etcd"}[5m])) BY (grpc_service, grpc_method) / sum(rate(grpc_server_handled_total{job="etcd"}[5m])) BY (grpc_service, grpc_method) > 0.01
+            for: 10m
+            labels:
+              severity: warning
+            annotations:
+              description: '{{ $value }}% of requests for {{ $labels.grpc_method }} failed on etcd instance {{ $labels.instance }}'
+              summary: 'a high number of gRPC requests are failing'
+          HighNumberOfFailedGRPCRequests:
+            if: >-
+              sum(rate(grpc_server_handled_total{grpc_code!="OK",job="etcd"}[5m])) BY (grpc_service, grpc_method) / sum(rate(grpc_server_handled_total{job="etcd"}[5m])) BY (grpc_service, grpc_method) > 0.05
+            for: 5m
+            labels:
+              severity: critical
+            annotations:
+              description: '{{ $value }}% of requests for {{ $labels.grpc_method }} failed on etcd instance {{ $labels.instance }}'
+              summary: 'a high number of gRPC requests are failing'
+          GRPCRequestsSlow:
+            if: >-
+              histogram_quantile(0.99, sum(rate(grpc_server_handling_seconds_bucket{job="etcd",grpc_type="unary"}[5m])) by (grpc_service, grpc_method, le)) > 0.15
+            for: 10m
+            labels:
+              severity: critical
+            annotations:
+              description: 'on etcd instance {{ $labels.instance }} gRPC requests to {{ $labels.grpc_method }} are slow'
+              summary: 'slow gRPC requests'
+          HighNumberOfFailedHTTPRequests:
+            if: >-
+              sum(rate(etcd_http_failed_total{job="etcd"}[5m])) BY (method) / sum(rate(etcd_http_received_total{job="etcd"}[5m])) BY (method) > 0.01
+            for: 10m
+            labels:
+              severity: warning
+            annotations:
+              description: '{{ $value }}% of requests for {{ $labels.method }} failed on etcd instance {{ $labels.instance }}'
+              summary: 'a high number of HTTP requests are failing'
+          HighNumberOfFailedHTTPRequests:
+            if: >-
+              sum(rate(etcd_http_failed_total{job="etcd"}[5m])) BY (method) / sum(rate(etcd_http_received_total{job="etcd"}[5m])) BY (method) > 0.05
+            for: 5m
+            labels:
+              severity: critical
+            annotations:
+              description: '{{ $value }}% of requests for {{ $labels.method }} failed on etcd instance {{ $labels.instance }}'
+              summary: 'a high number of HTTP requests are failing'
+          HTTPRequestsSlow:
+            if: >-
+              histogram_quantile(0.99, rate(etcd_http_successful_duration_seconds_bucket[5m])) > 0.15
+            for: 10m
+            labels:
+              severity: warning
+            annotations:
+              description: 'on etcd instance {{ $labels.instance }} HTTP requests to {{ $labels.method }} are slow'
+              summary: 'slow HTTP requests'
+            record: instance:fd_utilization
+            if: >-
+              process_open_fds / process_max_fds
+          FdExhaustionClose:
+            if: >-
+              predict_linear(instance:fd_utilization[1h], 3600 * 4) > 1
+            for: 10m
+            labels:
+              severity: warning
+            annotations:
+              description: '{{ $labels.job }} instance {{ $labels.instance }} will exhaust its file descriptors soon'
+              summary: 'file descriptors soon exhausted'
+          FdExhaustionClose:
+            if: >-
+              predict_linear(instance:fd_utilization[10m], 3600) > 1
+            for: 10m
+            labels:
+              severity: critical
+            annotations:
+              description: '{{ $labels.job }} instance {{ $labels.instance }} will exhaust its file descriptors soon'
+              summary: 'file descriptors soon exhausted'
+          EtcdMemberCommunicationSlow:
+            if: >-
+              histogram_quantile(0.99, rate(etcd_network_member_round_trip_time_seconds_bucket[5m])) > 0.15
+            for: 10m
+            labels:
+              severity: warning
+            annotations:
+              description: 'etcd instance {{ $labels.instance }} member communication with {{ $labels.To }} is slow'
+              summary: 'etcd member communication is slow'
+          HighNumberOfFailedProposals:
+            if: >-
+              increase(etcd_server_proposals_failed_total{job="etcd"}[1h]) > 5
+            labels:
+              severity: warning
+            annotations:
+              description: 'etcd instance {{ $labels.instance }} has seen {{ $value }} proposal failures within the last hour'
+              summary: 'a high number of proposals within the etcd cluster are failing'
+          HighFsyncDurations:
+            if: >-
+              histogram_quantile(0.99, rate(etcd_disk_wal_fsync_duration_seconds_bucket[5m])) > 0.5
+            for: 10m
+            labels:
+              severity: warning
+            annotations:
+              description: 'etcd instance {{ $labels.instance }} fync durations are high'
+              summary: 'high fsync durations'
+          HighCommitDurations:
+            if: >-
+              histogram_quantile(0.99, rate(etcd_disk_backend_commit_duration_seconds_bucket[5m])) > 0.25
+            for: 10m
+            labels:
+              severity: warning
+            annotations:
+              description: 'etcd instance {{ $labels.instance }} commit durations are high'
+              summary: 'high commit durations'
diff --git a/prometheus/server/target/static/etcd.yml b/prometheus/server/target/static/etcd.yml
new file mode 100644
index 0000000..61488b5
--- /dev/null
+++ b/prometheus/server/target/static/etcd.yml
@@ -0,0 +1,13 @@
+parameters:
+  _param:
+    prometheus_etcd_host: ${_param:haproxy_bind_address}
+    prometheus_etcd_port: 4001
+  prometheus:
+    server:
+      target:
+        static:
+          etcd:
+            enabled: true
+            endpoint:
+            - address: ${_param:prometheus_etcd_host}
+              port: ${_param:prometheus_etcd_port}
diff --git a/prometheus/server/target/static/kqueen.yml b/prometheus/server/target/static/kqueen.yml
new file mode 100644
index 0000000..701f4cd
--- /dev/null
+++ b/prometheus/server/target/static/kqueen.yml
@@ -0,0 +1,13 @@
+parameters:
+  _param:
+    prometheus_kqueen_api_host: ${_param:haproxy_bind_address}
+    prometheus_kqueen_api_port: 5000
+  prometheus:
+    server:
+      target:
+        static:
+          kqueen:
+            enabled: true
+            endpoint:
+            - address: ${_param:prometheus_kqueen_api_host}
+              port: ${_param:prometheus_kqueen_api_port}
diff --git a/reclass/storage/system/openstack_share_multi.yml b/reclass/storage/system/openstack_share_multi.yml
index a347aec..a70af28 100644
--- a/reclass/storage/system/openstack_share_multi.yml
+++ b/reclass/storage/system/openstack_share_multi.yml
@@ -19,7 +19,7 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: ${_param:linux_system_codename}
             single_address: ${_param:openstack_share_node01_address}
-            share_address: ${_param:openstack_share_node01_share_address}
+            manila_share_address: ${_param:openstack_share_node01_share_address}
         openstack_share_node02:
           name: ${_param:openstack_share_node02_hostname}
           domain: ${_param:cluster_domain}
@@ -29,7 +29,7 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: ${_param:linux_system_codename}
             single_address: ${_param:openstack_share_node02_address}
-            share_address: ${_param:openstack_share_node02_share_address}
+            manila_share_address: ${_param:openstack_share_node02_share_address}
         openstack_share_node03:
           name: ${_param:openstack_share_node03_hostname}
           domain: ${_param:cluster_domain}
@@ -39,4 +39,4 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: ${_param:linux_system_codename}
             single_address: ${_param:openstack_share_node03_address}
-            share_address: ${_param:openstack_share_node03_share_address}
+            manila_share_address: ${_param:openstack_share_node03_share_address}
diff --git a/reclass/storage/system/openstack_share_single.yml b/reclass/storage/system/openstack_share_single.yml
index cb33dde..fca56f2 100644
--- a/reclass/storage/system/openstack_share_single.yml
+++ b/reclass/storage/system/openstack_share_single.yml
@@ -13,4 +13,4 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: ${_param:linux_system_codename}
             single_address: ${_param:openstack_share_node01_address}
-            share_address: ${_param:openstack_share_node01_share_address}
+            manila_share_address: ${_param:openstack_share_node01_share_address}
diff --git a/salt/control/sizes/ceph.yml b/salt/control/sizes/ceph.yml
index 7b46367..a4be9c9 100644
--- a/salt/control/sizes/ceph.yml
+++ b/salt/control/sizes/ceph.yml
@@ -3,11 +3,11 @@
     salt_control_size_cpu_ceph_mon: 8
     salt_control_size_ram_ceph_mon: 16384
     salt_control_size_disk_profile_ceph_mon: large
-    salt_control_size_net_profile_cpu_ceph_mon: default
+    salt_control_size_net_profile_ceph_mon: default
     salt_control_size_cpu_ceph_rgw: 8
     salt_control_size_ram_ceph_rgw: 16384
     salt_control_size_disk_profile_ceph_rgw: small
-    salt_control_size_net_profile_cpu_ceph_rgw: default
+    salt_control_size_net_profile_ceph_rgw: default
   salt:
     control:
       size:
diff --git a/salt/control/sizes/cicd.yml b/salt/control/sizes/cicd.yml
index 1099649..a2ada77 100644
--- a/salt/control/sizes/cicd.yml
+++ b/salt/control/sizes/cicd.yml
@@ -3,7 +3,7 @@
     salt_control_size_cpu_cicd_control: 8
     salt_control_size_ram_cicd_control: 32768
     salt_control_size_disk_profile_cicd_control: huge
-    salt_control_size_net_profile_cpu_cicd_control: default
+    salt_control_size_net_profile_cicd_control: default
   salt:
     control:
       size:
diff --git a/salt/control/sizes/opencontrail.yml b/salt/control/sizes/opencontrail.yml
index 85a348d..41b858d 100644
--- a/salt/control/sizes/opencontrail.yml
+++ b/salt/control/sizes/opencontrail.yml
@@ -3,11 +3,11 @@
     salt_control_size_cpu_opencontrail_control: 8
     salt_control_size_ram_opencontrail_control: 65536
     salt_control_size_disk_profile_opencontrail_control: large
-    salt_control_size_net_profile_cpu_opencontrail_control: default
+    salt_control_size_net_profile_opencontrail_control: default
     salt_control_size_cpu_opencontrail_analytics: 16
     salt_control_size_ram_opencontrail_analytics: 98304
     salt_control_size_disk_profile_opencontrail_analytics: huge
-    salt_control_size_net_profile_cpu_opencontrail_analytics: default
+    salt_control_size_net_profile_opencontrail_analytics: default
   salt:
     control:
       size:
diff --git a/salt/control/sizes/openstack.yml b/salt/control/sizes/openstack.yml
index 4283c73..b75161b 100644
--- a/salt/control/sizes/openstack.yml
+++ b/salt/control/sizes/openstack.yml
@@ -3,23 +3,23 @@
     salt_control_size_cpu_openstack_control: 8
     salt_control_size_ram_openstack_control: 65536
     salt_control_size_disk_profile_openstack_control: large
-    salt_control_size_net_profile_cpu_openstack_control: default
+    salt_control_size_net_profile_openstack_control: default
     salt_control_size_cpu_openstack_database: 8
     salt_control_size_ram_openstack_database: 32768
     salt_control_size_disk_profile_openstack_database: large
-    salt_control_size_net_profile_cpu_openstack_database: default
+    salt_control_size_net_profile_openstack_database: default
     salt_control_size_cpu_openstack_message_queue: 16
     salt_control_size_ram_openstack_message_queue: 65536
     salt_control_size_disk_profile_openstack_message_queue: xxlarge
-    salt_control_size_net_profile_cpu_openstack_message_queue: default
+    salt_control_size_net_profile_openstack_message_queue: default
     salt_control_size_cpu_openstack_proxy: 4
     salt_control_size_ram_openstack_proxy: 16384
     salt_control_size_disk_profile_openstack_proxy: large
-    salt_control_size_net_profile_cpu_openstack_proxy: default
+    salt_control_size_net_profile_openstack_proxy: default
     salt_control_size_cpu_openstack_upgrade: 8
     salt_control_size_ram_openstack_upgrade: 16384
     salt_control_size_disk_profile_openstack_upgrade: medium
-    salt_control_size_net_profile_cpu_openstack_upgrade: default
+    salt_control_size_net_profile_openstack_upgrade: default
   salt:
     control:
       size:
diff --git a/salt/control/sizes/stacklight.yml b/salt/control/sizes/stacklight.yml
index 50f2803..5b09c14 100644
--- a/salt/control/sizes/stacklight.yml
+++ b/salt/control/sizes/stacklight.yml
@@ -1,13 +1,17 @@
 parameters:
   _param:
-    salt_control_size_cpu_stacklight_log: 8
-    salt_control_size_ram_stacklight_log: 16384
-    salt_control_size_disk_profile_stacklight_log: large
-    salt_control_size_net_profile_cpu_stacklight_log: default
-    salt_control_size_cpu_stacklight_server: 8
-    salt_control_size_ram_stacklight_server: 16384
-    salt_control_size_disk_profile_stacklight_server: large
-    salt_control_size_net_profile_cpu_stacklight_server: default
+    salt_control_size_cpu_stacklight_log: 16
+    salt_control_size_ram_stacklight_log: 49152
+    salt_control_size_disk_profile_stacklight_log: xxhuge
+    salt_control_size_net_profile_stacklight_log: default
+    salt_control_size_cpu_stacklight_server: 12
+    salt_control_size_ram_stacklight_server: 65536
+    salt_control_size_disk_profile_stacklight_server: xxlarge
+    salt_control_size_net_profile_stacklight_server: default
+    salt_control_size_cpu_stacklight_telemetry: 12
+    salt_control_size_ram_stacklight_telemetry: 98304
+    salt_control_size_disk_profile_stacklight_telemetryr: huge
+    salt_control_size_net_profile_stacklight_telemetry: default
   salt:
     control:
       size:
@@ -20,4 +24,9 @@
           cpu: ${_param:salt_control_size_cpu_stacklight_server}
           ram: ${_param:salt_control_size_ram_stacklight_server}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_server}
-          net_profile: ${_param:salt_control_size_net_profile_stacklight_server}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_stacklight_server}
+        stacklight.telemetry:
+          cpu: ${_param:salt_control_size_cpu_stacklight_telemetry}
+          ram: ${_param:salt_control_size_ram_stacklight_telemetry}
+          disk_profile: ${_param:salt_control_size_disk_profile_stacklight_telemetry}
+          net_profile: ${_param:salt_control_size_net_profile_stacklight_telemetry}
\ No newline at end of file
diff --git a/salt/master/formula/git/dogtag.yml b/salt/master/formula/git/dogtag.yml
new file mode 100644
index 0000000..d4cac8c
--- /dev/null
+++ b/salt/master/formula/git/dogtag.yml
@@ -0,0 +1,10 @@
+parameters:
+  salt:
+    master:
+      environment:
+        dev:
+          formula:
+            dogtag:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-dogtag.git'
+              revision: ${_param:salt_master_environment_revision}
diff --git a/salt/master/formula/pkg/dogtag.yml b/salt/master/formula/pkg/dogtag.yml
new file mode 100644
index 0000000..5ae4b28
--- /dev/null
+++ b/salt/master/formula/pkg/dogtag.yml
@@ -0,0 +1,9 @@
+parameters:
+  salt:
+    master:
+      environment:
+        prd:
+          formula:
+            dogtag:
+              source: pkg
+              name: salt-formula-dogtag
diff --git a/watchdog/server/init.yml b/watchdog/server/init.yml
new file mode 100644
index 0000000..28435d6
--- /dev/null
+++ b/watchdog/server/init.yml
@@ -0,0 +1,7 @@
+classes:
+- service.watchdog.server
+parameters:
+  watchdog:
+    server:
+      enabled: true
+