Merge "bugfix: undefined variables"
diff --git a/docker/swarm/stack/decapod.yml b/docker/swarm/stack/decapod.yml
index 90f16d9..bd86062 100644
--- a/docker/swarm/stack/decapod.yml
+++ b/docker/swarm/stack/decapod.yml
@@ -6,7 +6,7 @@
     docker_image_db: docker-prod-local.artifactory.mirantis.com/mirantis/ceph/decapod/db:${_param:decapod_version}
     docker_image_api: docker-prod-local.artifactory.mirantis.com/mirantis/ceph/decapod/api:${_param:decapod_version}
     docker_image_controller: docker-prod-local.artifactory.mirantis.com/mirantis/ceph/decapod/controller:latest
-    docker_image_frontend: docker-prod-local.artifactory.mirantis.com/mirantis/ceph/decapod/controller:${_param:decapod_version}
+    docker_image_frontend: docker-prod-local.artifactory.mirantis.com/mirantis/ceph/decapod/frontend:${_param:decapod_version}
   docker:
     client:
       stack:
diff --git a/jenkins/client/job/deploy/lab/mk/cloud.yml b/jenkins/client/job/deploy/lab/mk/cloud.yml
index c64c5cc..c29913c 100644
--- a/jenkins/client/job/deploy/lab/mk/cloud.yml
+++ b/jenkins/client/job/deploy/lab/mk/cloud.yml
@@ -5,43 +5,53 @@
       - stack_name: aaa_freeipa
         stack_type: heat
         stack_install: core,aaa
+        stack_test: ""
         job_timer: ""
         extra_formulas: ""
       - stack_name: k8s_calico
         stack_type: aws
         stack_install: core,k8s,calico
+        stack_test: ""
         job_timer: "H H * * *"
-#      - stack_name: ceph_ha
-#        stack_type: heat
-#        stack_install: core
-#        job_timer: ""
+      - stack_name: ceph_ha
+        stack_type: heat
+        stack_install: core,ceph
+        stack_test: "ceph"
+        job_timer: ""
 #      - stack_name: drivetrain_ha
 #        stack_type: heat
 #        stack_install: core
+#        stack_test: ""
 #        job_timer: ""
 #      - stack_name: drivetrain_ha_clusters
 #        stack_type: heat
 #        stack_install: core
+#        stack_test: ""
 #        job_timer: ""
       - stack_name: k8s_aio_calico
         stack_type: heat
         stack_install: core,k8s,calico
+        stack_test: ""
         job_timer: ""
       - stack_name: k8s_aio_contrail
         stack_type: heat
         stack_install: core,k8s,contrail
+        stack_test: ""
         job_timer: ""
       - stack_name: k8s_ha_calico
         stack_type: heat
         stack_install: core,k8s,calico
+        stack_test: ""
         job_timer: ""
       - stack_name: k8s_ha_contrail
         stack_type: heat
         stack_install: core,k8s,contrail
+        stack_test: ""
         job_timer: ""
       - stack_name: os_aio_contrail
         stack_type: heat
         stack_install: core,openstack,contrail
+        stack_test: ""
         job_timer: ""
       - stack_name: os_aio_ovs
         stack_type: heat
@@ -50,22 +60,27 @@
       - stack_name: os_ha_contrail
         stack_type: heat
         stack_install: core,openstack,contrail
+        stack_test: ""
         job_timer: ""
       - stack_name: os_ha_ovs
         stack_type: heat
         stack_install: core,openstack,ovs
+        stack_test: ""
         job_timer: ""
       - stack_name: stacklight_k8s_calico
         stack_type: heat
         stack_install: core,k8s,calico,sl-legacy
+        stack_test: ""
         job_timer: ""
       - stack_name: stacklight_os_contrail
         stack_type: heat
         stack_install: core,openstack,contrail,sl-legacy
+        stack_test: ""
         job_timer: ""
       - stack_name: stacklight_os_ovs
         stack_type: heat
         stack_install: core,openstack,ovs,sl-legacy
+        stack_test: ""
         job_timer: ""
   jenkins:
     client:
@@ -109,7 +124,7 @@
                 default: "{{stack_install}}"
               STACK_TEST:
                 type: string
-                default: ""
+                default: "{{stack_test}}"
               STACK_DELETE:
                 type: boolean
                 default: 'true'
diff --git a/jenkins/client/job/deploy/update/init.yml b/jenkins/client/job/deploy/update/init.yml
index 2f78072..8816a66 100644
--- a/jenkins/client/job/deploy/update/init.yml
+++ b/jenkins/client/job/deploy/update/init.yml
@@ -4,6 +4,7 @@
   - system.jenkins.client.job.deploy.update.saltenv
   - system.jenkins.client.job.deploy.update.upgrade
   - system.jenkins.client.job.deploy.update.upgrade_compute
+  - system.jenkins.client.job.deploy.update.upgrade_ovs_gateway
   - system.jenkins.client.job.deploy.update.upgrade_opencontrail
   - system.jenkins.client.job.deploy.update.restore_mysql
   - system.jenkins.client.job.deploy.update.restore_cassandra
diff --git a/jenkins/client/job/deploy/update/upgrade_opencontrail.yml b/jenkins/client/job/deploy/update/upgrade_opencontrail.yml
index 0edaf01..b5d1e77 100644
--- a/jenkins/client/job/deploy/update/upgrade_opencontrail.yml
+++ b/jenkins/client/job/deploy/update/upgrade_opencontrail.yml
@@ -55,7 +55,3 @@
               type: boolean
               default: 'false'
               description: "Run rollback on Opencontrail compute nodes"
-            CMP_ROLLBACK_PKGS:
-              type: string
-              default: "contrail-lib=3.1.1.x~20170613145417-0 contrail-nodemgr=3.1.1.x~20170613145417-0 ..."
-              description: "String of package versions outputed by compute upgrade stage to rollback"
diff --git a/jenkins/client/job/deploy/update/upgrade_ovs_gateway.yml b/jenkins/client/job/deploy/update/upgrade_ovs_gateway.yml
new file mode 100644
index 0000000..3d12796
--- /dev/null
+++ b/jenkins/client/job/deploy/update/upgrade_ovs_gateway.yml
@@ -0,0 +1,36 @@
+#
+# 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-upgrade-ovs-gateway:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - upgrade OVS gateway"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: ovs-gateway-upgrade.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: "gtw*"
+              description: Salt compound target to match nodes to be updated [*, G@osfamily:debian].
+            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 nodes to live apply upgrade.
diff --git a/jenkins/client/job/opencontrail/build/dpdk-extra.yml b/jenkins/client/job/opencontrail/build/dpdk-extra.yml
index 5b128a2..e69b4a4 100644
--- a/jenkins/client/job/opencontrail/build/dpdk-extra.yml
+++ b/jenkins/client/job/opencontrail/build/dpdk-extra.yml
@@ -39,19 +39,6 @@
               credentials: "gerrit"
               script: build-extra-dpdk-pipeline.groovy
             quiet_period: 120
-            trigger:
-              gerrit:
-                project:
-                  contrail/contrail-dpdk-extra-packages:
-                    branches:
-                      - "{{branch_real_name}}"
-                message:
-                  build_successful: "Build successful"
-                  build_unstable: "Build unstable"
-                  build_failure: "Build failed"
-                event:
-                  ref:
-                    - updated
             param:
               SOURCE_URL:
                 type: string
diff --git a/jenkins/client/job/opencontrail/init.yml b/jenkins/client/job/opencontrail/init.yml
index dad3c3a..4b42d50 100644
--- a/jenkins/client/job/opencontrail/init.yml
+++ b/jenkins/client/job/opencontrail/init.yml
@@ -5,7 +5,7 @@
   _param:
     contrail_branches: "R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,R3.2.3.x,R4.0,master"
     contrail_kubernetes_branches: "master,release-1.2"
-    contrail_dpdk_extra_branches: "mitaka,kilo,liberty-multiqueue,newton"
+    contrail_dpdk_extra_branches: "mitaka,mitaka_dpdk_17_02,mitaka_dpdk_17_05,kilo,liberty-multiqueue,newton"
     contrail_ceilometer_plugin_branches: "master,R4.0"
     contrail_kubernetes_branches: "master,origin-1.1,origin-1.1.3,release-1.1,release-1.2"
     contrail_dpdk_branches: "master,R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,R3.2.3.x,R4.0,contrail_dpdk_17_02,contrail_dpdk_17_05,contrail_dpdk_1_7,contrail_dpdk_2_0,contrail_dpdk_2_1"
diff --git a/nova/client/service/octavia.yml b/nova/client/service/octavia.yml
index 817297f..e0b6557 100644
--- a/nova/client/service/octavia.yml
+++ b/nova/client/service/octavia.yml
@@ -1,9 +1,12 @@
+classes:
+- service.nova.client
 parameters:
+  _param:
+    octavia_ssh_key_path: "/etc/octavia/.ssh/octavia_ssh_key.pub"
   nova:
     client:
-      enabled: true
       server:
-        octavia_identity:
+        admin_identity:
           endpoint_type: internalURL
           flavor:
             m1.amphora:
@@ -11,3 +14,8 @@
               ram: 1024
               disk: 2
               vcpus: 1
+        octavia_identity:
+          endpoint_type: internalURL
+          keypair:
+            octavia_ssh_key:
+              pub_file: ${_param:octavia_ssh_key_path}
diff --git a/openssh/server/team/members/tkukral.yml b/openssh/server/team/members/tkukral.yml
index cba6ef6..e53ce2d 100644
--- a/openssh/server/team/members/tkukral.yml
+++ b/openssh/server/team/members/tkukral.yml
@@ -16,5 +16,6 @@
         tkukral:
           enabled: true
           public_keys:
