New version of gating pipeline with capability to give Verified +1

Change-Id: Ic1cf1ea0c6f35b2456e97fd77e832ade9a04dfed
diff --git a/gating-pipeline.groovy b/gating-pipeline.groovy
index 3ac493c..a870ad4 100644
--- a/gating-pipeline.groovy
+++ b/gating-pipeline.groovy
@@ -13,32 +13,42 @@
     // test if change is not already merged
     ssh.prepareSshAgentKey(CREDENTIALS_ID)
     ssh.ensureKnownHosts(GERRIT_HOST)
-    def gerritChange = gerrit.getGerritChange(GERRIT_NAME, GERRIT_HOST, GERRIT_CHANGE_NUMBER, CREDENTIALS_ID)
+    def gerritChange = gerrit.getGerritChange(GERRIT_NAME, GERRIT_HOST, GERRIT_CHANGE_NUMBER, CREDENTIALS_ID, true)
+    def doSubmit = false
+    def giveVerify = false
     stage("test") {
       if (gerritChange.status != "MERGED" && !SKIP_TEST.equals("true")){
-        wrap([$class: 'AnsiColorBuildWrapper']) {
-          def gerritProjectArray = GERRIT_PROJECT.tokenize("/")
-          def gerritProject = gerritProjectArray[gerritProjectArray.size() - 1]
-          def jobsNamespace = JOBS_NAMESPACE
-          def plural_namespaces = ['salt-formulas', 'salt-models']
-          // remove plural s on the end of job namespace
-          if (JOBS_NAMESPACE in plural_namespaces){
-            jobsNamespace = JOBS_NAMESPACE.substring(0, JOBS_NAMESPACE.length() - 1)
+        // test max CodeReview
+        if(gerrit.patchsetHasApproval(gerritChange.currentPatchSet,"CodeReview", "+")){
+          doSubmit = true
+          wrap([$class: 'AnsiColorBuildWrapper']) {
+            def gerritProjectArray = GERRIT_PROJECT.tokenize("/")
+            def gerritProject = gerritProjectArray[gerritProjectArray.size() - 1]
+            def jobsNamespace = JOBS_NAMESPACE
+            def plural_namespaces = ['salt-formulas', 'salt-models']
+            // remove plural s on the end of job namespace
+            if (JOBS_NAMESPACE in plural_namespaces){
+              jobsNamespace = JOBS_NAMESPACE.substring(0, JOBS_NAMESPACE.length() - 1)
+            }
+            // salt-formulas tests have -latest on end of the name
+            if(JOBS_NAMESPACE.equals("salt-formulas")){
+              gerritProject=gerritProject+"-latest"
+            }
+            def testJob = String.format("test-%s-%s", jobsNamespace, gerritProject)
+            if (_jobExists(testJob)) {
+              common.infoMsg("Test job ${testJob} found, running")
+              def patchsetVerified =  gerrit.patchsetHasApproval(gerritChange.currentPatchSet,"Verified", "+")
+              build job: testJob, parameters: [
+                [$class: 'StringParameterValue', name: 'DEFAULT_GIT_URL', value: "${GERRIT_SCHEME}://${GERRIT_NAME}@${GERRIT_HOST}:${GERRIT_PORT}/${GERRIT_PROJECT}"],
+                [$class: 'StringParameterValue', name: 'DEFAULT_GIT_REF', value: GERRIT_REFSPEC]
+              ]
+              giveVerify = true
+            } else {
+              common.infoMsg("Test job ${testJob} not found")
+            }
           }
-          // salt-formulas tests have -latest on end of the name
-          if(JOBS_NAMESPACE.equals("salt-formulas")){
-            gerritProject=gerritProject+"-latest"
-          }
-          def testJob = String.format("test-%s-%s", jobsNamespace, gerritProject)
-          if (_jobExists(testJob)) {
-            common.infoMsg("Test job ${testJob} found, running")
-            build job: testJob, parameters: [
-              [$class: 'StringParameterValue', name: 'DEFAULT_GIT_URL', value: "${GERRIT_SCHEME}://${GERRIT_NAME}@${GERRIT_HOST}:${GERRIT_PORT}/${GERRIT_PROJECT}"],
-              [$class: 'StringParameterValue', name: 'DEFAULT_GIT_REF', value: GERRIT_REFSPEC]
-            ]
-          } else {
-            common.infoMsg("Test job ${testJob} not found")
-          }
+        } else {
+          common.errorMsg("Change don't have a CodeReview, skipping gate")
         }
       } else {
         common.infoMsg("Test job skipped")
@@ -47,8 +57,13 @@
     stage("submit review"){
       if(gerritChange.status == "MERGED"){
         common.successMsg("Change ${GERRIT_CHANGE_NUMBER} is already merged, no need to gate them")
-      }else{
-        ssh.agentSh(String.format("ssh -p 29418 %s@%s gerrit review --submit %s,%s", GERRIT_NAME, GERRIT_HOST, GERRIT_CHANGE_NUMBER, GERRIT_PATCHSET_NUMBER))
+      }else if(doSubmit){
+        if(giveVerify){
+          common.warningMsg("Change ${GERRIT_CHANGE_NUMBER} don't have a Verified, but tests were successful, so adding Verified and submitting")
+          ssh.agentSh(String.format("ssh -p 29418 %s@%s gerrit review --verified +1 --submit %s,%s", GERRIT_NAME, GERRIT_HOST, GERRIT_CHANGE_NUMBER, GERRIT_PATCHSET_NUMBER))
+        }else{
+          ssh.agentSh(String.format("ssh -p 29418 %s@%s gerrit review --submit %s,%s", GERRIT_NAME, GERRIT_HOST, GERRIT_CHANGE_NUMBER, GERRIT_PATCHSET_NUMBER))
+        }
         common.infoMsg(String.format("Gerrit review %s,%s submitted", GERRIT_CHANGE_NUMBER, GERRIT_PATCHSET_NUMBER))
       }
     }