def create_service(reactor, options): """Based on options provided by the user create a service that will provide whatever it is that Nesoi do. """ service = MultiService() listen_address = options['listen-address'] storage = shelve.open(options['data-file'], writeback=True) cluster_node = ClusterNode(reactor, storage) service.addService(cluster_node) model = ResourceModel(reactor, cluster_node.keystore) gossiper = Gossiper(reactor, cluster_node, listen_address) if options['seed']: gossiper.seed([options['seed']]) service.addService(UDPServer(int(options['listen-port']), gossiper, interface=listen_address)) router = rest.Router() router.addController('app', api.ApplicationCollectionResource(model)) router.addController('app/{appname}/web-hooks', api.WebhookCollectionResource(model, 'appname', 'app')) router.addController('app/{appname}/web-hooks/{hookname}', api.WebhookResource(model, 'appname', 'app')) router.addController('app/{appname}', api.ApplicationResource(model)) router.addController('srv', api.ServiceCollectionResource(model)) router.addController('srv/{srvname}', api.ServiceHostCollectionResource(model)) router.addController('srv/{srvname}/web-hooks', api.WebhookCollectionResource(model, 'srvname', 'service')) router.addController('srv/{srvname}/web-hooks/{hookname}', api.WebhookResource(model, 'srvname', 'service')) router.addController('srv/{srvname}/{hostname}', api.ServiceHostResource(model)) service.addService(TCPServer(int(options['listen-port']), Site(router), interface=listen_address)) #gossiper.set(cluster_node.election.PRIO_KEY, 0) #cluster_node.keystore.load_from(storage) return service
self._election_timeout.cancel() self._election_timeout = reactor.callLater(5, self._vote) def peer_dead(self, peer): print self.name, "thinks", peer.name, "is dead" self._start_election() def peer_stable(self, peer): print "stable", peer members = [] for i in range(0, CNT): participant = Participant('127.0.0.1:%d' % (9000 + i)) gossiper = Gossiper(reactor, participant, '127.0.0.1') gossiper.set('/leader-election/priority', i) p = reactor.listenUDP(9000 + i, gossiper) members.append((gossiper, p, participant)) for i in range(1, CNT): members[i][0].seed(['127.0.0.1:9000']) seed = members[0][0] def prop_test(): print "START PROP TEST" print reactor.seconds() seed.set('x', 'value')
self._election_timeout.cancel() self._election_timeout = reactor.callLater(5, self._vote) def peer_dead(self, peer): print self.name, "thinks", peer, "is dead" self._start_election() def peer_stable(self, peer): print "stable", peer members = [] for i in range(0, CNT): participant = Participant('127.0.0.1:%d' % (9000+i)) gossiper = Gossiper(reactor, '127.0.0.1:%d' % (9000+i), participant) gossiper.set_local_state('/leader-election/priority', i) p = reactor.listenUDP(9000+i, gossiper) members.append((gossiper, p, participant)) for i in range(1, CNT): members[i][0].handle_new_peers(['127.0.0.1:9000']) seed = members[0][0] def prop_test(): print "START PROP TEST" print reactor.seconds() seed.set_local_state('x', 'value') pending = []
self._election_timeout.cancel() self._election_timeout = reactor.callLater(5, self._vote) def peer_dead(self, peer): print self.name, "thinks", peer.name, "is dead" self._start_election() def peer_stable(self, peer): print "stable", peer members = [] for i in range(0, CNT): participant = Participant('127.0.0.1:%d' % (9000+i)) gossiper = Gossiper(reactor, participant, '127.0.0.1') gossiper.set('/leader-election/priority', i) p = reactor.listenUDP(9000+i, gossiper) members.append((gossiper, p, participant)) for i in range(1, CNT): members[i][0].seed(['127.0.0.1:9000']) seed = members[0][0] def prop_test(): print "START PROP TEST" print reactor.seconds() seed.set('x', 'value') pending = []