def broadcast(self, message): for site in self.sites.values(): request = MgtRequest(message.serialize()) try: request.get_response(site.mgt_address) except: # the site is down logger.critical('REP: Site %s is down.' % (site.mgt_address, ))
def join_site(self, site_address): msg = MgtMessage('REP_JOIN_SITE', self.local_site) request = MgtRequest(msg.serialize()) try: response = request.get_response(site_address) except: raise db.DBError('Replication site is unreachable') if response.header == 0: master, sites = response.data self.master = master for site in [s for s in sites if s.address != self.local_site.address]: self.add_remote_site(site) else: raise db.DBError(response.data)