more refactoring: move get_all_serverids() and get_nickname_for_serverid() from Client to storage_broker

This commit is contained in:
Brian Warner
2009-06-01 20:07:50 -07:00
parent b1290633b8
commit 35b3f7f426
7 changed files with 21 additions and 27 deletions

View File

@ -375,11 +375,6 @@ class Client(node.Node, pollmixin.PollMixin):
self.log("hotline file missing, shutting down") self.log("hotline file missing, shutting down")
reactor.stop() reactor.stop()
def get_all_serverids(self):
return self.storage_broker.get_all_serverids()
def get_nickname_for_serverid(self, serverid):
return self.storage_broker.get_nickname_for_serverid(serverid)
def get_encoding_parameters(self): def get_encoding_parameters(self):
return self.DEFAULT_ENCODING_PARAMETERS return self.DEFAULT_ENCODING_PARAMETERS
@ -400,7 +395,7 @@ class Client(node.Node, pollmixin.PollMixin):
temporary test network and need to know when it is safe to proceed temporary test network and need to know when it is safe to proceed
with an upload or download.""" with an upload or download."""
def _check(): def _check():
current_clients = list(self.get_all_serverids()) current_clients = list(self.storage_broker.get_all_serverids())
return len(current_clients) >= num_clients return len(current_clients) >= num_clients
d = self.poll(_check, 0.5) d = self.poll(_check, 0.5)
d.addCallback(lambda res: None) d.addCallback(lambda res: None)

View File

@ -108,6 +108,8 @@ class NoNetworkStorageBroker:
def get_servers(self, key): def get_servers(self, key):
return sorted(self.client._servers, return sorted(self.client._servers,
key=lambda x: sha.new(key+x[0]).digest()) key=lambda x: sha.new(key+x[0]).digest())
def get_nickname_for_serverid(self, serverid):
return None
class NoNetworkClient(Client): class NoNetworkClient(Client):
@ -140,9 +142,6 @@ class NoNetworkClient(Client):
def get_servers(self, service_name): def get_servers(self, service_name):
return self._servers return self._servers
def get_nickname_for_serverid(self, serverid):
return None
class SimpleStats: class SimpleStats:
def __init__(self): def __init__(self):
self.counters = {} self.counters = {}

View File

@ -7,8 +7,6 @@ from allmydata.storage_client import StorageFarmBroker, NativeStorageClient
from common_web import WebRenderingMixin from common_web import WebRenderingMixin
class FakeClient: class FakeClient:
def get_nickname_for_serverid(self, serverid):
return self.storage_broker.get_nickname_for_serverid(serverid)
def get_storage_broker(self): def get_storage_broker(self):
return self.storage_broker return self.storage_broker

View File

