Merge "Add AIO cluster trigger"
diff --git a/src/com/mirantis/mk/Gerrit.groovy b/src/com/mirantis/mk/Gerrit.groovy
index a48f554..a10067f 100644
--- a/src/com/mirantis/mk/Gerrit.groovy
+++ b/src/com/mirantis/mk/Gerrit.groovy
@@ -551,7 +551,8 @@
         }
         common.infoMsg("GERRIT_EVENT_COMMENT_TEXT is ${gerritEventCommentTextStr}")
     }
-    if (gerritEventType == 'comment-added' && gerritEventCommentTextStr =~ /^Patch Set \d+:\s.*Workflow\+1$/) {
+    def gateComment = gerritEventCommentTextStr.split('\n')[0]
+    if (gerritEventType == 'comment-added' && gateComment =~ /^Patch Set \d+:\s.*Workflow\+1.*$/) {
         common.infoMsg("Running in gate mode")
         res = true
     }
diff --git a/src/com/mirantis/mk/ReleaseWorkflow.groovy b/src/com/mirantis/mk/ReleaseWorkflow.groovy
index da17fb9..63a3675 100644
--- a/src/com/mirantis/mk/ReleaseWorkflow.groovy
+++ b/src/com/mirantis/mk/ReleaseWorkflow.groovy
@@ -62,6 +62,10 @@
     checkoutReleaseMetadataRepo(params)
 
     docker.image(appDockerImage).inside("--volume ${repoDir}:/workspace") {
+        checkResult = sh(script: "metadata-app --path /workspace/metadata ${opts} validate --structure", returnStatus: true)
+        if (checkResult != 0) {
+            throw new Exception("Invalid metadata structure, see errors in the metadata.log file")
+        }
         result = sh(script: "metadata-app --path /workspace/metadata ${opts} get --key ${key}", returnStdout: true).trim()
     }
     common.infoMsg("""
@@ -106,6 +110,7 @@
     String changeAuthorName     = params.get('crAuthorName', 'MCP-CI')
     String changeAuthorEmail    = params.get('crAuthorEmail', 'mcp-ci-jenkins@ci.mcp.mirantis.net')
     Boolean valuesFromFile      = params.get('valuesFromFile', false)
+    Boolean catMetadataLog       = params.get('catMetadataLog', false)
 
     def cred = common.getCredentials(gitCredentialsId, 'key')
     String gerritUser = cred.username
@@ -161,9 +166,19 @@
                     }
                     try {
                         sh "metadata-app --path /workspace/metadata update --create --key '${keyArr[i]}' ${valueExpression}"
+                        checkResult = sh(script: "metadata-app --path /workspace/metadata validate --structure", returnStatus: true)
+                        def MetadataLogFile = readFile("metadata.log")
+                        if (MetadataLogFile.size() > 0) {
+                            if (catMetadataLog) {
+                                common.errorMsg("Invalid metadata structure, metadata.log file content:\n${MetadataLogFile}")
+                            }
+                        }
+                        if (checkResult != 0) {
+                            throw new Exception("Invalid metadata structure, see errors in the metadata.log file")
+                        }
                     } finally {
-                        if (valuesFromFile){
-                            sh "rm ${tmpFile}"
+                        if (valuesFromFile) {
+                            sh "rm -v ${tmpFile}"
                         }
                     }
                 }