def add_node(self, node, backup_store=None): self.nodes.append(node) self.hash_ring = HashRing(self.nodes) if backup_store is not None: self.backup_stores[node] = backup_store else: backup_stores_path = getattr(self, 'backup_stores_path') if backup_stores_path is not None: path = os.path.join(backup_stores_path, node.replace(':', '_')) if not os.path.exists(path): os.makedirs(path) self.backup_stores[node] = Node(path, size=512 * 1024)
def remove_node(self, node): self.nodes.remove(node) self.hash_ring = HashRing(self.nodes) backup_store = self.backup_stores[node] obj = backup_store.get() while obj is not None: self.local_store.put(obj) obj = backup_store.get() backup_store.shutdown() del self.backup_stores[node]
def __init__(self, nodes, local_node=None, rpc_server=None, local_store=None, backup_stores=None, copies=1): self.nodes = nodes self.local_node = local_node self.local_store = local_store self.rpc_server = rpc_server self.backup_stores = backup_stores self.hash_ring = HashRing(self.nodes) self.copies = max(min(len(self.nodes) - 1, copies), 0) if rpc_server is not None and \ self.local_store is not None and \ self.backup_stores is not None: self._register_rpc()
def __init__(self, nodes, copies=1): self.nodes = nodes self.hash_ring = HashRing(self.nodes) self.copies = max(min(len(self.nodes) - 1, copies), 0) self.mq = MessageQueue(nodes, copies=copies)
def add_node(self, addr): if addr not in self.nodes: self.nodes.append(addr) self.hash_ring = HashRing(self.nodes)
def remove_node(self, addr): if addr in self.nodes: self.nodes.remove(addr) self.hash_ring = HashRing(self.nodes)
def __init__(self, addrs, copies=1): self.nodes = list(addrs) self.hash_ring = HashRing(self.nodes) self.copies = min(copies, len(self.nodes) - 1)