Merge "Fixed skip messages to match pillars"
diff --git a/cvp_checks/utils/__init__.py b/cvp_checks/utils/__init__.py
index 74af967..6ad3a6d 100644
--- a/cvp_checks/utils/__init__.py
+++ b/cvp_checks/utils/__init__.py
@@ -5,6 +5,10 @@
 import sys, traceback
 
 
+class AuthenticationError(Exception):
+    pass
+
+
 class salt_remote:
     def cmd(self, tgt, fun, param=None, expr_form=None, tgt_type=None):
         config = get_configuration()
@@ -23,17 +27,31 @@
             login_request = requests.post(os.path.join(url, 'login'),
                                           headers=headers, data=login_payload,
                                           proxies=proxies)
-            if login_request.ok:
-                request = requests.post(url, headers=headers,
-                                        data=accept_key_payload,
-                                        cookies=login_request.cookies,
-                                        proxies=proxies)
-                return request.json()['return'][0]
-        except Exception:
-            print "\033[91m\nConnection to SaltMaster " \
-                  "was not established.\n" \
-                  "Please make sure that you " \
-                  "provided correct credentials.\033[0m\n"
+            if not login_request.ok:
+                raise AuthenticationError("Authentication to SaltMaster failed")
+
+            request = requests.post(url, headers=headers,
+                                    data=accept_key_payload,
+                                    cookies=login_request.cookies,
+                                    proxies=proxies)
+
+            response = request.json()['return'][0]
+            not_responded = [k for k,v in response.iteritems() if v is False]
+            if not_responded:
+                print ("WARNING: Some nodes are unavailable and removed "
+                      "from response: {}".format(', '.join(not_responded))
+                )
+            for node in not_responded:
+                del response[node]
+            return response
+
+        except Exception as e:
+            print ("\033[91m\nConnection to SaltMaster "
+                  "was not established.\n"
+                  "Please make sure that you "
+                  "provided correct credentials.\n"
+                  "Error message: {}\033[0m\n".format(e.message or e)
+            )
             traceback.print_exc(file=sys.stdout)
             sys.exit()
 
@@ -43,11 +61,10 @@
     return local
 
 
-def list_to_target_string(node_list, separator):
-    result = ''
-    for node in node_list:
-        result += node + ' ' + separator + ' '
-    return result[:-(len(separator)+2)]
+def list_to_target_string(node_list, separator, add_spaces=True):
+    if add_spaces:
+        separator = ' ' + separator.strip() + ' '
+    return separator.join(node_list)
 
 
 def get_monitoring_ip(param_name):