Merge "Install the rundeck formula as a part of OSS"
diff --git a/aptly/server/mirror/ubuntu/trusty/glusterfs.yml b/aptly/server/mirror/ubuntu/trusty/glusterfs.yml
index 2d3fbaf..b83c49f 100644
--- a/aptly/server/mirror/ubuntu/trusty/glusterfs.yml
+++ b/aptly/server/mirror/ubuntu/trusty/glusterfs.yml
@@ -1,6 +1,4 @@
 parameters:
-  _param:
-    apt_mk_version: stable
   aptly:
     server:
       mirror:
@@ -12,6 +10,6 @@
           gpgkeys:
             - 3FE869A9
           publisher:
-            component: main
+            component: glusterfs
             distributions:
-              - ubuntu-trusty/${_param:apt_mk_version}
\ No newline at end of file
+              - ubuntu-trusty/nightly
diff --git a/aptly/server/mirror/ubuntu/xenial/glusterfs.yml b/aptly/server/mirror/ubuntu/xenial/glusterfs.yml
index 79a618a..da48431 100644
--- a/aptly/server/mirror/ubuntu/xenial/glusterfs.yml
+++ b/aptly/server/mirror/ubuntu/xenial/glusterfs.yml
@@ -1,6 +1,4 @@
 parameters:
-  _param:
-    apt_mk_version: stable
   aptly:
     server:
       mirror:
@@ -12,6 +10,6 @@
           gpgkeys:
             - 3FE869A9
           publisher:
-            component: main
+            component: glusterfs
             distributions:
-              - ubuntu-xenial/${_param:apt_mk_version}
\ No newline at end of file
+              - ubuntu-xenial/nightly
diff --git a/ceilometer/agent/cluster.yml b/ceilometer/agent/cluster.yml
index cfd93f7..135dbe8 100644
--- a/ceilometer/agent/cluster.yml
+++ b/ceilometer/agent/cluster.yml
@@ -16,8 +16,10 @@
         password: ${_param:keystone_ceilometer_password}
       message_queue:
         engine: rabbitmq
-        host: ${_param:openstack_message_queue_address}
-        port: 5672
+        members:
+          - host: ${_param:openstack_message_queue_node01_address}
+          - host: ${_param:openstack_message_queue_node02_address}
+          - host: ${_param:openstack_message_queue_node03_address}
         user: openstack
         password: ${_param:rabbitmq_openstack_password}
         virtual_host: '/openstack'
diff --git a/ceilometer/server/cluster.yml b/ceilometer/server/cluster.yml
index b5d8013..cfe54f9 100644
--- a/ceilometer/server/cluster.yml
+++ b/ceilometer/server/cluster.yml
@@ -26,8 +26,10 @@
         password: ${_param:keystone_ceilometer_password}
       message_queue:
         engine: rabbitmq
-        host: ${_param:openstack_message_queue_address}
-        port: 5672
+        members:
+          - host: ${_param:openstack_message_queue_node01_address}
+          - host: ${_param:openstack_message_queue_node02_address}
+          - host: ${_param:openstack_message_queue_node03_address}
         user: openstack
         password: ${_param:rabbitmq_openstack_password}
         virtual_host: '/openstack'
diff --git a/cinder/control/cluster.yml b/cinder/control/cluster.yml
index 6df5290..868b71e 100644
--- a/cinder/control/cluster.yml
+++ b/cinder/control/cluster.yml
@@ -39,8 +39,10 @@
         port: 9292
       message_queue:
         engine: rabbitmq
-        host: ${_param:openstack_message_queue_address}
-        port: 5672
+        members:
+          - host: ${_param:openstack_message_queue_node01_address}
+          - host: ${_param:openstack_message_queue_node02_address}
+          - host: ${_param:openstack_message_queue_node03_address}
         user: openstack
         password: ${_param:rabbitmq_openstack_password}
         virtual_host: '/openstack'
diff --git a/cinder/volume/single.yml b/cinder/volume/single.yml
index cede74c..9c8f7c2 100644
--- a/cinder/volume/single.yml
+++ b/cinder/volume/single.yml
@@ -9,6 +9,9 @@
       glance:
         host: ${_param:openstack_control_address}
       message_queue:
-        host: ${_param:openstack_message_queue_address}
+        members:
+          - host: ${_param:openstack_message_queue_node01_address}
+          - host: ${_param:openstack_message_queue_node02_address}
+          - host: ${_param:openstack_message_queue_node03_address}
       identity:
-        host: ${_param:openstack_control_address}
\ No newline at end of file
+        host: ${_param:openstack_control_address}
diff --git a/glusterfs/client/volume/aptly.yml b/glusterfs/client/volume/aptly.yml
index 86a1b40..659f59d 100644
--- a/glusterfs/client/volume/aptly.yml
+++ b/glusterfs/client/volume/aptly.yml
@@ -1,10 +1,13 @@
 parameters:
   _param:
     aptly_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
   glusterfs:
     client:
       volumes:
         aptly:
           path: /srv/volumes/aptly
           server: ${_param:aptly_glusterfs_service_host}
-          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/artifactory.yml b/glusterfs/client/volume/artifactory.yml
index 2d36961..878131f 100644
--- a/glusterfs/client/volume/artifactory.yml
+++ b/glusterfs/client/volume/artifactory.yml
@@ -1,10 +1,13 @@
 parameters:
   _param:
     artifactory_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
   glusterfs:
     client:
       volumes:
         artifactory:
           path: /srv/volumes/artifactory
           server: ${_param:artifactory_glusterfs_service_host}
-          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/devops_portal.yml b/glusterfs/client/volume/devops_portal.yml
index 5a0c07a..dc42201 100644
--- a/glusterfs/client/volume/devops_portal.yml
+++ b/glusterfs/client/volume/devops_portal.yml
@@ -1,10 +1,13 @@
 parameters:
   _param:
     devops_portal_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
   glusterfs:
     client:
       volumes:
         devops_portal:
           path: /srv/volumes/devops_portal
           server: ${_param:devops_portal_glusterfs_service_host}
-          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/elasticsearch.yml b/glusterfs/client/volume/elasticsearch.yml
index 2fad4ba..0248093 100644
--- a/glusterfs/client/volume/elasticsearch.yml
+++ b/glusterfs/client/volume/elasticsearch.yml
@@ -1,10 +1,13 @@
 parameters:
   _param:
     elasticsearch_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
   glusterfs:
     client:
       volumes:
         elasticsearch:
           path: /srv/volumes/elasticsearch
           server: ${_param:elasticsearch_glusterfs_service_host}
-          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/gerrit.yml b/glusterfs/client/volume/gerrit.yml
index 39e9559..4598683 100644
--- a/glusterfs/client/volume/gerrit.yml
+++ b/glusterfs/client/volume/gerrit.yml
@@ -1,12 +1,15 @@
 parameters:
   _param:
     gerrit_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
   glusterfs:
     client:
       volumes:
         gerrit:
           path: /srv/volumes/gerrit
           server: ${_param:gerrit_glusterfs_service_host}
