Merge pull request #194 from alexrubtsov/pr_mirantis_sto

Add "sudo less" for STO team
diff --git a/bind/server/single.yml b/bind/server/single.yml
new file mode 100644
index 0000000..be34143
--- /dev/null
+++ b/bind/server/single.yml
@@ -0,0 +1,9 @@
+classes:
+  - service.bind.server.single
+parameters:
+  bind:
+    server:
+      enabled: true
+      recursion:
+        hosts:
+          - localhost
diff --git a/designate/server/backend/bind.yml b/designate/server/backend/bind.yml
new file mode 100644
index 0000000..2b40424
--- /dev/null
+++ b/designate/server/backend/bind.yml
@@ -0,0 +1,36 @@
+parameters:
+  designate:
+    server:
+      backend:
+        bind9:
+          rndc_key: "${_param:designate_bind9_rndc_key}"
+  bind:
+    server:
+      key:
+        designate:
+          secret: "${_param:designate_bind9_rndc_key}"
+          algorithm: hmac-sha512
+      allow_new_zones: true
+      query: true
+      control:
+        local:
+          enabled: true
+          bind:
+            address: 127.0.0.1
+            port: 953
+          allow:
+            - 127.0.0.1
+            - ${_param:single_address}
+          keys:
+            - designate
+    client:
+      enabled: true
+      option:
+        default:
+          server: 127.0.0.1
+          port: 953
+          key: designate
+      key:
+        designate:
+          secret: "${_param:designate_bind9_rndc_key}"
+          algorithm: hmac-sha512
diff --git a/designate/server/backend/bind9.yml b/designate/server/backend/bind9.yml
deleted file mode 100644
index fa15ae1..0000000
--- a/designate/server/backend/bind9.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-parameters:
-  designate:
-    server:
-      backend:
-        bind9:
-          rndc_key: ${_param:designate_bind9_rndc_key}
-
diff --git a/gerrit/client/project/ci.yml b/gerrit/client/project/ci.yml
new file mode 100644
index 0000000..f1fdcd1
--- /dev/null
+++ b/gerrit/client/project/ci.yml
@@ -0,0 +1,20 @@
+parameters:
+  gerrit:
+    client:
+      project:
+        mcp-ci/pipeline-library:
+          enabled: true
+          description: Jenkins pipeline libraries
+          upstream: https://github.com/Mirantis/pipeline-library
+          access: ${gerrit:client:default_access}
+          require_change_id: true
+          require_agreement: false
+          merge_content: true
+        mk/mk-pipelines:
+          enabled: true
+          description: Jenkins pipelines
+          upstream: https://github.com/Mirantis/mk-pipelines
+          access: ${gerrit:client:default_access}
+          require_change_id: true
+          require_agreement: false
+          merge_content: true
diff --git a/jenkins/client/init.yml b/jenkins/client/init.yml
index ce1916a..f411c39 100644
--- a/jenkins/client/init.yml
+++ b/jenkins/client/init.yml
@@ -15,24 +15,32 @@
         user: ${_param:jenkins_client_user}
         password: ${_param:jenkins_client_password}
       plugin:
-        slack: {}
-        extended-choice-parameter: {}
-        rebuild: {}
-        test-stability: {}
+        ansicolor: {}
         build-blocker-plugin: {}
+        build-monitor-plugin: {}
+        build-user-vars-plugin: {}
+        categorized-view: {}
+        description-setter: {}
+        discard-old-build: {}
+        docker-workflow: {}
+        extended-choice-parameter: {}
+        gerrit-trigger: {}
+        git: {}
         heavy-job: {}
+        matrix-auth: {}
+        monitoring: {}
+        pipeline-utility-steps: {}
+        rebuild: {}
+        simple-theme-plugin: {}
+        slack: {}
+        test-stability: {}
+        timestamper: {}
         workflow-cps: {}
         workflow-remote-loader: {}
-        workflow-scm-step: {}
-        docker-workflow: {}
-        gerrit-trigger: {}
-        pipeline-utility-steps: {}
-        discard-old-build: {}
-        ansicolor: {}
-        timestamper: {}
-        build-user-vars-plugin: {}
-        description-setter: {}
-        build-monitor-plugin: {}
-        categorized-view: {}
-        monitoring: {}
-        matrix-auth: {}
+        workflow-scm-step:
+          restart: true
+      lib:
+        pipeline-library:
+          enabled: true
+          url: ${_param:jenkins_gerrit_url}/mcp-ci/pipeline-library
+          credential_id: gerrit
diff --git a/jenkins/client/job/debian/packages/extra.yml b/jenkins/client/job/debian/packages/extra.yml
index 941c9b4..e51354a 100644
--- a/jenkins/client/job/debian/packages/extra.yml
+++ b/jenkins/client/job/debian/packages/extra.yml
@@ -113,3 +113,12 @@
               ARCH:
                 type: string
                 default: "amd64"
+              PPA:
+                type: string
+                default: "mirantis-opencontrail/extra"
+              UPLOAD_PPA:
+                type: boolean
+                default: 'true'
+              UPLOAD_APTLY:
+                type: boolean
+                default: 'true'
diff --git a/jenkins/client/job/debian/packages/horizon/modules.yml b/jenkins/client/job/debian/packages/horizon/modules.yml
index f63032c..30d7c64 100644
--- a/jenkins/client/job/debian/packages/horizon/modules.yml
+++ b/jenkins/client/job/debian/packages/horizon/modules.yml
@@ -80,3 +80,6 @@
               ARCH:
                 type: string
                 default: "amd64"
+              UPLOAD_APTLY:
+                type: boolean
+                default: 'true'
diff --git a/jenkins/client/job/debian/packages/horizon/themes.yml b/jenkins/client/job/debian/packages/horizon/themes.yml
index a8f8ac2..b96a0c6 100644
--- a/jenkins/client/job/debian/packages/horizon/themes.yml
+++ b/jenkins/client/job/debian/packages/horizon/themes.yml
@@ -80,3 +80,6 @@
               ARCH:
                 type: string
                 default: "amd64"
+              UPLOAD_APTLY:
+                type: boolean
+                default: 'true'
\ No newline at end of file
diff --git a/jenkins/client/job/debian/packages/salt-multi.yml b/jenkins/client/job/debian/packages/salt-multi.yml
index f703e7b..d216e9d 100644
--- a/jenkins/client/job/debian/packages/salt-multi.yml
+++ b/jenkins/client/job/debian/packages/salt-multi.yml
@@ -109,3 +109,12 @@
               ARCH:
                 type: string
                 default: "amd64"
+              PPA:
+                type: string
+                default: "salt-formulas/ppa"
+              UPLOAD_PPA:
+                type: boolean
+                default: 'true'
+              UPLOAD_APTLY:
+                type: boolean
+                default: 'true'
\ No newline at end of file
diff --git a/jenkins/client/job/debian/packages/salt.yml b/jenkins/client/job/debian/packages/salt.yml
index 7dd70ea..5375d60 100644
--- a/jenkins/client/job/debian/packages/salt.yml
+++ b/jenkins/client/job/debian/packages/salt.yml
@@ -137,6 +137,8 @@
               dist: trusty
             - name: pritunl
               dist: trusty
+            - name: prometheus
+              dist: trusty
             - name: python
               dist: trusty
             - name: rabbitmq
@@ -167,6 +169,8 @@
               dist: trusty
             - name: taiga
               dist: trusty
+            - name: telegraf
+              dist: trusty
             - name: varnish
               dist: trusty
             - name: zookeeper
@@ -303,6 +307,8 @@
               dist: xenial
             - name: pritunl
               dist: xenial
+            - name: prometheus
+              dist: xenial
             - name: python
               dist: xenial
             - name: rabbitmq
@@ -333,6 +339,8 @@
               dist: xenial
             - name: taiga
               dist: xenial
+            - name: telegraf
+              dist: xenial
             - name: varnish
               dist: xenial
             - name: zookeeper
@@ -400,3 +408,12 @@
               ARCH:
                 type: string
                 default: "amd64"
+              PPA:
+                type: string
+                default: "salt-formulas/ppa"
+              UPLOAD_PPA:
+                type: boolean
+                default: 'true'
+              UPLOAD_APTLY:
+                type: boolean
+                default: 'true'
diff --git a/jenkins/client/job/deploy/init.yml b/jenkins/client/job/deploy/init.yml
index 62c92b4..d725c20 100644
--- a/jenkins/client/job/deploy/init.yml
+++ b/jenkins/client/job/deploy/init.yml
@@ -1,5 +1,3 @@
 classes:
-  - system.jenkins.client.job.deploy.mk_lab
-  - system.jenkins.client.job.deploy.cicd_lab
-  - system.jenkins.client.job.deploy.demo
-  - system.jenkins.client.job.deploy.reclass_update
+  - system.jenkins.client.job.deploy.lab
+  - system.jenkins.client.job.deploy.update
diff --git a/jenkins/client/job/deploy/cicd_lab.yml b/jenkins/client/job/deploy/lab/cicd.yml
similarity index 100%
rename from jenkins/client/job/deploy/cicd_lab.yml
rename to jenkins/client/job/deploy/lab/cicd.yml
diff --git a/jenkins/client/job/deploy/demo.yml b/jenkins/client/job/deploy/lab/demo.yml
similarity index 100%
rename from jenkins/client/job/deploy/demo.yml
rename to jenkins/client/job/deploy/lab/demo.yml
diff --git a/jenkins/client/job/deploy/lab/init.yml b/jenkins/client/job/deploy/lab/init.yml
new file mode 100644
index 0000000..24cdcab
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/init.yml
@@ -0,0 +1,6 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.mk.physical
+  - system.jenkins.client.job.deploy.lab.mk.virtual
+  - system.jenkins.client.job.deploy.lab.mk.cleanup
+  - system.jenkins.client.job.deploy.lab.cicd
+  - system.jenkins.client.job.deploy.lab.demo
diff --git a/jenkins/client/job/deploy/lab/mk/cleanup.yml b/jenkins/client/job/deploy/lab/mk/cleanup.yml
new file mode 100644
index 0000000..72e40f5
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/mk/cleanup.yml
@@ -0,0 +1,37 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        deploy-heat-cleanup:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - heat cleanup"
+          discard:
+            build:
+              keep_num: 20
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: cleanup-pipeline.groovy
+          param:
+            # openstack api
+            OPENSTACK_API_URL:
+              type: string
+              default: "https://vpc.tcpisek.cz:5000/v2.0"
+            OPENSTACK_API_CREDENTIALS:
+              type: string
+              default: "openstack-qa-credentials"
+            OPENSTACK_API_PROJECT:
+              type: string
+              default: "mirantis_mk20_qa"
+            OPENSTACK_API_CLIENT:
+              type: string
+              default: "liberty"
+            OPENSTACK_API_VERSION:
+              type: string
+              default: "2"
+            # heat
+            HEAT_STACK_NAME:
+              type: string
+              description: This stack will be deleted.
diff --git a/jenkins/client/job/deploy/lab/mk/init.yml b/jenkins/client/job/deploy/lab/mk/init.yml
new file mode 100644
index 0000000..7da9149
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/mk/init.yml
@@ -0,0 +1,104 @@
+parameters:
+  _param:
+    jenkins_deploy_lab_mk_jobs: []
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      job_template:
+        deploy_heat_template:
+          name: deploy-{{stack_type}}-{{lab}}
+          jobs: ${_param:jenkins_deploy_lab_mk_jobs}
+          template:
+            type: workflow-scm
+            discard:
+              build:
+                keep_num: 20
+            concurrent: true
+            display_name: "Deploy - {{lab}} {{stack_type}} lab"
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: lab-pipeline.groovy
+            param:
+              # deployments and test settings
+              STACK_TYPE:
+                type: string
+                default: "{{stack_type}}"
+              INSTALL:
+                type: string
+                default: "{{install}}"
+              TEST:
+                type: string
+                default: ""
+
+              # heat
+              HEAT_TEMPLATE_URL:
+                type: string
+                default: "git@github.com:Mirantis/mk-lab-heat-templates.git"
+              HEAT_TEMPLATE_CREDENTIALS:
+                type: string
+                default: "gerrit"
+              HEAT_TEMPLATE_BRANCH:
+                type: string
+                default: "composite"
+              HEAT_STACK_NAME:
+                type: string
+                description: Heat stack name. Will be generated if missing.
+              HEAT_STACK_TEMPLATE:
+                type: string
+                default: "{{lab}}"
+              HEAT_STACK_ENVIRONMENT:
+                type: string
+                default: "tcpisek"
+              HEAT_STACK_ZONE:
+                type: string
+                default: "mirantis-zone-qa"
+              HEAT_STACK_PUBLIC_NET:
+                type: string
+                default: "mirantis-private"
+              HEAT_STACK_DELETE:
+                type: boolean
+                default: 'true'
+              HEAT_STACK_REUSE:
+                type: boolean
+                default: 'false'
+
+              # salt master
+              SALT_MASTER_CREDENTIALS:
+                type: string
+                default: "salt-qa-credentials"
+              SALT_MASTER_URL:
+                type: string
+                default: "${_param:jenkins_salt_api_url}"
+
+              # openstack api
+              OPENSTACK_API_URL:
+                type: string
+                default: "https://vpc.tcpisek.cz:5000/v2.0"
+              OPENSTACK_API_CREDENTIALS:
+                type: string
+                default: "openstack-qa-credentials"
+              OPENSTACK_API_PROJECT:
+                type: string
+                default: "mirantis_mk20_qa"
+              OPENSTACK_API_CLIENT:
+                type: string
+                default: "liberty"
+              OPENSTACK_API_VERSION:
+                type: string
+                default: "2"
+
+              # k8s setttings
+              K8S_API_SERVER:
+                type: string
+                default: "http://127.0.0.1:8080"
+              K8S_CONFORMANCE_IMAGE:
+                type: string
+                default: "docker-dev-virtual.docker.mirantis.net/mirantis/kubernetes/k8s-conformance:v1.5.1-3_1482332392819"
+
+              # Tempest settings
+              TEMPEST_IMAGE_LINK:
+                type: string
+                default: "sandbox-docker-prod-local.docker.mirantis.net/mirantis/rally_tempest:0.1"
+
diff --git a/jenkins/client/job/deploy/lab/mk/physical.yml b/jenkins/client/job/deploy/lab/mk/physical.yml
new file mode 100644
index 0000000..a66909d
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/mk/physical.yml
@@ -0,0 +1,17 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.mk
+parameters:
+  _param:
+    jenkins_deploy_lab_mk_jobs:
+      - lab: mcp10_contrail
+        install: core,kvm,openstack,contrail
+        stack_type: physical
+      - lab: mcp10_opencontrail_nfv
+        install: core,kvm,openstack,nfv
+        stack_type: physical
+      - lab: mcp10_dvr
+        install: core,kvm,openstack,dvr
+        stack_type: physical
+      - lab: mcp10_non_dvr
+        install: core,kvm,openstack
+        stack_type: physical
diff --git a/jenkins/client/job/deploy/lab/mk/virtual.yml b/jenkins/client/job/deploy/lab/mk/virtual.yml
new file mode 100644
index 0000000..af65a4d
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/mk/virtual.yml
@@ -0,0 +1,32 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.mk
+parameters:
+  _param:
+    jenkins_deploy_lab_mk_jobs:
+      - lab: virtual_mcp05_dvr
+        install: core,openstack,dvr
+        stack_type: heat
+      - lab: virtual_mcp05_ovs
+        install: core,openstack,ovs
+        stack_type: heat
+      - lab: virtual_mcp10_contrail
+        install: core,openstack,contrail
+        stack_type: heat
+      - lab: virtual_mcp10_dvr
+        install: core,openstack,dvr
+        stack_type: heat
+      - lab: virtual_mcp10_ovs
+        install: core,openstack,ovs
+        stack_type: heat
+      - lab: virtual_mk20_advanced
+        install: core,openstack
+        stack_type: heat
+      - lab: virtual_mk20_basic
+        install: core,openstack
+        stack_type: heat
+      - lab: virtual_mk22_advanced
+        install: core,openstack
+        stack_type: heat
+      - lab: virtual_mk22_basic
+        install: core,openstack
+        stack_type: heat
diff --git a/jenkins/client/job/deploy/maas_lab.yml b/jenkins/client/job/deploy/maas_lab.yml
deleted file mode 100644
index b4b61e4..0000000
--- a/jenkins/client/job/deploy/maas_lab.yml
+++ /dev/null
@@ -1,67 +0,0 @@
-parameters:
-  jenkins:
-    client:
-      job:
-        heat_maas_lab:
-          type: workflow
-          concurrent: false
-          display_name: "[Heat] Deploy MAAS lab"
-          param:
-            HEAT_TEMPLATE_URL:
-              type: string
-              default: "git@github.com:Mirantis/mk-lab-heat-templates.git"
-            HEAT_TEMPLATE_CREDENTIALS:
-              type: string
-              default: "git-qa"
-            HEAT_TEMPLATE_BRANCH:
-              type: string
-              default: "master"
-            OPENSTACK_API_CLIENT:
-              type: string
-              default: "liberty"
-            OPENSTACK_API_VERSION:
-              type: string
-              default: "2"
-            OPENSTACK_API_URL:
-              type: string
-              default: "https://vpc.tcpisek.cz:5000/v2.0"
-            OPENSTACK_API_CREDENTIALS:
-              type: string
-              default: "openstack-qa"
-            OPENSTACK_API_PROJECT:
-              type: string
-              default: "mirantis_mk20_qa"
-            SALT_MASTER_CREDENTIALS:
-              type: string
-              default: "salt-qa-credentials"
-            HEAT_STACK_NAME:
-              type: string
-              default: "maas_gate"
-            HEAT_STACK_TEMPLATE:
-              type: string
-              default: "maas_lab"
-            HEAT_STACK_ENVIRONMENT:
-              type: string
-              default: "tcpisek"
-            HEAT_STACK_ZONE:
-              type: string
-              default: "mirantis-zone-qa"
-            HEAT_STACK_PUBLIC_NET:
-              type: string
-              default: "inet2"
-          libs:
-          - repository: pipeline_libs
-            file: macro/common.groovy
-          - repository: pipeline_libs
-            file: macro/git.groovy
-          - repository: pipeline_libs
-            file: macro/http.groovy
-          - repository: pipeline_libs
-            file: macro/openstack.groovy
-          - repository: pipeline_libs
-            file: macro/python.groovy
-          - repository: pipeline_libs
-            file: macro/salt.groovy
-          script:
-            repository: pipeline_libs
-            file: pipeline/provision/heat_maas_lab.groovy
diff --git a/jenkins/client/job/deploy/mk_lab.yml b/jenkins/client/job/deploy/mk_lab.yml
deleted file mode 100644
index a36d26e..0000000
--- a/jenkins/client/job/deploy/mk_lab.yml
+++ /dev/null
@@ -1,205 +0,0 @@
-parameters:
-  jenkins:
-    client:
-      job:
-        deploy-update-package:
-          type: workflow-scm
-          concurrent: true
-          display_name: "Update system package(s)"
-          scm:
-            type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
-            credentials: "gerrit"
-            script: update-package.groovy
-          param:
-            SALT_MASTER_URL:
-              type: string
-              default: "http://10.10.10.1:8000"
-            SALT_MASTER_CREDENTIALS:
-              type: string
-              default: "salt"
-            UPDATE_SERVERS:
-              type: string
-              default: "*"
-              description: Salt compound target to match nodes to be updated.
-            UPDATE_PACKAGES:
-              type: string
-              default: ""
-              description: Space delimited list of packages to be updates [package1=version package2=version], empty string means all updating all packages to the latest version.
-            UPDATE_COMMIT:
-              type: boolean
-              default: false
-
-        deploy-heat-cleanup:
-          type: workflow-scm
-          concurrent: true
-          display_name: "Deploy - heat cleanup"
-          discard:
-            build:
-              keep_num: 20
-          scm:
-            type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
-            credentials: "gerrit"
-            script: cleanup-pipeline.groovy
-          param:
-            # openstack api
-            OPENSTACK_API_URL:
-              type: string
-              default: "https://vpc.tcpisek.cz:5000/v2.0"
-            OPENSTACK_API_CREDENTIALS:
-              type: string
-              default: "openstack-qa-credentials"
-            OPENSTACK_API_PROJECT:
-              type: string
-              default: "mirantis_mk20_qa"
-            OPENSTACK_API_CLIENT:
-              type: string
-              default: "liberty"
-            OPENSTACK_API_VERSION:
-              type: string
-              default: "2"
-            # heat
-            HEAT_STACK_NAME:
-              type: string
-              description: This stack will be deleted.
-
-      job_template:
-        deploy_heat_template:
-          name: deploy-{{stack_type}}-{{lab}}
-          jobs:
-            # virtual
-            - lab: virtual_mcp05_dvr
-              install: core,openstack,dvr
-              stack_type: heat
-            - lab: virtual_mcp05_ovs
-              install: core,openstack,ovs
-              stack_type: heat
-            - lab: virtual_mcp10_contrail
-              install: core,openstack,contrail
-              stack_type: heat
-            - lab: virtual_mcp10_dvr
-              install: core,openstack,dvr
-              stack_type: heat
-            - lab: virtual_mcp10_ovs
-              install: core,openstack,ovs
-              stack_type: heat
-            - lab: virtual_mk20_advanced
-              install: core,openstack
-              stack_type: heat
-            - lab: virtual_mk20_basic
-              install: core,openstack
-              stack_type: heat
-            - lab: virtual_mk22_advanced
-              install: core,openstack
-              stack_type: heat
-            - lab: virtual_mk22_basic
-              install: core,openstack
-              stack_type: heat
-            # physical
-            - lab: mcp10_contrail
-              install: core,kvm,openstack,contrail
-              stack_type: physical
-            - lab: mcp10_opencontrail_nfv
-              install: core,kvm,openstack,nfv
-              stack_type: physical
-            - lab: mcp10_dvr
-              install: core,kvm,openstack,dvr
-              stack_type: physical
-            - lab: mcp10_non_dvr
-              install: core,kvm,openstack
-              stack_type: physical
-          template:
-            type: workflow-scm
-            discard:
-              build:
-                keep_num: 20
-            concurrent: true
-            display_name: "Deploy - {{lab}} {{stack_type}} lab"
-            scm:
-              type: git
-              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
-              credentials: "gerrit"
-              script: lab-pipeline.groovy
-            param:
-              # deployments and test settings
-              STACK_TYPE:
-                type: string
-                default: "{{stack_type}}"
-              INSTALL:
-                type: string
-                default: "{{install}}"
-              TEST:
-                type: string
-                default: ""
-
-              # heat
-              HEAT_TEMPLATE_URL:
-                type: string
-                default: "git@github.com:Mirantis/mk-lab-heat-templates.git"
-              HEAT_TEMPLATE_CREDENTIALS:
-                type: string
-                default: "gerrit"
-              HEAT_TEMPLATE_BRANCH:
-                type: string
-                default: "composite"
-              HEAT_STACK_NAME:
-                type: string
-                description: Heat stack name. Will be generated if missing.
-              HEAT_STACK_TEMPLATE:
-                type: string
-                default: "{{lab}}"
-              HEAT_STACK_ENVIRONMENT:
-                type: string
-                default: "tcpisek"
-              HEAT_STACK_ZONE:
-                type: string
-                default: "mirantis-zone-qa"
-              HEAT_STACK_PUBLIC_NET:
-                type: string
-                default: "mirantis-private"
-              HEAT_STACK_DELETE:
-                type: boolean
-                default: 'true'
-              HEAT_STACK_REUSE:
-                type: boolean
-                default: 'false'
-
-              # salt master
-              SALT_MASTER_CREDENTIALS:
-                type: string
-                default: "salt-qa-credentials"
-              SALT_MASTER_URL:
-                type: string
-                default: ""
-
-              # openstack api
-              OPENSTACK_API_URL:
-                type: string
-                default: "https://vpc.tcpisek.cz:5000/v2.0"
-              OPENSTACK_API_CREDENTIALS:
-                type: string
-                default: "openstack-qa-credentials"
-              OPENSTACK_API_PROJECT:
-                type: string
-                default: "mirantis_mk20_qa"
-              OPENSTACK_API_CLIENT:
-                type: string
-                default: "liberty"
-              OPENSTACK_API_VERSION:
-                type: string
-                default: "2"
-
-              # k8s setttings
-              K8S_API_SERVER:
-                type: string
-                default: "http://127.0.0.1:8080"
-              K8S_CONFORMANCE_IMAGE:
-                type: string
-                default: "docker-dev-virtual.docker.mirantis.net/mirantis/kubernetes/k8s-conformance:v1.5.1-3_1482332392819"
-
-              # Tempest settings
-              TEMPEST_IMAGE_LINK:
-                type: string
-                default: "sandbox-docker-prod-local.docker.mirantis.net/mirantis/rally_tempest:0.1"
-
diff --git a/jenkins/client/job/deploy/update/config.yml b/jenkins/client/job/deploy/update/config.yml
new file mode 100644
index 0000000..9beabfb
--- /dev/null
+++ b/jenkins/client/job/deploy/update/config.yml
@@ -0,0 +1,45 @@
+#
+# Jobs to run given states on given Salt master environment's
+#
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      job:
+        deploy-update-service-config:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - update service(s) config"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: change-config.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+              description: Full Salt API address [https://10.10.10.1:8000].
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+              description: Credentials to the Salt API.
+            TARGET_SERVERS:
+              type: string
+              default: "*"
+              description: Salt compound target to match nodes to be updated [*, G@osfamily:debian].
+            TARGET_STATES:
+              type: string
+              description: Config changes to be applied, empty string means running highstate [linux, linux,openssh, salt.minion.grains].
+            TARGET_SUBSET_TEST:
+              type: string
+              description: Number of nodes to test config changes, empty string means all targetted nodes.
+            TARGET_SUBSET_LIVE:
+              type: string
+              default: '1'
+              description: Number of selected noded to live apply selected config changes.
+            TARGET_BATCH_LIVE:
+              type: string
+              description: Batch size for the complete live config changes on all nodes, empty string means apply to all targetted nodes.
+
diff --git a/jenkins/client/job/deploy/update/init.yml b/jenkins/client/job/deploy/update/init.yml
new file mode 100644
index 0000000..af87dcf
--- /dev/null
+++ b/jenkins/client/job/deploy/update/init.yml
@@ -0,0 +1,4 @@
+classes:
+  - system.jenkins.client.job.deploy.update.package
+  - system.jenkins.client.job.deploy.update.config
+  - system.jenkins.client.job.deploy.update.saltenv
diff --git a/jenkins/client/job/deploy/update/package.yml b/jenkins/client/job/deploy/update/package.yml
new file mode 100644
index 0000000..273796c
--- /dev/null
+++ b/jenkins/client/job/deploy/update/package.yml
@@ -0,0 +1,42 @@
+#
+# Jobs to update packages on given Salt master environment
+#
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      job:
+        deploy-update-package:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - update system package(s)"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: update-package.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            TARGET_SERVERS:
+              type: string
+              default: "*"
+              description: Salt compound target to match nodes to be updated [*, G@osfamily:debian].
+            TARGET_PACKAGES:
+              type: string
+              description: Space delimited list of packages to be updates [package1=version package2=version], empty string means all updating all packages to the latest version.
+            TARGET_SUBSET_TEST:
+              type: string
+              description: Number of nodes to list package updates, empty string means all targetted nodes.
+            TARGET_SUBSET_LIVE:
+              type: string
+              default: '1'
+              description: Number of selected noded to live apply selected package update.
+            TARGET_BATCH_LIVE:
+              type: string
+              description: Batch size for the complete live package update on all nodes, empty string means apply to all targetted nodes.
diff --git a/jenkins/client/job/deploy/reclass_update.yml b/jenkins/client/job/deploy/update/saltenv.yml
similarity index 64%
rename from jenkins/client/job/deploy/reclass_update.yml
rename to jenkins/client/job/deploy/update/saltenv.yml
index 1f99ddc..0303aea 100644
--- a/jenkins/client/job/deploy/reclass_update.yml
+++ b/jenkins/client/job/deploy/update/saltenv.yml
@@ -1,13 +1,19 @@
+#
+# Following job is about to simply execute Jenkinsfile of given Reclass model
+#
 parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+    jenkins_salt_model_name: "salt"
   jenkins:
     client:
       job_template:
-        reclass_update:
+        update_salt_env:
           name: deploy-update-{{name}}
           jobs:
-            - name: mk-ci
-              salt_url: "http://10.10.100.81:8000"
-              salt_credentials: salt-mk-ci
+            - name: ${_param:jenkins_salt_model_name}
+              salt_url: "${_param:jenkins_salt_api_url}"
+              salt_credentials: salt
           template:
             display_name: "Deploy - update {{name}} environment"
             type: workflow-scm
diff --git a/jenkins/client/job/git-mirrors/downstream/init.yml b/jenkins/client/job/git-mirrors/downstream/init.yml
new file mode 100644
index 0000000..0ddc0ce
--- /dev/null
+++ b/jenkins/client/job/git-mirrors/downstream/init.yml
@@ -0,0 +1,39 @@
+parameters:
+  _param:
+    jenkins_git_mirror_downstream_jobs: []
+    jenkins_pollscm_spec: "H/60 * * * *"
+  jenkins:
+    client:
+      job_template:
+        git_mirror_downstream_common:
+          name: git-mirror-downstream-{{name}}
+          jobs: ${_param:jenkins_git_mirror_downstream_jobs}
+          template:
+            discard:
+              build:
+                keep_num: 10
+              artifact:
+                keep_num: 10
+            type: workflow-scm
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: git-mirror-pipeline.groovy
+            trigger:
+              pollscm:
+                spec: ${_param:jenkins_pollscm_spec}
+            param:
+              SOURCE_URL:
+                type: string
+                default: "{{upstream}}"
+              TARGET_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/{{downstream}}"
+              CREDENTIALS_ID:
+                type: string
+                default: "gerrit"
+              BRANCHES:
+                type: string
+                default: "{{branches}}"
diff --git a/jenkins/client/job/git-mirrors/downstream/pipelines.yml b/jenkins/client/job/git-mirrors/downstream/pipelines.yml
new file mode 100644
index 0000000..7bf366c
--- /dev/null
+++ b/jenkins/client/job/git-mirrors/downstream/pipelines.yml
@@ -0,0 +1,13 @@
+classes:
+  - system.jenkins.client.job.git-mirrors.downstream
+parameters:
+  _param:
+    jenkins_git_mirror_downstream_jobs:
+      - name: pipeline-library
+        downstream: mcp-ci/pipeline-library
+        upstream: "https://github.com/Mirantis/pipeline-library"
+        branches: master
+      - name: mk-pipelines
+        downstream: mk/mk-pipelines
+        upstream: "https://github.com/Mirantis/mk-pipelines"
+        branches: master
diff --git a/jenkins/client/job/git-mirrors/upstream.yml b/jenkins/client/job/git-mirrors/upstream/init.yml
similarity index 77%
rename from jenkins/client/job/git-mirrors/upstream.yml
rename to jenkins/client/job/git-mirrors/upstream/init.yml
index f4f7f50..e11e63c 100644
--- a/jenkins/client/job/git-mirrors/upstream.yml
+++ b/jenkins/client/job/git-mirrors/upstream/init.yml
@@ -1,18 +1,12 @@
 parameters:
+  _param:
+    jenkins_git_mirror_upstream_jobs: []
   jenkins:
     client:
       job_template:
         git_mirror_upstream_common:
           name: git-mirror-upstream-{{name}}
-          jobs:
-            - name: pipeline-library
-              downstream: mcp-ci/pipeline-library.git
-              upstream: "git@github.com:Mirantis/pipeline-library.git"
-              branches: master
-            - name: mk-pipelines
-              downstream: mk/mk-pipelines.git
-              upstream: "git@github.com:Mirantis/mk-pipelines.git"
-              branches: master
+          jobs: ${_param:jenkins_git_mirror_upstream_jobs}
           template:
             discard:
               build:
diff --git a/jenkins/client/job/git-mirrors/upstream/pipelines.yml b/jenkins/client/job/git-mirrors/upstream/pipelines.yml
new file mode 100644
index 0000000..20f7eb6
--- /dev/null
+++ b/jenkins/client/job/git-mirrors/upstream/pipelines.yml
@@ -0,0 +1,13 @@
+classes:
+  - system.jenkins.client.job.git-mirrors.upstream
+parameters:
+  _param:
+    jenkins_git_mirror_upstream_jobs:
+      - name: pipeline-library
+        downstream: mcp-ci/pipeline-library
+        upstream: "git@github.com:Mirantis/pipeline-library.git"
+        branches: master
+      - name: mk-pipelines
+        downstream: mk/mk-pipelines
+        upstream: "git@github.com:Mirantis/mk-pipelines.git"
+        branches: master
diff --git a/jenkins/client/job/image/ubuntu.yml b/jenkins/client/job/image/ubuntu.yml
old mode 100755
new mode 100644
diff --git a/jenkins/client/job/kill_stuck_jobs.yml b/jenkins/client/job/kill_stuck_jobs.yml
new file mode 100644
index 0000000..57f0b3f
--- /dev/null
+++ b/jenkins/client/job/kill_stuck_jobs.yml
@@ -0,0 +1,25 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        kill-stuck-jobs:
+          name: kill-stuck-jobs
+          discard:
+            build:
+              keep_num: 3
+            artifact:
+              keep_num: 3
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: abort-long-running-jobs.groovy
+          trigger:
+            timer:
+              spec: "H H * * *"
+          param:
+            MAX_DURATION_IN_HOURS:
+              type: string
+              default: "24"
diff --git a/jenkins/client/job/opencontrail/build/generic.yml b/jenkins/client/job/opencontrail/build/generic.yml
index 69cb4e7..e994323 100644
--- a/jenkins/client/job/opencontrail/build/generic.yml
+++ b/jenkins/client/job/opencontrail/build/generic.yml
@@ -11,43 +11,43 @@
               os: ubuntu
               dist: trusty
               branch: R3.0.3.x
