def get(self, node_uuid=None): if not node_uuid: node = Node.get_by(uuid=Node.me().uuid) else: node = Node.get_by(uuid=node_uuid) if not node: raise tornado.web.HTTPError(404) self.write({'node': node.to_dict()})
def test_register_node(self): data = {'uuid': "a-unique-id", 'port': 8001} eq_(Node.get_by(uuid=data['uuid']), None) self.http_client.fetch(HTTPRequest( self.get_url('/nodes'), 'POST', body=json.dumps(data)), self.stop) response = self.wait() eq_(response.code, 200) ok_(Node.get_by(uuid=data['uuid']))
def test_register_node(self): data = {'uuid': "a-unique-id", 'port': 8001} eq_(Node.get_by(uuid=data['uuid']), None) self.http_client.fetch( HTTPRequest(self.get_url('/nodes'), 'POST', body=json.dumps(data)), self.stop) response = self.wait() eq_(response.code, 200) ok_(Node.get_by(uuid=data['uuid']))
def test_get_nodes(self): [NodeFactory() for _ in range(3)] response = self.fetch('/nodes') eq_(response.code, 200) result = json.loads(response.body) ok_('nodes' in result) for node in result['nodes']: ok_(Node.get_by(uuid=node['uuid']))
def delete(self, node_uuid=None): """Remove the requesting node from the list of known nodes, unregistering the from the network. """ if not node_uuid or node_uuid == Node.me().uuid: log.info("Shutting down because of request from %s", self.request.remote_ip) tornado.ioloop.IOLoop.instance().stop() return node = Node.get_by(uuid=node_uuid) if node: closest_supernode = Node.closest_supernode() if closest_supernode and node != closest_supernode: log.info("Notifying closest supernode %s that %s was deleted", closest_supernode, node) NodesAPI(closest_supernode.absolute_url()).unregister(node) if node == Node.me().primary_supernode and self.application.node: self.application.node.bootstrap() node.delete()