-          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
           user: 1000
           group: 1000
diff --git a/glusterfs/client/volume/glance.yml b/glusterfs/client/volume/glance.yml
index 25cc988..ec593b9 100644
--- a/glusterfs/client/volume/glance.yml
+++ b/glusterfs/client/volume/glance.yml
@@ -1,6 +1,9 @@
 parameters:
   _param:
     glance_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
   glusterfs:
     client:
       volumes:
@@ -9,4 +12,4 @@
           server: ${_param:glance_glusterfs_service_host}
           user: glance
           group: glance
-          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/jenkins.yml b/glusterfs/client/volume/jenkins.yml
index 8ca47e2..c9fa258 100644
--- a/glusterfs/client/volume/jenkins.yml
+++ b/glusterfs/client/volume/jenkins.yml
@@ -1,12 +1,15 @@
 parameters:
   _param:
     jenkins_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
   glusterfs:
     client:
       volumes:
         jenkins:
           path: /srv/volumes/jenkins
           server: ${_param:jenkins_glusterfs_service_host}
-          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
           user: 1000
           group: 1000
diff --git a/glusterfs/client/volume/keystone.yml b/glusterfs/client/volume/keystone.yml
index 415e93f..7139029 100644
--- a/glusterfs/client/volume/keystone.yml
+++ b/glusterfs/client/volume/keystone.yml
@@ -1,6 +1,9 @@
 parameters:
   _param:
     keystone_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
   glusterfs:
     client:
       volumes:
@@ -9,4 +12,4 @@
           server: ${_param:keystone_glusterfs_service_host}
           user: keystone
           group: keystone
-          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/mysql.yml b/glusterfs/client/volume/mysql.yml
index 3208a71..7761a07 100644
--- a/glusterfs/client/volume/mysql.yml
+++ b/glusterfs/client/volume/mysql.yml
@@ -1,10 +1,13 @@
 parameters:
   _param:
     mysql_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
   glusterfs:
     client:
       volumes:
         mysql:
           path: /srv/volumes/mysql
           server: ${_param:mysql_glusterfs_service_host}
-          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/openldap.yml b/glusterfs/client/volume/openldap.yml
index 0de1d10..22b10cd 100644
--- a/glusterfs/client/volume/openldap.yml
+++ b/glusterfs/client/volume/openldap.yml
@@ -1,10 +1,13 @@
 parameters:
   _param:
     openldap_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
   glusterfs:
     client:
       volumes:
         openldap:
           path: /srv/volumes/openldap
           server: ${_param:openldap_glusterfs_service_host}
-          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/postgresql.yml b/glusterfs/client/volume/postgresql.yml
index 087afa9..b49c905 100644
--- a/glusterfs/client/volume/postgresql.yml
+++ b/glusterfs/client/volume/postgresql.yml
@@ -1,10 +1,13 @@
 parameters:
   _param:
     postgresql_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
   glusterfs:
     client:
       volumes:
         postgresql:
           path: /srv/volumes/postgresql
           server: ${_param:postgresql_glusterfs_service_host}
-          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/prometheus.yml b/glusterfs/client/volume/prometheus.yml
index 49145d3..3fae59b 100644
--- a/glusterfs/client/volume/prometheus.yml
+++ b/glusterfs/client/volume/prometheus.yml
@@ -1,10 +1,13 @@
 parameters:
   _param:
     prometheus_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
   glusterfs:
     client:
       volumes:
         prometheus:
           path: /srv/volumes/prometheus
           server: ${_param:prometheus_glusterfs_service_host}
-          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/pushkin.yml b/glusterfs/client/volume/pushkin.yml
index af3ee44..ee09ef8 100644
--- a/glusterfs/client/volume/pushkin.yml
+++ b/glusterfs/client/volume/pushkin.yml
@@ -1,10 +1,13 @@
 parameters:
   _param:
     pushkin_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
   glusterfs:
     client:
       volumes:
         pushkin:
           path: /srv/volumes/pushkin
           server: ${_param:pushkin_glusterfs_service_host}
-          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/registry.yml b/glusterfs/client/volume/registry.yml
index 2bb5019..af932a6 100644
--- a/glusterfs/client/volume/registry.yml
+++ b/glusterfs/client/volume/registry.yml
@@ -1,10 +1,13 @@
 parameters:
   _param:
     registry_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
   glusterfs:
     client:
       volumes:
         registry:
           path: /srv/volumes/registry
           server: ${_param:registry_glusterfs_service_host}
-          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/rundeck.yml b/glusterfs/client/volume/rundeck.yml
index 05709ea..f0c6ccd 100644
--- a/glusterfs/client/volume/rundeck.yml
+++ b/glusterfs/client/volume/rundeck.yml
@@ -1,10 +1,13 @@
 parameters:
   _param:
     rundeck_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
   glusterfs:
     client:
       volumes:
         rundeck:
           path: /srv/volumes/rundeck
           server: ${_param:rundeck_glusterfs_service_host}
-          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/salt.yml b/glusterfs/client/volume/salt.yml
index 7ed434a..048d38b 100644
--- a/glusterfs/client/volume/salt.yml
+++ b/glusterfs/client/volume/salt.yml
@@ -1,10 +1,13 @@
 parameters:
   _param:
     salt_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
   glusterfs:
     client:
       volumes:
         saltmaster:
           path: /etc/salt/pki/master
           server: ${_param:salt_glusterfs_service_host}
-          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/salt_pki.yml b/glusterfs/client/volume/salt_pki.yml
index 822a086..9083e19 100644
--- a/glusterfs/client/volume/salt_pki.yml
+++ b/glusterfs/client/volume/salt_pki.yml
@@ -1,10 +1,13 @@
 parameters:
   _param:
     salt_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
   glusterfs:
     client:
       volumes:
         salt_pki:
           path: /srv/salt/pki
           server: ${_param:salt_glusterfs_service_host}
-          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/jenkins/client/job/debian/packages/extra.yml b/jenkins/client/job/debian/packages/extra.yml
index 15d0bc4..9d6755e 100644
--- a/jenkins/client/job/debian/packages/extra.yml
+++ b/jenkins/client/job/debian/packages/extra.yml
@@ -7,62 +7,97 @@
           jobs:
             - package: librdkafka
               dist: trusty
+              build: pipeline
             - package: python-kafka
               dist: trusty
+              build: pipeline
             - package: liburcu
               dist: trusty
+              build: pipeline
             - package: python-kazoo
               dist: trusty
+              build: pipeline
             - package: python-pathlib
               dist: trusty
+              build: pipeline
             - package: kafka
               dist: trusty
+              build: pipeline
             - package: python-geventhttpclient
               dist: trusty
+              build: pipeline
             - package: python-consistent-hash
               dist: trusty
+              build: pipeline
             - package: libipfix
               dist: trusty
+              build: pipeline
             - package: python-ncclient
               dist: trusty
+              build: pipeline
             - package: python-pycassa
               dist: trusty
+              build: pipeline
             - package: python-xmltodict
               dist: trusty
+              build: pipeline
             - package: python-backports.ssl-match-hostname
               dist: trusty
+              build: pipeline
             - package: python-certifi
               dist: trusty
+              build: pipeline
             - package: python-docker
               dist: trusty
+              build: pipeline
             - package: python-cassandra-driver
               dist: trusty
+              build: pipeline
             - package: python-redis
               dist: trusty
+              build: pipeline
             - package: python-tabulate
               dist: trusty
+              build: pipeline
             - package: cassandra-cpp-driver
               dist: trusty
+              build: pipeline
             - package: libuv1
               dist: trusty
+              build: pipeline
             - package: python-sseclient
               dist: trusty
+              build: pipeline
             - package: librdkafka
               dist: xenial
+              build: pipeline
             - package: python-kafka
               dist: xenial
+              build: pipeline
             - package: python-geventhttpclient
               dist: xenial
+              build: pipeline
             - package: python-docker
               dist: xenial
+              build: pipeline
             - package: python-consistent-hash
               dist: xenial
+              build: pipeline
             - package: libipfix
               dist: xenial
+              build: pipeline
             - package: cassandra-cpp-driver
               dist: xenial
+              build: pipeline
             - package: python-sseclient
               dist: xenial
+              build: pipeline
+            - package: telegraf
+              dist: trusty
+              build: telegraf
+            - package: telegraf
+              dist: xenial
+              build: telegraf
           template:
             type: workflow-scm
             concurrent: false
@@ -70,7 +105,7 @@
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
               credentials: "gerrit"
-              script: build-debian-packages-pipeline.groovy
+              script: build-debian-packages-{{build}}.groovy
             trigger:
               gerrit:
                 project:
diff --git a/jenkins/client/job/debian/packages/salt.yml b/jenkins/client/job/debian/packages/salt.yml
index 5e6665c..3c73fa7 100644
--- a/jenkins/client/job/debian/packages/salt.yml
+++ b/jenkins/client/job/debian/packages/salt.yml
@@ -41,6 +41,8 @@
               dist: trusty
             - name: dekapod
               dist: trusty
+            - name: designate
+              dist: trusty
             - name: devops-portal
               dist: trusty
             - name: docker
@@ -221,6 +223,8 @@
               dist: xenial
             - name: dekapod
               dist: xenial
+            - name: designate
+              dist: xenial
             - name: devops-portal
               dist: xenial
             - name: docker
diff --git a/jenkins/client/job/deploy/lab/mk/cleanup.yml b/jenkins/client/job/deploy/lab/mk/cleanup.yml
index 72e40f5..c2b32cc 100644
--- a/jenkins/client/job/deploy/lab/mk/cleanup.yml
+++ b/jenkins/client/job/deploy/lab/mk/cleanup.yml
@@ -35,3 +35,35 @@
             HEAT_STACK_NAME:
               type: string
               description: This stack will be deleted.
+        delete-failed-stacks:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - delete failed stacks"
+          discard:
+            build:
+              keep_num: 20
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: delete-broken-stacks-pipeline.groovy
+          trigger:
+            timer:
+              spec: "0 H * * *"
+          param:
+            # openstack api
+            OPENSTACK_API_URL:
+              type: string
+              default: "https://vpc.tcpisek.cz:5000/v2.0"
+            OPENSTACK_API_CREDENTIALS:
+              type: string
+              default: "openstack-qa-credentials"
+            OPENSTACK_API_PROJECT:
+              type: string
+              default: "mirantis_mk20_qa"
+            OPENSTACK_API_CLIENT:
+              type: string
+              default: "liberty"
+            OPENSTACK_API_VERSION:
+              type: string
+              default: "2"
\ No newline at end of file
diff --git a/jenkins/client/job/deploy/lab/mk/init.yml b/jenkins/client/job/deploy/lab/mk/init.yml
index 0fc26f7..17dca28 100644
--- a/jenkins/client/job/deploy/lab/mk/init.yml
+++ b/jenkins/client/job/deploy/lab/mk/init.yml
@@ -19,6 +19,9 @@
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
               credentials: "gerrit"
               script: lab-pipeline.groovy
+            trigger:
+              timer:
+                spec: "{{timer}}"
             param:
               # deployments and test settings
               STACK_TYPE:
diff --git a/jenkins/client/job/deploy/lab/mk/physical.yml b/jenkins/client/job/deploy/lab/mk/physical.yml
index 0767359..8e6d498 100644
--- a/jenkins/client/job/deploy/lab/mk/physical.yml
+++ b/jenkins/client/job/deploy/lab/mk/physical.yml
@@ -7,15 +7,19 @@
         install: core,kvm,openstack,contrail
         stack_type: physical
         test: openstack
+        timer: ""
       - lab: mcp10_opencontrail_nfv
         install: core,kvm,openstack,nfv
         stack_type: physical
         test: openstack
+        timer: ""
       - lab: mcp10_dvr
         install: core,kvm,openstack,dvr
         stack_type: physical
         test: openstack
+        timer: ""
       - lab: mcp10_non_dvr
         install: core,kvm,openstack
         stack_type: physical
         test: openstack
+        timer: ""
diff --git a/jenkins/client/job/deploy/lab/mk/virtual.yml b/jenkins/client/job/deploy/lab/mk/virtual.yml
index 7e05368..35b8de6 100644
--- a/jenkins/client/job/deploy/lab/mk/virtual.yml
+++ b/jenkins/client/job/deploy/lab/mk/virtual.yml
@@ -8,10 +8,12 @@
         install: core,openstack
         stack_type: heat
         test: openstack
+        timer: ""
       - lab: virtual_mk20_basic
         install: core,openstack
         stack_type: heat
         test: openstack
+        timer: ""
       # mk22
       - lab: virtual_mk22_advanced
         install: core,openstack
@@ -21,6 +23,7 @@
         install: core,openstack
         stack_type: heat
         test: openstack
+        timer: ""
       # mcp05
       - lab: virtual_mcp05_dvr
         install: core,openstack,dvr
@@ -30,33 +33,46 @@
         install: core,openstack,ovs
         stack_type: heat
         test: openstack
+        timer: ""
       # mcp10
       - lab: virtual_mcp10_contrail
         install: core,openstack,contrail
         stack_type: heat
         test: openstack
+        timer: "H H(0-6) * * *"
       - lab: virtual_mcp10_dvr
         install: core,openstack,dvr
         stack_type: heat
         test: openstack
+        timer: "H H(0-6) * * *"
       - lab: virtual_mcp10_ovs
         install: core,openstack,ovs
         stack_type: heat
         test: openstack
+        timer: "H H(0-6) * * *"
       # mcp11
       - lab: virtual_mcp11_contrail
         install: core,openstack,contrail
         stack_type: heat
         test: openstack
+        timer: ""
       - lab: virtual_mcp11_dvr
         install: core,openstack,dvr
         stack_type: heat
         test: openstack
+        timer: ""
       - lab: virtual_mcp11_ovs
         install: core,openstack,ovs
         stack_type: heat
         test: openstack
-      - lab: virtual_mcp11_k8s
-        install: core,k8s
+        timer: ""
+      - lab: virtual_mcp11_k8s_calico
+        install: core,k8s,calico
         stack_type: heat
         test: k8s
+        timer: "H H(0-6) * * *"
+      - lab: virtual_mcp11_k8s_contrail
+        install: core,k8s,contrail
+        stack_type: heat
+        test: k8s
+        timer: "H H(0-6) * * *"
diff --git a/jenkins/client/job/docker/init.yml b/jenkins/client/job/docker/init.yml
index 7bb0dac..2f1f49a 100644
--- a/jenkins/client/job/docker/init.yml
+++ b/jenkins/client/job/docker/init.yml
@@ -1,6 +1,11 @@
 parameters:
   jenkins:
     client:
+      view:
+        Docker:
+          enabled: true
+          type: ListView
+          include_regex: ".*-docker-.*"
       job_template:
         docker-build-image:
           name: docker-build-image-{{name}}-{{branch}}
diff --git a/jenkins/client/job/opencontrail/build/generic.yml b/jenkins/client/job/opencontrail/build/generic.yml
index 75ba8bf..a26472b 100644
--- a/jenkins/client/job/opencontrail/build/generic.yml
+++ b/jenkins/client/job/opencontrail/build/generic.yml
@@ -49,6 +49,18 @@
               branch: R3.2
               ppa: mirantis-opencontrail/opencontrail-3.2
               upload_source_package: true
+            - buildname: oc666
+              os: ubuntu
+              dist: trusty
+              branch: master
+              ppa: mirantis-opencontrail/opencontrail-master
+              upload_source_package: false
+            - buildname: oc666
+              os: ubuntu
+              dist: xenial
+              branch: master
+              ppa: mirantis-opencontrail/opencontrail-master
+              upload_source_package: false
           template:
             discard:
              build:
diff --git a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
index 73609c4..1716a44 100644
--- a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
+++ b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
@@ -59,6 +59,7 @@
             - name: letsencrypt
             - name: libvirt
             - name: linux
+            - name: lldp
             - name: logrotate
             - name: maas
             - name: magnum
diff --git a/jenkins/client/job/salt-formulas/tests.yml b/jenkins/client/job/salt-formulas/tests.yml
index 1bb0363..0912cbb 100644
--- a/jenkins/client/job/salt-formulas/tests.yml
+++ b/jenkins/client/job/salt-formulas/tests.yml
@@ -24,6 +24,7 @@
             - name: chrony
             - name: cinder
             - name: collectd
+            - name: designate
             - name: dekapod
             - name: devops-portal
             - name: docker
@@ -57,6 +58,7 @@
             - name: letsencrypt
             - name: libvirt
             - name: linux
+            - name: lldp
             - name: logrotate
             - name: maas
             - name: magnum
diff --git a/keystone/client/service/cinder.yml b/keystone/client/service/cinder.yml
index 335985f..ffb5510 100644
--- a/keystone/client/service/cinder.yml
+++ b/keystone/client/service/cinder.yml
@@ -21,10 +21,10 @@
                 public_address: ${_param:cluster_public_host}
                 public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8776
-                public_path: '/v1/$(tenant_id)s'
+                public_path: '/v1/$(project_id)s'
                 internal_address: ${_param:cinder_service_host}
                 internal_port: 8776
-                internal_path: '/v1/$(tenant_id)s'
+                internal_path: '/v1/$(project_id)s'
                 admin_address: ${_param:cinder_service_host}
                 admin_port: 8776
-                admin_path: '/v1/$(tenant_id)s'
+                admin_path: '/v1/$(project_id)s'
diff --git a/keystone/client/service/cinder2.yml b/keystone/client/service/cinder2.yml
index cc150ff..e0e2636 100644
--- a/keystone/client/service/cinder2.yml
+++ b/keystone/client/service/cinder2.yml
@@ -21,10 +21,10 @@
                 public_address: ${_param:cluster_public_host}
                 public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8776
-                public_path: '/v2/$(tenant_id)s'
+                public_path: '/v2/$(project_id)s'
                 internal_address: ${_param:cinder_service_host}
                 internal_port: 8776
-                internal_path: '/v2/$(tenant_id)s'
+                internal_path: '/v2/$(project_id)s'
                 admin_address: ${_param:cinder_service_host}
                 admin_port: 8776
-                admin_path: '/v2/$(tenant_id)s'
+                admin_path: '/v2/$(project_id)s'
diff --git a/keystone/client/service/cinder3.yml b/keystone/client/service/cinder3.yml
index caf24c2..43a805c 100644
--- a/keystone/client/service/cinder3.yml
+++ b/keystone/client/service/cinder3.yml
@@ -21,11 +21,11 @@
                 public_address: ${_param:cluster_public_host}
                 public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8776
-                public_path: '/v3/$(tenant_id)s'
+                public_path: '/v3/$(project_id)s'
                 internal_address: ${_param:cinder_service_host}
                 internal_port: 8776
-                internal_path: '/v3/$(tenant_id)s'
+                internal_path: '/v3/$(project_id)s'
                 admin_address: ${_param:cinder_service_host}
                 admin_port: 8776
-                admin_path: '/v3/$(tenant_id)s'
+                admin_path: '/v3/$(project_id)s'
 
diff --git a/keystone/client/service/heat.yml b/keystone/client/service/heat.yml
index 692ceee..d7eadd5 100644
--- a/keystone/client/service/heat.yml
+++ b/keystone/client/service/heat.yml
@@ -24,10 +24,10 @@
                 public_address: ${_param:cluster_public_host}
                 public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8004
-                public_path: '/v1/%(tenant_id)s'
+                public_path: '/v1/%(project_id)s'
                 internal_address: ${_param:heat_service_host}
                 internal_port: 8004
-                internal_path: '/v1/%(tenant_id)s'
+                internal_path: '/v1/%(project_id)s'
                 admin_address: ${_param:heat_service_host}
                 admin_port: 8004
-                admin_path: '/v1/%(tenant_id)s'
+                admin_path: '/v1/%(project_id)s'
diff --git a/keystone/client/service/murano.yml b/keystone/client/service/murano.yml
index 4cb6211..5e65038 100644
--- a/keystone/client/service/murano.yml
+++ b/keystone/client/service/murano.yml
@@ -12,19 +12,19 @@
                   is_admin: true
                   password: ${_param:keystone_murano_password}
                   email: ${_param:admin_email}
-      service:
-        murano:
-          type: application-catalog
-          description: Application Catalog for OpenStack
-          endpoints:
-            - region: ${_param:openstack_region}
-              public_address: ${_param:cluster_public_host}
-              public_protocol: ${_param:cluster_public_protocol}
-              public_port: 8082
-              public_path: ''
-              internal_address: ${_param:murano_service_host}
-              internal_port: 8082
-              internal_path: ''
-              admin_address: ${_param:murano_service_host}
-              admin_port: 8082
-              admin_path: ''
+          service:
+            murano:
+              type: application-catalog
+              description: Application Catalog for OpenStack
+              endpoints:
+                - region: ${_param:openstack_region}
+                  public_address: ${_param:cluster_public_host}
+                  public_protocol: ${_param:cluster_public_protocol}
+                  public_port: 8082
+                  public_path: ''
+                  internal_address: ${_param:murano_service_host}
+                  internal_port: 8082
+                  internal_path: ''
+                  admin_address: ${_param:murano_service_host}
+                  admin_port: 8082
+                  admin_path: ''
diff --git a/keystone/client/service/nova.yml b/keystone/client/service/nova.yml
index ed703d0..a0d698b 100644
--- a/keystone/client/service/nova.yml
+++ b/keystone/client/service/nova.yml
@@ -21,10 +21,10 @@
                 public_address: ${_param:cluster_public_host}
                 public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8774
-                public_path: '/v2/$(tenant_id)s'
+                public_path: '/v2/$(project_id)s'
                 internal_address: ${_param:nova_service_host}
                 internal_port: 8774
-                internal_path: '/v2/$(tenant_id)s'
+                internal_path: '/v2/$(project_id)s'
                 admin_address: ${_param:nova_service_host}
                 admin_port: 8774
-                admin_path: '/v2/$(tenant_id)s'
+                admin_path: '/v2/$(project_id)s'
diff --git a/keystone/client/service/nova21.yml b/keystone/client/service/nova21.yml
index 48767de..328aefd 100644
--- a/keystone/client/service/nova21.yml
+++ b/keystone/client/service/nova21.yml
@@ -21,13 +21,13 @@
                 public_address: ${_param:cluster_public_host}
                 public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8774
-                public_path: '/v2/$(tenant_id)s'
+                public_path: '/v2/$(project_id)s'
                 internal_address: ${_param:nova_service_host}
                 internal_port: 8774
-                internal_path: '/v2/$(tenant_id)s'
+                internal_path: '/v2/$(project_id)s'
                 admin_address: ${_param:nova_service_host}
                 admin_port: 8774
-                admin_path: '/v2/$(tenant_id)s'
+                admin_path: '/v2/$(project_id)s'
             nova:
               type: compute
               description: OpenStack Compute Service v2.1
@@ -36,10 +36,10 @@
                 public_address: ${_param:cluster_public_host}
                 public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8774
-                public_path: '/v2.1'
+                public_path: '/v2.1/$(project_id)s'
                 internal_address: ${_param:nova_service_host}
                 internal_port: 8774
-                internal_path: '/v2.1'
+                internal_path: '/v2.1/$(project_id)s'
                 admin_address: ${_param:nova_service_host}
                 admin_port: 8774
-                admin_path: '/v2.1'
+                admin_path: '/v2.1/$(project_id)s'
diff --git a/keystone/client/service/radosgw-s3.yml b/keystone/client/service/radosgw-s3.yml
index 9b434af..00efe1b 100644
--- a/keystone/client/service/radosgw-s3.yml
+++ b/keystone/client/service/radosgw-s3.yml
@@ -12,19 +12,19 @@
                   is_admin: true
                   password: ${_param:keystone_swift_password}
                   email: ${_param:admin_email}
-      service:
-        radosgw-s3:
-          type: s3
-          description: S3 Service (radosgw)
-          endpoints:
-            - region: ${_param:openstack_region}
-              public_address: ${_param:cluster_public_host}
-              public_protocol: ${_param:cluster_public_protocol}
-              public_port: 8081
-              public_path: '/' # /$(tenant_id)s
-              internal_address: ${_param:radosgw_service_host}
-              internal_port: 8081
-              internal_path: '/'
-              admin_address: ${_param:radosgw_service_host}
-              admin_port: 8081
-              admin_path: '/'
+          service:
+            radosgw-s3:
+              type: s3
+              description: S3 Service (radosgw)
+              endpoints:
+                - region: ${_param:openstack_region}
+                  public_address: ${_param:cluster_public_host}
+                  public_protocol: ${_param:cluster_public_protocol}
+                  public_port: 8081
+                  public_path: '/' # /$(project_id)s
+                  internal_address: ${_param:radosgw_service_host}
+                  internal_port: 8081
+                  internal_path: '/'
+                  admin_address: ${_param:radosgw_service_host}
+                  admin_port: 8081
+                  admin_path: '/'
diff --git a/keystone/client/service/radosgw-swift.yml b/keystone/client/service/radosgw-swift.yml
index 82d311f..9c7547e 100644
--- a/keystone/client/service/radosgw-swift.yml
+++ b/keystone/client/service/radosgw-swift.yml
@@ -12,19 +12,19 @@
                   is_admin: true
                   password: ${_param:keystone_swift_password}
                   email: ${_param:admin_email}
-      service:
-        radosgw-swift:
-          type: object-store
-          description: Swift Service (radosgw)
-          endpoints:
-            - region: ${_param:openstack_region}
-              public_address: ${_param:cluster_public_host}
-              public_protocol: ${_param:cluster_public_protocol}
-              public_port: 8081
-              public_path: '/swift/v1' # /$(tenant_id)s
-              internal_address: ${_param:radosgw_service_host}
-              internal_port: 8081
-              internal_path: '/swift/v1'
-              admin_address: ${_param:radosgw_service_host}
-              admin_port: 8081
-              admin_path: '/swift/v1'
+          service:
+            radosgw-swift:
+              type: object-store
+              description: Swift Service (radosgw)
+              endpoints:
+                - region: ${_param:openstack_region}
+                  public_address: ${_param:cluster_public_host}
+                  public_protocol: ${_param:cluster_public_protocol}
+                  public_port: 8081
+                  public_path: '/swift/v1' # /$(project_id)s
+                  internal_address: ${_param:radosgw_service_host}
+                  internal_port: 8081
+                  internal_path: '/swift/v1'
+                  admin_address: ${_param:radosgw_service_host}
+                  admin_port: 8081
+                  admin_path: '/swift/v1'
diff --git a/keystone/client/service/sahara.yml b/keystone/client/service/sahara.yml
index 0dbb136..2cd3260 100644
--- a/keystone/client/service/sahara.yml
+++ b/keystone/client/service/sahara.yml
@@ -12,19 +12,19 @@
                   is_admin: true
                   password: ${_param:keystone_sahara_password}
                   email: ${_param:admin_email}
-      service:
-        swift:
-          type: data-processing
-          description: Sahara Data Processing
-          endpoints:
-            - region: ${_param:openstack_region}
-              public_address: ${_param:cluster_public_host}
-              public_protocol: ${_param:cluster_public_protocol}
-              public_port: 8386
-              public_path: '/v1.1/%(tenant_id)s'
-              internal_address: ${_param:sahara_service_host}
-              internal_port: 8386
-              internal_path: '/v1.1/%(tenant_id)s'
-              admin_address: ${_param:sahara_service_host}
-              admin_port: 8386
-              admin_path: '/v1.1/%(tenant_id)s'
+          service:
+            swift:
+              type: data-processing
+              description: Sahara Data Processing
+              endpoints:
+                - region: ${_param:openstack_region}
+                  public_address: ${_param:cluster_public_host}
+                  public_protocol: ${_param:cluster_public_protocol}
+                  public_port: 8386
+                  public_path: '/v1.1/%(project_id)s'
+                  internal_address: ${_param:sahara_service_host}
+                  internal_port: 8386
+                  internal_path: '/v1.1/%(project_id)s'
+                  admin_address: ${_param:sahara_service_host}
+                  admin_port: 8386
+                  admin_path: '/v1.1/%(project_id)s'
diff --git a/keystone/client/service/swift-s3.yml b/keystone/client/service/swift-s3.yml
index 6850dbd..7bc1373 100644
--- a/keystone/client/service/swift-s3.yml
+++ b/keystone/client/service/swift-s3.yml
@@ -12,20 +12,20 @@
                   is_admin: true
                   password: ${_param:keystone_swift_password}
                   email: ${_param:admin_email}
-      service:
-        swift-s3:
-          type: object-store
-          description: S3 Service (swift)
-          region: ${_param:keystone_region}
-          endpoints:
-            - region: ${_param:openstack_region}
-              public_address: ${_param:cluster_public_host}
-              public_protocol: ${_param:cluster_public_protocol}
-              public_port: 8080
-              public_path: '/v1/AUTH_%(tenant_id)s'
-              internal_address: ${_param:swift_service_host}
-              internal_port: 8080
-              internal_path: '/v1/AUTH_%(tenant_id)s'
-              admin_address: ${_param:swift_service_host}
-              admin_port: 8080
-              admin_path: '/'
+          service:
+            swift-s3:
+              type: object-store
+              description: S3 Service (swift)
+              region: ${_param:keystone_region}
+              endpoints:
+                - region: ${_param:openstack_region}
+                  public_address: ${_param:cluster_public_host}
+                  public_protocol: ${_param:cluster_public_protocol}
+                  public_port: 8080
+                  public_path: '/v1/AUTH_%(project_id)s'
+                  internal_address: ${_param:swift_service_host}
+                  internal_port: 8080
+                  internal_path: '/v1/AUTH_%(project_id)s'
+                  admin_address: ${_param:swift_service_host}
+                  admin_port: 8080
+                  admin_path: '/'
diff --git a/keystone/client/service/swift.yml b/keystone/client/service/swift.yml
index 94636a4..781fab9 100644
--- a/keystone/client/service/swift.yml
+++ b/keystone/client/service/swift.yml
@@ -12,19 +12,19 @@
                   is_admin: true
                   password: ${_param:keystone_swift_password}
                   email: ${_param:admin_email}
-      service:
-        swift:
-          type: object-store
-          description: Swift Service
-          endpoints:
-            - region: ${_param:openstack_region}
-              public_address: ${_param:cluster_public_host}
-              public_protocol: ${_param:cluster_public_protocol}
-              public_port: 8080
-              public_path: '/v1/AUTH_%(tenant_id)s'
-              internal_address: ${_param:swift_service_host}
-              internal_port: 8080
-              internal_path: '/v1/AUTH_%(tenant_id)s'
-              admin_address: ${_param:swift_service_host}
-              admin_port: 8080
-              admin_path: '/'
+          service:
+            swift:
+              type: object-store
+              description: Swift Service
+              endpoints:
+                - region: ${_param:openstack_region}
+                  public_address: ${_param:cluster_public_host}
+                  public_protocol: ${_param:cluster_public_protocol}
+                  public_port: 8080
+                  public_path: '/v1/AUTH_%(project_id)s'
+                  internal_address: ${_param:swift_service_host}
+                  internal_port: 8080
+                  internal_path: '/v1/AUTH_%(project_id)s'
+                  admin_address: ${_param:swift_service_host}
+                  admin_port: 8080
+                  admin_path: '/'
diff --git a/keystone/server/cluster.yml b/keystone/server/cluster.yml
index c7f11a0..6db4f7a 100644
--- a/keystone/server/cluster.yml
+++ b/keystone/server/cluster.yml
@@ -33,9 +33,11 @@
         location: /var/lib/keystone/fernet-keys
       message_queue:
         engine: rabbitmq
-        host: ${_param:openstack_message_queue_address}
-        port: 5672
+        members:
+          - host: ${_param:openstack_message_queue_node01_address}
+          - host: ${_param:openstack_message_queue_node02_address}
+          - host: ${_param:openstack_message_queue_node03_address}
         user: openstack
         password: ${_param:rabbitmq_openstack_password}
         virtual_host: '/openstack'
-        ha_queues: true
\ No newline at end of file
+        ha_queues: true
diff --git a/linux/system/repo/mcp/openstack.yml b/linux/system/repo/mcp/openstack.yml
index 861ff5c..9f26821 100644
--- a/linux/system/repo/mcp/openstack.yml
+++ b/linux/system/repo/mcp/openstack.yml
@@ -1,46 +1,45 @@
 parameters:
   _param:
-    mcp_repo_version: 1.0
     apt_mk_version: stable
   linux:
     system:
       repo:
         mirantis_openstack:
-          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename} ${_param:openstack_version} main"
+          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename} ${_param:openstack_version} main"
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename}/archive-mcp${_param:mcp_repo_version}.key"
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename}/archive-mcp${_param:openstack_version}.key"
           pin:
           - pin: 'release a=${_param:openstack_version}'
             priority: 1100
             package: '*'
         mirantis_openstack_hotfix:
-          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename} ${_param:openstack_version}-hotfix main"
+          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename} ${_param:openstack_version}-hotfix main"
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename}/archive-mcp${_param:mcp_repo_version}.key"
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename}/archive-mcp${_param:openstack_version}.key"
           pin:
           - pin: 'release a=${_param:openstack_version}-hotfix'
             priority: 1100
             package: '*'
         mirantis_openstack_security:
-          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename} ${_param:openstack_version}-security main"
+          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename} ${_param:openstack_version}-security main"
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename}/archive-mcp${_param:mcp_repo_version}.key"
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename}/archive-mcp${_param:openstack_version}.key"
           pin:
           - pin: 'release a=${_param:openstack_version}-security'
             priority: 1100
             package: '*'
         mirantis_openstack_updates:
-          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename} ${_param:openstack_version}-updates main"
+          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename} ${_param:openstack_version}-updates main"
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename}/archive-mcp${_param:mcp_repo_version}.key"
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename}/archive-mcp${_param:openstack_version}.key"
           pin:
           - pin: 'release a=${_param:openstack_version}-uptades'
             priority: 1100
             package: '*'
         mirantis_openstack_holdback:
