mirror of
https://github.com/weaveworks/scope.git
synced 2026-07-16 03:49:52 +00:00
57 lines
1.2 KiB
Python
Executable File
57 lines
1.2 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import BaseHTTPServer
|
|
import SocketServer
|
|
import errno
|
|
import os
|
|
import signal
|
|
import socket
|
|
|
|
PLUGIN_ID="prometheus"
|
|
PLUGIN_UNIX_SOCK = "/var/run/scope/plugins/" + PLUGIN_ID + ".sock"
|
|
|
|
class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
|
|
def do_GET(self):
|
|
# The logger requires a client_address, but unix sockets don't have
|
|
# one, so we fake it.
|
|
self.client_address = "-"
|
|
|
|
# Send the headers
|
|
self.send_response(200)
|
|
self.end_headers()
|
|
|
|
# Send the body
|
|
self.wfile.write(b"foo")
|
|
|
|
def mkdir_p(path):
|
|
try:
|
|
os.makedirs(path)
|
|
except OSError as exc:
|
|
if exc.errno == errno.EEXIST and os.path.isdir(path):
|
|
pass
|
|
else:
|
|
raise
|
|
|
|
def delete_socket_file():
|
|
if os.path.exists(PLUGIN_UNIX_SOCK):
|
|
os.remove(PLUGIN_UNIX_SOCK)
|
|
|
|
def sig_handler(b, a):
|
|
delete_socket_file()
|
|
exit(0)
|
|
|
|
def main():
|
|
signal.signal(signal.SIGTERM, sig_handler)
|
|
signal.signal(signal.SIGINT, sig_handler)
|
|
|
|
mkdir_p(os.path.dirname(PLUGIN_UNIX_SOCK))
|
|
delete_socket_file()
|
|
server = SocketServer.UnixStreamServer(PLUGIN_UNIX_SOCK, Handler)
|
|
try:
|
|
server.serve_forever()
|
|
except:
|
|
delete_socket_file()
|
|
raise
|
|
|
|
main()
|