예제 #1
0
파일: tasks.py 프로젝트: cmz0228/backend
def remove_tc(server_id: int, port_num: int):
    kwargs = {
        "server_id": server_id,
        "port_num": port_num,
    }
    print(f"Sending tc_runner task, kwargs: {kwargs}")
    celery_app.send_task("tasks.tc.tc_runner", kwargs=kwargs)
예제 #2
0
파일: tasks.py 프로젝트: cmz0228/backend
def trigger_tc(port: Port):
    kwargs = {
        "server_id": port.server.id,
        "port_num": port.num,
        "egress_limit": port.config.get("egress_limit"),
        "ingress_limit": port.config.get("ingress_limit"),
    }
    print(f"Sending tc_runner task, kwargs: {kwargs}")
    celery_app.send_task("tasks.tc.tc_runner", kwargs=kwargs)
예제 #3
0
파일: tasks.py 프로젝트: cmz0228/backend
def send_iptables(rule: PortForwardRule):
    kwargs = {
        "port_id": rule.port.id,
        "server_id": rule.port.server.id,
        "local_port": rule.port.num,
        "update_status": True,
        "remote_address": rule.config.get("remote_address"),
        "remote_port": rule.config.get("remote_port"),
        "forward_type": rule.config.get("type", "ALL").upper()
    }
    print(f"Sending iptables_runner task, kwargs: {kwargs}")
    celery_app.send_task("tasks.iptables.iptables_runner", kwargs=kwargs)
예제 #4
0
파일: usage.py 프로젝트: cmz0228/backend
def apply_port_limits(db: Session, port: Port, action: LimitActionEnum):
    action_to_speed = {
        LimitActionEnum.SPEED_LIMIT_10K: 10,
        LimitActionEnum.SPEED_LIMIT_100K: 100,
        LimitActionEnum.SPEED_LIMIT_1M: 1000,
        LimitActionEnum.SPEED_LIMIT_10M: 10000,
        LimitActionEnum.SPEED_LIMIT_30M: 30000,
        LimitActionEnum.SPEED_LIMIT_100M: 100000,
        LimitActionEnum.SPEED_LIMIT_1G: 1000000,
    }
    db.refresh(port)
    if action == LimitActionEnum.NO_ACTION:
        return
    elif action == LimitActionEnum.DELETE_RULE:
        if not port.forward_rule:
            return
        delete_forward_rule(db, port.server_id, port.id)
        celery_app.send_task(
            "tasks.clean.clean_port_runner",
            kwargs={"server_id": port.server.id, "port_num": port.num},
        )
    elif action in action_to_speed:
        if (
            port.config["egress_limit"] != action_to_speed[action]
            or port.config["ingress_limit"] != action_to_speed[action]
        ):
            port.config["egress_limit"] = action_to_speed[action]
            port.config["ingress_limit"] = action_to_speed[action]
            db.add(port)
            db.commit()
            tc_runner.apply_async(
                kwargs={
                    "server_id": port.server.id,
                    "port_num": port.num,
                    "egress_limit": port.config.get("egress_limit"),
                    "ingress_limit": port.config.get("ingress_limit"),
                },
                priority=0,
            )
    else:
        print(f"No action found {action} for port (id: {port.id})")
예제 #5
0
파일: tasks.py 프로젝트: cmz0228/backend
def trigger_port_clean(server: Server, port: Port, update_traffic: bool = True):
    print(f"Sending clean.clean_port_runner task")
    celery_app.send_task(
        "tasks.clean.clean_port_runner",
        kwargs={"server_id": server.id, "port_num": port.num, "update_traffic": update_traffic},
    )
예제 #6
0
파일: tasks.py 프로젝트: cmz0228/backend
def trigger_server_clean(server: Server):
    print(f"Sending clean.clean_runner task")
    celery_app.send_task(
        "tasks.clean.clean_runner",
        kwargs={"server": ServerEdit(**server.__dict__).dict()},
    )
예제 #7
0
파일: tasks.py 프로젝트: cmz0228/backend
def trigger_server_connect(server_id: int, init: bool = False, **kwargs):
    kwargs["server_id"] = server_id
    kwargs["sync_scripts"] = init
    kwargs["init_iptables"] = init
    print(f"Sending server.server_runner task")
    celery_app.send_task("tasks.server.server_runner", kwargs=kwargs)
예제 #8
0
파일: tasks.py 프로젝트: cmz0228/backend
def trigger_iptables_reset(port: Port):
    kwargs = {"server_id": port.server.id, "port_num": port.num}
    print(f"Sending iptables.iptables_reset_runner task")
    celery_app.send_task("tasks.iptables.iptables_reset_runner", kwargs=kwargs)
예제 #9
0
파일: tasks.py 프로젝트: cmz0228/backend
def trigger_ansible_hosts():
    print(f"Sending ansible_hosts_runner task")
    celery_app.send_task("tasks.ansible.ansible_hosts_runner")
예제 #10
0
파일: clean.py 프로젝트: cmz0228/backend
def clean_finished_handler(runner):
    celery_app.send_task("tasks.ansible.ansible_hosts_runner")
예제 #11
0
def home():
    result = celery_app.send_task('tasks.add', [1, 2])
    result.ready()
    return str(result.get())
예제 #12
0
async def run_task(task_name: str, kwargs: t.Dict):
    celery_app.send_task(f"tasks.{task_name}", kwargs=kwargs)
    return {"message": "ok"}