WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] Add support for unix-domain sockets on xend.

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Add support for unix-domain sockets on xend.
From: BitKeeper Bot <riel@xxxxxxxxxxx>
Date: Wed, 27 Apr 2005 14:04:44 +0000
Delivery-date: Fri, 13 May 2005 20:03:47 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: Xen Development List <xen-devel@xxxxxxxxxxxxxxxxxxx>
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
ChangeSet 1.1327.2.9, 2005/04/27 15:04:44+01:00, mjw@xxxxxxxxxxxxxxxxxxx

        Add support for unix-domain sockets on xend.
        Remove some dead code.
        Signed-off-by: Mike Wray <mike.wray@xxxxxx>



 b/tools/python/xen/web/SrvBase.py              |    1 
 b/tools/python/xen/web/SrvDir.py               |    2 
 b/tools/python/xen/web/httpserver.py           |   37 ++-
 b/tools/python/xen/web/static.py               |    3 
 b/tools/python/xen/xend/XendClient.py          |  127 ++++---------
 b/tools/python/xen/xend/XendDomain.py          |   36 ---
 b/tools/python/xen/xend/XendProtocol.py        |   40 +++-
 b/tools/python/xen/xend/XendRoot.py            |   52 ++++-
 b/tools/python/xen/xend/server/SrvConsole.py   |    2 
 b/tools/python/xen/xend/server/SrvDaemon.py    |    4 
 b/tools/python/xen/xend/server/SrvDmesg.py     |    2 
 b/tools/python/xen/xend/server/SrvDomain.py    |   64 ++----
 b/tools/python/xen/xend/server/SrvDomainDir.py |    2 
 b/tools/python/xen/xend/server/SrvNode.py      |    2 
 b/tools/python/xen/xend/server/SrvRoot.py      |    3 
 b/tools/python/xen/xend/server/SrvServer.py    |   41 ++--
 b/tools/python/xen/xend/server/SrvVnetDir.py   |    2 
 b/tools/python/xen/xend/server/SrvXendLog.py   |    2 
 b/tools/python/xen/xend/server/blkif.py        |    4 
 b/tools/python/xen/xend/server/channel.py      |   50 +++--
 b/tools/python/xen/xend/server/console.py      |    4 
 b/tools/python/xen/xend/server/controller.py   |  138 +++++++-------
 b/tools/python/xen/xend/server/netif.py        |    4 
 b/tools/python/xen/xend/server/usbif.py        |    4 
 tools/python/xen/web/defer.py                  |    3 
 tools/python/xen/xend/XendAsynchProtocol.py    |   94 ---------
 tools/python/xen/xend/XendDomainConfig.py      |   44 ----
 tools/python/xen/xend/server/SrvBase.py        |    2 
 tools/python/xen/xend/server/SrvDir.py         |    3 
 tools/python/xen/xend/server/SrvEventDir.py    |   41 ----
 tools/python/xen/xend/server/SrvUsbif.py       |  239 -------------------------
 31 files changed, 337 insertions(+), 715 deletions(-)


diff -Nru a/tools/python/xen/web/SrvBase.py b/tools/python/xen/web/SrvBase.py
--- a/tools/python/xen/web/SrvBase.py   2005-05-13 16:04:21 -04:00
+++ b/tools/python/xen/web/SrvBase.py   2005-05-13 16:04:21 -04:00
@@ -12,7 +12,6 @@
 import resource
 import http
 import httpserver
-import defer
 
 def uri_pathlist(p):
     """Split a path into a list.
diff -Nru a/tools/python/xen/web/SrvDir.py b/tools/python/xen/web/SrvDir.py
--- a/tools/python/xen/web/SrvDir.py    2005-05-13 16:04:22 -04:00
+++ b/tools/python/xen/web/SrvDir.py    2005-05-13 16:04:22 -04:00
@@ -20,7 +20,7 @@
 
     def __init__(self, klass):
         """Create a constructor. It is assumed that the class
-        should be imported as 'import klass from klass'.
+        should be imported as 'from xen.xend.server.klass import klass'.
 
         klass  name of its class
         """
diff -Nru a/tools/python/xen/web/defer.py b/tools/python/xen/web/defer.py
--- a/tools/python/xen/web/defer.py     2005-05-13 16:04:22 -04:00
+++ /dev/null   Wed Dec 31 16:00:00 196900
@@ -1,3 +0,0 @@
-
-class Deferred:
-    pass
diff -Nru a/tools/python/xen/web/httpserver.py 
b/tools/python/xen/web/httpserver.py
--- a/tools/python/xen/web/httpserver.py        2005-05-13 16:04:21 -04:00
+++ b/tools/python/xen/web/httpserver.py        2005-05-13 16:04:21 -04:00
@@ -4,6 +4,8 @@
 import socket
 import types
 from urllib import quote, unquote
+import os
+import os.path
 
 from xen.xend import sxp
 from xen.xend.Args import ArgError
@@ -184,7 +186,9 @@
 
         @param val: the value
         """
-        if isinstance(val, ThreadRequest):
+        if val is None:
+            return val
+        elif isinstance(val, ThreadRequest):
             return val
         elif self.useSxp():
             self.setHeader("Content-Type", sxp.mime_type)
@@ -316,18 +320,23 @@
     def getResource(self, req):
         return self.root.getRequestResource(req)
 
+class UnixHttpServer(HttpServer):
 
-def main():
-    root = SrvDir()
-    a = root.add("a", SrvDir())
-    b = root.add("b", SrvDir())
-    server = HttpServer(root=root)
-    server.run()
-
-if __name__ == "__main__":
-    main()
-        
-        
+    def __init__(self, path=None, root=None):
+        HttpServer.__init__(self, interface='localhost', root=root)
+        self.path = path
         
-            
-
+    def bind(self):
+        pathdir = os.path.dirname(self.path)
+        if not os.path.exists(pathdir):
+            os.makedirs(pathdir)
+        else:
+            try:
+                os.unlink(self.path)
+            except SystemExit:
+                raise
+            except Exception, ex:
+                pass
+        self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+        #self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+        self.socket.bind(self.path)
diff -Nru a/tools/python/xen/web/static.py b/tools/python/xen/web/static.py
--- a/tools/python/xen/web/static.py    2005-05-13 16:04:21 -04:00
+++ b/tools/python/xen/web/static.py    2005-05-13 16:04:21 -04:00
@@ -24,7 +24,7 @@
         if self.type:
             req.setHeader('Content-Type', self.type)
         if self.encoding:
-            rew.setHeader('Content-Encoding', self.encoding)
+            req.setHeader('Content-Encoding', self.encoding)
         req.setHeader('Content-Length', self.getFileSize())
         try:
             io = file(self.filename, "r")
@@ -40,7 +40,6 @@
                 io.close()
         except:
             pass
-        return ''
         
 
         
diff -Nru a/tools/python/xen/xend/XendAsynchProtocol.py 
b/tools/python/xen/xend/XendAsynchProtocol.py
--- a/tools/python/xen/xend/XendAsynchProtocol.py       2005-05-13 16:04:22 
-04:00
+++ /dev/null   Wed Dec 31 16:00:00 196900
@@ -1,94 +0,0 @@
-# Copyright (C) 2004 Mike Wray <mike.wray@xxxxxx>
-
-from twisted.protocols import http
-from twisted.internet.protocol import ClientCreator
-from twisted.internet.defer import Deferred
-from twisted.internet import reactor
-
-from XendProtocol import XendClientProtocol, XendRequest
-
-class AsynchXendClient(http.HTTPClient):
-    """A subclass of twisted's HTTPClient to deal with a connection to xend.
-    Makes the request when connected, and delegates handling responses etc.
-    to its protocol (usually an AsynchXendClientProtocol instance).
-    """
-    def __init__(self, protocol, request):
-        self.protocol = protocol
-        self.request = request
-
-    def connectionMade(self):
-        request = self.request
-        url = self.request.url
-        self.sendCommand(request.method, url.fullpath())
-        self.sendHeader('Host', url.location())
-        for (k, v) in request.headers.items():
-            self.sendHeader(k, v)
-        if request.data:
-            self.sendHeader('Content-Length', len(request.data))
-        self.endHeaders()
-        if request.data:
-            self.transport.write(request.data)
-
-    def handleStatus(self, version, status, message):
-        return self.protocol.handleStatus(version, status, message)
-
-    def handleHeader(self, key, val):
-        return self.protocol.handleHeader(key, val)
-
-    def handleResponse(self, data):
-        return self.protocol.handleResponse(data)
-
-class AsynchXendClientProtocol(XendClientProtocol):
-    """An asynchronous xend client. Uses twisted to connect to xend
-    and make the request. It does not block waiting for the result,
-    but sets up a deferred that is called when the result becomes available.
-
-    Uses AsynchXendClient to manage the connection.
-    """
-    def __init__(self):
-        self.err = None
-        self.headers = {}
-
-    def xendRequest(self, url, method, args=None):
-        """Make a request to xend. The returned deferred is called when
-        the result is available.
-        
-        @param url:    xend request url
-        @param method: http method: POST or GET
-        @param args:   request arguments (dict)
-        @return: deferred
-        """
-        request = XendRequest(url, method, args)
-        self.deferred = Deferred()
-        clientCreator = ClientCreator(reactor, AsynchXendClient, self, request)
-        clientCreator.connectTCP(url.host, url.port)
-        return self.deferred
-
-    def callErrback(self, err):
-        if not self.deferred.called:
-            self.err = err
-            self.deferred.errback(err)
-        return err
-
-    def callCallback(self, val):
-        if not self.deferred.called:
-            self.deferred.callback(val)
-        return val
-
-    def handleException(self, err):
-        return self.callErrback(err)
-
-    def handleHeader(self, key, val):
-        self.headers[key.lower()] = val
-
-    def getHeader(self, key):
-        return self.headers.get(key.lower())
-
-    def handleResponse(self, data):
-        if self.err: return self.err
-        val = XendClientProtocol.handleResponse(self, data)
-        if isinstance(val, Exception):
-            self.callErrback(val)
-        else:
-            self.callCallback(val)
-        return val
diff -Nru a/tools/python/xen/xend/XendClient.py 
b/tools/python/xen/xend/XendClient.py
--- a/tools/python/xen/xend/XendClient.py       2005-05-13 16:04:21 -04:00
+++ b/tools/python/xen/xend/XendClient.py       2005-05-13 16:04:21 -04:00
@@ -2,7 +2,7 @@
 # Copyright (C) 2004 Mike Wray <mike.wray@xxxxxx>
 """Client API for the HTTP interface on xend.
 Callable as a script - see main().
-Supports synchronous or asynchronous connection to xend.
+Supports inet or unix connection to xend.
 
 This API is the 'control-plane' for xend.
 The 'data-plane' is done separately. For example, consoles
@@ -15,7 +15,9 @@
 
 import sxp
 import PrettyPrint
-from XendProtocol import XendClientProtocol, SynchXendClientProtocol, XendError
+from XendProtocol import HttpXendClientProtocol, \
+                         UnixXendClientProtocol, \
+                         XendError
 
 DEBUG = 0
 
@@ -32,15 +34,6 @@
         return val
     raise XendError('cannot convert value')
 
-# todo: need to sort of what urls/paths are using for objects.
-# e.g. for domains at the moment return '0'.
-# should probably return abs path w.r.t. server, e.g. /xend/domain/0.
-# As an arg, assume abs path is obj uri, otherwise just id.
-
-# Function to convert to full url: Xend.uri(path), e.g.
-# maps /xend/domain/0 to http://wray-m-3.hpl.hp.com:8000/xend/domain/0
-# And should accept urls for ids?
-
 class URL:
     """A URL.
     """
@@ -115,7 +108,7 @@
         @param root:    xend root path on the server
         """

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Add support for unix-domain sockets on xend., BitKeeper Bot <=