Fix webhook configuration and formatting
This commit is contained in:
		| @@ -122,6 +122,7 @@ def read_config(): | ||||
|         o_dhcp = o_base["dhcp"] | ||||
|         o_tftp = o_base["tftp"] | ||||
|         o_ansible = o_base["ansible"] | ||||
|         o_notifications = o_base["notifications"] | ||||
|     except KeyError as 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'" | ||||
|             ) | ||||
|  | ||||
|     # 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 | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -33,16 +33,20 @@ def send_webhook(config, status, message): | ||||
|     Send an notification webhook | ||||
|     """ | ||||
|  | ||||
|     if not config.get('notifications', None) or not config['notifications']['enabled']: | ||||
|     if not config['notifications_enabled']: | ||||
|         return | ||||
|  | ||||
|     logger.debug(f"Sending notification to {config['notifications']['uri']}") | ||||
|     logger.debug(f"Sending notification to {config['notifications_uri']}") | ||||
|  | ||||
|     # Get the body data | ||||
|     data = json.dumps(config['notifications']['body']).format( | ||||
|         icon=config['notifications']['icons'][status], | ||||
|     body = config['notifications_body'] | ||||
|     formatted_body = dict() | ||||
|     for element, value in body.items(): | ||||
|         formatted_body[element] = value.format( | ||||
|             icon=config['notifications_icons'][status], | ||||
|             message=message | ||||
|         ) | ||||
|     data = json.dumps(formatted_body) | ||||
|     headers = {"content-type": "application/json"} | ||||
|  | ||||
|     # Craft up a Requests endpoint set for this | ||||
| @@ -54,8 +58,8 @@ def send_webhook(config, status, message): | ||||
|         "delete": requests.delete, | ||||
|         "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}") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user