@ -179,8 +179,6 @@ class FakeClient:
fss = FakeStorageServer(peerid, self._storage) fss = FakeStorageServer(peerid, self._storage)
self.storage_broker.add_server(peerid, fss) self.storage_broker.add_server(peerid, fss)
def get_all_serverids(self):
return self.storage_broker.get_all_serverids()
def get_storage_broker(self): def get_storage_broker(self):
return self.storage_broker return self.storage_broker
def debug_break_connection(self, peerid): def debug_break_connection(self, peerid):
@ -275,7 +273,8 @@ class Filenode(unittest.TestCase, testutil.ShouldFailMixin):
def _created(n): def _created(n):
self.failUnless(isinstance(n, FastMutableFileNode)) self.failUnless(isinstance(n, FastMutableFileNode))
self.failUnlessEqual(n.get_storage_index(), n._storage_index) self.failUnlessEqual(n.get_storage_index(), n._storage_index)
peer0 = sorted(self.client.get_all_serverids())[0] sb = self.client.get_storage_broker()
peer0 = sorted(sb.get_all_serverids())[0]
shnums = self.client._storage._peers[peer0].keys() shnums = self.client._storage._peers[peer0].keys()
self.failUnlessEqual(len(shnums), 1) self.failUnlessEqual(len(shnums), 1)
d.addCallback(_created) d.addCallback(_created)
@ -1573,8 +1572,9 @@ class MultipleEncodings(unittest.TestCase):
places = [2, 2, 3, 2, 1, 1, 1, 2] places = [2, 2, 3, 2, 1, 1, 1, 2]
sharemap = {} sharemap = {}
sb = self._client.get_storage_broker()
for i,peerid in enumerate(self._client.get_all_serverids()): for i,peerid in enumerate(sb.get_all_serverids()):
peerid_s = shortnodeid_b2a(peerid) peerid_s = shortnodeid_b2a(peerid)
for shnum in self._shares1.get(peerid, {}): for shnum in self._shares1.get(peerid, {}):
if shnum < len(places): if shnum < len(places):
@ -1958,8 +1958,9 @@ class Problems(unittest.TestCase, testutil.ShouldFailMixin):
# not prevent an update from succeeding either. # not prevent an update from succeeding either.
basedir = os.path.join("mutable/CollidingWrites/test_bad_server") basedir = os.path.join("mutable/CollidingWrites/test_bad_server")
self.client = LessFakeClient(basedir, 10) self.client = LessFakeClient(basedir, 10)
sb = self.client.get_storage_broker()
peerids = list(self.client.get_all_serverids()) peerids = list(sb.get_all_serverids())
self.client.debug_break_connection(peerids[0]) self.client.debug_break_connection(peerids[0])
d = self.client.create_mutable_file("contents 1") d = self.client.create_mutable_file("contents 1")
@ -1982,7 +1983,8 @@ class Problems(unittest.TestCase, testutil.ShouldFailMixin):
# Break all servers: the publish should fail # Break all servers: the publish should fail
basedir = os.path.join("mutable/CollidingWrites/publish_all_servers_bad") basedir = os.path.join("mutable/CollidingWrites/publish_all_servers_bad")
self.client = LessFakeClient(basedir, 20) self.client = LessFakeClient(basedir, 20)
for peerid in self.client.get_all_serverids(): sb = self.client.get_storage_broker()
for peerid in sb.get_all_serverids():
self.client.debug_break_connection(peerid) self.client.debug_break_connection(peerid)
d = self.shouldFail(NotEnoughServersError, d = self.shouldFail(NotEnoughServersError,
"test_publish_all_servers_bad", "test_publish_all_servers_bad",

View File

@ -72,7 +72,7 @@ class SystemTest(SystemTestMixin, unittest.TestCase):
def _check(extra_node): def _check(extra_node):
self.extra_node = extra_node self.extra_node = extra_node
for c in self.clients: for c in self.clients:
all_peerids = list(c.get_all_serverids()) all_peerids = list(c.get_storage_broker().get_all_serverids())
self.failUnlessEqual(len(all_peerids), self.numclients+1) self.failUnlessEqual(len(all_peerids), self.numclients+1)
sb = c.storage_broker sb = c.storage_broker
permuted_peers = list(sb.get_servers("a")) permuted_peers = list(sb.get_servers("a"))
@ -110,7 +110,7 @@ class SystemTest(SystemTestMixin, unittest.TestCase):
d = self.set_up_nodes() d = self.set_up_nodes()
def _check_connections(res): def _check_connections(res):
for c in self.clients: for c in self.clients:
all_peerids = list(c.get_all_serverids()) all_peerids = list(c.get_storage_broker().get_all_serverids())
self.failUnlessEqual(len(all_peerids), self.numclients) self.failUnlessEqual(len(all_peerids), self.numclients)
sb = c.storage_broker sb = c.storage_broker
permuted_peers = list(sb.get_servers("a")) permuted_peers = list(sb.get_servers("a"))

View File

@ -65,9 +65,6 @@ class FakeClient(service.MultiService):
def connected_to_introducer(self): def connected_to_introducer(self):
return False return False
def get_nickname_for_serverid(self, serverid):
return u"John Doe"
storage_broker = StorageFarmBroker() storage_broker = StorageFarmBroker()
def get_storage_broker(self): def get_storage_broker(self):
return self.storage_broker return self.storage_broker

View File

@ -80,6 +80,7 @@ class ResultsBase:
def _render_results(self, ctx, cr): def _render_results(self, ctx, cr):
assert ICheckResults(cr) assert ICheckResults(cr)
c = self.client c = self.client
sb = c.get_storage_broker()
data = cr.get_data() data = cr.get_data()
r = [] r = []
def add(name, value): def add(name, value):
@ -95,7 +96,7 @@ class ResultsBase:
if data["list-corrupt-shares"]: if data["list-corrupt-shares"]:
badsharemap = [] badsharemap = []
for (serverid, si, shnum) in data["list-corrupt-shares"]: for (serverid, si, shnum) in data["list-corrupt-shares"]:
nickname = c.get_nickname_for_serverid(serverid) nickname = sb.get_nickname_for_serverid(serverid)
badsharemap.append(T.tr[T.td["sh#%d" % shnum], badsharemap.append(T.tr[T.td["sh#%d" % shnum],
T.td[T.div(class_="nickname")[nickname], T.td[T.div(class_="nickname")[nickname],
T.div(class_="nodeid")[T.tt[base32.b2a(serverid)]]], T.div(class_="nodeid")[T.tt[base32.b2a(serverid)]]],
@ -123,7 +124,7 @@ class ResultsBase:
shareid_s = "" shareid_s = ""
if i == 0: if i == 0:
shareid_s = shareid shareid_s = shareid
nickname = c.get_nickname_for_serverid(serverid) nickname = sb.get_nickname_for_serverid(serverid)
sharemap.append(T.tr[T.td[shareid_s], sharemap.append(T.tr[T.td[shareid_s],
T.td[T.div(class_="nickname")[nickname], T.td[T.div(class_="nickname")[nickname],
T.div(class_="nodeid")[T.tt[base32.b2a(serverid)]]] T.div(class_="nodeid")[T.tt[base32.b2a(serverid)]]]
@ -145,7 +146,7 @@ class ResultsBase:
num_shares_left = sum([len(shares) for shares in servers.values()]) num_shares_left = sum([len(shares) for shares in servers.values()])
servermap = [] servermap = []
for serverid in permuted_peer_ids: for serverid in permuted_peer_ids:
nickname = c.get_nickname_for_serverid(serverid) nickname = sb.get_nickname_for_serverid(serverid)
shareids = servers.get(serverid, []) shareids = servers.get(serverid, [])
shareids.reverse() shareids.reverse()
shareids_s = [ T.tt[shareid, " "] for shareid in sorted(shareids) ] shareids_s = [ T.tt[shareid, " "] for shareid in sorted(shareids) ]
@ -419,7 +420,8 @@ class DeepCheckResults(rend.Page, ResultsBase, ReloadMixin):
def render_server_problem(self, ctx, data): def render_server_problem(self, ctx, data):
serverid = data serverid = data
data = [idlib.shortnodeid_b2a(serverid)] data = [idlib.shortnodeid_b2a(serverid)]
nickname = self.client.get_nickname_for_serverid(serverid) sb = self.client.get_storage_broker()
nickname = sb.get_nickname_for_serverid(serverid)
if nickname: if nickname:
data.append(" (%s)" % self._html(nickname)) data.append(" (%s)" % self._html(nickname))
return ctx.tag[data] return ctx.tag[data]
@ -433,7 +435,8 @@ class DeepCheckResults(rend.Page, ResultsBase, ReloadMixin):
return self.monitor.get_status().get_corrupt_shares() return self.monitor.get_status().get_corrupt_shares()
def render_share_problem(self, ctx, data): def render_share_problem(self, ctx, data):
serverid, storage_index, sharenum = data serverid, storage_index, sharenum = data
nickname = self.client.get_nickname_for_serverid(serverid) sb = self.client.get_storage_broker()
nickname = sb.get_nickname_for_serverid(serverid)
ctx.fillSlots("serverid", idlib.shortnodeid_b2a(serverid)) ctx.fillSlots("serverid", idlib.shortnodeid_b2a(serverid))
if nickname: if nickname:
ctx.fillSlots("nickname", self._html(nickname)) ctx.fillSlots("nickname", self._html(nickname))