-          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename} ${_param:openstack_version}-holdback main"
+          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename} ${_param:openstack_version}-holdback main"
           architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename}/archive-mcp${_param:mcp_repo_version}.key"
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename}/archive-mcp${_param:openstack_version}.key"
           pin:
           - pin: 'release a=${_param:openstack_version}-holdback'
             priority: 1100
diff --git a/linux/system/repo_local/glusterfs.yml b/linux/system/repo_local/glusterfs.yml
index c34a6f2..cb298c4 100644
--- a/linux/system/repo_local/glusterfs.yml
+++ b/linux/system/repo_local/glusterfs.yml
@@ -6,6 +6,6 @@
       repo:
         glusterfs:
           refresh_db: ${_param:linux_repo_refresh_db}
-          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:apt_mk_version} main"
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:apt_mk_version} glusterfs"
           architectures: amd64
-          key_url: "http://${_param:local_repo_url}/public.gpg"
\ No newline at end of file
+          key_url: "http://${_param:local_repo_url}/public.gpg"
diff --git a/linux/system/repo_local/mcp/extra.yml b/linux/system/repo_local/mcp/extra.yml
index 67d85a5..a0c54d6 100644
--- a/linux/system/repo_local/mcp/extra.yml
+++ b/linux/system/repo_local/mcp/extra.yml
@@ -5,8 +5,7 @@
     system:
       repo:
         mcp_extra:
-          default: true
           refresh_db: ${_param:linux_repo_refresh_db}
           source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:apt_mk_version} extra"
           architectures: amd64
-          key_url: "http://${_param:local_repo_url}/public.gpg"
\ No newline at end of file
+          key_url: "http://${_param:local_repo_url}/public.gpg"
diff --git a/linux/system/single.yml b/linux/system/single.yml
index fad25ae..3f907bf 100644
--- a/linux/system/single.yml
+++ b/linux/system/single.yml
@@ -11,6 +11,8 @@
           version: latest
         cloud-init:
           version: purged
+        mcelog:
+          version: latest
       kernel:
         modules:
           - nf_conntrack
diff --git a/linux/system/sudo.yml b/linux/system/sudo.yml
index cafd360..a2c7822 100644
--- a/linux/system/sudo.yml
+++ b/linux/system/sudo.yml
@@ -24,11 +24,11 @@
     sudo_coreutils_safe:
     - /usr/bin/less
     sudo_salt_safe:
-    - /usr/bin/salt state*
-    - /usr/bin/salt service*
-    - /usr/bin/salt pillar*
-    - /usr/bin/salt grains*
-    - /usr/bin/salt saltutil*
+    - /usr/bin/salt * state*
+    - /usr/bin/salt * service*
+    - /usr/bin/salt * pillar*
+    - /usr/bin/salt * grains*
+    - /usr/bin/salt * saltutil*
     - /usr/bin/salt-call state*
     - /usr/bin/salt-call service*
     - /usr/bin/salt-call pillar*
diff --git a/nginx/server/proxy/openstack/rally.yml b/nginx/server/proxy/openstack/rally.yml
new file mode 100644
index 0000000..0f4b58f
--- /dev/null
+++ b/nginx/server/proxy/openstack/rally.yml
@@ -0,0 +1,14 @@
+parameters:
+  nginx:
+    server:
+      site:
+        nginx_static_rally_results:
+          enabled: true
+          type: nginx_static
+          name: rally_results
+          check: false
+          autoindex: true
+          host:
+            name: ${_param:cluster_public_host}
+            port: 8989
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nova/compute/cluster.yml b/nova/compute/cluster.yml
index f7b2ee5..4d07a3e 100644
--- a/nova/compute/cluster.yml
+++ b/nova/compute/cluster.yml
@@ -5,6 +5,7 @@
     nova_vncproxy_url: https://${_param:cluster_public_host}:6080
     nova_compute_virtualization: kvm
     nova_compute_avail_zone:
+    nova_aggregates: []
     nova_compute_ssh_public: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCltIn93BcTMzNK/n2eBze6PyTkmIgdDkeXNR9X4DqE48Va80ojv2pq8xuaBxiNITJzyl+4p4UvTTXo+HmuX8qbHvqgMGXvuPUCpndEfb2r67f6vpMqPwMgBrUg2ZKgN4OsSDHU+H0dia0cEaTjz5pvbUy9lIsSyhrqOUVF9reJq+boAvVEedm8fUqiZuiejAw2D27+rRtdEPgsKMnh3626YEsr963q4rjU/JssV/iKMNu7mk2a+koOrJ+aHvcVU8zJjfA0YghoeVT/I3GLU/MB/4tD/RyR8GM+UYbI4sgAC7ZOCdQyHdJgnEzx3SJIwcS65U0T2XYvn2qXHXqJ9iGZ root@mirantis.com
     nova_compute_ssh_private: |
       -----BEGIN RSA PRIVATE KEY-----
@@ -45,6 +46,7 @@
       enabled: true
       virtualization: ${_param:nova_compute_virtualization}
       availability_zone: ${_param:nova_compute_avail_zone}
+      aggregates: ${_param:nova_aggregates}
       heal_instance_info_cache_interval: 60
       vncproxy_url: ${_param:nova_vncproxy_url}
       bind:
diff --git a/opencontrail/control/control.yml b/opencontrail/control/control.yml
index 794682d..9c1d905 100644
--- a/opencontrail/control/control.yml
+++ b/opencontrail/control/control.yml
@@ -20,7 +20,10 @@
       bind:
         address: ${_param:cluster_local_address}
       message_queue:
-        host: ${_param:openstack_message_queue_address}
+        members:
+          - host: ${_param:openstack_message_queue_node01_address}
+          - host: ${_param:openstack_message_queue_node02_address}
+          - host: ${_param:openstack_message_queue_node03_address}
       identity:
         region: ${_param:openstack_region}
         host: ${_param:openstack_control_address}
diff --git a/openssh/server/team/l1_support.yml b/openssh/server/team/l1_support.yml
index d0be2ed..85e096a 100644
--- a/openssh/server/team/l1_support.yml
+++ b/openssh/server/team/l1_support.yml
@@ -41,5 +41,6 @@
           support:
             commands:
                 - L1_SUPPORT_SALT
+                - L1_SUPPORT_COREUTILS
                 - '!L1_SUPPORT_RESTRICTED_SHELLS'
                 - '!L1_SUPPORT_RESTRICTED'
diff --git a/openssh/server/team/mcp_qa.yml b/openssh/server/team/mcp_qa.yml
index 5fc30d4..1da0d1e 100644
--- a/openssh/server/team/mcp_qa.yml
+++ b/openssh/server/team/mcp_qa.yml
@@ -140,6 +140,13 @@
           full_name: Ekaterina Khomyakova
           home: /home/ekhomyakova
           email: ekhomyakova@mirantis.com
+        snovikov:
+          enabled: true
+          name: snovikov
+          sudo: true
+          full_name: Sergey Novikov
+          home: /home/snovikov
+          email: snovikov@mirantis.com
       group:
         libvirtd:
           enabled: true
