#!/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())