This commit is contained in:
Jaan Porkon
2026-02-02 12:28:54 +02:00
commit 7ea9e0f983

66
named_reporter.py Normal file
View File

@@ -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())