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)
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
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
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)
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()}, )
def trigger_server_clean(server: Server): print("Sending clean.clean_runner task") clean_runner(server=ServerEdit(**server.__dict__).dict())