Allow to check metadata only once

PRODX-3456

Change-Id: I68e954ba76ae2c239d8d7ed20fcdae986d108a00
diff --git a/src/com/mirantis/mk/ReleaseWorkflow.groovy b/src/com/mirantis/mk/ReleaseWorkflow.groovy
index 63a3675..a6ac966 100644
--- a/src/com/mirantis/mk/ReleaseWorkflow.groovy
+++ b/src/com/mirantis/mk/ReleaseWorkflow.groovy
@@ -110,7 +110,8 @@
     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)
+    Boolean catMetadataLog      = params.get('catMetadataLog', false)
+    Boolean validateOnce        = params.get('validateOnce', false)
 
     def cred = common.getCredentials(gitCredentialsId, 'key')
     String gerritUser = cred.username
@@ -166,15 +167,17 @@
                     }
                     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 (!validateOnce) {
+                            def 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")
+                            if (checkResult != 0) {
+                                throw new Exception("Invalid metadata structure, see errors in the metadata.log file")
+                            }
                         }
                     } finally {
                         if (valuesFromFile) {
@@ -182,6 +185,18 @@
                         }
                     }
                 }
+                if (validateOnce) {
+                    def 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")
+                    }
+                }
             }
         }