subiquity/bin/curtin-journald-forwarder

52 lines
1.3 KiB
Plaintext
Raw Normal View History

#!/usr/bin/python3
from http import server
import json
import socket
import socketserver
from systemd import journal
class Handler(server.BaseHTTPRequestHandler):
address_family = socket.AF_INET6
def log_request(self, code, size=None):
pass
def do_GET(self):
self.send_response(200)
self.end_headers()
self.wfile.write(b"OK")
def do_POST(self):
length = int(self.headers['Content-Length'])
post_data = json.loads(self.rfile.read(length).decode('utf-8'))
self.forward_event(post_data)
self.do_GET()
def forward_event(self, event):
level = str(getattr(journal, "LOG_" + event.get("level", "DEBUG"), journal.LOG_DEBUG))
journal.send(
event['description'],
PRIORITY=level,
CURTIN_EVENT_TYPE=event["event_type"],
CURTIN_NAME=event["name"],
SYSLOG_IDENTIFIER="curtin_event",
)
class HTTPServerV6(socketserver.TCPServer):
address_family = socket.AF_INET6
def main():
"""Return URL to pass to curtin."""
httpd = HTTPServerV6(("::", 0), Handler)
port = httpd.server_address[1]
print("http://[::1]:{}/".format(port), flush=True)
httpd.serve_forever()
if __name__ == '__main__':
main()