feat: support new smart send gate

This commit is contained in:
2023-07-21 15:57:18 +02:00
parent 1449387fc0
commit 5841f39389

View File

@@ -2,11 +2,14 @@
import sys
import argparse
import requests
import os
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Send Notifications via Telegram HTTP-Gateway',
parser = argparse.ArgumentParser(description='Send Notifications via Atlantis Dispatcher',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
# incident information #
parser.add_argument('-4', '--ipv6', required=False, help="Address (v4)")
parser.add_argument('-6', '--ipv4', required=False, help="Address (v6)")
parser.add_argument('-b', '--author', required=False, help="Author")
@@ -23,19 +26,47 @@ if __name__ == "__main__":
parser.add_argument('-t', '--service-type', required=False, help="Type")
parser.add_argument('-u', '--service-display-name', required=False, help="Service Display Name")
parser.add_argument('-v', required=False, help="Deprecated. Compability only. Has no Effect.")
# connection configuration #
parser.add_argument('-w', '--target-port', default=6000, help="Signal Gateway Port")
parser.add_argument('-x', '--target-host', default="localhost", help="Signal Gateway Address")
parser.add_argument('-y', '--target-proto', default="http", help="Signal proto")
# deprecated compability options FIXME: remove after Q1/2024 #
parser.add_argument('-v', required=False, help="Deprecated. Compatibility only. Has no Effect.")
# owners and groups to pass to smart send #
parser.add_argument('--owners', nargs='+', required=False)
parser.add_argument('--owner-groups', nargs='+', required=False)
parser.add_argument('--legacy-gateway', default=False, required=False)
parser.add_argument('--dispatcher-pass-file', default="/etc/icinga2/dispatcher-pass-file.txt")
args = parser.parse_args()
# check pass file #
user, password = (None, None)
if os.path.isfile(args.dispatcher_pass_file) or os.path.islink(args.dispatcher_pass_file):
with open(args.dispatcher_pass_file) as f:
user, password = f.read().split()
# build message #
serviceName = args.service_name
if args.service_display_name:
serviceName = args.service_display_name
# create and send request #
url = "{proto}://{host}:{port}/send-all-icinga".format(host=args.target_host, \
port=args.target_port,\
base_url = "{proto}://{host}:{port}/".format(host=args.target_host,
port=args.target_port,
proto=args.target_proto)
if args.legacy_gateway:
url = base_url + "/send-all-icinga"
requests.post(url, json=vars(args))
else:
url = base_url + "/smart-send"
struct = {
"users" : args.owners,
"groups" : args.owner_groups,
"data" : "testtest" #vars(args)
}
requests.post(url, json=struct, auth=(user, password))