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):