Beispiel #1
0
 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)
     rm_containers([eru_container_id])
Beispiel #2
0
def _rm_containers(cids):
    rm_containers(cids)
    for c in cids:
        try:
            models.node.delete_eru_instance(c)
        except ValueError as e:
            logging.exception(e)
Beispiel #3
0
 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
Beispiel #4
0
 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])
Beispiel #5
0
 def create_eru_node(request):
     container_info = None
     try:
         port = int(request.form.get('port', 6379))
         if not 6000 <= port <= 7999:
             raise ValueError('invalid port')
         container_info = deploy_node(
             request.form['pod'], request.form['aof'] == 'y',
             request.form['netmode'], request.form['cluster'] == 'y',
             host=request.form.get('host'), port=port)
         models.node.create_eru_instance(container_info['address'], port,
                                         container_info['container_id'])
         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
Beispiel #6
0
    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