Merge "Improve listing of pkgs when user specifies pkg"
diff --git a/aptly-promote-pipeline.groovy b/aptly-promote-pipeline.groovy
index 00d41b8..e5d9743 100644
--- a/aptly-promote-pipeline.groovy
+++ b/aptly-promote-pipeline.groovy
@@ -26,6 +26,7 @@
   } catch (Throwable e) {
      // If there was an error or exception thrown, the build failed
      currentBuild.result = "FAILURE"
+     currentBuild.description = e.message
      throw e
   } finally {
      common.sendNotification(currentBuild.result,"",["slack"])
diff --git a/build-debian-packages-jmx-exporter.groovy b/build-debian-packages-jmx-exporter.groovy
index d356f69..b4e9760 100644
--- a/build-debian-packages-jmx-exporter.groovy
+++ b/build-debian-packages-jmx-exporter.groovy
@@ -69,6 +69,7 @@
     } catch (Throwable e) {
        // If there was an exception thrown, the build failed
        currentBuild.result = "FAILURE"
+       currentBuild.description = e.message
        throw e
     } finally {
        common.sendNotification(currentBuild.result,"",["slack"])
diff --git a/build-debian-packages-libvirt-exporter.groovy b/build-debian-packages-libvirt-exporter.groovy
index eb109cb..aa0c26a 100644
--- a/build-debian-packages-libvirt-exporter.groovy
+++ b/build-debian-packages-libvirt-exporter.groovy
@@ -72,6 +72,7 @@
     } catch (Throwable e) {
        // If there was an exception thrown, the build failed
        currentBuild.result = "FAILURE"
+       currentBuild.description = e.message
        throw e
     } finally {
        common.sendNotification(currentBuild.result,"",["slack"])
diff --git a/build-debian-packages-pipeline.groovy b/build-debian-packages-pipeline.groovy
index bc4ed38..3b0bbb4 100644
--- a/build-debian-packages-pipeline.groovy
+++ b/build-debian-packages-pipeline.groovy
@@ -116,6 +116,7 @@
   } catch (Throwable e) {
      // If there was an error or exception thrown, the build failed
      currentBuild.result = "FAILURE"
+     currentBuild.description = e.message
      throw e
   } finally {
      common.sendNotification(currentBuild.result,"",["slack"])
diff --git a/build-debian-packages-telegraf.groovy b/build-debian-packages-telegraf.groovy
index b946688..b7b64d9 100644
--- a/build-debian-packages-telegraf.groovy
+++ b/build-debian-packages-telegraf.groovy
@@ -81,6 +81,10 @@
                         aptly.snapshotRepo(APTLY_URL, APTLY_REPO, timestamp)
                         aptly.publish(APTLY_URL)
                     }
+
+                    stage("rebuild docker images") {
+                        build job: "docker-build-images-prometheus", parameters: []
+                    }
                 }
             }
 
@@ -94,6 +98,7 @@
     } catch (Throwable e) {
        // If there was an exception thrown, the build failed
        currentBuild.result = "FAILURE"
+       currentBuild.description = e.message
        throw e
     } finally {
        common.sendNotification(currentBuild.result,"",["slack"])
diff --git a/build-extra-dpdk-pipeline.groovy b/build-extra-dpdk-pipeline.groovy
index 39928dc..3a97689 100644
--- a/build-extra-dpdk-pipeline.groovy
+++ b/build-extra-dpdk-pipeline.groovy
@@ -59,6 +59,7 @@
      } catch (Throwable e) {
        // If there was an error or exception thrown, the build failed
        currentBuild.result = "FAILURE"
+       currentBuild.description = e.message
        throw e
     } finally {
        common.sendNotification(currentBuild.result,"",["slack"])
diff --git a/cicd-lab-pipeline.groovy b/cicd-lab-pipeline.groovy
index 15252c9..9957c6c 100644
--- a/cicd-lab-pipeline.groovy
+++ b/cicd-lab-pipeline.groovy
@@ -337,6 +337,7 @@
     } catch (Throwable e) {
         // If there was an error or exception thrown, the build failed
         currentBuild.result = "FAILURE"
+        currentBuild.description = e.message
         throw e
     } finally {
         // Cleanup
diff --git a/cloud-deploy-pipeline.groovy b/cloud-deploy-pipeline.groovy
index 38172c9..22867ce 100644
--- a/cloud-deploy-pipeline.groovy
+++ b/cloud-deploy-pipeline.groovy
@@ -415,6 +415,17 @@
             }
         }
 
+
+        if (common.checkContains('STACK_TEST', 'ceph')) {
+            stage('Run infra tests') {
+                def cmd = "apt-get install -y python-pip && pip install -r /usr/share/salt-formulas/env/ceph/files/testinfra/requirements.txt && python -m pytest --junitxml=/root/report.xml /usr/share/salt-formulas/env/ceph/files/testinfra/"
+                salt.cmdRun(saltMaster, 'I@salt:master', cmd)
+                writeFile(file: 'report.xml', text: salt.getFileContent(saltMaster, 'I@salt:master', '/root/report.xml'))
+                junit(keepLongStdio: true, testResults: 'report.xml')
+            }
+        }
+
+
         if (common.checkContains('STACK_INSTALL', 'finalize')) {
             stage('Finalize') {
                 salt.runSaltProcessStep(saltMaster, '*', 'state.apply', [], null, true)
diff --git a/docker-build-image-pipeline.groovy b/docker-build-image-pipeline.groovy
index a22439a..d91baac 100644
--- a/docker-build-image-pipeline.groovy
+++ b/docker-build-image-pipeline.groovy
@@ -48,6 +48,7 @@
   } catch (Throwable e) {
      // If there was an error or exception thrown, the build failed
      currentBuild.result = "FAILURE"
+     currentBuild.description = e.message
      throw e
   } finally {
      common.sendNotification(currentBuild.result,"",["slack"])
diff --git a/gating-pipeline.groovy b/gating-pipeline.groovy
index c113d28..c8b4c09 100644
--- a/gating-pipeline.groovy
+++ b/gating-pipeline.groovy
@@ -68,6 +68,7 @@
   } catch (Throwable e) {
      // If there was an error or exception thrown, the build failed
      currentBuild.result = "FAILURE"
+     currentBuild.description = e.message
      throw e
   }
 }
diff --git a/generate-cookiecutter-products.groovy b/generate-cookiecutter-products.groovy
index f6090c0..9f96d61 100644
--- a/generate-cookiecutter-products.groovy
+++ b/generate-cookiecutter-products.groovy
@@ -184,6 +184,7 @@
     } catch (Throwable e) {
          // If there was an error or exception thrown, the build failed
          currentBuild.result = "FAILURE"
+         currentBuild.description = e.message
          throw e
     } finally {
         stage ('Clean workspace directories') {
diff --git a/git-merge-branches-pipeline.groovy b/git-merge-branches-pipeline.groovy
index cff1db5..0d8c47b 100644
--- a/git-merge-branches-pipeline.groovy
+++ b/git-merge-branches-pipeline.groovy
@@ -22,6 +22,7 @@
   } catch (Throwable e) {
      // If there was an error or exception thrown, the build failed
      currentBuild.result = "FAILURE"
+     currentBuild.description = e.message
      throw e
   }
 }
diff --git a/git-mirror-2way-pipeline.groovy b/git-mirror-2way-pipeline.groovy
index c1c808c..4e2af09 100644
--- a/git-mirror-2way-pipeline.groovy
+++ b/git-mirror-2way-pipeline.groovy
@@ -38,6 +38,7 @@
     } catch (Throwable e) {
        // If there was an error or exception thrown, the build failed
        currentBuild.result = "FAILURE"
+       currentBuild.description = e.message
        throw e
     } finally {
        common.sendNotification(currentBuild.result,"",["slack"])
diff --git a/git-mirror-pipeline.groovy b/git-mirror-pipeline.groovy
index 10fa9a0..9378c9d 100644
--- a/git-mirror-pipeline.groovy
+++ b/git-mirror-pipeline.groovy
@@ -17,6 +17,7 @@
     } catch (Throwable e) {
        // If there was an error or exception thrown, the build failed
        currentBuild.result = "FAILURE"
+       currentBuild.description = e.message
        throw e
     } finally {
        common.sendNotification(currentBuild.result,"",["slack"])
diff --git a/opencontrail-upgrade.groovy b/opencontrail-upgrade.groovy
index 6bcb788..0e5c98c 100644
--- a/opencontrail-upgrade.groovy
+++ b/opencontrail-upgrade.groovy
@@ -273,6 +273,7 @@
         } catch (Throwable e) {
             // If there was an error or exception thrown, the build failed
             currentBuild.result = "FAILURE"
+            currentBuild.description = e.message
             throw e
         }
     }
@@ -484,6 +485,7 @@
         } catch (Throwable e) {
             // If there was an error or exception thrown, the build failed
             currentBuild.result = "FAILURE"
+            currentBuild.description = e.message
             throw e
         }
     }
diff --git a/openstack-compute-install.groovy b/openstack-compute-install.groovy
index 8e53396..d09dc44 100644
--- a/openstack-compute-install.groovy
+++ b/openstack-compute-install.groovy
@@ -86,6 +86,7 @@
     } catch (Throwable e) {
         // If there was an error or exception thrown, the build failed
         currentBuild.result = "FAILURE"
+        currentBuild.description = e.message
         throw e
     }
 }
diff --git a/openstack-compute-upgrade.groovy b/openstack-compute-upgrade.groovy
index 4a04531..658d5be 100644
--- a/openstack-compute-upgrade.groovy
+++ b/openstack-compute-upgrade.groovy
@@ -199,6 +199,7 @@
     } catch (Throwable e) {
         // If there was an error or exception thrown, the build failed
         currentBuild.result = "FAILURE"
+        currentBuild.description = e.message
         throw e
     }
 }
diff --git a/ovs-gateway-upgrade.groovy b/ovs-gateway-upgrade.groovy
index 70037a4..5301a0a 100644
--- a/ovs-gateway-upgrade.groovy
+++ b/ovs-gateway-upgrade.groovy
@@ -148,6 +148,7 @@
     } catch (Throwable e) {
         // If there was an error or exception thrown, the build failed
         currentBuild.result = "FAILURE"
+        currentBuild.description = e.message
         throw e
     }
 }
diff --git a/release-salt-formulas-pipeline.groovy b/release-salt-formulas-pipeline.groovy
index 7660636..df98f2b 100644
--- a/release-salt-formulas-pipeline.groovy
+++ b/release-salt-formulas-pipeline.groovy
@@ -24,6 +24,7 @@
   } catch (Throwable e) {
      // If there was an error or exception thrown, the build failed
      currentBuild.result = "FAILURE"
+     currentBuild.description = e.message
      throw e
   } finally {
      common.sendNotification(currentBuild.result,"",["slack"])
diff --git a/test-cookiecutter-reclass.groovy b/test-cookiecutter-reclass.groovy
index 52d7c8c..482b349 100644
--- a/test-cookiecutter-reclass.groovy
+++ b/test-cookiecutter-reclass.groovy
@@ -82,8 +82,8 @@
     def templateContext = readYaml text: content
     def clusterName = templateContext.default_context.cluster_name
     def clusterDomain = templateContext.default_context.cluster_domain
-    git.checkoutGitRepository("${testEnv}/classes/system", clusterName, RECLASS_MODEL_URL, RECLASS_MODEL_BRANCH, CREDENTIALS_ID)
-    saltModelTesting.setupAndTestNode("cfg01.${clusterDomain}", EXTRA_FORMULAS, testEnv)
+    git.checkoutGitRepository("${testEnv}/classes/system", RECLASS_MODEL_URL, RECLASS_MODEL_BRANCH, CREDENTIALS_ID)
+    saltModelTesting.setupAndTestNode("cfg01.${clusterDomain}", clusterName, EXTRA_FORMULAS, testEnv)
 }
 
 def gerritRef
@@ -165,6 +165,7 @@
 
     } catch (Throwable e) {
          currentBuild.result = "FAILURE"
+         currentBuild.description = e.message
          throw e
     } finally {
          def dummy = "dummy"
diff --git a/test-salt-formulas-pipeline.groovy b/test-salt-formulas-pipeline.groovy
index 8ad5f1c..b234af3 100644
--- a/test-salt-formulas-pipeline.groovy
+++ b/test-salt-formulas-pipeline.groovy
@@ -117,6 +117,7 @@
   } catch (Throwable e) {
      // If there was an error or exception thrown, the build failed
      currentBuild.result = "FAILURE"
+     currentBuild.description = e.message
      ruby.runKitchenCommand("destroy")
      throw e
   } finally {
diff --git a/test-salt-model-node.groovy b/test-salt-model-node.groovy
index 913bae9..890630f 100644
--- a/test-salt-model-node.groovy
+++ b/test-salt-model-node.groovy
@@ -60,6 +60,7 @@
   } catch (Throwable e) {
      // If there was an error or exception thrown, the build failed
      currentBuild.result = "FAILURE"
+     currentBuild.description = e.message
      throw e
   }
 }
diff --git a/test-salt-models-pipeline.groovy b/test-salt-models-pipeline.groovy
index 9bd2ca5..59068d7 100644
--- a/test-salt-models-pipeline.groovy
+++ b/test-salt-models-pipeline.groovy
@@ -115,6 +115,7 @@
     }
   } catch (Throwable e) {
      currentBuild.result = "FAILURE"
+     currentBuild.description = e.message
      throw e
   } finally {
      common.sendNotification(currentBuild.result,"",["slack"])
diff --git a/test-system-reclass-pipeline.groovy b/test-system-reclass-pipeline.groovy
index 8a8fbac..d28acba 100644
--- a/test-system-reclass-pipeline.groovy
+++ b/test-system-reclass-pipeline.groovy
@@ -76,6 +76,7 @@
 } catch (Throwable e) {
     // If there was an error or exception thrown, the build failed
     currentBuild.result = "FAILURE"
+    currentBuild.description = e.message
     throw e
 } finally {
     common.sendNotification(currentBuild.result,"",["slack"])
diff --git a/update-package.groovy b/update-package.groovy
index 20e6541..1d0187f 100644
--- a/update-package.groovy
+++ b/update-package.groovy
@@ -106,6 +106,7 @@
     } catch (Throwable e) {
         // If there was an error or exception thrown, the build failed
         currentBuild.result = "FAILURE"
+        currentBuild.description = e.message
         throw e
     }
 }
diff --git a/validate-cloud.groovy b/validate-cloud.groovy
index 8381d6e..ec3498a 100644
--- a/validate-cloud.groovy
+++ b/validate-cloud.groovy
@@ -91,6 +91,7 @@
     } catch (Throwable e) {
         // If there was an error or exception thrown, the build failed
         currentBuild.result = "FAILURE"
+        currentBuild.description = e.message
         throw e
     } finally {
         validate.runCleanup(saltMaster, TARGET_NODE, artifacts_dir)