Initially I had a more elaborate version based on the exact connect()
code in the higher class, but this simpler version works just fine.
Incidentally, what the xen xm
commandline tool uses works identically
;)
class UHTTPConnection(httplib.HTTPConnection):
"""Subclass of Python library HTTPConnection that
uses a unix-domain socket.
"""
def __init__(self, path):
httplib.HTTPConnection.__init__(self, 'localhost')
self.path = path
def connect(self):
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.connect(self.path)
self.sock = sock
This small hack plus the fine PHP serialization classes from Scott
Hurring are the basis of OpenPanel.coreclient
, which allows for very
easy provisioning and querying of OpenPanel/opencore data. We use it
mostly for unit testing.