Merge "fix img pull for tests"
diff --git a/cloud-update.groovy b/cloud-update.groovy
index 92701bd..3fd7723 100644
--- a/cloud-update.groovy
+++ b/cloud-update.groovy
@@ -168,9 +168,9 @@
         }
         def osRelease = salt.getGrain(pepperEnv, target, 'lsb_distrib_codename')
         if (osRelease.toString().toLowerCase().contains('trusty')) {
-            args = 'export DEBIAN_FRONTEND=noninteractive; apt-get -y -q --force-yes -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\" '
+            args = 'export DEBIAN_FRONTEND=noninteractive; apt-get -y -q --force-yes -o Dpkg::Options::=\"--force-confold\" '
         } else {
-            args = 'export DEBIAN_FRONTEND=noninteractive; apt-get -y -q -f --allow-downgrades -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\" '
+            args = 'export DEBIAN_FRONTEND=noninteractive; apt-get -y -q -f --allow-downgrades -o Dpkg::Options::=\"--force-confold\" '
         }
         if (out.toString().contains('errors:')) {
             try {
@@ -278,7 +278,7 @@
     }
 
     stage('Apply package downgrades') {
-        args = 'export DEBIAN_FRONTEND=noninteractive; apt-get -y -q --allow-downgrades -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\" '
+        args = 'export DEBIAN_FRONTEND=noninteractive; apt-get -y -q --allow-downgrades -o Dpkg::Options::=\"--force-confold\" '
         common.infoMsg('Performing pkgs purge/remove ... ')
         try {
             if (PURGE_PKGS != "") {
diff --git a/opencontrail-upgrade.groovy b/opencontrail-upgrade.groovy
index 1e09917..a358222 100644
--- a/opencontrail-upgrade.groovy
+++ b/opencontrail-upgrade.groovy
@@ -227,7 +227,7 @@
                         return
                     }
 
-                    args = "export DEBIAN_FRONTEND=noninteractive; apt install -o Dpkg::Options::=\"--force-confold\" -o Dpkg::Options::=\"--force-confdef\" ${CMP_PKGS}  -y;"
+                    args = "export DEBIAN_FRONTEND=noninteractive; apt install -o Dpkg::Options::=\"--force-confold\" ${CMP_PKGS}  -y;"
                     check = 'contrail-status'
 
                     out = salt.runSaltCommand(pepperEnv, 'local', ['expression': targetLiveSubset, 'type': 'compound'], command, null, args, null)
@@ -265,7 +265,7 @@
                         return
                     }
 
-                    args = "export DEBIAN_FRONTEND=noninteractive; apt install -o Dpkg::Options::=\"--force-confold\" -o Dpkg::Options::=\"--force-confdef\" ${CMP_PKGS}  -y;"
+                    args = "export DEBIAN_FRONTEND=noninteractive; apt install -o Dpkg::Options::=\"--force-confold\"  ${CMP_PKGS}  -y;"
                     check = 'contrail-status'
 
                     out = salt.runSaltCommand(pepperEnv, 'local', ['expression': targetLiveAll, 'type': 'compound'], command, null, args, null)
@@ -443,7 +443,7 @@
                         return
                     }
 
-                    args = "export DEBIAN_FRONTEND=noninteractive; apt install --allow-downgrades -o Dpkg::Options::=\"--force-confold\" -o Dpkg::Options::=\"--force-confdef\" ${CMP_PKGS}  -y;"
+                    args = "export DEBIAN_FRONTEND=noninteractive; apt install --allow-downgrades -o Dpkg::Options::=\"--force-confold\" ${CMP_PKGS}  -y;"
                     check = 'contrail-status'
 
                     out = salt.runSaltCommand(pepperEnv, 'local', ['expression': targetLiveSubset, 'type': 'compound'], command, null, args, null)
@@ -481,7 +481,7 @@
                         return
                     }
 
-                    args = "export DEBIAN_FRONTEND=noninteractive; apt install --allow-downgrades -o Dpkg::Options::=\"--force-confold\" -o Dpkg::Options::=\"--force-confdef\" ${CMP_PKGS} -y;"
+                    args = "export DEBIAN_FRONTEND=noninteractive; apt install --allow-downgrades -o Dpkg::Options::=\"--force-confold\"  ${CMP_PKGS} -y;"
                     check = 'contrail-status'
 
                     out = salt.runSaltCommand(pepperEnv, 'local', ['expression': targetLiveAll, 'type': 'compound'], command, null, args, null)
@@ -510,4 +510,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/opencontrail40-upgrade.groovy b/opencontrail40-upgrade.groovy
index e40fc14..93db009 100644
--- a/opencontrail40-upgrade.groovy
+++ b/opencontrail40-upgrade.groovy
@@ -309,7 +309,7 @@
                         throw er
                     }
 
-                    args = "export DEBIAN_FRONTEND=noninteractive; apt install -o Dpkg::Options::=\"--force-confold\" -o Dpkg::Options::=\"--force-confdef\" ${cmpPkgs}  -y;"
+                    args = "export DEBIAN_FRONTEND=noninteractive; apt install -o Dpkg::Options::=\"--force-confold\" ${cmpPkgs}  -y;"
                     check = 'contrail-status'
 
                     out = salt.runSaltCommand(pepperEnv, 'local', ['expression': targetLiveSubset, 'type': 'compound'], command, null, args, null)
@@ -346,7 +346,7 @@
                         throw er
                     }
 
