From 7ea9e0f983c9daf31ed9c6508902270fbe58b2d1 Mon Sep 17 00:00:00 2001 From: Jaan Porkon Date: Mon, 2 Feb 2026 12:28:54 +0200 Subject: [PATCH] Updates --- named_reporter.py | 66 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 named_reporter.py diff --git a/named_reporter.py b/named_reporter.py new file mode 100644 index 0000000..cc32080 --- /dev/null +++ b/named_reporter.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 + +from __future__ import print_function + +import argparse +import json +import sys + +from urllib.request import Request, urlopen +from urllib.error import URLError, HTTPError + + +def parse_args(): + p = argparse.ArgumentParser(description="Report named reload/start failures to Windmill") + p.add_argument("--url", required=True) + p.add_argument("--token", required=True) + p.add_argument("--action", required=True) + p.add_argument("--hostname", required=True) + p.add_argument("--ip", required=True) + p.add_argument("--failed-domains-csv", default="") + p.add_argument("--raw", default="") + p.add_argument("--timeout", type=int, default=10) + return p.parse_args() + + +def main(): + args = parse_args() + + failed = [z for z in (args.failed_domains_csv or "").split(",") if z] + + payload = { + "action": args.action, + "hostname": args.hostname, + "ip_address": args.ip, + "failed_domains": failed, + } + + data = json.dumps(payload).encode("utf-8") + headers = { + "Content-Type": "application/json", + "Authorization": "Bearer %s" % args.token, + } + + req = Request(args.url, data=data, headers=headers) + try: + resp = urlopen(req, timeout=args.timeout) + resp.read() + return 0 + except HTTPError as e: + body = "" + try: + body = e.read() + except Exception: + pass + print("WARN: windmill HTTP error: %s body=%r" % (e, body), file=sys.stderr) + return 0 + except URLError as e: + print("WARN: windmill URL error: %s" % (e,), file=sys.stderr) + return 0 + except Exception as e: + print("WARN: windmill report failed: %s" % (e,), file=sys.stderr) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) \ No newline at end of file