Merge "Add useful description in deploy"
diff --git a/aodh/server/cluster.yml b/aodh/server/cluster.yml
index b3fb4fb..4743111 100644
--- a/aodh/server/cluster.yml
+++ b/aodh/server/cluster.yml
@@ -10,6 +10,7 @@
       ttl: 86400
       debug: false
       verbose: true
+      region: ${_param:openstack_region}
       database:
         engine: "mysql+pymysql"
         host: ${_param:openstack_database_address}
@@ -36,4 +37,4 @@
         members:
           - host: ${_param:openstack_message_queue_node01_address}
           - host: ${_param:openstack_message_queue_node02_address}
-          - host: ${_param:openstack_message_queue_node03_address}
\ No newline at end of file
+          - host: ${_param:openstack_message_queue_node03_address}
diff --git a/aptly/server/mirror/ubuntu/trusty/glusterfs.yml b/aptly/server/mirror/ubuntu/trusty/glusterfs.yml
new file mode 100644
index 0000000..2d3fbaf
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/glusterfs.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+  aptly:
+    server:
+      mirror:
+        glusterfs_upstream_trusty:
+          source: http://ppa.launchpad.net/gluster/glusterfs-3.7/ubuntu
+          distribution: trusty
+          components: main
+          architectures: amd64
+          gpgkeys:
+            - 3FE869A9
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/openstack.yml b/aptly/server/mirror/ubuntu/trusty/mcp/openstack.yml
index b419b8b..32e3b90 100644
--- a/aptly/server/mirror/ubuntu/trusty/mcp/openstack.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/openstack.yml
@@ -1,16 +1,15 @@
 parameters:
   _param:
     mcp_repo_version: 1.0
-    linux_system_codename: trusty
   aptly:
     server:
       mirror:
         mirantis_openstack_trusty:
-          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename}
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/trusty
           distribution: mitaka
           components: main restricted
           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:mcp_repo_version}/trusty/archive-mcp${_param:mcp_repo_version}.key"
           gpgkeys:
             - 1FA22B08
           publisher:
@@ -19,11 +18,11 @@
               - ubuntu-trusty/mitaka
 
         mirantis_openstack_hotfix_trusty:
-          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename}
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/trusty
           distribution: mitaka-hotfix
           components: main restricted
           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:mcp_repo_version}/trusty/archive-mcp${_param:mcp_repo_version}.key"
           gpgkeys:
             - 1FA22B08
           publisher:
@@ -32,11 +31,11 @@
               - ubuntu-trusty/mitaka-hotfix
 
         mirantis_openstack_security_trusty:
-          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename}
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/trusty
           distribution: mitaka-security
           components: main restricted
           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:mcp_repo_version}/trusty/archive-mcp${_param:mcp_repo_version}.key"
           gpgkeys:
             - 1FA22B08
           publisher:
@@ -46,11 +45,11 @@
 
         # required for alternative horizon plugins/etc..
         mirantis_openstack_updates_trusty:
-          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename}
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/trusty
           distribution: mitaka-updates
           components:  main restricted
           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:mcp_repo_version}/trusty/archive-mcp${_param:mcp_repo_version}.key"
           gpgkeys:
             - 1FA22B08
           publisher:
@@ -60,11 +59,11 @@
 
         # required for salt formulas
         mirantis_openstack_holdback_trusty:
-          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename}
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/trusty
           distribution: mitaka-holdback
           components: main restricted
           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:mcp_repo_version}/trusty/archive-mcp${_param:mcp_repo_version}.key"
           gpgkeys:
           - 1FA22B08
           publisher:
diff --git a/aptly/server/mirror/ubuntu/xenial/glusterfs.yml b/aptly/server/mirror/ubuntu/xenial/glusterfs.yml
new file mode 100644
index 0000000..79a618a
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/glusterfs.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+  aptly:
+    server:
+      mirror:
+        glusterfs_upstream_xenial:
+          source: http://ppa.launchpad.net/gluster/glusterfs-3.7/ubuntu
+          distribution: xenial
+          components: main
+          architectures: amd64
+          gpgkeys:
+            - 3FE869A9
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/openstack.yml b/aptly/server/mirror/ubuntu/xenial/mcp/openstack.yml
index 0d07f5a..a23ece8 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/openstack.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/openstack.yml
@@ -1,16 +1,15 @@
 parameters:
   _param:
     mcp_repo_version: 1.0
-    linux_system_codename: xenial
   aptly:
     server:
       mirror:
         mirantis_openstack_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename}
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/xenial
           distribution: mitaka
           components: main restricted
           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:mcp_repo_version}/xenial/archive-mcp${_param:mcp_repo_version}.key"
           gpgkeys:
             - 1FA22B08
           publisher:
@@ -19,11 +18,11 @@
               - ubuntu-xenial/mitaka
 
         mirantis_openstack_hotfix_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename}
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/xenial
           distribution: mitaka-hotfix
           components: main restricted
           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:mcp_repo_version}/xenial/archive-mcp${_param:mcp_repo_version}.key"
           gpgkeys:
             - 1FA22B08
           publisher:
@@ -32,11 +31,11 @@
               - ubuntu-xenial/mitaka-hotfix
 
         mirantis_openstack_security_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename}
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/xenial
           distribution: mitaka-security
           components: main restricted
           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:mcp_repo_version}/xenial/archive-mcp${_param:mcp_repo_version}.key"
           gpgkeys:
             - 1FA22B08
           publisher:
@@ -46,11 +45,11 @@
 
         # required for alternative horizon plugins/etc..
         mirantis_openstack_updates_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename}
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/xenial
           distribution: mitaka-updates
           components:  main restricted
           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:mcp_repo_version}/xenial/archive-mcp${_param:mcp_repo_version}.key"
           gpgkeys:
             - 1FA22B08
           publisher:
@@ -60,11 +59,11 @@
 
         # required for salt formulas
         mirantis_openstack_holdback_xenial:
-          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/${_param:linux_system_codename}
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/xenial
           distribution: mitaka-holdback
           components: main restricted
           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:mcp_repo_version}/xenial/archive-mcp${_param:mcp_repo_version}.key"
           gpgkeys:
           - 1FA22B08
           publisher:
diff --git a/cinder/control/backend/nfs.yml b/cinder/control/backend/nfs.yml
new file mode 100644
index 0000000..1e5d5eb
--- /dev/null
+++ b/cinder/control/backend/nfs.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    cinder_nfs_local_path: /var/lib/cinder/nfs
+  cinder:
+    controller:
+      default_volume_type: nfs-driver
+      backend:
+        nfs-driver:
+          engine: nfs
+          type_name: nfs-driver
+          volume_group: cinder-volume
+          path: ${_param:cinder_nfs_local_path}
+          devices:
+          - ${_param:cinder_nfs_host}:${_param:cinder_nfs_remote_path}
+          options: ${_param:cinder_nfs_mount_options}
\ No newline at end of file
diff --git a/cinder/volume/backend/nfs.yml b/cinder/volume/backend/nfs.yml
new file mode 100644
index 0000000..e78f4fb
--- /dev/null
+++ b/cinder/volume/backend/nfs.yml
@@ -0,0 +1,9 @@
+parameters:
+  cinder:
+    volume:
+      default_volume_type: nfs-driver
+      backend:
+        nfs-driver:
+          engine: nfs
+          type_name: nfs-driver
+          volume_group: cinder-volume
\ No newline at end of file
diff --git a/devops_portal/service/elasticsearch.yml b/devops_portal/service/elasticsearch.yml
new file mode 100644
index 0000000..b945af3
--- /dev/null
+++ b/devops_portal/service/elasticsearch.yml
@@ -0,0 +1,10 @@
+parameters:
+  devops_portal:
+    config:
+      service:
+        elasticsearch:
+          configure_proxy: true
+          endpoint:
+            address: ${_param:haproxy_elasticsearch_bind_host}
+            port: ${_param:haproxy_elasticsearch_bind_port}
+            https: ${_param:haproxy_elasticsearch_ssl:enabled}
diff --git a/docker/swarm/service/elasticsearch.yml b/docker/swarm/service/elasticsearch.yml
new file mode 100644
index 0000000..02dea57
--- /dev/null
+++ b/docker/swarm/service/elasticsearch.yml
@@ -0,0 +1,19 @@
+parameters:
+  _param:
+    elasticsearch_replicas: 1
+    docker_image_oss_elasticsearch: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/elasticsearch:latest
+  docker:
+    client:
+      service:
+        elasticsearch:
+          replicas: ${_param:elasticsearch_replicas}
+          image: ${_param:docker_image_oss_elasticsearch}
+          restart:
+            condition: any
+          ports:
+            - ${_param:haproxy_elasticsearch_exposed_port}:${_param:haproxy_elasticsearch_bind_port}
+          volume:
+            elasticsearch:
+              type: bind
+              source: /srv/volumes/elasticsearch
+              destination: /var/lib/elasticsearch/data
diff --git a/docker/swarm/service/gerrit.yml b/docker/swarm/service/gerrit.yml
index 1fc2aab..10e0629 100644
--- a/docker/swarm/service/gerrit.yml
+++ b/docker/swarm/service/gerrit.yml
@@ -1,6 +1,6 @@
 parameters:
   _param:
-    docker_image_gerrit: tcpcloud/gerrit:2.12.7
+    docker_image_gerrit: tcpcloud/gerrit:2.13.6
     gerrit_ldap_server: ""
     gerrit_ldap_bind_user: ""
     gerrit_ldap_bind_password: ""
@@ -25,11 +25,11 @@
             LDAP_GROUPBASE: ${_param:gerrit_ldap_group_base}
             LDAP_USERNAME: ${_param:gerrit_ldap_bind_user}
             LDAP_PASSWORD: ${_param:gerrit_ldap_bind_password}
-            CAPABILITY_ADMINISTRATESERVER: admin
             WEBURL: ${_param:gerrit_public_host}
             GERRIT_ADMIN_SSH_PUBLIC: ${_param:gerrit_admin_public_key}
             GERRIT_ADMIN_PWD: ${_param:gerrit_admin_password}
             GERRIT_ADMIN_EMAIL: ${_param:gerrit_admin_email}
+            CANLOADINIFRAME: "true"
           restart:
             condition: any
           image: ${_param:docker_image_gerrit}
diff --git a/docker/swarm/service/jenkins.yml b/docker/swarm/service/jenkins.yml
index 16dee71..b2fdeb6 100644
--- a/docker/swarm/service/jenkins.yml
+++ b/docker/swarm/service/jenkins.yml
@@ -6,7 +6,7 @@
       service:
         jenkins:
           environment:
-            JAVA_OPTS: "-Djenkins.install.runSetupWizard=false -Dhudson.footerURL=https://www.mirantis.com"
+            JAVA_OPTS: "-Djenkins.install.runSetupWizard=false -Dhudson.DNSMultiCast.disabled=true -Dhudson.udp=-1 -Dhudson.footerURL=https://www.mirantis.com"
             JENKINS_NUM_EXECUTORS: 4
           restart:
             condition: any
diff --git a/docker/swarm/service/monitoring/prometheus_alertmanager.yml b/docker/swarm/service/monitoring/prometheus_alertmanager.yml
index 74b20f5..5d5f237 100644
--- a/docker/swarm/service/monitoring/prometheus_alertmanager.yml
+++ b/docker/swarm/service/monitoring/prometheus_alertmanager.yml
@@ -6,11 +6,12 @@
       service:
         prometheus_alertmanager:
           network: monitoring
-          replica: 2
+          replicas: 2
           environment:
             config_dir: /opt/alertmanager/config
             bind_port: ${prometheus:alertmanager:bind:port}
             bind_address: ${prometheus:alertmanager:bind:address}
+            discovery_domain: 'prometheus_alertmanager'
           restart:
             condition: any
           image: ${_param:docker_image_alertmanager}
@@ -19,5 +20,5 @@
           volume:
             site:
               type: bind
-              source: /srv/volumes/prometheus-config
+              source: /srv/volumes/prometheus
               destination: /opt/alertmanager/config
diff --git a/docker/swarm/service/monitoring/prometheus_pushgateway.yml b/docker/swarm/service/monitoring/prometheus_pushgateway.yml
index 7ba37af..ad159b6 100644
--- a/docker/swarm/service/monitoring/prometheus_pushgateway.yml
+++ b/docker/swarm/service/monitoring/prometheus_pushgateway.yml
@@ -4,7 +4,7 @@
       service:
         prometheus_pushgateway:
           network: monitoring
-          replica: 2
+          replicas: 2
           restart:
             condition: any
           image: ${_param:docker_image_pushgateway}
diff --git a/docker/swarm/service/monitoring/prometheus_server.yml b/docker/swarm/service/monitoring/prometheus_server.yml
index 24a9193..37bb6d3 100644
--- a/docker/swarm/service/monitoring/prometheus_server.yml
+++ b/docker/swarm/service/monitoring/prometheus_server.yml
@@ -6,7 +6,7 @@
       service:
         prometheus_server:
           network: monitoring
-          replica: 1
+          replicas: 1
           environment:
             config_dir: /opt/prometheus/config
             bind_port: ${prometheus:server:bind:port}
@@ -17,6 +17,7 @@
             storage_local_memory_chunks: ${prometheus:server:storage:local:memory_chunks}
             storage_local_max_chunks_to_persist: ${prometheus:server:storage:local:max_chunks_to_persist}
             storage_local_num_fingerprint_mutexes: ${prometheus:server:storage:local:num_fingerprint_mutexes}
+            discovery_domain: 'prometheus_alertmanager'
           restart:
             condition: any
           image: ${_param:docker_image_prometheus}
@@ -25,5 +26,5 @@
           volume:
             site:
               type: bind
-              source: /srv/volumes/prometheus-config
+              source: /srv/volumes/prometheus
               destination: /opt/prometheus/config
diff --git a/docker/swarm/service/phpldapadmin.yml b/docker/swarm/service/phpldapadmin.yml
index fadf714..25332c7 100644
--- a/docker/swarm/service/phpldapadmin.yml
+++ b/docker/swarm/service/phpldapadmin.yml
@@ -1,6 +1,6 @@
 parameters:
   _param:
-    docker_image_phpldapadmin: osixia/phpldapadmin:0.6.12
+    docker_image_phpldapadmin: tcpcloud/phpldapadmin:0.6.12
   docker:
     client:
       service:
@@ -17,5 +17,6 @@
             PHPLDAPADMIN_HTTPS: false
             PHPLDAPADMIN_TRUST_PROXY_SSL: true
             PHPLDAPADMIN_SERVER_ADMIN: ${_param:admin_email}
+            PHPLDAPADMIN_THEME: mirantis
           ports:
             - 18089:80
diff --git a/docker/swarm/service/pushkin.yml b/docker/swarm/service/pushkin.yml
new file mode 100644
index 0000000..e4fe424
--- /dev/null
+++ b/docker/swarm/service/pushkin.yml
@@ -0,0 +1,28 @@
+parameters:
+  _param:
+    docker_pushkin_replicas: 1
+    docker_image_pushkin: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/pushkin:latest
+    pushkin_db_password: pushkin
+    pushkin_db_user: pushkin
+    pushkin_db: pushkin
+  docker:
+    client:
+      service:
+        pushkin-backend:
+          environment:
+            POSTGRES_USER: ${_param:pushkin_db_user}
+            POSTGRES_PASSWORD: ${_param:pushkin_db_password}
+            POSTGRES_DB: ${_param:pushkin_db}
+            PUSHKINDBHOST: ${_param:haproxy_pushkin_db_bind_host}
+            PUSHKINELASTICHOST: ${_param:haproxy_elasticsearch_bind_host}
+          replicas: ${_param:docker_pushkin_replicas}
+          image: ${_param:docker_image_pushkin}
+          restart:
+            condition: any
+          ports:
+            - ${_param:haproxy_pushkin_exposed_port}:${_param:haproxy_pushkin_bind_port}
+          volume:
+            pushkin:
+              type: bind
+              source: /srv/volumes/pushkin/logs
+              destination: /var/log/pushkin/logs
\ No newline at end of file
diff --git a/docker/swarm/service/pushkin_db.yml b/docker/swarm/service/pushkin_db.yml
new file mode 100644
index 0000000..9b81778
--- /dev/null
+++ b/docker/swarm/service/pushkin_db.yml
@@ -0,0 +1,27 @@
+parameters:
+  _param:
+    docker_pushkin_db_replicas: 1
+    docker_image_pushkin_db: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/pushkindb:latest
+    pushkin_db_password: pushkin
+    pushkin_db_user: pushkin
+    pushkin_db: pushkin
+  docker:
+    client:
+      service:
+        pushkin-db:
+          environment:
+            POSTGRES_USER: ${_param:pushkin_db_user}
+            POSTGRES_PASSWORD: ${_param:pushkin_db_password}
+            POSTGRES_DB: ${_param:pushkin_db}
+          replicas: ${_param:docker_pushkin_db_replicas}
+          image: ${_param:docker_image_pushkin_db}
+          restart:
+            condition: any
+          ports:
+            - ${_param:haproxy_pushkin_db_exposed_port}:${_param:haproxy_pushkin_db_bind_port}
+          volume:
+            pushkin:
+              type: bind
+              source: /srv/volumes/pushkin/data
+              destination: /var/lib/postgresql/data
+
diff --git a/gerrit/client/init.yml b/gerrit/client/init.yml
index 7dd6c77..25c0b94 100644
--- a/gerrit/client/init.yml
+++ b/gerrit/client/init.yml
@@ -1,9 +1,12 @@
 classes:
   - service.gerrit.client
 parameters:
+  _param:
+    gerrit_try_login: true
   gerrit:
     client:
       enabled: True
+      try_login: ${_param:gerrit_try_login}
       source:
         engine: pip
       dir:
@@ -22,7 +25,6 @@
         key: ${_param:gerrit_admin_private_key}
       user:
         admin:
-          fullname: Administrator
           ssh_key: ${_param:gerrit_admin_public_key}
       group:
         Event Streaming Users:
diff --git a/glance/control/storage/ceph.yml b/glance/control/storage/ceph.yml
index ef3c033..d48fb6d 100644
--- a/glance/control/storage/ceph.yml
+++ b/glance/control/storage/ceph.yml
@@ -2,7 +2,7 @@
   glance:
     server:
       storage:
-        engine: rbd
+        engine: rbd,http
         user: ${_param:glance_storage_user}
         pool: ${_param:glance_storage_pool}
         chunk_size: 8
\ No newline at end of file
diff --git a/glusterfs/client/volume/elasticsearch.yml b/glusterfs/client/volume/elasticsearch.yml
new file mode 100644
index 0000000..f5ad7ae
--- /dev/null
+++ b/glusterfs/client/volume/elasticsearch.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    elasticsearch_glusterfs_service_host: ${_param:glusterfs_service_host}
+  glusterfs:
+    client:
+      volumes:
+        elasticsearch:
+          path: /srv/volumes/elasticsearch
+          server: ${_param:elasticsearch_glusterfs_service_host}
+          opts: 'defaults'
diff --git a/glusterfs/client/volume/prometheus.yml b/glusterfs/client/volume/prometheus.yml
index f8b2f3d..2b2b7db 100644
--- a/glusterfs/client/volume/prometheus.yml
+++ b/glusterfs/client/volume/prometheus.yml
@@ -4,7 +4,7 @@
   glusterfs:
     client:
       volumes:
-        prometheus-config:
-          path: /srv/volumes/prometheus-config
+        prometheus:
+          path: /srv/volumes/prometheus
           server: ${_param:prometheus_glusterfs_service_host}
           opts: 'defaults'
diff --git a/glusterfs/client/volume/pushkin.yml b/glusterfs/client/volume/pushkin.yml
new file mode 100644
index 0000000..1853863
--- /dev/null
+++ b/glusterfs/client/volume/pushkin.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    pushkin_glusterfs_service_host: ${_param:glusterfs_service_host}
+  glusterfs:
+    client:
+      volumes:
+        pushkin:
+          path: /srv/volumes/pushkin
+          server: ${_param:pushkin_glusterfs_service_host}
+          opts: 'defaults'
diff --git a/glusterfs/server/volume/elasticsearch.yml b/glusterfs/server/volume/elasticsearch.yml
new file mode 100644
index 0000000..73f35c1
--- /dev/null
+++ b/glusterfs/server/volume/elasticsearch.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        elasticsearch:
+          storage: /srv/glusterfs/elasticsearch
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/elasticsearch
+            - ${_param:cluster_node02_address}:/srv/glusterfs/elasticsearch
+            - ${_param:cluster_node03_address}:/srv/glusterfs/elasticsearch
+          options:
+            cluster.readdir-optimize: On
+            nfs.disable: On
+            network.remote-dio: On
+            diagnostics.client-log-level: WARNING
+            diagnostics.brick-log-level: WARNING
diff --git a/glusterfs/server/volume/prometheus.yml b/glusterfs/server/volume/prometheus.yml
index 2c4ca31..144847a 100644
--- a/glusterfs/server/volume/prometheus.yml
+++ b/glusterfs/server/volume/prometheus.yml
@@ -2,13 +2,13 @@
   glusterfs:
     server:
       volumes:
-        prometheus-config:
-          storage: /srv/glusterfs/prometheus-config
+        prometheus:
+          storage: /srv/glusterfs/prometheus
           replica: 3
           bricks:
-            - ${_param:cluster_node01_address}:/srv/glusterfs/prometheus-config
-            - ${_param:cluster_node02_address}:/srv/glusterfs/prometheus-config
-            - ${_param:cluster_node03_address}:/srv/glusterfs/prometheus-config
+            - ${_param:cluster_node01_address}:/srv/glusterfs/prometheus
+            - ${_param:cluster_node02_address}:/srv/glusterfs/prometheus
+            - ${_param:cluster_node03_address}:/srv/glusterfs/prometheus
           options:
             cluster.readdir-optimize: On
             nfs.disable: On
diff --git a/glusterfs/server/volume/pushkin.yml b/glusterfs/server/volume/pushkin.yml
new file mode 100644
index 0000000..52d393e
--- /dev/null
+++ b/glusterfs/server/volume/pushkin.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        pushkin:
+          storage: /srv/glusterfs/pushkin
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/pushkin
+            - ${_param:cluster_node02_address}:/srv/glusterfs/pushkin
+            - ${_param:cluster_node03_address}:/srv/glusterfs/pushkin
+          options:
+            cluster.readdir-optimize: On
+            nfs.disable: On
+            network.remote-dio: On
+            diagnostics.client-log-level: WARNING
+            diagnostics.brick-log-level: WARNING
diff --git a/haproxy/proxy/listen/oss/elasticsearch.yml b/haproxy/proxy/listen/oss/elasticsearch.yml
new file mode 100644
index 0000000..2f5d1ee
--- /dev/null
+++ b/haproxy/proxy/listen/oss/elasticsearch.yml
@@ -0,0 +1,38 @@
+parameters:
+  _param:
+    haproxy_elasticsearch_bind_host: ${_param:haproxy_bind_address}
+    haproxy_elasticsearch_bind_port: 9200
+    haproxy_elasticsearch_exposed_port: 19200
+    haproxy_elasticsearch_ssl:
+      enabled: false
+  haproxy:
+    proxy:
+      listen:
+        elasticsearch:
+          mode: http
+          options:
+            - forwardfor
+            - httpchk
+            - httpclose
+            - httplog
+          balance: source
+          http_request:
+            - action: "add-header X-Forwarded-Proto https"
+              condition: "if { ssl_fc }"
+          binds:
+            - address: ${_param:haproxy_elasticsearch_bind_host}
+              port: ${_param:haproxy_elasticsearch_bind_port}
+              ssl: ${_param:haproxy_elasticsearch_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_elasticsearch_exposed_port}
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_elasticsearch_exposed_port}
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_elasticsearch_exposed_port}
+              params: backup check
diff --git a/haproxy/proxy/listen/oss/pushkin.yml b/haproxy/proxy/listen/oss/pushkin.yml
new file mode 100644
index 0000000..458a226
--- /dev/null
+++ b/haproxy/proxy/listen/oss/pushkin.yml
@@ -0,0 +1,37 @@
+parameters:
+  _param:
+    haproxy_pushkin_bind_host: ${_param:haproxy_bind_address}
+    haproxy_pushkin_bind_port: 8887
+    haproxy_pushkin_exposed_port: 18887
+    haproxy_pushkin_ssl:
+      enabled: false
+  haproxy:
+    proxy:
+      listen:
+        pushkin:
+          mode: http
+          options:
+          - httpchk get /apps
+          balance: source
+          http_request:
+            - action: "add-header X-Forwarded-Proto https"
+              condition: "if { ssl_fc }"
+          sticks:
+          - http-check expect ! rstatus ^5
+          binds:
+            - address: ${_param:haproxy_pushkin_bind_host}
+              port: ${_param:haproxy_pushkin_bind_port}
+              ssl: ${_param:haproxy_pushkin_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_pushkin_exposed_port}
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_pushkin_exposed_port}
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_pushkin_exposed_port}
+              params: backup check
diff --git a/haproxy/proxy/listen/oss/pushkin_db.yml b/haproxy/proxy/listen/oss/pushkin_db.yml
new file mode 100644
index 0000000..74b15a2
--- /dev/null
+++ b/haproxy/proxy/listen/oss/pushkin_db.yml
@@ -0,0 +1,32 @@
+parameters:
+  _param:
+    haproxy_pushkin_db_bind_host: ${_param:haproxy_bind_address}
+    haproxy_pushkin_db_bind_port: 5432
+    haproxy_pushkin_db_exposed_port: 15432
+    haproxy_pushkin_db_ssl:
+      enabled: false
+  haproxy:
+    proxy:
+      listen:
+        pushkin_db:
+          mode: tcp
+          balance: source
+          options:
+          - pgsql-check user ${_param:pushkin_db_user}
+          binds:
+            - address: ${_param:haproxy_pushkin_db_bind_host}
+              port: ${_param:haproxy_pushkin_db_bind_port}
+              ssl: ${_param:haproxy_pushkin_db_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_pushkin_db_exposed_port}
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_pushkin_db_exposed_port}
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_pushkin_db_exposed_port}
+              params: backup check
diff --git a/jenkins/client/approved_scripts.yml b/jenkins/client/approved_scripts.yml
index df35e92..d947687 100644
--- a/jenkins/client/approved_scripts.yml
+++ b/jenkins/client/approved_scripts.yml
@@ -90,3 +90,7 @@
         - method java.util.Collection stream
         - staticMethod java.util.stream.Collectors joining java.lang.CharSequence
         - method java.util.stream.Stream collect java.util.stream.Collector
+        - staticMethod java.util.regex.Pattern compile java.lang.String
+        - method java.util.regex.Matcher find
+        - method hudson.model.Run getId
+        - method java.util.regex.MatchResult groupCount
diff --git a/jenkins/client/init.yml b/jenkins/client/init.yml
index e7c56ec..191527f 100644
--- a/jenkins/client/init.yml
+++ b/jenkins/client/init.yml
@@ -46,3 +46,19 @@
           enabled: true
           url: ${_param:jenkins_gerrit_url}/mcp-ci/pipeline-library
           credential_id: gerrit
+      view:
+        Mirrors:
+          enabled: true
+          type: CategorizedJobsView
+          include_regex: "git-mirror-.*"
+          categories:
+            - group_regex: "git-mirror-2way-.*"
+              naming_rule: "2way"
+            - group_regex: "git-mirror-(?!upstream-|2way-).*"
+              naming_rule: "Downstream"
+            - group_regex: "git-mirror-upstream-.*"
+              naming_rule: "Upstream"
+        Tests:
+          enabled: true
+          type: ListView
+          include_regex: "test-.*"
diff --git a/jenkins/client/job/aptly.yml b/jenkins/client/job/aptly.yml
index d5d8fcd..c6a5755 100644
--- a/jenkins/client/job/aptly.yml
+++ b/jenkins/client/job/aptly.yml
@@ -1,6 +1,16 @@
 parameters:
   jenkins:
     client:
+      view:
+        Aptly:
+          enabled: true
+          type: CategorizedJobsView
+          include_regex: "aptly-.*"
+          categories:
+            - group_regex: "aptly-.*-nightly-testing"
+              naming_rule: "Nightly -> Testing"
+            - group_regex: "aptly-.*-testing-stable"
+              naming_rule: "Testing -> Stable"
       job_template:
         aptly:
           name: aptly-{{operation}}-{{dist}}-{{source}}-{{target}}
diff --git a/jenkins/client/job/debian/init.yml b/jenkins/client/job/debian/init.yml
index d0b40a0..f24cccc 100644
--- a/jenkins/client/job/debian/init.yml
+++ b/jenkins/client/job/debian/init.yml
@@ -1,2 +1,15 @@
 classes:
   - system.jenkins.client.job.debian.packages
+parameters:
+  jenkins:
+    client:
+      view:
+        Debian:
+          enabled: true
+          type: CategorizedJobsView
+          include_regex: "build-debian-(?!salt-formula-).*"
+          categories:
+            - group_regex: ".*-ubuntu-trusty"
+              naming_rule: "Ubuntu Trusty"
+            - group_regex: ".*-ubuntu-xenial"
+              naming_rule: "Ubuntu Xenial"
diff --git a/jenkins/client/job/debian/packages/extra.yml b/jenkins/client/job/debian/packages/extra.yml
index e51354a..15d0bc4 100644
--- a/jenkins/client/job/debian/packages/extra.yml
+++ b/jenkins/client/job/debian/packages/extra.yml
@@ -53,6 +53,8 @@
               dist: xenial
             - package: python-geventhttpclient
               dist: xenial
+            - package: python-docker
+              dist: xenial
             - package: python-consistent-hash
               dist: xenial
             - package: libipfix
diff --git a/jenkins/client/job/debian/packages/init.yml b/jenkins/client/job/debian/packages/init.yml
index 56f6f12..cb4c245 100644
--- a/jenkins/client/job/debian/packages/init.yml
+++ b/jenkins/client/job/debian/packages/init.yml
@@ -3,3 +3,15 @@
   - system.jenkins.client.job.debian.packages.salt
   - system.jenkins.client.job.debian.packages.salt-multi
   - system.jenkins.client.job.debian.packages.horizon
+parameters:
+  jenkins:
+    client:
+      view:
+        Xenial:
+          enabled: true
+          type: ListView
+          include_regex: "build-.*-ubuntu-xenial.*"
+        Trusty:
+          enabled: true
+          type: ListView
+          include_regex: "build-.*-ubuntu-trusty.*"
\ No newline at end of file
diff --git a/jenkins/client/job/deploy/init.yml b/jenkins/client/job/deploy/init.yml
index 102fe73..f25086d 100644
--- a/jenkins/client/job/deploy/init.yml
+++ b/jenkins/client/job/deploy/init.yml
@@ -2,3 +2,20 @@
   - system.jenkins.client.job.deploy.lab
   - system.jenkins.client.job.deploy.update
   - system.jenkins.client.job.deploy.openstack
+parameters:
+  jenkins:
+    client:
+      view:
+        Deploy:
+          enabled: true
+          type: CategorizedJobsView
+          include_regex: "deploy-.*"
+          categories:
+            - group_regex: "deploy-(heat|physical)-"
+              naming_rule: ""
+            - group_regex: "deploy-update-*"
+              naming_rule: "support"
+            - group_regex: "(mcp)[0-9]+"
+              naming_rule: ""
+            - group_regex: "(mk)[0-9]+"
+              naming_rule: ""
diff --git a/jenkins/client/job/deploy/lab/init.yml b/jenkins/client/job/deploy/lab/init.yml
index 24cdcab..5fc4401 100644
--- a/jenkins/client/job/deploy/lab/init.yml
+++ b/jenkins/client/job/deploy/lab/init.yml
@@ -4,3 +4,12 @@
   - system.jenkins.client.job.deploy.lab.mk.cleanup
   - system.jenkins.client.job.deploy.lab.cicd
   - system.jenkins.client.job.deploy.lab.demo
+
+parameters:
+  jenkins:
+    client:
+      view:
+        Labs:
+          enabled: true
+          type: ListView
+          include_regex: "deploy-(physical|heat).*(mk|mcp).*"
diff --git a/jenkins/client/job/deploy/lab/mk/init.yml b/jenkins/client/job/deploy/lab/mk/init.yml
index d88f4d7..0fc26f7 100644
--- a/jenkins/client/job/deploy/lab/mk/init.yml
+++ b/jenkins/client/job/deploy/lab/mk/init.yml
@@ -29,7 +29,7 @@
                 default: "{{install}}"
               TEST:
                 type: string
-                default: ""
+                default: "{{test}}"
 
               # heat
               HEAT_TEMPLATE_URL:
@@ -40,7 +40,7 @@
                 default: "gerrit"
               HEAT_TEMPLATE_BRANCH:
                 type: string
-                default: "composite"
+                default: "master"
               HEAT_STACK_NAME:
                 type: string
                 description: Heat stack name. Will be generated if missing.
diff --git a/jenkins/client/job/deploy/lab/mk/physical.yml b/jenkins/client/job/deploy/lab/mk/physical.yml
index a66909d..0767359 100644
--- a/jenkins/client/job/deploy/lab/mk/physical.yml
+++ b/jenkins/client/job/deploy/lab/mk/physical.yml
@@ -6,12 +6,16 @@
       - lab: mcp10_contrail
         install: core,kvm,openstack,contrail
         stack_type: physical
+        test: openstack
       - lab: mcp10_opencontrail_nfv
         install: core,kvm,openstack,nfv
         stack_type: physical
+        test: openstack
       - lab: mcp10_dvr
         install: core,kvm,openstack,dvr
         stack_type: physical
+        test: openstack
       - lab: mcp10_non_dvr
         install: core,kvm,openstack
         stack_type: physical
+        test: openstack
diff --git a/jenkins/client/job/deploy/lab/mk/virtual.yml b/jenkins/client/job/deploy/lab/mk/virtual.yml
index af65a4d..a97a22a 100644
--- a/jenkins/client/job/deploy/lab/mk/virtual.yml
+++ b/jenkins/client/job/deploy/lab/mk/virtual.yml
@@ -6,27 +6,40 @@
       - lab: virtual_mcp05_dvr
         install: core,openstack,dvr
         stack_type: heat
+        test: openstack
       - lab: virtual_mcp05_ovs
         install: core,openstack,ovs
         stack_type: heat
+        test: openstack
       - lab: virtual_mcp10_contrail
         install: core,openstack,contrail
         stack_type: heat
+        test: openstack
       - lab: virtual_mcp10_dvr
         install: core,openstack,dvr
         stack_type: heat
+        test: openstack
       - lab: virtual_mcp10_ovs
         install: core,openstack,ovs
         stack_type: heat
+        test: openstack
+      - lab: virtual_mcp10_k8s
+        install: core,k8s
+        stack_type: heat
+        test: k8s
       - lab: virtual_mk20_advanced
         install: core,openstack
         stack_type: heat
+        test: openstack
       - lab: virtual_mk20_basic
         install: core,openstack
         stack_type: heat
+        test: openstack
       - lab: virtual_mk22_advanced
         install: core,openstack
         stack_type: heat
+        test: openstack
       - lab: virtual_mk22_basic
         install: core,openstack
         stack_type: heat