-              ppa: mirantis/opencontrail-3.0.3
+              ppa: mirantis-opencontrail/opencontrail-3.0.3
               upload_source_package: false
             - buildname: oc31
               os: ubuntu
               dist: trusty
               branch: R3.1
-              ppa: mirantis/opencontrail-3.1
+              ppa: mirantis-opencontrail/opencontrail-3.1
               upload_source_package: true
             - buildname: oc31
               os: ubuntu
               dist: xenial
               branch: R3.1
-              ppa: mirantis/opencontrail-3.1
+              ppa: mirantis-opencontrail/opencontrail-3.1
               upload_source_package: true
             - buildname: oc311
               os: ubuntu
               dist: trusty
               branch: R3.1.1.x
-              ppa: mirantis/opencontrail-3.1.1
+              ppa: mirantis-opencontrail/opencontrail-3.1.1
               upload_source_package: true
             - buildname: oc311
               os: ubuntu
               dist: xenial
               branch: R3.1.1.x
-              ppa: mirantis/opencontrail-3.1.1
+              ppa: mirantis-opencontrail/opencontrail-3.1.1
               upload_source_package: true
             - buildname: oc32
               os: ubuntu
               dist: trusty
               branch: R3.2
-              ppa: mirantis/opencontrail-3.2
+              ppa: mirantis-opencontrail/opencontrail-3.2
               upload_source_package: true
             - buildname: oc32
               os: ubuntu
               dist: xenial
               branch: R3.2
