RemoteApiHandler: Add support for mocked LUXI client
authorMichael Hanselmann <hansmi@google.com>
Thu, 29 Mar 2012 13:04:50 +0000 (15:04 +0200)
committerMichael Hanselmann <hansmi@google.com>
Thu, 26 Apr 2012 18:11:09 +0000 (20:11 +0200)
This will be used for providing a type-checking RAPI client for tests.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

lib/rapi/baserlib.py
lib/server/rapi.py

index 5710000..b44d454 100644 (file)
@@ -289,7 +289,7 @@ class ResourceBase(object):
   POST_ACCESS = [rapi.RAPI_ACCESS_WRITE]
   DELETE_ACCESS = [rapi.RAPI_ACCESS_WRITE]
 
-  def __init__(self, items, queryargs, req, _client_cls=luxi.Client):
+  def __init__(self, items, queryargs, req, _client_cls=None):
     """Generic resource constructor.
 
     @param items: a list with variables encoded in the URL
@@ -301,6 +301,10 @@ class ResourceBase(object):
     self.items = items
     self.queryargs = queryargs
     self._req = req
+
+    if _client_cls is None:
+      _client_cls = luxi.Client
+
     self._client_cls = _client_cls
 
   def _GetRequestBody(self):
index 2bc0dc4..9157889 100644 (file)
@@ -71,11 +71,12 @@ class RemoteApiHandler(http.auth.HttpServerRequestAuthentication,
   """
   AUTH_REALM = "Ganeti Remote API"
 
-  def __init__(self):
+  def __init__(self, _client_cls=None):
     # pylint: disable=W0233
     # it seems pylint doesn't see the second parent class there
     http.server.HttpServerHandler.__init__(self)
     http.auth.HttpServerRequestAuthentication.__init__(self)
+    self._client_cls = _client_cls
     self._resmap = connector.Mapper()
     self._users = None
 
@@ -132,7 +133,7 @@ class RemoteApiHandler(http.auth.HttpServerRequestAuthentication,
                      self._resmap.getController(req.request_path)
 
       ctx = RemoteApiRequestContext()
-      ctx.handler = HandlerClass(items, args, req)
+      ctx.handler = HandlerClass(items, args, req, _client_cls=self._client_cls)
 
       method = req.request_method.upper()
       try: