コード例 #1
0
ファイル: detector.py プロジェクト: Veterun/pymesos
class MasterDetector(object):
    def __init__(self, uri, agent):
        self.uri = uri
        self.agent = agent
        self.zk = ZKClient(uri, 10)
        self.masterSeq = None

    def choose(self, children):
        children = [child for child in children if child != 'log_replicas']
        if not children:
            self.agent.onNoMasterDetectedMessage()
            return True
        masterSeq = min(children)
        if masterSeq == self.masterSeq:
            return True
        self.masterSeq = masterSeq
        DataWatch(self.zk, '/' + masterSeq, self.notify)
        return True

    def notify(self, master_addr, _):
        self.agent.onNewMasterDetectedMessage(master_addr)
        return False

    def start(self):
        adjust_zk_logging_level()
        self.zk.start()
        try:
            ChildrenWatch(self.zk, '', self.choose)
        except ZookeeperError:
            self.agent.onNoMasterDetectedMessage()
            self.stop()

    def stop(self):
        try: self.zk.stop()
        except: pass
コード例 #2
0
class MasterDetector(object):
    def __init__(self, uri, agent):
        self.uri = uri
        self.agent = agent
        self.zk = ZKClient(uri, 10)
        self.masterSeq = None

    def choose(self, children):
        if not children:
            self.agent.onNoMasterDetectedMessage()
            return True
        masterSeq = min(children)
        if masterSeq == self.masterSeq:
            return True
        self.masterSeq = masterSeq
        DataWatch(self.zk, '/' + masterSeq, self.notify)
        return True

    def notify(self, master_addr, _):
        self.agent.onNewMasterDetectedMessage(master_addr)
        return False

    def start(self):
        adjust_zk_logging_level()
        self.zk.start()
        try:
            ChildrenWatch(self.zk, '', self.choose)
        except ZookeeperError:
            self.agent.onNoMasterDetectedMessage()
            self.stop()

    def stop(self):
        try: self.zk.stop()
        except: pass
コード例 #3
0
ファイル: detector.py プロジェクト: Veterun/pymesos
 def __init__(self, uri, agent):
     self.uri = uri
     self.agent = agent
     self.zk = ZKClient(uri, 10)
     self.masterSeq = None
コード例 #4
0
 def __init__(self, uri, agent):
     self.uri = uri
     self.agent = agent
     self.zk = ZKClient(uri, 10)
     self.masterSeq = None