Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Node:
- def __init__(self, id, alive=True, leader=None, controller=None):
- self.id = id
- self.alive = alive
- self.leader = leader
- self.controller = controller
- def setLeader(self, leader_node):
- self.leader = leader_node
- def getLeader(self):
- return self.leader
- def isAlive(self):
- return self.alive
- def __repr__(self):
- return 'Node instance, id=%s' %self.id
- class Controller:
- def __init__(self, nodes=[], name='Controller', leader_node=None):
- self.nodes = nodes
- self.name = name
- self.leader_node = leader_node
- def addNode(self, node):
- if type(node) == Node:
- node.controller = self
- if self.leader_node:
- node.leader = self.leader_node
- self.nodes.append(node)
- else:
- raise TypeError ('setting node muse be a type of Node')
- def getNode(self, node_id):
- return [node for node in self.nodes if node.id == id]
- def setLeader(self):
- arr = []
- arr.append([node.id for node in self.nodes if node.isAlive() == True])
- leader = [node for node in self.nodes if node.id == min(arr[0])]
- self.leader_node = leader[0]
- for node in self.nodes:
- if node.isAlive() == True:
- node.setLeader(self.leader_node)
- def delNode(self, node_id):
- try:
- node_for_del = self.getNode(node_id)
- return 'Node with id=%s was removed' %node_id
- except IndexError:
- return 'Node with id=%s is not avaliable' %node_id
- self.nodes.remove(node_for_del)
- def __repr__(self):
- return '%s' %self.name
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement