Merge "Add executeMachineSshCommand function"
diff --git a/.gitignore b/.gitignore
index f8b92c3..d075acf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,5 @@
+.idea
 .gradle
 build
+gradlew*
+gradle/
diff --git a/src/com/mirantis/mk/Galera.groovy b/src/com/mirantis/mk/Galera.groovy
index e5ffe12..3b6f626 100644
--- a/src/com/mirantis/mk/Galera.groovy
+++ b/src/com/mirantis/mk/Galera.groovy
@@ -378,8 +378,8 @@
 
     if (restoreDb) {
         def timestamp = common.getDatetime()
-        salt.cmdRun(env, lastNodeTarget, "mkdir -p /root/mysql")
-        def bakDir = salt.getReturnValues(salt.cmdRun(env, lastNodeTarget, "mktemp -d --suffix='_${timestamp}' /root/mysql/mysql.bak.XXXXXX", false))
+        def bakDir = "/root/mysql/mysql.bak.${timestamp}".toString()
+        salt.cmdRun(env, lastNodeTarget, "mkdir -p ${bakDir}")
         salt.cmdRun(env, lastNodeTarget, "mv /var/lib/mysql/* ${bakDir} || echo 'Nothing to backup from directory /var/lib/mysql/'")
     }
     if (total) {
diff --git a/src/com/mirantis/mk/Gerrit.groovy b/src/com/mirantis/mk/Gerrit.groovy
index 954600b..85b0411 100644
--- a/src/com/mirantis/mk/Gerrit.groovy
+++ b/src/com/mirantis/mk/Gerrit.groovy
@@ -370,6 +370,7 @@
  */
 def postGerritReview(credentialsId, virtualEnv, repoDir, gitName, gitEmail, gitRemote, gitTopic, gitBranch) {
     def python = new com.mirantis.mk.Python()
+    def common = new com.mirantis.mk.Common()
     def cmdText = """
                     GIT_COMMITTER_NAME=${gitName} \
                     GIT_COMMITTER_EMAIL=${gitEmail} \
@@ -379,7 +380,8 @@
                   """
     sshagent([credentialsId]) {
         dir(repoDir) {
-            python.runVirtualenvCommand(virtualEnv, cmdText)
+            res = python.runVirtualenvCommand(virtualEnv, cmdText)
+            common.infoMsg(res)
         }
     }
 }
diff --git a/src/com/mirantis/mk/Helm.groovy b/src/com/mirantis/mk/Helm.groovy
index 72d95cb..61ff48a 100644
--- a/src/com/mirantis/mk/Helm.groovy
+++ b/src/com/mirantis/mk/Helm.groovy
@@ -64,10 +64,14 @@
 def generateChartVersionFromGit(repoDir, devVersion = true, increment = false, defaultVersion = '0.1.0', tagSuffix = 'mcp') {
     def common = new com.mirantis.mk.Common()
     def git = new com.mirantis.mk.Git()
-    String initialVersion = "${defaultVersion}-${tagSuffix}"
+    String initialVersion = "${defaultVersion}"
     String countRange
     String versionData
-    String tagPattern = "[0-9]*-${tagSuffix}"
+    String tagPattern = "[0-9]*"
+    if (tagSuffix) {
+        tagPattern = "${tagPattern}-${tagSuffix}"
+        initialVersion = "${initialVersion}-${tagSuffix}"
+    }
     dir(repoDir){
         Map cmd = common.shCmdStatus("git describe --tags --first-parent --abbrev=0 --match ${tagPattern}")
         String lastTag = cmd['stdout'].trim()
@@ -86,26 +90,29 @@
         }
         List versionParts = versionData.tokenize('-')
 
-        if (versionParts.size() == 2 && common.isSemVer(versionData) && versionParts[1] == tagSuffix){
-            String commitsSinceTag = sh(script: "git rev-list --count ${countRange}", returnStdout: true).trim()
-            String commitSha = sh(script: 'git rev-parse --short=7 HEAD', returnStdout: true).trim()
-
-            if (commitsSinceTag == '0'){
-                return versionData
-            }
-
-            if (devVersion){
-                versionParts.add(commitSha)
-            } else {
-                versionParts.add(commitsSinceTag)
-            }
-            // Patch version will be incremented e.g. 0.1.0 -> 0.1.1
-            if (increment) {
-                versionParts[0] = git.incrementVersion(versionParts[0])
-            }
-            return versionParts.join('-')
+        if (!common.isSemVer(versionData)){
+            error "Version ${versionData} is not in semver2 format"
         }
-        error "Version ${versionData} doesn't contain required suffix ${tagSuffix} or not in semver2 format"
+        if (tagSuffix && versionParts.size() == 2 && versionParts[1] != tagSuffix){
+            error "Tag suffix ${tagSuffix} was specified but not found in ${versionData}"
+        }
+        String commitsSinceTag = sh(script: "git rev-list --count ${countRange}", returnStdout: true).trim()
+        String commitSha = sh(script: 'git rev-parse --short=7 HEAD', returnStdout: true).trim()
+
+        if (commitsSinceTag == '0'){
+            return versionData
+        }
+
+        if (devVersion){
+            versionParts.add(commitSha)
+        } else {
+            versionParts.add(commitsSinceTag)
+        }
+        // Patch version will be incremented e.g. 0.1.0 -> 0.1.1
+        if (increment) {
+            versionParts[0] = git.incrementVersion(versionParts[0])
+        }
+        return versionParts.join('-')
     }
 }