-              ppa: mirantis/opencontrail-3.2
+              ppa: mirantis-opencontrail/opencontrail-3.2
               upload_source_package: true
           template:
             discard:
diff --git a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
index 0ea3d7b..207ae6b 100644
--- a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
+++ b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
@@ -82,6 +82,7 @@
             - name: postfix
             - name: postgresql
             - name: pritunl
+            - name: prometheus
             - name: python
             - name: rabbitmq
             - name: reclass
@@ -98,6 +99,7 @@
             - name: supervisor
             - name: swift
             - name: taiga
+            - name: telegraf
             - name: varnish
             - name: zookeeper
           template:
diff --git a/jenkins/client/job/salt-formulas/tests.yml b/jenkins/client/job/salt-formulas/tests.yml
index 5d5206b..6988392 100644
--- a/jenkins/client/job/salt-formulas/tests.yml
+++ b/jenkins/client/job/salt-formulas/tests.yml
@@ -80,6 +80,7 @@
             - name: postfix
             - name: postgresql
             - name: pritunl
+            - name: prometheus
             - name: python
             - name: rabbitmq
             - name: reclass
@@ -96,6 +97,7 @@
             - name: supervisor
             - name: swift
             - name: taiga
+            - name: telegraf
             - name: varnish
             - name: zookeeper
           template:
