Updates
This commit is contained in:
66
named_reporter.py
Normal file
66
named_reporter.py
Normal 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())
|
||||
Reference in New Issue
Block a user