def _set_alert_status(n, request): if n is None: raise ValueError('no such node') n.suppress_alert = int(request.form['suppress']) db.session.add(n) db.session.flush() file_ipc.write_nodes_proxies_from_db()
def delete_eru_node(request): eru_container_id = request.form['id'] if request.form['type'] == 'node': models.node.delete_eru_instance(eru_container_id) else: models.proxy.delete_eru_instance(eru_container_id) file_ipc.write_nodes_proxies_from_db() rm_containers([eru_container_id])
def g(request, *args, **kwargs): try: r = f(request, *args, **kwargs) or '' if commit_db: models.base.db.session.commit() file_ipc.write_nodes_proxies_from_db() return r except KeyError, e: r = dict(reason='missing argument', missing=e.message)
def run_app(app, debug): import file_ipc file_ipc.write_nodes_proxies_from_db() if debug: app.debug = True return app.run(port=config.SERVER_PORT) from app import WrapperApp WrapperApp(app, { 'bind': '0.0.0.0:%d' % config.SERVER_PORT, 'workers': 2, 'timeout': 86400, }).run()
def main(): config.init_logging() if config.OPEN_FALCON and config.OPEN_FALCON['host_query']: stats.init(**config.OPEN_FALCON) import handlers app = handlers.base.app app.config['SQLALCHEMY_DATABASE_URI'] = config.SQLALCHEMY_DATABASE_URI models.base.init_db(app) import file_ipc file_ipc.write_nodes_proxies_from_db() debug = config.DEBUG == 1 app.debug = debug app.run(host='127.0.0.1' if debug else '0.0.0.0', port=config.SERVER_PORT)
def add_node_to_balance_for(host, port, plan, slots): node = models.node.get_by_host_port(host, int(port)) if node is None or node.assignee_id is None: logging.info( 'No node or cluster found for %s:%d (This should be a corrupt)', host, port) return if node.assignee.current_task is not None: logging.info( 'Fail to auto balance cluster %d for node %s:%d : busy', node.assignee_id, host, port) return task, cid, new_host = _prepare_master_node( node, plan.pod, plan.aof, plan.host) cids = [cid] try: cids.extend(_add_slaves( plan.slaves, task, node.assignee_id, new_host, plan.pod, plan.aof)) migrating_slots = slots[: len(slots) / 2] task.add_step( 'migrate', src_host=node.host, src_port=node.port, dst_host=new_host, dst_port=6379, slots=migrating_slots) logging.info('Migrating %d slots from %s to %s', len(migrating_slots), host, new_host) db.session.add(task) db.session.flush() lock = task.acquire_lock() if lock is not None: logging.info('Auto balance task %d has been emit; lock id=%d', task.id, lock.id) file_ipc.write_nodes_proxies_from_db() return logging.info('Auto balance task fail to lock,' ' discard auto balance this time.' ' Delete container id=%s', cids) _rm_containers(cids) except BaseException as exc: logging.info('Remove container %s and rollback', cids) _rm_containers(cids) db.session.rollback() raise
def del_node(request): models.node.delete_free_instance( request.form['host'], int(request.form['port'])) file_ipc.write_nodes_proxies_from_db()
def add_node(request): models.node.create_instance( request.form['host'], int(request.form['port']), int(request.form['mem'])) file_ipc.write_nodes_proxies_from_db()
def write_polling_targets(self): file_ipc.write_nodes_proxies_from_db()
def test_suppress_alert(self): app = handlers.base.app with app.test_client() as client: r = client.post('/nodes/add', data={ 'host': '127.0.0.1', 'port': '7100', 'mem': '1048576', }) self.assertEqual(200, r.status_code) r = client.post('/nodes/add', data={ 'host': '127.0.0.1', 'port': '7101', 'mem': '1048576', }) self.assertEqual(200, r.status_code) r = client.post('/set_alert_status/redis', data={ 'host': '127.0.0.1', 'port': '7100', 'suppress': '0', }) self.assertEqual(200, r.status_code) r = client.post('/cluster/autojoin', data={ 'host': '127.0.0.1', 'port': '7100', }) self.assertEqual(200, r.status_code) cluster_id = r.data r = client.post('/cluster/set_info', data={ 'cluster_id': cluster_id, 'descr': '.', 'proxy_host': '127.0.0.1', 'proxy_port': '8889', }) self.assertEqual(200, r.status_code) file_ipc.write_nodes_proxies_from_db() with open(file_ipc.POLL_FILE, 'r') as fin: polls = json.loads(fin.read()) self.assertEqual(2, len(polls['nodes'])) poll_nodes = sorted(polls['nodes'], key=lambda n: '%s:%d' % (n['host'], n['port'])) n = poll_nodes[0] self.assertEqual('127.0.0.1', n['host']) self.assertEqual(7100, n['port']) self.assertEqual(0, n['suppress_alert']) n = poll_nodes[1] self.assertEqual('127.0.0.1', n['host']) self.assertEqual(7101, n['port']) self.assertEqual(1, n['suppress_alert']) self.assertEqual(1, len(polls['proxies'])) poll_proxies = sorted(polls['proxies'], key=lambda n: '%s:%d' % (n['host'], n['port'])) n = poll_proxies[0] self.assertEqual('127.0.0.1', n['host']) self.assertEqual(8889, n['port']) self.assertEqual(1, n['suppress_alert']) r = client.post('/set_alert_status/redis', data={ 'host': '127.0.0.1', 'port': '7101', 'suppress': '0', }) self.assertEqual(200, r.status_code) r = client.post('/set_alert_status/redis', data={ 'host': '127.0.0.1', 'port': '7102', 'suppress': '0', }) self.assertEqual(400, r.status_code) self.assertEqual({'reason': 'no such node'}, json.loads(r.data)) file_ipc.write_nodes_proxies_from_db() with open(file_ipc.POLL_FILE, 'r') as fin: polls = json.loads(fin.read()) self.assertEqual(2, len(polls['nodes'])) poll_nodes = sorted(polls['nodes'], key=lambda n: '%s:%d' % (n['host'], n['port'])) n = poll_nodes[0] self.assertEqual('127.0.0.1', n['host']) self.assertEqual(7100, n['port']) self.assertEqual(0, n['suppress_alert']) n = poll_nodes[1] self.assertEqual('127.0.0.1', n['host']) self.assertEqual(7101, n['port']) self.assertEqual(0, n['suppress_alert']) self.assertEqual(1, len(polls['proxies'])) poll_proxies = sorted(polls['proxies'], key=lambda n: '%s:%d' % (n['host'], n['port'])) n = poll_proxies[0] self.assertEqual('127.0.0.1', n['host']) self.assertEqual(8889, n['port']) self.assertEqual(1, n['suppress_alert'])
def test_suppress_alert(self): app = handlers.base.app with app.test_client() as client: r = client.post('/nodes/add', data={ 'host': '127.0.0.1', 'port': '7100', 'mem': '1048576', }) self.assertEqual(200, r.status_code) r = client.post('/nodes/add', data={ 'host': '127.0.0.1', 'port': '7101', 'mem': '1048576', }) self.assertEqual(200, r.status_code) r = client.post('/set_alert_status/redis', data={ 'host': '127.0.0.1', 'port': '7100', 'suppress': '0', }) self.assertEqual(200, r.status_code) r = client.post('/cluster/autojoin', data={ 'host': '127.0.0.1', 'port': '7100', }) self.assertEqual(200, r.status_code) cluster_id = r.data r = client.post('/cluster/set_info', data={ 'cluster_id': cluster_id, 'descr': '.', 'proxy_host': '127.0.0.1', 'proxy_port': '8889', }) self.assertEqual(200, r.status_code) file_ipc.write_nodes_proxies_from_db() with open(file_ipc.POLL_FILE, 'r') as fin: polls = json.loads(fin.read()) self.assertEqual(2, len(polls['nodes'])) poll_nodes = sorted(polls['nodes'], key=lambda n: '%s:%d' % (n['host'], n['port'])) n = poll_nodes[0] self.assertEqual('127.0.0.1', n['host']) self.assertEqual(7100, n['port']) self.assertEqual(0, n['suppress_alert']) n = poll_nodes[1] self.assertEqual('127.0.0.1', n['host']) self.assertEqual(7101, n['port']) self.assertEqual(1, n['suppress_alert']) self.assertEqual(1, len(polls['proxies'])) poll_proxies = sorted( polls['proxies'], key=lambda n: '%s:%d' % (n['host'], n['port'])) n = poll_proxies[0] self.assertEqual('127.0.0.1', n['host']) self.assertEqual(8889, n['port']) self.assertEqual(1, n['suppress_alert']) r = client.post('/set_alert_status/redis', data={ 'host': '127.0.0.1', 'port': '7101', 'suppress': '0', }) self.assertEqual(200, r.status_code) r = client.post('/set_alert_status/redis', data={ 'host': '127.0.0.1', 'port': '7102', 'suppress': '0', }) self.assertEqual(400, r.status_code) self.assertEqual({'reason': 'no such node'}, json.loads(r.data)) file_ipc.write_nodes_proxies_from_db() with open(file_ipc.POLL_FILE, 'r') as fin: polls = json.loads(fin.read()) self.assertEqual(2, len(polls['nodes'])) poll_nodes = sorted(polls['nodes'], key=lambda n: '%s:%d' % (n['host'], n['port'])) n = poll_nodes[0] self.assertEqual('127.0.0.1', n['host']) self.assertEqual(7100, n['port']) self.assertEqual(0, n['suppress_alert']) n = poll_nodes[1] self.assertEqual('127.0.0.1', n['host']) self.assertEqual(7101, n['port']) self.assertEqual(0, n['suppress_alert']) self.assertEqual(1, len(polls['proxies'])) poll_proxies = sorted( polls['proxies'], key=lambda n: '%s:%d' % (n['host'], n['port'])) n = poll_proxies[0] self.assertEqual('127.0.0.1', n['host']) self.assertEqual(8889, n['port']) self.assertEqual(1, n['suppress_alert'])
def add_node(request): models.node.create_instance(request.form['host'], int(request.form['port']), int(request.form['mem'])) file_ipc.write_nodes_proxies_from_db()
def del_node(request): models.node.delete_free_instance(request.form['host'], int(request.form['port'])) file_ipc.write_nodes_proxies_from_db()