Improve functions for waiting jobs within same gerrit trigger

Change-Id: I98dd8c69522e061262aa5277c204bda23665364f
Related-Prod: PROD-25788 (PROD:25788)
diff --git a/src/com/mirantis/mk/JenkinsUtils.groovy b/src/com/mirantis/mk/JenkinsUtils.groovy
index 0434814..94869eb 100644
--- a/src/com/mirantis/mk/JenkinsUtils.groovy
+++ b/src/com/mirantis/mk/JenkinsUtils.groovy
@@ -158,12 +158,12 @@
  */
 @NonCPS
 def getBuildCauseActions(build) {
-    def causeAction = build.actions.find { it -> it instanceof hudson.model.CauseAction }
-    if(causeAction) {
-        return causeAction.causes
-    } else {
-        return []
+    for(action in build.actions) {
+        if (action instanceof hudson.model.CauseAction) {
+            return action.causes
+        }
     }
+    return []
 }
 
 /**
@@ -174,14 +174,12 @@
 @NonCPS
 def getGerritBuildContext(build) {
     def causes = getBuildCauseActions(build)
-    if (causes) {
-      def gerritTriggerCause = causes.find { cause ->
-          cause instanceof com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritCause
-      }
-      return gerritTriggerCause.context.getOtherBuilds()
-    } else {
-      return []
+    for(cause in causes) {
+        if (cause instanceof com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritCause) {
+            return cause.context.getOtherBuilds()
+        }
     }
+    return []
 }
 
 /**
@@ -191,11 +189,18 @@
  *   checkBuilds - List of job names or regexps, which should be used to check provided builds list
  *   regexp - Wheither to use regexp or simple string matching
  */
+@NonCPS
 def waitForOtherBuilds(LinkedHashMap config){
-  def common = new com.mirantis.mk.Common()
-  def builds = config.get('builds')
+  def context = config.get('context', 'gerrit')
+  def builds = []
+  if (context == 'gerrit') {
+    builds = getGerritBuildContext(currentBuild.rawBuild)
+  } else if (context == 'custom') {
+    builds = config.get('builds')
+  }
   def checkBuilds = config.get('checkBuilds')
   def regexp = config.get('regexp', false)
+
   def waitForBuilds = builds.findAll { build ->
     def jobName = build.fullDisplayName.tokenize(' ')[0]
     if (regexp) {
@@ -204,16 +209,25 @@
       jobName in checkBuilds
     }
   }
+
+  def buildsMap = []
   if (waitForBuilds) {
     def waiting = true
-    common.infoMsg("Waiting for next jobs: ${waitForBuilds}")
+    print "\u001B[36mWaiting for next jobs: ${waitForBuilds}\u001B[0m"
     while(waiting) {
       waiting = false
       waitForBuilds.each { job ->
         if (job.inProgress) {
           waiting = true
+        } else {
+          buildInfo = [
+              'jobName': job.fullDisplayName.tokenize(' ')[0],
+              'jobNumber': job.number,
+          ]
+          buildsMap.add(buildInfo)
         }
       }
     }
   }
+  return buildsMap
 }