From da04c4472d47d8c3db0f1bb440953f9ca96d0182 Mon Sep 17 00:00:00 2001 From: Michael Hanselmann <hansmi@google.com> Date: Thu, 29 Mar 2012 15:04:50 +0200 Subject: [PATCH] RemoteApiHandler: Add support for mocked LUXI client 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 | 6 +++++- lib/server/rapi.py | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/rapi/baserlib.py b/lib/rapi/baserlib.py index 5710000c6..b44d454d2 100644 --- a/lib/rapi/baserlib.py +++ b/lib/rapi/baserlib.py @@ -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): diff --git a/lib/server/rapi.py b/lib/server/rapi.py index 2bc0dc4f8..9157889c4 100644 --- a/lib/server/rapi.py +++ b/lib/server/rapi.py @@ -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: -- GitLab