Merge "DevOps portal: Pushkin service"
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/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/jenkins/client/approved_scripts.yml b/jenkins/client/approved_scripts.yml
index bf46803..d947687 100644
--- a/jenkins/client/approved_scripts.yml
+++ b/jenkins/client/approved_scripts.yml
@@ -92,3 +92,5 @@
         - 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/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/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..50e3819 100644
--- a/jenkins/client/job/gating.yml
+++ b/jenkins/client/job/gating.yml
@@ -23,6 +23,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/opencontrail/build/generic.yml b/jenkins/client/job/opencontrail/build/generic.yml
index 7516354..7a2698c 100644
--- a/jenkins/client/job/opencontrail/build/generic.yml
+++ b/jenkins/client/job/opencontrail/build/generic.yml
@@ -84,6 +84,10 @@
                 type: boolean
                 default: 'false'
                 description: "Don't cleanup on failure"
+              DEBUG_DPDK:
+                type: boolean
+                default: 'false'
+                description: "CONFIG_RTE_LIBRTE_ETHDEV_DEBUG enabled or disabled"
               OS:
                 type: string
                 default: "{{os}}"
diff --git a/jenkins/client/job/test_devops_portal.yml b/jenkins/client/job/test_devops_portal.yml
index 20f936b..0d9f2df 100644
--- a/jenkins/client/job/test_devops_portal.yml
+++ b/jenkins/client/job/test_devops_portal.yml
@@ -39,5 +39,8 @@
               type: string
               default: "docker-sandbox.sandbox.mirantis.net/ikharin/ci/node-firefox:6.10"
             COMMANDS:
-              type: string
-              default: "npm install\nnpm run test"
+              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/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/neutron/control/openvswitch/cluster.yml b/neutron/control/openvswitch/cluster.yml
index cc39b0a..dc8e0c5 100644
--- a/neutron/control/openvswitch/cluster.yml
+++ b/neutron/control/openvswitch/cluster.yml
@@ -23,11 +23,11 @@
           ovs:
             driver: openvswitch
       compute:
-        region: $_param:openstack_region}
+        region: ${_param:openstack_region}
       database:
         host: ${_param:openstack_database_address}
       identity:
-        region: $_param:openstack_region}
+        region: ${_param:openstack_region}
       message_queue:
         members:
           - host: ${_param:openstack_message_queue_node01_address}
diff --git a/prometheus/server/target/dns.yml b/prometheus/server/target/dns.yml
index 1dd3afb..b51f732 100644
--- a/prometheus/server/target/dns.yml
+++ b/prometheus/server/target/dns.yml
@@ -1,14 +1,15 @@
 parameters:
-  server:
-    target:
-      dns:
-        - name: 'pushgateway'
-          domain:
-          - 'tasks.prometheus_pushgateway'
-          type: A
-          port: 9091
-        - name: 'prometheus'
-          domain:
-          - 'tasks.prometheus_server'
-          type: A
-          port: 9090
+  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 41204b5..ae75c64 100644
--- a/prometheus/server/target/etcd.yml
+++ b/prometheus/server/target/etcd.yml
@@ -1,10 +1,16 @@
 parameters:
-  server:
-    target:
-      etcd:
-        - 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}
+  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 d77ab3f..8abed5d 100644
--- a/prometheus/server/target/kubernetes.yml
+++ b/prometheus/server/target/kubernetes.yml
@@ -1,8 +1,9 @@
 parameters:
-  server:
-    target:
-      kubernetes:
-        api_ip: ${_param:kubernetes_control_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/minion/cert/k8s_client_prometheus.yml b/salt/minion/cert/prometheus_server.yml
similarity index 67%
rename from salt/minion/cert/k8s_client_prometheus.yml
rename to salt/minion/cert/prometheus_server.yml
index 138fce8..23c4abf 100644
--- a/salt/minion/cert/k8s_client_prometheus.yml
+++ b/salt/minion/cert/prometheus_server.yml
@@ -2,12 +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/kubelet-client.key
-          cert_file: /srv/volumes/prometheus/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'