diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2014-04-28 01:28:15 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2014-04-28 01:28:15 (GMT) |
commit | 0438dbe5fba595a11a77c5a311512e48cb9cad33 (patch) | |
tree | a2c1d5ad0745497cf1aa1b35aebf52b172d9cbac /sugar_network | |
parent | 2dbc9b554f322ea23b224d923d9a6475e33ad6e9 (diff) |
Fix starting node
Diffstat (limited to 'sugar_network')
-rw-r--r-- | sugar_network/db/blobs.py | 13 | ||||
-rw-r--r-- | sugar_network/db/metadata.py | 2 | ||||
-rw-r--r-- | sugar_network/db/volume.py | 7 | ||||
-rw-r--r-- | sugar_network/model/__init__.py | 5 | ||||
-rw-r--r-- | sugar_network/node/__init__.py | 2 | ||||
-rw-r--r-- | sugar_network/node/master.py | 6 | ||||
-rw-r--r-- | sugar_network/node/slave.py | 9 |
7 files changed, 25 insertions, 19 deletions
diff --git a/sugar_network/db/blobs.py b/sugar_network/db/blobs.py index 94e914c..95f1a4e 100644 --- a/sugar_network/db/blobs.py +++ b/sugar_network/db/blobs.py @@ -170,11 +170,11 @@ class Blobs(object): _logger.debug('Wipe %r file', path) os.unlink(path) - def populate(self, path=None, recursive=True): - for __ in self.diff([[1, None]], path or '', recursive): - pass + def populate(self, path=None): + for __ in self.diff([[1, None]], path or '', yield_files=False): + yield - def diff(self, r, path=None, recursive=True): + def diff(self, r, path=None, recursive=True, yield_files=True): is_files = path is not None checkin_seqno = None @@ -220,7 +220,10 @@ class Blobs(object): continue digest = join(rel_root, filename) meta.append(('path', digest)) - yield File(path, digest, meta) + if yield_files: + yield File(path, digest, meta) + else: + yield def patch(self, patch, seqno=0): if 'path' in patch.meta: diff --git a/sugar_network/db/metadata.py b/sugar_network/db/metadata.py index d7d9065..53034aa 100644 --- a/sugar_network/db/metadata.py +++ b/sugar_network/db/metadata.py @@ -438,6 +438,6 @@ class Authors(Dict): def encode(self, value): for guid, props in value.items(): if 'name' in props: - yield props['name'] + yield toolkit.ascii(props['name']) if not (props['role'] & ACL.INSYSTEM): yield guid diff --git a/sugar_network/db/volume.py b/sugar_network/db/volume.py index 25ae1bb..c293140 100644 --- a/sugar_network/db/volume.py +++ b/sugar_network/db/volume.py @@ -91,9 +91,10 @@ class Volume(dict): cls.close() def populate(self): - for cls in self.values(): - for __ in cls.populate(): - coroutine.dispatch() + for resource in self.resources: + self.__getitem__(resource) + for __ in self.blobs.populate(): + pass def broadcast(self, event): if not self.mute: diff --git a/sugar_network/model/__init__.py b/sugar_network/model/__init__.py index 6a314f5..d979772 100644 --- a/sugar_network/model/__init__.py +++ b/sugar_network/model/__init__.py @@ -34,8 +34,9 @@ POST_TYPES = [ 'review', # Review the Context 'object', # Object generated by Context application 'question', # Q&A request - 'answer', # Q&A response - 'issue', # Propblem with the Context + 'problem', # Problem with the Context + 'idea', # An idea fr the Context + 'solution', # Solution for question|problem|idea 'announce', # General announcement 'notification', # Auto-generated Post for updates within the Context 'feedback', # Review parent Post diff --git a/sugar_network/node/__init__.py b/sugar_network/node/__init__.py index 14d675c..66bd37e 100644 --- a/sugar_network/node/__init__.py +++ b/sugar_network/node/__init__.py @@ -46,5 +46,5 @@ mode = Option( default='slave') master_api = Option( - 'master API url either to connect to (for slave or proxy nodes), or,' + 'master API url either to connect to (for slave or proxy nodes), or, ' 'to provide from (for master nodes)') diff --git a/sugar_network/node/master.py b/sugar_network/node/master.py index c94d047..d51d85b 100644 --- a/sugar_network/node/master.py +++ b/sugar_network/node/master.py @@ -19,7 +19,7 @@ from urlparse import urlsplit from sugar_network import toolkit from sugar_network.model.post import Post from sugar_network.model.report import Report -from sugar_network.node import obs, master_api, model +from sugar_network.node import obs, model from sugar_network.node.routes import NodeRoutes from sugar_network.toolkit.router import route, ACL from sugar_network.toolkit.coroutine import this @@ -33,8 +33,8 @@ _logger = logging.getLogger('node.master') class MasterRoutes(NodeRoutes): - def __init__(self, **kwargs): - NodeRoutes.__init__(self, urlsplit(master_api.value).netloc, **kwargs) + def __init__(self, master_api, **kwargs): + NodeRoutes.__init__(self, urlsplit(master_api).netloc, **kwargs) self._pulls = pylru.lrucache(1024) @route('POST', cmd='sync', arguments={'accept_length': int}) diff --git a/sugar_network/node/slave.py b/sugar_network/node/slave.py index 176defd..babf1f0 100644 --- a/sugar_network/node/slave.py +++ b/sugar_network/node/slave.py @@ -25,7 +25,7 @@ from sugar_network import toolkit from sugar_network.model.context import Context from sugar_network.model.post import Post from sugar_network.model.report import Report -from sugar_network.node import master_api, model +from sugar_network.node import model from sugar_network.node.routes import NodeRoutes from sugar_network.toolkit.router import route, ACL from sugar_network.toolkit.coroutine import this @@ -39,7 +39,7 @@ _logger = logging.getLogger('node.slave') class SlaveRoutes(NodeRoutes): - def __init__(self, volume, **kwargs): + def __init__(self, master_api, volume, **kwargs): guid_path = join(volume.root, 'etc', 'node') if exists(guid_path): with file(guid_path) as f: @@ -54,12 +54,13 @@ class SlaveRoutes(NodeRoutes): vardir = join(volume.root, 'var') self._push_r = toolkit.Bin(join(vardir, 'push.ranges'), [[1, None]]) self._pull_r = toolkit.Bin(join(vardir, 'pull.ranges'), [[1, None]]) - self._master_guid = urlsplit(master_api.value).netloc + self._master_guid = urlsplit(master_api).netloc + self._master_api = master_api @route('POST', cmd='online_sync', acl=ACL.LOCAL, arguments={'no_pull': bool}) def online_sync(self, no_pull=False): - conn = http.Connection(master_api.value) + conn = http.Connection(self._master_api) response = conn.request('POST', data=packets.encode(self._export(not no_pull), header={ 'from': self.guid, |