Make StorageFarmBroker use specified or default handler

This commit is contained in:
David Stainton 2016-08-26 11:17:56 +00:00
parent de61cd260c
commit 140c9a92cd
3 changed files with 12 additions and 6 deletions

View File

@ -377,8 +377,11 @@ class Client(node.Node, pollmixin.PollMixin):
# utilize the loaded static server specifications
for key, server in self.connections_config['servers'].items():
handlers = None
if server.haskey("transport_handlers"):
handlers = server["transport_handlers"]
eventually(self.storage_broker.got_static_announcement,
key, server['announcement'])
key, server['announcement'], handlers)
sb.use_introducer(self.introducer_client)

View File

@ -134,17 +134,20 @@ class StorageFarmBroker(service.MultiService):
remaining.append( (threshold, d) )
self._threshold_listeners = remaining
def got_static_announcement(self, key_s, ann):
def got_static_announcement(self, key_s, ann, handlers):
server_id = get_serverid_from_furl(ann["anonymous-storage-FURL"])
assert server_id not in self.static_servers # XXX
self.static_servers.append(server_id)
self._got_announcement(key_s, ann)
self._got_announcement(key_s, ann, handlers=handlers)
def _got_announcement(self, key_s, ann):
def _got_announcement(self, key_s, ann, handlers=None):
precondition(isinstance(key_s, str), key_s)
precondition(key_s.startswith("v0-"), key_s)
precondition(ann["service-name"] == "storage", ann["service-name"])
s = NativeStorageServer(key_s, ann, self._tub_options, self._tub_handlers)
if handlers is not None:
s = NativeStorageServer(key_s, ann, self._tub_options, handlers)
else:
s = NativeStorageServer(key_s, ann, self._tub_options, self._tub_handlers)
s.on_status_changed(lambda _: self._got_connection())
server_id = s.get_serverid()
old = self.servers.get(server_id)

View File

@ -47,7 +47,7 @@ class TestStorageFarmBroker(unittest.TestCase):
"anonymous-storage-FURL": "pb://{}@nowhere/fake".format(base32.b2a(str(1))),
"permutation-seed-base32": "aaaaaaaaaaaaaaaaaaaaaaaa",
}
broker.got_static_announcement(key_s, ann)
broker.got_static_announcement(key_s, ann, None)
self.failUnlessEqual(len(broker.static_servers), 1)
self.failUnlessEqual(broker.servers['1'].announcement, ann)
self.failUnlessEqual(broker.servers['1'].key_s, key_s)