Exemple #1
0
def edit_server(db: Session, server_id: int, server: ServerEdit) -> Server:
    db_server = get_server(db, server_id)
    if not db_server:
        raise HTTPException(status_code=404, detail="Server not found")
    updated = server.dict(exclude_unset=True)

    for key, val in updated.items():
        setattr(db_server, key, val)

    db.add(db_server)
    db.commit()
    db.refresh(db_server)
    return get_server(db, db_server.id)
Exemple #2
0
async def server_edit(
        request: Request,
        server_id: int,
        server: ServerEdit,
        db=Depends(get_db),
        current_user=Depends(get_current_active_admin),
):
    """
    Update an existing server
    """
    # TODO: Disallow unauthorized ops to edit server
    if server.ssh_password:
        server.ssh_password = server.ssh_password.replace("\\", "\\\\")
        server.ssh_password = server.ssh_password.replace('"', '\\"')
    if server.sudo_password:
        server.sudo_password = server.sudo_password.replace("\\", "\\\\")
        server.sudo_password = server.sudo_password.replace('"', '\\"')
    server = edit_server(db, server_id, server)
    trigger_ansible_hosts()
    if server.config["system"] is None:
        trigger_server_connect(server.id)
    return server
Exemple #3
0
async def server_connect(
        request: Request,
        server_id: int,
        connect_arg: ServerConnectArg,
        db=Depends(get_db),
        user=Depends(get_current_active_user),
):
    """
    Connects a server and update something
    """
    if not user.is_admin() and connect_arg.dict(exclude_defaults=True):
        raise HTTPException(status_code=403, detail="Not authorized")
    server = edit_server(db, server_id, ServerEdit(), reset_system=True)
    trigger_server_connect(server.id)
    return server
Exemple #4
0
def edit_server(db: Session,
                server_id: int,
                server: ServerEdit,
                reset_system: bool = False) -> Server:
    db_server = get_server(db, server_id)
    if not db_server:
        raise HTTPException(status_code=404, detail="Server not found")
    updated = server.dict(exclude_unset=True)

    for key, val in updated.items():
        setattr(db_server, key, val)
    if (reset_system or server.sudo_password or server.ssh_password
            or server.ansible_host or server.ansible_user
            or server.ansible_port):
        db_server.config["system"] = None

    db.add(db_server)
    db.commit()
    db.refresh(db_server)
    return get_server(db, db_server.id)
Exemple #5
0
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()},
    )
Exemple #6
0
def trigger_server_clean(server: Server):
    print("Sending clean.clean_runner task")
    clean_runner(server=ServerEdit(**server.__dict__).dict())