-            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRM6WquKic6i6v/JbNR2XuMqCCYqlfyGU1K7XHK7tWFordRLz2/o4S76sZULBTXR0rLHtynvHM4QHlloE1/XJnd0BtI/3y8aY0OkXyu6PHvTC8Az8SyGj2XAcaiPlaT2f+oTJHoPc9rxLhMMD7OTwias6QeVKB3UrT0OaHfy2wWCF7t8cQeofi2ldEHKeCsC1jrT1vaVuoThQgZ00h0rNk4COPZEW34FXdmdJFUmZcUIDMa71HtYgnn4gmE8sUiJ/j6ardvPaycCDT9j1GW1Yu6UVLBWOoMMCb04bDJiidlvY1fQqbM/G4cR4ZPHFZ0RQiM2+wnRaB5RCmBVgNT0Tj tkukral
-          user: ${linux:system:user:tkukral}
\ No newline at end of file
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRM6WquKic6i6v/JbNR2XuMqCCYqlfyGU1K7XHK7tWFordRLz2/o4S76sZULBTXR0rLHtynvHM4QHlloE1/XJnd0BtI/3y8aY0OkXyu6PHvTC8Az8SyGj2XAcaiPlaT2f+oTJHoPc9rxLhMMD7OTwias6QeVKB3UrT0OaHfy2wWCF7t8cQeofi2ldEHKeCsC1jrT1vaVuoThQgZ00h0rNk4COPZEW34FXdmdJFUmZcUIDMa71HtYgnn4gmE8sUiJ/j6ardvPaycCDT9j1GW1Yu6UVLBWOoMMCb04bDJiidlvY1fQqbM/G4cR4ZPHFZ0RQiM2+wnRaB5RCmBVgNT0Tj
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAEAQDIcEZKBvsDAVOeUyucpTXH7nubNjXxlQSMf6oXmcXW5EFzQ7bcBjUJIC2/w4NV2v+/qbbvax1BiI5wU3TWM+LKx6VyhexwrnGQ4p9xprbAIiYaDAbT4KsSOyFnItmbD3qo5JzYruF/jxpus2fV/rBjfsgENHSDSL7ZNO5XLRhdfdcjGrReYf6MU+Py90mOxIcafJQ0nI2PkZ4JURtiJmd/lBp+QJH+6JpQ4Fjm1C0stJFLZfyn0r9YtMXs7j3LK5QaypbZO63NvBKp/1GhZUbC48Cb19SqIoBfQl8JroT93PFzhcQaXd/iXbbBg1WPhEJLAaJEJ7aHGVN+93YHoukP+AFobrpCES3LPFrwbRXpjZNCbKtQCMS1oZHLNBrIsa6uuvAhd9ni3Q/iJq4O6uZ8g0gW69+VI3FT7l3adBCBlOQUVvN51k2k3Q18oeFZAuVPoH49gUDXgxaUHjA5nE0hgPd6KaZkh5UGs/8jyvDLRLVRCUGYfVZcXlMAa5uc1SaUGR3XZgciUlY9DWAGTS8mA4ZnD6mXdnQmjDqhaI2S9jFmuO1Z4YAlHCs+qqMmnFBwbIZuIJaTgl9blr2pi8g6SVQGOE8eA9SDZYTH2EM741ZgVxBPTC/QjMcRtERWNTzfK+R6nZgsdozi9w8MMlmLgvjhney+YuhPhBI2YUwafV2wngqcz7qKP35Jx4E0AeI/Z6z2duuP4JHtaswkR7Zwk4/ebRm1DGIvImh4UxucumEMpXrNOyPZqyJwOb1GM7U5w/kfGSU10y6Y2/db23eYvIb2c1aIbKcGI+Db+1UuED9KcmI9JuYnxqzQZe66T56s+jOi0zyjQDlx9gu2ib/ORE+XVuKqvqii/WF4dTK42YgzTY1RX4wag4mNOEhY4hX+VA6eEFLruqIE+zQ9L+vjf4w2jqpC2CTtY+UtgAbkpZWn9/00CqS9EAh3cmYVgL8se+mfo9iQkcOrHoJ/hN9wyWOK8yQXACMtm/zdFyMtCzhWeSvz03SPz4o1L5QcS3VG+FF6XE5jb0KCWH2C0U6ufgKhpna+LXmG1nXGtay7KqUkQeIwOXq2nq2xehPwgfM25xIPHJ+t1dQMstXrR/h0Bs9lHM7V7mTcgA4MtuYM1mwUpuK9QYantvWE7aq1KtFwFBaP/4swtSoxWsotIDv9GxJhWRJ8aUJIAbsN2znMlbtsIDGTMlWLW3pbpr+1ANAZx6YiQOSCkDDzk4eaFMhlGaa+4sBVfIU0QwnO9swOjQMQH+3/qaeGl9LOZEf87kwFKnQDpMEdDl4vmpsSwzcyGT8AIFl/ybrrl///v3cvCZe1lDJZxPag6KT4BOwycoWTKfL5ll06v+JzW67XqkQT
+          user: ${linux:system:user:tkukral}