diff --git a/jenkins/client/job/test_pipelines.yml b/jenkins/client/job/test_pipelines.yml
index 3a4149c..02a64f2 100644
--- a/jenkins/client/job/test_pipelines.yml
+++ b/jenkins/client/job/test_pipelines.yml
@@ -3,41 +3,41 @@
     client:
       job:
         test-mk-pipelines-pipeline:
-        name: test-mk-pipelines
-        discard:
-          build:
-            keep_num: 25
-          artifact:
-            keep_num: 25
-        type: workflow-scm
-        concurrent: true
-        scm:
-          type: git
-          url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
-          credentials: "gerrit"
-          script: git-mirror-2way-pipeline.groovy
-        trigger:
-          gerrit:
-            project:
-              mk/mk-pipelines":
-                branches:
-                  - master
-            event:
-              patchset:
-                - created:
-                    excludeDrafts: false
-                    excludeTrivialRebase: false
-                    excludeNoCodeChange: false
-              comment:
-                - addedContains:
-                    commentAddedCommentContains: '(recheck|reverify)'
-        param:
-          CREDENTIALS_ID:
-            type: string
-            default: "gerrit"
-          GRADLE_IMAGE:
-            type: string
-            default: niaquinto/gradle
-          GRADLE_CMD:
-            type: string
-            default: check
+          name: test-mk-pipelines
+          discard:
+            build:
+              keep_num: 25
+            artifact:
+              keep_num: 25
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: git-mirror-2way-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                mk/mk-pipelines":
+                  branches:
+                    - master
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeTrivialRebase: false
+                      excludeNoCodeChange: false
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: '(recheck|reverify)'
+          param:
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            GRADLE_IMAGE:
+              type: string
+              default: niaquinto/gradle
+            GRADLE_CMD:
+              type: string
+              default: check
diff --git a/jenkins/master/config.yml b/jenkins/master/config.yml
index bb1998c..adb0c7c 100644
--- a/jenkins/master/config.yml
+++ b/jenkins/master/config.yml
@@ -91,3 +91,5 @@
                   - method hudson.model.Item getName
                   - method java.util.Map remove java.lang.Object
                   - staticMethod java.lang.System getProperty java.lang.String
+                  - staticMethod java.lang.Integer valueOf java.lang.String
+                  - method java.util.List subList int int