Merge "Refactor release-mcp pipelines"
diff --git a/tag-git-repos.groovy b/tag-git-repos.groovy
index bb3f7a5..68229a6 100644
--- a/tag-git-repos.groovy
+++ b/tag-git-repos.groovy
@@ -29,6 +29,9 @@
             def repos = GIT_REPO_LIST.tokenize('\n')
             def repoUrl, repoName, repoCommit, repoArray
             for (repo in repos){
+                if(repo.startsWith('#'))
+                  common.warningMsg("Skipping:" + repo.toString())
+                  continue
                 if(repo.trim().indexOf(' ') == -1){
                     throw new IllegalArgumentException("Wrong format of repository and commit input")
                 }
@@ -49,4 +52,4 @@
             throw e
         }
     }
-}
\ No newline at end of file
+}
diff --git a/test-drivetrain.groovy b/test-drivetrain.groovy
index 21d1a8a..594e171 100644
--- a/test-drivetrain.groovy
+++ b/test-drivetrain.groovy
@@ -8,6 +8,7 @@
  *   TARGET_MCP_VERSION                            MCP version to upgrade to
  *   FUNC_TEST_SETTINGS                            Settings for functional tests
  *   ENVIRONMENT_IP                                IP of already deployed environment
+ *   DELETE_STACK                                  Option to delete Heat Stack
  */
 
 
@@ -34,10 +35,21 @@
 }
 
 def runJobOnJenkins(jenkinsUrl, userName, password, jobName, parameters){
+    def status = "null"
     def jenkinsDownCmd = "curl -OL ${jenkinsUrl}/jnlpJars/jenkins-cli.jar --output ./jenkins-cli.jar"
-    def runJobFromSaltMasterCmd = "java -jar jenkins-cli.jar -s ${jenkinsUrl} -noKeyAuth -auth admin:${password} build ${jobName} ${parameters} -s | grep -E 'SUCCESS|UNSTABLE'"
+    def runJobFromSaltMasterCmd = "java -jar jenkins-cli.jar -s ${jenkinsUrl} -noKeyAuth -auth ${userName}:${password} build ${jobName} ${parameters} -w"
+    def waitJobFromSaltMasterCmd = "curl -s -X GET '${jenkinsUrl}/job/${jobName}/lastBuild/api/json?tree=result' --user ${userName}:${password} | jq -r '.result'"
     salt.cmdRun(pepperEnv, "I@salt:master", jenkinsDownCmd)
     salt.cmdRun(pepperEnv, "I@salt:master", runJobFromSaltMasterCmd)
+    while (status == "null" || status.contains("parse error")){
+        status = salt.cmdRun(pepperEnv, "I@salt:master", waitJobFromSaltMasterCmd, false)
+        status = status.get("return")[0].values()[0].trim()
+        println("The job ${jobName} result is $status")
+        if(status == "FAILURE"){
+            throw new Exception("The job ${jobName} result is FAILURE.")
+        }
+        sleep(10)
+    }
 }
 
 timeout(time: 12, unit: 'HOURS') {
@@ -48,8 +60,8 @@
             def saltCreds = [:]
             def mcpEnvJobIP
 
-            if(ENVIRONMENT_IP == ""){
-                stage('Trigger deploy job') {
+            stage('Trigger deploy job') {
+                if(ENVIRONMENT_IP == ""){
                     mcpEnvJob = build(job: "create-mcp-env", parameters: [
                         [$class: 'StringParameterValue', name: 'OS_AZ', value: 'mcp-mk'],
                         [$class: 'StringParameterValue', name: 'OS_PROJECT_NAME', value: 'mcp-mk'],
@@ -59,12 +71,11 @@
                         [$class: 'BooleanParameterValue', name: 'RUN_TESTS', value: false],
                         [$class: 'TextParameterValue', name: 'COOKIECUTTER_TEMPLATE_CONTEXT', value: COOKIECUTTER_TEMPLATE_CONTEXT]
                     ])
+                    def mcpEnvJobDesc = mcpEnvJob.getDescription().tokenize(" ")
+                    mcpEnvJobIP = mcpEnvJobDesc[2]
+                }else{
+                    mcpEnvJobIP = ENVIRONMENT_IP
                 }
-
-                def mcpEnvJobDesc = mcpEnvJob.getDescription().tokenize(" ")
-                mcpEnvJobIP = mcpEnvJobDesc[2]
-            }else{
-                mcpEnvJobIP = ENVIRONMENT_IP
             }
 
             def saltMasterUrl = "http://${mcpEnvJobIP}:6969"
@@ -94,6 +105,15 @@
                 //runJobOnJenkins(jenkinsUrl, "admin", stackCicdPassword, "cvp-dt-func", "-p SETTINGS=${FUNC_TEST_SETTINGS}")
             }
 
+            stage('Delete Heat Stack') {
+                if(DELETE_STACK.toBoolean()){
+                    mcpEnvJob = build(job: "delete-heat-stack-for-mcp-env", parameters: [
+                        [$class: 'StringParameterValue', name: 'OS_PROJECT_NAME', value: 'mcp-mk'],
+                        [$class: 'StringParameterValue', name: 'STACK_NAME', value: 'jenkins-drivetrain-test-' + currentBuild.number],
+                    ])
+                }
+            }
+
         } catch (Throwable e) {
             currentBuild.result = 'FAILURE'
             throw e