+        test: openstack
diff --git a/jenkins/client/job/docker.yml b/jenkins/client/job/docker.yml
new file mode 100644
index 0000000..220176c
--- /dev/null
+++ b/jenkins/client/job/docker.yml
@@ -0,0 +1,65 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        docker-build-image:
+          name: docker-build-image-{{name}}-{{branch}}
+          jobs:
+            - name: gerrit
+              branch: "2.12.7"
+              tags: "2.12.7"
+              dockerfile: "Dockerfile"
+            - name: gerrit
+              branch: "2.13.6"
+              tags: "2.13.6 latest"
+              dockerfile: "Dockerfile"
+            - name: jenkins
+              branch: "2.32.3"
+              tags: "2.32"
+              dockerfile: "Dockerfile"
+            - name: jenkins
+              branch: "2.52"
+              tags: "2.52 latest"
+              dockerfile: "Dockerfile"
+            - name: phpldapadmin
+              branch: "master"
+              tags: "0.16.2 latest"
+              dockerfile: "image/Dockerfile"
+          template:
+            discard:
+              build:
+                keep_num: 5
+              artifact:
+                keep_num: 5
+            type: workflow-scm
+            concurrent: true
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: docker-build-image-pipeline.groovy
+            param:
+              IMAGE_NAME:
+                type: string
+                default: "tcpcloud/{{name}}"
+              IMAGE_GIT_URL:
+                type: string
+                default: ${_param:jenkins_gerrit_url}/mk/docker-{{name}}"
+              IMAGE_BRANCH:
+                type: string
+                default: "{{branch}}"
+              IMAGE_CREDENTIALS_ID:
+                type: string
+                default: "gerrit"
+              IMAGE_TAGS:
+                type: string
+                default: "{{tags}}"
+              DOCKERFILE_PATH:
+                type: string
+                default: "{{dockerfile}}"
+              REGISTRY_URL:
+                type: string
+                default: ""
+              REGISTRY_CREDENTIALS_ID:
+                type: string
+                default: "dockerhub"
\ No newline at end of file
diff --git a/jenkins/client/job/gating.yml b/jenkins/client/job/gating.yml
index 387db35..e825739 100644
--- a/jenkins/client/job/gating.yml
+++ b/jenkins/client/job/gating.yml
@@ -1,6 +1,11 @@
 parameters:
   jenkins:
     client:
+      view:
+        Gating:
+          enabled: true
+          type: ListView
+          include_regex: "gate-.*"
       job_template:
         gate-gerrit-namespace:
           name: gate-gerrit-{{name}}
@@ -23,6 +28,7 @@
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
               credentials: "gerrit"
               script: gating-pipeline.groovy
+            quiet_period: 60
             trigger:
               gerrit:
                 project:
diff --git a/jenkins/client/job/image/centos.yml b/jenkins/client/job/image/centos.yml
index 852f695..995bfd4 100644
--- a/jenkins/client/job/image/centos.yml
+++ b/jenkins/client/job/image/centos.yml
@@ -1,3 +1,5 @@
+classes:
+  - system.jenkins.client.job.image
 parameters:
   _param:
     jenkins_packer_pipeline: "${_param:jenkins_gerrit_url}/mk/packer-templates"
diff --git a/jenkins/client/job/image/debian.yml b/jenkins/client/job/image/debian.yml
index 7c996f3..924b34c 100644
--- a/jenkins/client/job/image/debian.yml
+++ b/jenkins/client/job/image/debian.yml
@@ -1,3 +1,5 @@
+classes:
+  - system.jenkins.client.job.image
 parameters:
   _param:
     jenkins_packer_pipeline: "${_param:jenkins_gerrit_url}/mk/packer-templates"
diff --git a/jenkins/client/job/image/init.yml b/jenkins/client/job/image/init.yml
new file mode 100644
index 0000000..ee7f743
--- /dev/null
+++ b/jenkins/client/job/image/init.yml
@@ -0,0 +1,8 @@
+parameters:
+  jenkins:
+    client:
+      view:
+        Images:
+          enabled: true
+          type: ListView
+          include_regex: "build-image-.*"
\ No newline at end of file
diff --git a/jenkins/client/job/image/ubuntu.yml b/jenkins/client/job/image/ubuntu.yml
index 504702c..a9f25e5 100644
--- a/jenkins/client/job/image/ubuntu.yml
+++ b/jenkins/client/job/image/ubuntu.yml
@@ -1,3 +1,5 @@
+classes:
+  - system.jenkins.client.job.image
 parameters:
   _param:
     jenkins_packer_pipeline: "${_param:jenkins_gerrit_url}/mk/packer-templates"
diff --git a/jenkins/client/job/opencontrail/init.yml b/jenkins/client/job/opencontrail/init.yml
index 72ee4fe..b41a357 100644
--- a/jenkins/client/job/opencontrail/init.yml
+++ b/jenkins/client/job/opencontrail/init.yml
@@ -7,3 +7,21 @@
     contrail_kubernetes_branches: "master,release-1.2"
     contrail_dpdk_extra_branches: "mitaka,kilo,liberty-multiqueue"
     contrail_ceilometer_plugin_branches: "master"
+  jenkins:
+    client:
+      view:
+        Opencontrail:
+          enabled: true
+          type: CategorizedJobsView
+          include_regex: "build-opencontrail-.*"
+          categories:
+            - group_regex: "build-opencontrail-dpdk-extra-.*"
+              naming_rule: "DPDK Extras"
+            - group_regex: "build-opencontrail-oc303-.*"
+              naming_rule: "R3.0.3.x"
+            - group_regex: "build-opencontrail-oc31-.*"
+              naming_rule: "R3.1"
+            - group_regex: "build-opencontrail-oc311-.*"
+              naming_rule: "R3.1.1.x"
+            - group_regex: "build-opencontrail-oc32-.*"
+              naming_rule: "R3.2"
diff --git a/jenkins/client/job/salt-formulas/init.yml b/jenkins/client/job/salt-formulas/init.yml
index c498032..8c8c2e2 100644
--- a/jenkins/client/job/salt-formulas/init.yml
+++ b/jenkins/client/job/salt-formulas/init.yml
@@ -2,3 +2,16 @@
   - system.jenkins.client.job.salt-formulas.git-mirrors
   - system.jenkins.client.job.salt-formulas.tests
   - system.jenkins.client.job.salt-formulas.release
+parameters:
+  jenkins:
+    client:
+      view:
+        "Salt formulas":
+          enabled: true
+          type: CategorizedJobsView
+          include_regex: "build-debian-salt-formula-.*"
+          categories:
+            - group_regex: ".*-ubuntu-trusty"
+              naming_rule: "Ubuntu Trusty"
+            - group_regex: ".*-ubuntu-xenial"
+              naming_rule: "Ubuntu Xenial"
diff --git a/jenkins/client/job/salt-formulas/tests.yml b/jenkins/client/job/salt-formulas/tests.yml
index 9ac5492..0dd7102 100644
--- a/jenkins/client/job/salt-formulas/tests.yml
+++ b/jenkins/client/job/salt-formulas/tests.yml
@@ -141,3 +141,10 @@
               CREDENTIALS_ID:
                 type: string
                 default: "gerrit"
+              DEFAULT_GIT_URL:
+                type: string
+                description: "Run against alternate system reclass"
+                default: "${_param:jenkins_gerrit_url}/salt-formulas/{{name}}"
+              DEFAULT_GIT_REF:
+                type: string
+                default: master
diff --git a/jenkins/client/job/salt-models/generate.yml b/jenkins/client/job/salt-models/generate.yml
index 60cfb14..6f2c85c 100644
--- a/jenkins/client/job/salt-models/generate.yml
+++ b/jenkins/client/job/salt-models/generate.yml
@@ -2,11 +2,11 @@
   jenkins:
     client:
       job_template:
-        generate_reclass_clusters:
-          name: generate_reclass_cluster_{{cookiecutter_template}}
+        generate-salt-model:
+          name: generate-salt-model-{{cookiecutter_template}}
           param:
             cookiecutter_template:
-            - separated_products
+            - separated-products
           template:
             type: workflow-scm
             concurrent: true
@@ -48,10 +48,13 @@
                 type: string
               RECLASS_MODEL_URL:
                 type: string
-                default: "jenkins-mk@${_param:jenkins_gerrit_url}/salt-models/training.git"
+                default: "${_param:jenkins_gerrit_url}/salt-models/training.git"
               RECLASS_MODEL_CREDENTIALS:
                 type: string
                 default: gerrit
               RECLASS_MODEL_BRANCH:
                 type: string
                 default: master
+              COMMIT_CHANGES:
+                type: boolean
+                default: false
diff --git a/jenkins/client/job/salt-models/init.yml b/jenkins/client/job/salt-models/init.yml
index 15690ea..7e5039a 100644
--- a/jenkins/client/job/salt-models/init.yml
+++ b/jenkins/client/job/salt-models/init.yml
@@ -5,3 +5,10 @@
 parameters:
   _param:
     salt_formulas_branches: master
+  jenkins:
+    client:
+      view:
+        "Salt models":
+          enabled: true
+          type: ListView
+          include_regex: ".*-salt-model-.*"
diff --git a/jenkins/client/job/salt-models/tests.yml b/jenkins/client/job/salt-models/tests.yml
index e451daf..c980d1d 100644
--- a/jenkins/client/job/salt-models/tests.yml
+++ b/jenkins/client/job/salt-models/tests.yml
@@ -40,14 +40,13 @@
               SALT_OPTS:
                 type: string
                 default: "--force-color"
-              GIT_URL:
-                type: string
-                default: "${_param:jenkins_gerrit_url}/salt-models/{{name}}"
-              RECLASS_SYSTEM_GIT_URL:
+              DEFAULT_GIT_URL:
                 type: string
                 description: "Run against alternate system reclass"
-              RECLASS_SYSTEM_GIT_REF:
+                default: "${_param:jenkins_gerrit_url}/salt-models/{{name}}"
+              DEFAULT_GIT_REF:
                 type: string
+                default: master
               CREDENTIALS_ID:
                 type: string
                 default: "gerrit"
@@ -83,3 +82,10 @@
               TEST_MODELS:
                 type: string
                 default: "{{clusters}}"
+              DEFAULT_GIT_URL:
+                type: string
+                description: "Run against alternate system reclass"
+                default: "${_param:jenkins_gerrit_url}/salt-models/reclass-system"
+              DEFAULT_GIT_REF:
+                type: string
+                default: master
diff --git a/jenkins/client/job/test_devops_portal.yml b/jenkins/client/job/test_devops_portal.yml
new file mode 100644
index 0000000..0d9f2df
--- /dev/null
+++ b/jenkins/client/job/test_devops_portal.yml
@@ -0,0 +1,46 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        test-devops-portal-unittests:
+          name: test-devops-portal-unittests
+          discard:
+            build:
+              keep_num: 10
+            artifact:
+              keep_num: 10
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: test-nodejs-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                "oss/devops-portal":
+                  branches:
+                    - master
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeTrivialRebase: false
+                      excludeNoCodeChange: false
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: '(recheck|reverify)'
+          param:
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            NODE_IMAGE:
+              type: string
+              default: "docker-sandbox.sandbox.mirantis.net/ikharin/ci/node-firefox:6.10"
+            COMMANDS:
+              type: text
+              default: |
+                npm run lint
+                npm run test:unit
+                npm run test:functional
diff --git a/jenkins/client/job/test_pipelines.yml b/jenkins/client/job/test_pipelines.yml
index b418626..5d58f20 100644
--- a/jenkins/client/job/test_pipelines.yml
+++ b/jenkins/client/job/test_pipelines.yml
@@ -41,3 +41,10 @@
             GRADLE_CMD:
               type: string
               default: "check"
+            DEFAULT_GIT_URL:
+                type: string
+                description: "Run against alternate system reclass"
+                default: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            DEFAULT_GIT_REF:
+                type: string
+                default: master
diff --git a/jenkins/client/security/matrix.yml b/jenkins/client/security/matrix.yml
index 4c3c8a9..b08aefd 100644
--- a/jenkins/client/security/matrix.yml
+++ b/jenkins/client/security/matrix.yml
@@ -3,6 +3,7 @@
     # Full admin access
     jenkins_security_matrix_admins:
       - ${_param:jenkins_client_user}
+      - admins
     # Read only access
     jenkins_security_matrix_read: []
     # Read + permissions to build jobs
diff --git a/linux/system/repo/mcp/contrail.yml b/linux/system/repo/mcp/contrail.yml
index 9f65ee3..c0ecc92 100644
--- a/linux/system/repo/mcp/contrail.yml
+++ b/linux/system/repo/mcp/contrail.yml
@@ -9,3 +9,7 @@
           source: "deb [arch=amd64] http://apt-mk.mirantis.com/${_param:linux_system_codename}/ ${_param:apt_mk_version} ${_param:openstack_version} ${_param:linux_repo_contrail_component} extra"
           architectures: amd64
           key_url: "http://apt-mk.mirantis.com/public.gpg"
+          pin:
+          - pin: 'release a=${_param:apt_mk_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/extra.yml b/linux/system/repo/mcp/extra.yml
index d8977f4..00de9ea 100644
--- a/linux/system/repo/mcp/extra.yml
+++ b/linux/system/repo/mcp/extra.yml
@@ -9,3 +9,7 @@
           architectures: amd64
           key_url: "http://apt-mk.mirantis.com/public.gpg"
           clean_file: true
+          pin:
+          - pin: 'release a=${_param:apt_mk_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/openstack.yml b/linux/system/repo/mcp/openstack.yml
index 67c9cad..5e6a420 100644
--- a/linux/system/repo/mcp/openstack.yml
+++ b/linux/system/repo/mcp/openstack.yml
@@ -1,7 +1,7 @@
 parameters:
   _param:
     mcp_repo_version: 1.0
-    apt_mk_version: stable 
+    apt_mk_version: stable
   linux:
     system:
       repo:
@@ -9,24 +9,47 @@
           source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_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"
+          pin:
+          - pin: 'release a=${_param:openstack_version}'
+            priority: 1050
+            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"
           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"
+          pin:
+          - pin: 'release a=${_param:openstack_version}-hotfix'
+            priority: 1050
+            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"
           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"
+          pin:
+          - pin: 'release a=${_param:openstack_version}-security'
+            priority: 1050
+            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"
           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"
+          pin:
+          - pin: 'release a=${_param:openstack_version}-uptades'
+            priority: 1050
+            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"
           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"
+          pin:
+          - pin: 'release a=${_param:openstack_version}-holdback'
+            priority: 1050
+            package: '*'
         mk_openstack:
           source: "deb [arch=amd64] http://apt-mk.mirantis.com/${_param:linux_system_codename}/ ${_param:apt_mk_version} ${_param:openstack_version}"
           architectures: amd64
           key_url: "http://apt-mk.mirantis.com/public.gpg"
-
+          pin:
+          - pin: 'release a=${_param:apt_mk_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/salt.yml b/linux/system/repo/mcp/salt.yml
index 1941fe8..d40cc5f 100644
--- a/linux/system/repo/mcp/salt.yml
+++ b/linux/system/repo/mcp/salt.yml
@@ -9,3 +9,7 @@
           architectures: amd64
           key_url: "http://apt-mk.mirantis.com/public.gpg"
           clean_file: true
+          pin:
+          - pin: 'release a=${_param:apt_mk_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/saltstack/trusty.yml b/linux/system/repo/saltstack/trusty.yml
index c20d4dc..68ce215 100644
--- a/linux/system/repo/saltstack/trusty.yml
+++ b/linux/system/repo/saltstack/trusty.yml
@@ -6,4 +6,5 @@
       repo:
         salt:
           source: "deb http://repo.saltstack.com/apt/ubuntu/14.04/amd64/${_param:salt_version} trusty main"
+          architectures: amd64
           key_url: "http://repo.saltstack.com/apt/ubuntu/14.04/amd64/${_param:salt_version}/SALTSTACK-GPG-KEY.pub"
\ No newline at end of file
diff --git a/linux/system/repo/saltstack/xenial.yml b/linux/system/repo/saltstack/xenial.yml
index 0c933b8..aca462a 100644
--- a/linux/system/repo/saltstack/xenial.yml
+++ b/linux/system/repo/saltstack/xenial.yml
@@ -6,4 +6,5 @@
       repo:
         salt:
           source: "deb http://repo.saltstack.com/apt/ubuntu/16.04/amd64/${_param:salt_version} xenial main"
+          architectures: amd64
           key_url: "http://repo.saltstack.com/apt/ubuntu/16.04/amd64/${_param:salt_version}/SALTSTACK-GPG-KEY.pub"
\ No newline at end of file
diff --git a/linux/system/repo/ubuntu.yml b/linux/system/repo/ubuntu.yml
index b4137bd..d36bcc1 100644
--- a/linux/system/repo/ubuntu.yml
+++ b/linux/system/repo/ubuntu.yml
@@ -3,19 +3,19 @@
     system:
       repo:
         ubuntu:
-          source: "deb http://archive.ubuntu.com/ubuntu/ ${_param:linux_system_codename} main restricted universe"
+          source: "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${_param:linux_system_codename} main restricted universe"
           architectures: amd64
           default: true
           key_id: 437D05B5
           key_server: keyserver.ubuntu.com
         ubuntu_updates:
-          source: "deb http://archive.ubuntu.com/ubuntu/ ${_param:linux_system_codename}-updates main restricted universe"
+          source: "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${_param:linux_system_codename}-updates main restricted universe"
           architectures: amd64
           default: true
           key_id: 437D05B5
           key_server: keyserver.ubuntu.com
         ubuntu_security:
-          source: "deb http://archive.ubuntu.com/ubuntu/ ${_param:linux_system_codename}-security main restricted universe"
+          source: "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${_param:linux_system_codename}-security main restricted universe"
           architectures: amd64
           default: true
           key_id: 437D05B5
diff --git a/linux/system/repo_local/glusterfs.yml b/linux/system/repo_local/glusterfs.yml
new file mode 100644
index 0000000..c34a6f2
--- /dev/null
+++ b/linux/system/repo_local/glusterfs.yml
@@ -0,0 +1,11 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+  linux:
+    system:
+      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"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
\ No newline at end of file
diff --git a/linux/system/repo_local/maas.yml b/linux/system/repo_local/maas.yml
new file mode 100644
index 0000000..ca65a79
--- /dev/null
+++ b/linux/system/repo_local/maas.yml
@@ -0,0 +1,11 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+  linux:
+    system:
+      repo:
+        maas:
+          refresh_db: ${_param:linux_repo_refresh_db}
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/${_param:linux_system_codename}/ ${_param:apt_mk_version} maas"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
\ No newline at end of file
diff --git a/neutron/control/openvswitch/cluster.yml b/neutron/control/openvswitch/cluster.yml
index dfc3c82..dc8e0c5 100644
--- a/neutron/control/openvswitch/cluster.yml
+++ b/neutron/control/openvswitch/cluster.yml
@@ -22,8 +22,12 @@
         mechanism:
           ovs:
             driver: openvswitch
+      compute:
+        region: ${_param:openstack_region}
       database:
         host: ${_param:openstack_database_address}
+      identity:
+        region: ${_param:openstack_region}
       message_queue:
         members:
           - host: ${_param:openstack_message_queue_node01_address}
@@ -64,4 +68,4 @@
           - name: ctl03
             host: ${_param:cluster_node03_address}
             port: 9696
-            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
\ No newline at end of file
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/openssh/server/team/mcp_qa.yml b/openssh/server/team/mcp_qa.yml
index 766044d..582882f 100644
--- a/openssh/server/team/mcp_qa.yml
+++ b/openssh/server/team/mcp_qa.yml
@@ -119,6 +119,20 @@
           full_name: Vitaly Gusev
           home: /home/vgusev
           email: vgusev@mirantis.com
+        rkhozinov:
+          enabled: true
+          name: rkhozinov
+          sudo: true
+          full_name: Ruslan Khozinov
+          home: /home/rkhozinov
+          email: rkhozinov@mirantis.com
+        vnaumov:
+          enabled: true
+          name: vnaumov
+          sudo: true
+          full_name: Vlad Naumov
+          home: /home/vnaumov
+          email: vnaumov@mirantis.com
       group:
         libvirtd:
           enabled: true
@@ -222,6 +236,16 @@
           public_keys:
           - ${public_keys:vgusev}
           user: ${linux:system:user:vgusev}
+        rkhozinov:
+          enable: true
+          public_keys:
+          - ${public_keys:rkhozinov}
+          user: ${linux:system:user:rkhozinov}
+        vnaumov:
+          enable: true
+          public_keys:
+          - ${public_keys:vnaumov}
+          user: ${linux:system:user:vnaumov}
   public_keys:
     ddmitriev:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDuD4wJ8hzkchQ0pfgdwWukQyps1xYRfHOsjosmDu/mmgaXVud5mnpwb2q35E2YYTox2mx+ulJqyS+099gz6MPg4P8D5qdMuRbAsJqbceLaaIGQhdT8qgSo7ESrl5pwvYnfWzKLKF0z5s7nrW0nvArC40zhV9o9XpvzzzSFByepWfkwA8ReldGUYVvTKp8YXaCrqEdMZrU42adPM2nl+fYBbGF+h4/Ka247aVjPeER0blV3znFXbv2Kf38G+i/TEGaktgpBdtGGDi1tX2loMypmTJeqZRJnM0Eoly0BnynB7CSxn11eoIXBUe1mVYNqmQd1hw6uh59iymhK5j939v9J ddmitriev@dis_xcom
@@ -261,3 +285,7 @@
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC3dCFNCYVxHQQD+/X1JJ9auAzpj15AkEl6yO4lJ1XL43ljxJbzWXXl3RN9vAjiBE1tvxEfuPEIxF7kO2sc1xPKtkw40RIwXrDIGfjlVCaBLtnxCPnCQX349UMSJl/AXpkHqKGVeAW+AO4zbeI8XnS9aDNMuX6ncgrLRMxWCxETL3J/IIE1LZ5v0QvyQBHuJc5jbyODVb4onff296SbjzYm96elJZcRFo4FzFaIcKtis+Sm4+6OAGCNDIXxfB9e5TK579x+L+ci/W1k83Fcz6NpQU/OM1R1CZVMap/Xet424aRMFPmA8sTF4hdYvWd6adBihco2isaW51b1Gkc+K9N9wELiEBMpdKQtqkPOvm98UhoRk7Wp+8+zSamj1uEs/7m6VCGFebq8V3xqTexWH2dCUznxZ5+KS6WLBh+3f4P6wG8VuWfgFjIUf7jjYKjidBXfSXFDxRkhf/LV8V0jLv+Ma1mjKBUX+rk7IFxm0X/PkjqNhVFlg3rH4Wre0+9WdsTCyzWS0HEaTxIKdPtwwULLEiwClO1LLebdlVjx9yhen0czXxMAHONbZeTvxN8ULfei+b7c07oYm16T8T9JAdiWn5nGxiT8TAUrCPBJMpbE4xQJLztYhAbMpfhFSdkKfTotFxTK9AKpTg4TZFY0NYOktFtV2R9ZnzP7hHZDSIg2Bw== rpromyshlennikov@mirantis.com
     vgusev:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrCyaZjs8hiwx38LfpeQ2z9n9ptwQ7gFrhq2z5sK9q/LQMCubbnp5xhyF0SMY1jmQUewBOKXhnq3QSX+DmtNsnhitnZBw2BE5PBXllCBWMMiWULfAYvB0of728Q3EEjrtyfHkt7o2E+CvreVJcVI4kBwjKh5WpVBZ8mmkW/sexLGMuYu0bUWjCddu6ZlhUa+y14VZKOKp44auemza1VL/UzqOVZkBAfR2gPV2pBG3Im+SlnOlDRxKPEXQbsn3u/sNeZq0wSY++khY86AU7jAKfL2NiNsoA7CyB0jTEKwYO3vOWOhECifZuHwY/TNWyRFWM2ImW3mT9aO7nE4w4jXXJ vgusev@vgusev
+    rkhozinov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCti9e5kyNEtX3MEns+eehUCzaxZmI8FWkWrLeRQY3jLUGzI3+N12tA7gKffczGIDP/ttnDg1hl98Yw28mkrIfYYMwRMqsBkGmYZyu6EXccyde6/5U/dgKVFGYLjWmbAAcaIaO2YoxqUJKvIanfLNHTRI29KwgxpaMCtjB7+jHiw/V0MF2xKi8yJgajZgh8iXPiv50BGjICx1BuqgqZb5jjxouV0FpU28mBOobqtaphOHeFPHk1Uool9MBt+2ocAjLbFhozmx0xryBVG4FGreovK60Zz4PuGCUL98rSTt8fbebfVokqkCG+sjykTcEQ8h5/0BUR4sPXw5mxATHD/AOv rkhozinov@rkhw
+    vnaumov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDno7VX9jiveRCF7d1C/FK24WLZwCArdrBBOQ1uHqpkUfUYtG6vrYgt/K2n2FXoX55lbeoJAwuNC9HviaY+vQAekCI4W2s02iD+j/GRUwitpv+lJZXSmt/q2PgLz3OFUIsJV0EwyNl+bexM4+2jYTmHeDMrXAsHL4I2GUv5sFycA11UhxZ/Qm2QMKlRZhje/IJieX9u2BhgYuPYffASVl4AhwtDagYdqquwUXrfu/dQRt/U9w0Di9alApcyPqiW9LbXUgwha1G9+ScQnxmp8WvmaV8YR+nf2OFxQHvOZPYjCzniRnYpaQUMeUAkJKxDwqR1dAKYnaQY5TfXtFwfzsjN vnaumov@vnaumov
diff --git a/openssh/server/team/members/zahedkhurasani.yml b/openssh/server/team/members/zahedkhurasani.yml
index f1a36a2..8504005 100644
--- a/openssh/server/team/members/zahedkhurasani.yml
+++ b/openssh/server/team/members/zahedkhurasani.yml
@@ -21,5 +21,5 @@
           user: ${linux:system:user:zkhurasani}
   public_keys:
     zkhurasani:
-      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIFv/QaKxzK3Y5fRWrq8rgiFIlL1nDnwClyhaxUE08lZ3yxOdMuwyR2+ODcm1+ZX8L3YnXGxVA0avDxAZTbGr/Bo8F0QTTtkv827d/7qrtWwnH0egPqIegWAwvh1nDiSaPJNoq6HbvLVjhIwRO9J+qgFrIfu5Ul8FmvaV9wRmuyI44TbtgmHVcLdVGZEJzFCKZvR8nOPXmWJtVuHzUpgGnMgwx06sPBYBuMkamOdsCWZpV6hXFA9Htk6Yws549LJ3fuHk3lv9prYfJz99m6dhqW+P6sx9YOrZCZT6d03aWZ6KOj43MDQMltPmrCKg1HoeQ8emP6Nere2bLbMg2xY5d
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdj43vCWri1SfE0/z24blmTG229kdbwmkK4R5ZzGx63r9Elj1NeOj7Bu7o3QwdtusAEq24dnIs3bSJEgMm+vsYyKcHMoPzrEeD4b42SEZnINBvUTaYHKjZKw9JvaNL8ZibfubiMeDVsefHX0/swAGPosCVNDiTYlIWUT2gKoFcHH8vyRzCC+KOxXvkWQtmJHML5lVHkTVhpgQln8G7aAmyvLMNFzDkOASkMU29uAA/9fWLqtc4T3fA3AUVEcClVI8fFYcDZDP6Y7HZP+hDZYe8vFxHEEpOM7CCq38M22p6nf00ITia60QyYGjpm2cgJPv1DmPZ4cwrbSCpMcvFu7kt
 
diff --git a/openssh/server/team/stacklight.yml b/openssh/server/team/stacklight.yml
index 90799da..3eafce1 100644
--- a/openssh/server/team/stacklight.yml
+++ b/openssh/server/team/stacklight.yml
@@ -9,13 +9,6 @@
           full_name: Ales Komarek
           home: /home/newt
           email: mail@newt.cz
-        gthouvenin:
-          enabled: true
-          name: gthouvenin
-          sudo: true
-          full_name: Guillaume Thouvenin
-          home: /home/gthouvenin
-          email: gthouvenin@mirantis.com
         spasquier:
           enabled: true
           name: spasquier
@@ -76,11 +69,6 @@
           public_keys:
           - ${public_keys:newt}
           user: ${linux:system:user:newt}
-        gthouvenin:
-          enabled: true
-          public_keys:
-          - ${public_keys:gthouvenin}
-          user: ${linux:system:user:gthouvenin}
         spasquier:
           enabled: true
           public_keys:
@@ -119,8 +107,6 @@
   public_keys:
     newt:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3odU+3V2uDA2ptAFL9hrJRPNEEdAyztWOZFQ5Oyd9oerTGOU3p4xmrgWWjfKFKbYGhiiIUcYAol5PkTfKukGEkkjCHYA1t023soCaaAj85wCZCnw2zQNAziwxTYmAzTqgxiSvtZNMMrtJvFHRIRDzJ3M1lV0prWNWkMM1/3FAd4W49y6VT3fkMCo8uqG7CfGdgR2DgBCxf9KaNPfW5eDEPOgmE5lK8tVSEI6T+Cg7hbcTf4lFYnlFBnlQgp/0JstsM4Vbwb4B34LOpOsf2S8rrWk2xQMjwaMHXkc2s/E8iW3F5nVFuyEXYISFQIiAHw8dzC6CHgLcyHUVWwznKawZ newt@newt-dev1
-    gthouvenin:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/5rr0LPVsChG0hzpa39JNwX1JdDH/WJL1sFjAG05Y9XDRAri5CYRGWwDdxyN2MA2+ULVojzV5QeV541fnIU6gSpc6Yytm6Ug8DjQ3TwNUY+92GQv5tZj9i/yB8aGpujleVXMDPT5yPDwOnc/q4f/fQWgrXipatkj+lNqL5Z7Ifai0BgmZS1/31LGkGmC1rne6UwszPz6dkswfu6urfKNuQXilcXvYqORlV3U0XD2nLDjNivGVbIArkYGVsgLCGM57cCCF1g1q7QZCNFPzxr+uxMvY2fGgS9ysMkRTr29LtwKMOl8H3cof5alLCIWukpv5qs50NlVEkGu1zKsa9jUj guillaume@Lenovo-PC
     spasquier:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCXBHKQaGUNB92DsnyvflmCbmuXnkiuNahZiue3hnyXqLA2q8jmQmzBbxReAJzexnVfJhrUCTw8IPJUpMUP27u3igvGdkhfctdUuxVf9yGJErtGNgHK/aGbeLCvUOmhw6X/xbf3IbyFL1gwxOJ2cmmjlSptYU9E1W2xFY+IMFWBhzO3vso5EABgPVli/UUMfeXUUd++lIZpoyYe2Hkri1QGNhzfbZcFjEO78+vNiLZrvjJEtkXWu7iZTYK6eE365CiFJzqFL7N6Ichb28qakcmVqR/foreuz3cOMqMGssKoOQk1213x8w4fE0yLwf9Ft8L7GMf+vXQvuNt0ZKBPWqn7 spasquier@mirantis.com
     scroiset:
diff --git a/prometheus/server/target/dns.yml b/prometheus/server/target/dns.yml
new file mode 100644
index 0000000..b51f732
--- /dev/null
+++ b/prometheus/server/target/dns.yml
@@ -0,0 +1,15 @@
+parameters:
+  prometheus:
+    server:
+      target:
+        dns:
+          - name: 'pushgateway'
+            domain:
+            - 'tasks.prometheus_pushgateway'
+            type: A
+            port: 9091
+          - name: 'prometheus'
+            domain:
+            - 'tasks.prometheus_server'
+            type: A
+            port: 9090
diff --git a/prometheus/server/target/etcd.yml b/prometheus/server/target/etcd.yml
index e343bda..ae75c64 100644
--- a/prometheus/server/target/etcd.yml
+++ b/prometheus/server/target/etcd.yml
@@ -1,6 +1,16 @@
-classes:
-- service.etcd.server.cluster
 parameters:
-  server:
-    target:
-      etcd: ${etcd:server:members}
+  prometheus:
+    server:
+      target:
+        etcd:
+          scheme: https
+          ssl_dir: /opt/prometheus/config
+          cert_name: prometheus-server.crt
+          key_name: prometheus-server.key
+          member:
+          - host: ${_param:cluster_node01_address}
+            port: ${_param:cluster_node01_port}
+          - host: ${_param:cluster_node02_address}
+            port: ${_param:cluster_node02_port}
+          - host: ${_param:cluster_node03_address}
+            port: ${_param:cluster_node03_port}
diff --git a/prometheus/server/target/kubernetes.yml b/prometheus/server/target/kubernetes.yml
index 293895b..8abed5d 100644
--- a/prometheus/server/target/kubernetes.yml
+++ b/prometheus/server/target/kubernetes.yml
@@ -1,10 +1,9 @@
-classes:
-- service.kubernetes.master.cluster
 parameters:
-  server:
-    target:
-      kubernetes:
-        api_ip: ${kubernetes:master:apiserver:address}
-        ssl_dir: /opt/prometheus/config
-        cert_name: kubelet-client.crt
-        key_name: kubelet-client.key
+  prometheus:
+    server:
+      target:
+        kubernetes:
+          api_ip: ${_param:kubernetes_control_address}
+          ssl_dir: /opt/prometheus/config
+          cert_name: prometheus-server.crt
+          key_name: prometheus-server.key
diff --git a/salt/master/formula/pkg/foundation.yml b/salt/master/formula/pkg/foundation.yml
index 3611321..ebb2b00 100644
--- a/salt/master/formula/pkg/foundation.yml
+++ b/salt/master/formula/pkg/foundation.yml
@@ -4,6 +4,9 @@
       environment:
         prd:
           formula:
+            aptcacher:
+              source: pkg
+              name: salt-formula-aptcacher
             aptly:
               source: pkg
               name: salt-formula-aptly
@@ -19,7 +22,9 @@
             freeipa:
               source: pkg
               name: salt-formula-freeipa
+            maas:
+              source: pkg
+              name: salt-formula-maas
             openldap:
               source: pkg
               name: salt-formula-openldap
-
diff --git a/salt/master/git.yml b/salt/master/git.yml
index 02d0b67..267bdb1 100644
--- a/salt/master/git.yml
+++ b/salt/master/git.yml
@@ -4,6 +4,7 @@
 - system.salt.master.formula.git.foundation
 - system.salt.master.formula.git.kubernetes
 - system.salt.master.formula.git.openstack
+- system.salt.master.formula.git.oss
 - system.salt.master.formula.git.saltstack
 - system.salt.master.formula.git.stacklight
 - system.salt.master.formula.git.monitoring
diff --git a/salt/master/pkg.yml b/salt/master/pkg.yml
index b075138..1001d49 100644
--- a/salt/master/pkg.yml
+++ b/salt/master/pkg.yml
@@ -4,6 +4,7 @@
 - system.salt.master.formula.pkg.foundation
 - system.salt.master.formula.pkg.kubernetes
 - system.salt.master.formula.pkg.openstack
+- system.salt.master.formula.pkg.oss
 - system.salt.master.formula.pkg.saltstack
 - system.salt.master.formula.pkg.stacklight
 - system.salt.master.formula.pkg.monitoring
diff --git a/salt/minion/cert/k8s_client_prometheus.yml b/salt/minion/cert/prometheus_server.yml
similarity index 63%
rename from salt/minion/cert/k8s_client_prometheus.yml
rename to salt/minion/cert/prometheus_server.yml
index 04cd374..23c4abf 100644
--- a/salt/minion/cert/k8s_client_prometheus.yml
+++ b/salt/minion/cert/prometheus_server.yml
@@ -2,11 +2,12 @@
   salt:
     minion:
       cert:
-        k8s_client_prometheus:
+        prometheus_server:
           host: ${_param:salt_minion_ca_host}
           authority: ${_param:salt_minion_ca_authority}
-          key_file: /srv/volumes/prometheus-config/kubelet-client.key
-          cert_file: /srv/volumes/prometheus-config/kubelet-client.crt
-          common_name: kubelet-client
+          key_file: /srv/volumes/prometheus/prometheus-server.key
+          cert_file: /srv/volumes/prometheus/prometheus-server.crt
+          common_name: prometheus-server
           signing_policy: cert_client
           alternative_names: IP:${_param:cluster_vip_address},IP:${_param:cluster_node01_address},IP:${_param:cluster_node02_address},IP:${_param:cluster_node03_address},IP:${_param:kubernetes_internal_api_address}
+          mode: '0444'