Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar_network
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2014-04-28 01:28:15 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2014-04-28 01:28:15 (GMT)
commit0438dbe5fba595a11a77c5a311512e48cb9cad33 (patch)
treea2c1d5ad0745497cf1aa1b35aebf52b172d9cbac /sugar_network
parent2dbc9b554f322ea23b224d923d9a6475e33ad6e9 (diff)
Fix starting node
Diffstat (limited to 'sugar_network')
-rw-r--r--sugar_network/db/blobs.py13
-rw-r--r--sugar_network/db/metadata.py2
-rw-r--r--sugar_network/db/volume.py7
-rw-r--r--sugar_network/model/__init__.py5
-rw-r--r--sugar_network/node/__init__.py2
-rw-r--r--sugar_network/node/master.py6
-rw-r--r--sugar_network/node/slave.py9
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,