Salt result checking improved

PROD-18931

Change-Id: I2a617b1a43eab1a5cd10dd8f63818d9e00bf59af
diff --git a/src/com/mirantis/mk/Salt.groovy b/src/com/mirantis/mk/Salt.groovy
index 883cb61..eb4d828 100644
--- a/src/com/mirantis/mk/Salt.groovy
+++ b/src/com/mirantis/mk/Salt.groovy
@@ -682,6 +682,7 @@
                     def nodeKey = entry.keySet()[j]
                     def node=entry[nodeKey]
                     def outputResources = []
+                    def errorResources = []
                     common.infoMsg("Node ${nodeKey} changes:")
                     if(node instanceof Map || node instanceof List){
                         for (int k=0;k<node.size();k++) {
@@ -723,27 +724,31 @@
                             }
                             common.debugMsg("checkResult: checking resource: ${resource}")
                             if(resource instanceof String || (resource["result"] != null && !resource["result"]) || (resource["result"] instanceof String && resource["result"] == "false")){
-                                def prettyResource = common.prettify(resource)
-                                if(!disableAskOnError && env["ASK_ON_ERROR"] && env["ASK_ON_ERROR"] == "true"){
-                                    timeout(time:1, unit:'HOURS') {
-                                       input message: "False result on ${nodeKey} found, resource ${prettyResource}. \nDo you want to continue?"
-                                    }
-                                }else{
-                                    common.errorMsg(String.format("Resource: %s\n%s", resKey, prettyResource))
-                                    def errorMsg = "Salt state on node ${nodeKey} failed: ${prettyResource}."
-                                    if (failOnError) {
-                                        throw new Exception(errorMsg)
-                                    } else {
-                                        common.errorMsg(errorMsg)
-                                    }
-                                }
+                                errorResources.add(resource)
                             }
                         }
                     }else if(node!=null && node!=""){
                         outputResources.add(String.format("Resource: %s\n\u001B[36m%s\u001B[0m", nodeKey, common.prettify(node)))
                     }
                     if(printResults && !outputResources.isEmpty()){
-                        print outputResources.stream().collect(Collectors.joining("\n"))
+                        println outputResources.stream().collect(Collectors.joining("\n"))
+                    }
+                    if(!errorResources.isEmpty()){
+                        for(resource in errorResources){
+                            def prettyResource = common.prettify(resource)
+                            if (!disableAskOnError && env["ASK_ON_ERROR"] && env["ASK_ON_ERROR"] == "true") {
+                                timeout(time:1, unit:'HOURS') {
+                                   input message: "False result on ${nodeKey} found, resource ${prettyResource}. \nDo you want to continue?"
+                                }
+                            } else {
+                                def errorMsg = "Salt state on node ${nodeKey} failed. Resource: ${prettyResource}"
+                                if (failOnError) {
+                                    throw new Exception(errorMsg)
+                                } else {
+                                    common.errorMsg(errorMsg)
+                                }
+                            }
+                        }
                     }
                 }
             }