@@ -258,6 +265,11 @@
           public_keys:
           - ${public_keys:ekhomyakova}
           user: ${linux:system:user:ekhomyakova}
+        snovikov:
+          enable: true
+          public_keys:
+          - ${public_keys:snovikov}
+          user: ${linux:system:user:snovikov}
   public_keys:
     ddmitriev:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDuD4wJ8hzkchQ0pfgdwWukQyps1xYRfHOsjosmDu/mmgaXVud5mnpwb2q35E2YYTox2mx+ulJqyS+099gz6MPg4P8D5qdMuRbAsJqbceLaaIGQhdT8qgSo7ESrl5pwvYnfWzKLKF0z5s7nrW0nvArC40zhV9o9XpvzzzSFByepWfkwA8ReldGUYVvTKp8YXaCrqEdMZrU42adPM2nl+fYBbGF+h4/Ka247aVjPeER0blV3znFXbv2Kf38G+i/TEGaktgpBdtGGDi1tX2loMypmTJeqZRJnM0Eoly0BnynB7CSxn11eoIXBUe1mVYNqmQd1hw6uh59iymhK5j939v9J ddmitriev@dis_xcom
@@ -303,3 +315,5 @@
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDno7VX9jiveRCF7d1C/FK24WLZwCArdrBBOQ1uHqpkUfUYtG6vrYgt/K2n2FXoX55lbeoJAwuNC9HviaY+vQAekCI4W2s02iD+j/GRUwitpv+lJZXSmt/q2PgLz3OFUIsJV0EwyNl+bexM4+2jYTmHeDMrXAsHL4I2GUv5sFycA11UhxZ/Qm2QMKlRZhje/IJieX9u2BhgYuPYffASVl4AhwtDagYdqquwUXrfu/dQRt/U9w0Di9alApcyPqiW9LbXUgwha1G9+ScQnxmp8WvmaV8YR+nf2OFxQHvOZPYjCzniRnYpaQUMeUAkJKxDwqR1dAKYnaQY5TfXtFwfzsjN vnaumov@vnaumov
     ekhomyakova:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEaWwPVtsj39s0A2efRQ1ejL5B7ZetFPmXJDi/8W/gTWIIII3xP750H8QWZfvbjiJ+KBCxOndDL8aL3SHC/iRCvmzrVkgXBgf5J9vTu8uas7BNGf7oiDBuB75fryDtkg57Pam/A47IlgxJTCwYz+ofUGHb6WrWwQ+MUTEWAk9PB+RPyxjwNC4XxEwtULkKQMgFmg52kauESpx0R0ni8/LLKUJucdse7NCcUTvEcafppnXsxdZ640G0K82ADS1neg1CDwdtCPKLG57GZYs4iL3sPcOhQxnVUoONXsRpBD8kQTKOMl5R6hTDJHBd3oimUPEXlPqeb/XeGKatVraRA6nJ ekhomyakova@ekhomyakova
+    snovikov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYj97WGfiL550eVPyQmFyrgpTw61tfins1CpgrZewWqAWJMgYklRdMYl4OReE5UO2po7ag0f/QsOtGU8aQbnxnWUYPZyS3Qk+Bg8OOSBmewPxmT7WH97KdGKBdC9b3xUNFOUXEUOMmOe3jq9YET+xebUnfsA5qwYU5dL9Cb5UAPzVxYI8z5RiaNTo8dtwZr7lbJJRy8YfSWCtiD59vewc6BE2NTUyDjsfmKd9K/IkyKboGU9AC5mLYDsjvWwiGcNdfigRyaYWKmoo7Xhe1W2Og4dpI5pozOwVg7hISW9NRgLXrZP/9me1rFBH7EQjpjO3+Pto1//R3Nx9QLsB59yuj snovikov@snovikov
diff --git a/openssh/server/team/members/achuprin.yml b/openssh/server/team/members/achuprin.yml
new file mode 100644
index 0000000..0fbea13
--- /dev/null
+++ b/openssh/server/team/members/achuprin.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        achuprin:
+          enabled: true
+          name: achuprin
+          sudo: true
+          full_name: Alexey Chuprin
+          home: /home/achuprin
+          email: achuprin@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        achuprin:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDho9gTE/kal/lx/edEa073OgsS5Fa+G3ffGUuhPKpqdXp3TfCKchAK1J13TsqW9lLpPLtnDo2OhgJSUwdr0pfNwVEBPldw0KblW/JQIImR/9nojU+IvribDdusRTOJh6i9hSzcLLFtrF8pkZ7S7oyGsOpD7pHoy+qNiDBO1eJ1fkOxkxztpqSjFFg6BaFtA40zLULsqgKIM0EsSgn3vFAQ2zsDWaGynnm/+tQvBj3ogrxblo94uZ+uUK6Z6v+jkZJKA5Nz+w76HAd51A646X3gF05i2LdyPpkWBp0Oqr5PVW66IGfyc+sY0ID35k+wT9tzv/aW4KOFtig5zf/Xv3nDbX0SlIrV5AMzk3pql2aCSE03JSkHb/Gujf1gqQ6ZqqbVFl7CSj2nIZ1DpWhGqw1lF6YH1pf/xbmg7qRAmDCelf/gCZaj9Pe6nA1a6CP5NJt5l3W20blaT5hYxHDqiBPOfTh8YGI16P1p7pV6VfBiQYZk5KGmOqVjIUfQH9axZcOgZjVmrFW8zZCg1VIA4qhYvVfFokL12ty3AiYkdIcDek3GH83LnLrkTX4D6PPzl6lF5f8bAiUfSjH5Yr2EmRxFWizi3LGiNe7QIxVQgB+B71luHG0ymy1Z080XJqZKMs/wosGxOJUiEvjd1i/jkImCNqlta3sBxnjJQRuzX3mUiQ== achuprin@mirantis.com
+          user: ${linux:system:user:achuprin}
diff --git a/reclass/storage/system/rsyslog_single.yml b/reclass/storage/system/rsyslog_single.yml
new file mode 100644
index 0000000..a3eefac
--- /dev/null
+++ b/reclass/storage/system/rsyslog_single.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    rsyslog_node01_hostname: rsl01
+  reclass:
+    storage:
+      node:
+        rsyslog_node01:
+          name: ${_param:rsyslog_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.infra.rsyslog
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: xenial
+            single_address: ${_param:rsyslog_node01_address}
diff --git a/salt/control/cluster/rsyslog_single.yml b/salt/control/cluster/rsyslog_single.yml
new file mode 100644
index 0000000..4e53747
--- /dev/null
+++ b/salt/control/cluster/rsyslog_single.yml
@@ -0,0 +1,18 @@
+parameters:
+  salt:
+    control:
+      size:
+        infra.rsyslog:
+          cpu: 8
+          ram: 8192
+          disk_profile: xxlarge
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            rsl01:
+              provider: kvm02.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: infra.rsyslog