Implemented ask for error possibility

Change-Id: Ifb4d61d430d5abd12688fea8a34cf26a97e04655
diff --git a/src/com/mirantis/mk/Salt.groovy b/src/com/mirantis/mk/Salt.groovy
index af90a08..1a62bab 100644
--- a/src/com/mirantis/mk/Salt.groovy
+++ b/src/com/mirantis/mk/Salt.groovy
@@ -138,13 +138,10 @@
 
     def out = runSaltCommand(master, 'local', ['expression': target, 'type': 'compound'], 'state.sls', null, [run_states])
 
-    try {
-        checkResult(out, failOnError)
-    } finally {
-        if (output == true) {
-            printSaltStateResult(out)
-        }
+    if (output == true) {
+        printSaltStateResult(out)
     }
+    checkResult(out, failOnError)
     return out
 }
 
@@ -183,13 +180,10 @@
  */
 def enforceHighstate(master, target, output = false, failOnError = true) {
     def out = runSaltCommand(master, 'local', ['expression': target, 'type': 'compound'], 'state.highstate')
-    try {
-        checkResult(out, failOnError)
-    } finally {
-        if (output == true) {
-            printSaltStateResult(out)
-        }
+    if (output == true) {
+        printSaltStateResult(out)
     }
+    checkResult(out, failOnError)
     return out
 }
 
@@ -276,6 +270,12 @@
  */
 def checkResult(result, failOnError = true) {
     def common = new com.mirantis.mk.Common()
+    def askOnError = false
+    try {
+      askOnError = env.ASK_ON_ERROR
+    } catch (MissingPropertyException e) {
+      askOnError = false
+    }
     if(result != null){
         if(result['return']){
             for (int i=0;i<result['return'].size();i++) {
@@ -301,10 +301,16 @@
                         resource = node[resKey]
                         common.debugMsg("checkResult: checking resource: ${resource}")
                         if(resource instanceof String || !resource["result"] || (resource["result"] instanceof String && resource["result"] != "true")){
-                            if (failOnError) {
-                                throw new Exception("Salt state on node ${nodeKey} failed: ${resource}. State output: ${node}")
-                            } else {
-                                common.errorMsg("Salt state on node ${nodeKey} failed: ${resource}. State output: ${node}")
+                            if(askOnError){
+                                timeout(time:1, unit:'HOURS') {
+                                   input message: "False result found, do you want to continue?"
+                                }
+                            }else{
+                                if (failOnError) {
+                                    throw new Exception("Salt state on node ${nodeKey} failed: ${resource}. State output: ${node}")
+                                } else {
+                                    common.errorMsg("Salt state on node ${nodeKey} failed: ${resource}. State output: ${node}")
+                                }
                             }
                         }
                     }