-                    args = "export DEBIAN_FRONTEND=noninteractive; apt install -o Dpkg::Options::=\"--force-confold\" -o Dpkg::Options::=\"--force-confdef\" ${cmpPkgs}  -y;"
+                    args = "export DEBIAN_FRONTEND=noninteractive; apt install -o Dpkg::Options::=\"--force-confold\" ${cmpPkgs}  -y;"
                     check = 'contrail-status'
 
                     out = salt.runSaltCommand(pepperEnv, 'local', ['expression': targetLiveAll, 'type': 'compound'], command, null, args, null)
@@ -456,7 +456,7 @@
                         throw er
                     }
 
-                    args = "export DEBIAN_FRONTEND=noninteractive; apt install --allow-downgrades -o Dpkg::Options::=\"--force-confold\" -o Dpkg::Options::=\"--force-confdef\" ${cmpPkgs}  -y;"
+                    args = "export DEBIAN_FRONTEND=noninteractive; apt install --allow-downgrades -o Dpkg::Options::=\"--force-confold\" ${cmpPkgs}  -y;"
                     check = 'contrail-status'
 
                     out = salt.runSaltCommand(pepperEnv, 'local', ['expression': targetLiveSubset, 'type': 'compound'], command, null, args, null)
@@ -490,7 +490,7 @@
                         throw er
                     }
 
-                    args = "export DEBIAN_FRONTEND=noninteractive; apt install --allow-downgrades -o Dpkg::Options::=\"--force-confold\" -o Dpkg::Options::=\"--force-confdef\" ${cmpPkgs}  -y;"
+                    args = "export DEBIAN_FRONTEND=noninteractive; apt install --allow-downgrades -o Dpkg::Options::=\"--force-confold\" ${cmpPkgs}  -y;"
                     check = 'contrail-status'
 
                     out = salt.runSaltCommand(pepperEnv, 'local', ['expression': targetLiveAll, 'type': 'compound'], command, null, args, null)
diff --git a/release-mcp-version.groovy b/release-mcp-version.groovy
index 665a170..bd19b02 100644
--- a/release-mcp-version.groovy
+++ b/release-mcp-version.groovy
@@ -88,6 +88,31 @@
     ]
 }
 
+def triggerPkgPromoteJob(PkgRepoList, PromoteFrom, PromoteTo) {
+    def repos = PkgRepoList.trim().tokenize()
+    def RepoName, RepoDist, PackagesToPromote
+    for (repo in repos) {
+        if(repo.startsWith('#')){
+            common.warningMsg("Skipping repo ${repo}")
+            continue
+        }
+        if(repo.trim().indexOf(' ') == -1){
+             throw new IllegalArgumentException("Wrong format of repository and commit input")
+        }
+        repoArray = repo.trim().tokenize(' ')
+        RepoName = repoArray[0]
+        RepoDist = repoArray[1]
+        PackagesToPromote = repoArray[2]
+        build job: "pkg-promote", parameters: [
+            [$class: 'ChoiceParameterValue', name: 'repoName', value: RepoName],
+            [$class: 'ChoiceParameterValue', name: 'repoDist', value: RepoDist],
+            [$class: 'ChoiceParameterValue', name: 'promoteFrom', value: PromoteFrom],
+            [$class: 'ChoiceParameterValue', name: 'promoteTo', value: PromoteTo],
+            [$class: 'TextParameterValue', name: 'packagesToPromote', value: PackagesToPromote],
+        ]
+    }
+}
+
 def triggerSyncVCPJob(VcpImageList, targetTag) {
     // Operation must be synced with triggerPromoteVCPJob procedure!
     def images = VcpImageList.trim().tokenize()
@@ -117,6 +142,11 @@
                     triggerAptlyPromoteJob(APTLY_URL, 'all', false, true, 'all', false, "(.*)/${SOURCE_REVISION}", APTLY_STORAGES, "{0}/${TARGET_REVISION}")
                 }
 
+                if (PKG_PROMOTE.toBoolean() && SOURCE_REVISION == 'testing') {
+                    common.infoMsg("Promoting Extra and Ceph packages")
+                    triggerPkgPromoteJob(PKG_REPO_LIST, SOURCE_REVISION, TARGET_REVISION)
+                }
+
                 if (RELEASE_DEB_MIRRORS.toBoolean()) {
                     common.infoMsg("Promoting Debmirrors")
                     triggerMirrorRepoJob(SOURCE_REVISION, TARGET_REVISION)
diff --git a/test-salt-model-wrapper.groovy b/test-salt-model-wrapper.groovy
index f49b7fc..cb16cf3 100644
--- a/test-salt-model-wrapper.groovy
+++ b/test-salt-model-wrapper.groovy
@@ -167,7 +167,7 @@
             }
 
             def branches = [:]
-            branches.failFast = true
+            branches.failFast = false
             String branchJobName = ''
 
             if (gerritProject == reclassSystemRepo && gerritBranch == 'master') {
diff --git a/upgrade-mcp-release.groovy b/upgrade-mcp-release.groovy
index 5bc0ab2..b7c0468 100644
--- a/upgrade-mcp-release.groovy
+++ b/upgrade-mcp-release.groovy
@@ -89,8 +89,12 @@
     }
 }
 
-if (common.validInputParam('PIPELINE_TIMEOUT') && env.PIPELINE_TIMEOUT.isInteger()) {
-    pipelineTimeout = env.PIPELINE_TIMEOUT.toInteger()
+if (common.validInputParam('PIPELINE_TIMEOUT')) {
+    try {
+        pipelineTimeout = env.PIPELINE_TIMEOUT.toInteger()
+    } catch(Exception e) {
+        common.warningMsg("Provided PIPELINE_TIMEOUT parameter has invalid value: ${env.PIPELINE_TIMEOUT} - should be interger")
+    }
 }
 
 timeout(time: pipelineTimeout, unit: 'HOURS') {