Fix webhook configuration and formatting
This commit is contained in:
parent
5563f8921f
commit
d35e339801
|
@ -122,6 +122,7 @@ def read_config():
|
||||||
o_dhcp = o_base["dhcp"]
|
o_dhcp = o_base["dhcp"]
|
||||||
o_tftp = o_base["tftp"]
|
o_tftp = o_base["tftp"]
|
||||||
o_ansible = o_base["ansible"]
|
o_ansible = o_base["ansible"]
|
||||||
|
o_notifications = o_base["notifications"]
|
||||||
except KeyError as k:
|
except KeyError as k:
|
||||||
raise MalformedConfigurationError(f"Missing first-level category {k}")
|
raise MalformedConfigurationError(f"Missing first-level category {k}")
|
||||||
|
|
||||||
|
@ -203,6 +204,15 @@ def read_config():
|
||||||
f"Missing third-level key '{key}' under 'ansible/cspec_files'"
|
f"Missing third-level key '{key}' under 'ansible/cspec_files'"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Get the Notifications configuration
|
||||||
|
for key in ["enabled", "uri", "action", "icons", "body"]:
|
||||||
|
try:
|
||||||
|
config[f"notifications_{key}"] = o_notifications[key]
|
||||||
|
except Exception:
|
||||||
|
raise MalformedConfigurationError(
|
||||||
|
f"Missing second-level key '{key}' under 'notifications'"
|
||||||
|
)
|
||||||
|
|
||||||
return config
|
return config
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -33,16 +33,20 @@ def send_webhook(config, status, message):
|
||||||
Send an notification webhook
|
Send an notification webhook
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if not config.get('notifications', None) or not config['notifications']['enabled']:
|
if not config['notifications_enabled']:
|
||||||
return
|
return
|
||||||
|
|
||||||
logger.debug(f"Sending notification to {config['notifications']['uri']}")
|
logger.debug(f"Sending notification to {config['notifications_uri']}")
|
||||||
|
|
||||||
# Get the body data
|
# Get the body data
|
||||||
data = json.dumps(config['notifications']['body']).format(
|
body = config['notifications_body']
|
||||||
icon=config['notifications']['icons'][status],
|
formatted_body = dict()
|
||||||
|
for element, value in body.items():
|
||||||
|
formatted_body[element] = value.format(
|
||||||
|
icon=config['notifications_icons'][status],
|
||||||
message=message
|
message=message
|
||||||
)
|
)
|
||||||
|
data = json.dumps(formatted_body)
|
||||||
headers = {"content-type": "application/json"}
|
headers = {"content-type": "application/json"}
|
||||||
|
|
||||||
# Craft up a Requests endpoint set for this
|
# Craft up a Requests endpoint set for this
|
||||||
|
@ -54,8 +58,8 @@ def send_webhook(config, status, message):
|
||||||
"delete": requests.delete,
|
"delete": requests.delete,
|
||||||
"options": requests.options,
|
"options": requests.options,
|
||||||
}
|
}
|
||||||
action = config['notifications']["action"]
|
action = config['notifications_action']
|
||||||
|
|
||||||
result = requests_actions[action](config['notifications']["uri"], headers=headers, data=data)
|
result = requests_actions[action](config['notifications_uri'], headers=headers, data=data)
|
||||||
|
|
||||||
logger.debug(f"Result: {result}")
|
logger.debug(f"Result: {result}")
|
||||||
|
|
Loading…
Reference in New Issue