def create_eru_proxy(request): container_info = None try: cluster = models.cluster.get_by_id(int(request.form['cluster_id'])) if cluster is None or len(cluster.nodes) == 0: raise ValueError('no such cluster') port = int(request.form.get('port', 8889)) if not 8000 <= port <= 9999: raise ValueError('invalid port') container_info = deploy_proxy( request.form['pod'], int(request.form['threads']), request.form.get('read_slave') == 'rs', request.form['netmode'], host=request.form.get('host'), port=port) models.proxy.create_eru_instance( container_info['address'], port, cluster.id, container_info['container_id']) _set_proxy_remote(container_info['address'], port, cluster.nodes[0].host, cluster.nodes[0].port) return base.json_result(container_info) except IntegrityError: if container_info is not None: rm_containers([container_info['container_id']]) raise ValueError('exists') except BaseException as exc: logging.exception(exc) raise
def create_eru_proxy(request): def set_remotes(proxy_addr, proxy_port, redis_host, redis_port): time.sleep(1) t = Talker(proxy_addr, proxy_port) try: t.talk('setremotes', redis_host, redis_port) finally: t.close() container_info = None try: cluster = models.cluster.get_by_id(int(request.form['cluster_id'])) if cluster is None or len(cluster.nodes) == 0: raise ValueError('no such cluster') port = int(request.form.get('port', 8889)) if not 8000 <= port <= 9999: raise ValueError('invalid port') container_info = deploy_proxy( request.form['pod'], int(request.form['threads']), request.form.get('read_slave') == 'rs', request.form['netmode'], host=request.form.get('host'), port=port) models.proxy.create_eru_instance( container_info['address'], port, cluster.id, container_info['container_id']) threading.Thread(target=set_remotes, args=( container_info['address'], port, cluster.nodes[0].host, cluster.nodes[0].port)).start() return base.json_result(container_info) except IntegrityError: if container_info is not None: rm_containers([container_info['container_id']]) raise ValueError('exists') except BaseException as exc: logging.exception(exc) raise