Add getReleaseMetadataValue() function

Change-Id: I9f995d644d9eaf613e35a9cefcb81e8eda14f6d4
Related-Prod: PROD-31438
diff --git a/src/com/mirantis/mk/ReleaseWorkflow.groovy b/src/com/mirantis/mk/ReleaseWorkflow.groovy
index b5046c1..a81f0d1 100644
--- a/src/com/mirantis/mk/ReleaseWorkflow.groovy
+++ b/src/com/mirantis/mk/ReleaseWorkflow.groovy
@@ -5,6 +5,42 @@
  */
 
 /**
+ * Get release metadata value for given key
+ *
+ * @param key metadata key
+ * @param params map with expected parameters:
+ *    - toxDockerImage
+ *    - metadataCredentialsId
+ *    - metadataGitRepoUrl
+ *    - metadataGitRepoBranch
+ *    - repoDir
+ */
+def getReleaseMetadataValue(String key, Map params = [:]) {
+    String result
+    // Get params
+    String toxDockerImage   = params.get('toxDockerImage', 'docker-prod-virtual.docker.mirantis.net/mirantis/external/tox')
+    String gitCredentialsId = params.get('metadataCredentialsId', 'mcp-ci-gerrit')
+    String gitUrl           = params.get('metadataGitRepoUrl', "ssh://${gitCredentialsId}@gerrit.mcp.mirantis.net:29418/mcp/release-metadata")
+    String gitBranch        = params.get('metadataGitRepoBranch', 'master')
+    String repoDir          = params.get('repoDir', 'release-metadata')
+    String outputFormat     = params.get('outputFormat', 'json')
+
+    // Libs
+    def git = new com.mirantis.mk.Git()
+
+    String opts = ''
+    if (outputFormat && !outputFormat.isEmpty()) {
+        opts += " --${outputFormat}"
+    }
+    // TODO cache it somehow to not checkout it all the time
+    git.checkoutGitRepository(repoDir, gitUrl, gitBranch, gitCredentialsId, true, 10, 0)
+    docker.image(toxDockerImage).inside {
+        result = sh(script: "cd ${repoDir} && tox -qq -e metadata -- ${opts} get --key ${key}", returnStdout: true).trim()
+    }
+    return result
+}
+
+/**
  * Update release metadata after image build
  *
  * @param key metadata key