Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2013-07-28 13:23:59 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2013-07-28 13:25:39 (GMT)
commit4b918f1b28e70a9a721cc1219ee4c2a59c1f622c (patch)
treeee8329ad06492444f532caa841e363e16c0cd46a
parent331ef9a039816e8d6038fc441a16aeeab422fcdf (diff)
Fix launching webui
-rwxr-xr-xsugar-network-client22
-rwxr-xr-xsugar-network-node29
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: