diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2013-07-28 13:23:59 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2013-07-28 13:25:39 (GMT) |
commit | 4b918f1b28e70a9a721cc1219ee4c2a59c1f622c (patch) | |
tree | ee8329ad06492444f532caa841e363e16c0cd46a | |
parent | 331ef9a039816e8d6038fc441a16aeeab422fcdf (diff) |
Fix launching webui
-rwxr-xr-x | sugar-network-client | 22 | ||||
-rwxr-xr-x | sugar-network-node | 29 |
2 files changed, 34 insertions, 17 deletions
diff --git a/sugar-network-client b/sugar-network-client index 3b14d1e..fe8ee03 100755 --- a/sugar-network-client +++ b/sugar-network-client @@ -30,7 +30,7 @@ from sugar_network.client import clones, cache from sugar_network.client.routes import CachedClientRoutes from sugar_network.node import stats_node, stats_user from sugar_network.model import RESOURCES -from sugar_network.toolkit.router import Router +from sugar_network.toolkit.router import Router, Request, Response from sugar_network.toolkit import mountpoints, printf, application from sugar_network.toolkit import Option, coroutine @@ -108,11 +108,12 @@ class Application(application.Daemon): volume = db.Volume(client.path('db'), RESOURCES) routes = CachedClientRoutes(volume, client.api_url.value if not client.server_mode.value else None) + router = Router(routes) logging.info('Listening for IPC requests on %s port', client.ipc_port.value) - server = coroutine.WSGIServer(('localhost', client.ipc_port.value), - Router(routes)) + server = coroutine.WSGIServer( + ('localhost', client.ipc_port.value), router) self.jobs.spawn(server.serve_forever) coroutine.dispatch() @@ -126,8 +127,19 @@ class Application(application.Daemon): if webui.webui.value: host = (webui.webui_host.value, webui.webui_port.value) logging.info('Start Web server on %s:%s', *host) - server = coroutine.WSGIServer(host, webui.get_app(routes, - 'http://localhost:%s' % client.ipc_port.value)) + + def webui_call(method, path=None, cmd=None, + content_type=None, content=None, **kwargs): + request = Request(method=method, path=path, cmd=cmd) + request.content_type = content_type or 'application/json' + request.content = content + request.principal = client.sugar_uid() + request.update(kwargs) + return router.call(request, Response()) + + webui_app = webui.get_app(webui_call, + 'http://localhost:%s' % client.ipc_port.value) + server = coroutine.WSGIServer(host, webui_app) self.jobs.spawn(server.serve_forever) if client.mounts_root.value: diff --git a/sugar-network-node b/sugar-network-node index 1f78c60..e0fa14b 100755 --- a/sugar-network-node +++ b/sugar-network-node @@ -29,7 +29,7 @@ from sugar_network.node.master import MasterRoutes from sugar_network.node.slave import SlaveRoutes from sugar_network.model import RESOURCES from sugar_network.toolkit.http import Connection -from sugar_network.toolkit.router import Router +from sugar_network.toolkit.router import Router, Request, Response from sugar_network.toolkit import coroutine, application, Option, enforce @@ -77,25 +77,30 @@ class Application(application.Daemon): if webui.webui.value: # XXX Until implementing regular web users - from sugar_network.client.commands import ClientCommands - - class _ClientCommands(ClientCommands): - - def call(self, request, response=None): - request.principal = 'demo' - return ClientCommands.call(self, request, response) + from sugar_network.client.routes import ClientRoutes client.sugar_uid = lambda: 'demo' # Point client API to volume directly client.mounts_root.value = None + home = db.Volume(join(application.rundir.value, 'db'), RESOURCES) - client_commands = _ClientCommands(home, - api_url='http://localhost:%s' % node.port.value, - static_prefix=client.api_url.value) + client_routes = ClientRoutes(home, + api_url='http://localhost:%s' % node.port.value) + client_app = Router(client_routes) + + def webui_call(method, path=None, cmd=None, + content_type=None, content=None, **kwargs): + request = Request(method=method, path=path, cmd=cmd) + request.content_type = content_type or 'application/json' + request.content = content + request.principal = 'demo' + request.update(kwargs) + return client_app.call(request, Response()) + host = (node.host.value, webui.webui_port.value) logging.info('Start Web server on %s:%s port', *host) server = coroutine.WSGIServer(host, - webui.get_app(client_commands, client.api_url.value, True)) + webui.get_app(webui_call, client.api_url.value, True)) self.jobs.spawn(server.serve_forever) try: |