async def handle_patch_operator(project_id: str, deployment_id: str, operator_id: str, operator: projects.schemas.operator.OperatorUpdate, session: Session = Depends(session_scope)): """ Handles PATCH requests to /<deployment_id>/operators/<operator_id>. Parameters ---------- project_id : str deployment_id : str operator_id : str session : sqlalchemy.orm.session.Session Returns ------- projects.schemas.operator.Operator """ project_controller = ProjectController(session) project_controller.raise_if_project_does_not_exist(project_id) deployment_controller = DeploymentController(session) deployment_controller.raise_if_deployment_does_not_exist(deployment_id) operator_controller = OperatorController(session) operator = operator_controller.update_operator(operator_id=operator_id, project_id=project_id, deployment_id=deployment_id, operator=operator) return operator
async def handle_delete_operator(project_id: str, experiment_id: str, operator_id: str, session: Session = Depends(session_scope)): """ Handles DELETE requests to /<operator_id>. Parameters ---------- project_id : str experiment_id : str operator_id : str session : sqlalchemy.orm.session.Session Returns ------- projects.schemas.message.Message """ project_controller = ProjectController(session) project_controller.raise_if_project_does_not_exist(project_id) experiment_controller = ExperimentController(session) experiment_controller.raise_if_experiment_does_not_exist(experiment_id) operator_controller = OperatorController(session) operator = operator_controller.delete_operator(operator_id=operator_id, project_id=project_id, experiment_id=experiment_id) return operator
async def handle_list_operators(project_id: str, deployment_id: str, session: Session = Depends(session_scope)): """ Handles GET requests to /. Parameters ---------- project_id : str deployment_id : str session : sqlalchemy.orm.session.Session Returns ------- projects.schemas.operator.OperatorList """ project_controller = ProjectController(session) project_controller.raise_if_project_does_not_exist(project_id) deployment_controller = DeploymentController(session) deployment_controller.raise_if_deployment_does_not_exist(deployment_id) operator_controller = OperatorController(session) operators = operator_controller.list_operators(project_id=project_id, deployment_id=deployment_id) return operators
async def handle_post_operator( project_id: str, experiment_id: str, operator: projects.schemas.operator.OperatorCreate, session: Session = Depends(session_scope)): """ Handles POST requests to /. Parameters ---------- project_id : str experiment_id : str operator : projects.schemas.operator.OperatorCreate session : sqlalchemy.orm.session.Session Returns ------- projects.schemas.operator.Operator """ project_controller = ProjectController(session) project_controller.raise_if_project_does_not_exist(project_id) experiment_controller = ExperimentController(session) experiment_controller.raise_if_experiment_does_not_exist(experiment_id) operator_controller = OperatorController(session) operator = operator_controller.create_operator(project_id=project_id, experiment_id=experiment_id, operator=operator) return operator
async def handle_post_operator( project_id: str, experiment_id: str, operator: projects.schemas.operator.OperatorCreate, session: Session = Depends(database.session_scope), kubeflow_userid: Optional[str] = Header(database.DB_TENANT), ): """ Handles POST requests to /. Parameters ---------- project_id : str experiment_id : str operator : projects.schemas.operator.OperatorCreate session : sqlalchemy.orm.session.Session kubeflow_userid : fastapi.Header Returns ------- projects.schemas.operator.Operator """ project_controller = ProjectController(session, kubeflow_userid=kubeflow_userid) project_controller.raise_if_project_does_not_exist(project_id) experiment_controller = ExperimentController(session) experiment_controller.raise_if_experiment_does_not_exist(experiment_id) operator_controller = OperatorController(session) operator = operator_controller.create_operator(project_id=project_id, experiment_id=experiment_id, operator=operator) return operator
async def handle_delete_operator( project_id: str, experiment_id: str, operator_id: str, session: Session = Depends(database.session_scope), kubeflow_userid: Optional[str] = Header(database.DB_TENANT), ): """ Handles DELETE requests to /<operator_id>. Parameters ---------- project_id : str experiment_id : str operator_id : str session : sqlalchemy.orm.session.Session kubeflow_userid : fastapi.Header Returns ------- projects.schemas.message.Message """ project_controller = ProjectController(session, kubeflow_userid=kubeflow_userid) project_controller.raise_if_project_does_not_exist(project_id) experiment_controller = ExperimentController(session) experiment_controller.raise_if_experiment_does_not_exist(experiment_id) operator_controller = OperatorController(session) operator = operator_controller.delete_operator(operator_id=operator_id, project_id=project_id, experiment_id=experiment_id) return operator
async def handle_list_operators( project_id: str, deployment_id: str, session: Session = Depends(database.session_scope), kubeflow_userid: Optional[str] = Header(database.DB_TENANT), ): """ Handles GET requests to /. Parameters ---------- project_id : str deployment_id : str session : sqlalchemy.orm.session.Session kubeflow_userid : fastapi.Header Returns ------- projects.schemas.operator.OperatorList """ project_controller = ProjectController(session, kubeflow_userid=kubeflow_userid) project_controller.raise_if_project_does_not_exist(project_id) deployment_controller = DeploymentController(session) deployment_controller.raise_if_deployment_does_not_exist(deployment_id) operator_controller = OperatorController(session) operators = operator_controller.list_operators(project_id=project_id, deployment_id=deployment_id) return operators
async def handle_get_dataset( project_id: str, experiment_id: str, run_id: str, operator_id: str, page: Optional[int] = 1, page_size: Optional[int] = 10, accept: Optional[str] = Header(None), session: Session = Depends(database.session_scope), kubeflow_userid: Optional[str] = Header(database.DB_TENANT), ): """ Handles GET requests to /. Parameters ---------- project_id : str experiment_id : str run_id : str operator_id : str session : sqlalchemy.orm.session.Session kubeflow_userid : fastapi.Header Returns ------- List """ project_controller = ProjectController(session, kubeflow_userid=kubeflow_userid) project_controller.raise_if_project_does_not_exist(project_id) experiment_controller = ExperimentController(session) experiment_controller.raise_if_experiment_does_not_exist(experiment_id) operator_controller = OperatorController(session) operator_controller.raise_if_operator_does_not_exist(operator_id) run_controller = RunController(session) run_controller.raise_if_run_does_not_exist(run_id, experiment_id) dataset_controller = DatasetController(session) datasets = dataset_controller.get_dataset( project_id=project_id, experiment_id=experiment_id, run_id=run_id, operator_id=operator_id, page=page, page_size=page_size, accept=accept, ) return datasets
async def handle_get_operator_results( project_id: str, experiment_id: str, run_id: str, operator_id: str, session: Session = Depends(database.session_scope), kubeflow_userid: Optional[str] = Header(database.DB_TENANT), ): """ Handles GET requests to /operators/<operator_id>/results. Parameters ---------- project_id : str experiment_id : str run_id: str operator_id: str session : sqlalchemy.orm.session.Session kubeflow_userid : fastapi.Header Returns ------- starlette.responses.StreamingResponse] ZipFile of the operator_results """ project_controller = ProjectController(session, kubeflow_userid=kubeflow_userid) project_controller.raise_if_project_does_not_exist(project_id) experiment_controller = ExperimentController(session) experiment_controller.raise_if_experiment_does_not_exist(experiment_id) operator_controller = OperatorController(session) operator_controller.raise_if_operator_does_not_exist(operator_id) run_controller = RunController(session) run_controller.raise_if_run_does_not_exist(run_id, experiment_id) result_controller = ResultController(session) results = result_controller.get_results(experiment_id=experiment_id, run_id=run_id, operator_id=operator_id) response = StreamingResponse(results, media_type="application/x-zip-compressed") response.headers[ "Content-Disposition"] = "attachment; filename=results.zip" return response
async def handle_experiment_operator_stream(experiment_id: str, session: Session = Depends( database.session_scope)): """ Handle event source requests to /eventsource. Parameters ---------- experiment_id : str session : sqlalchemy.orm.session.Session Returns ------- EventSourceResponse """ controller = OperatorController(session) stream = controller.watch_operator(experiment_id=experiment_id) return EventSourceResponse(stream)
async def handle_patch_operator( project_id: str, deployment_id: str, operator_id: str, operator: projects.schemas.operator.OperatorUpdate, session: Session = Depends(database.session_scope), kubeflow_userid: Optional[str] = Header(database.DB_TENANT), ): """ Handles PATCH requests to /<deployment_id>/operators/<operator_id>. Parameters ---------- project_id : str deployment_id : str operator_id : str session : sqlalchemy.orm.session.Session kubeflow_userid : fastapi.Header Returns ------- projects.schemas.operator.Operator """ project_controller = ProjectController(session, kubeflow_userid=kubeflow_userid) project_controller.raise_if_project_does_not_exist(project_id) deployment_controller = DeploymentController(session) deployment_controller.raise_if_deployment_does_not_exist(deployment_id) operator_controller = OperatorController(session) operator = operator_controller.update_operator( operator_id=operator_id, project_id=project_id, deployment_id=deployment_id, operator=operator, ) return operator
async def handle_patch_parameter( project_id: str, experiment_id: str, operator_id: str, name: str, parameter: projects.schemas.operator.ParameterUpdate, session: Session = Depends(session_scope)): """ Handles PATCH requests to /{name}. Parameters ---------- project_id : str experiment_id : str operator_id : str name : str parameter : projects.schemas.Operator.ParameterUpdate session : sqlalchemy.orm.session.Session Returns ------- projects.schemas.operator.Operator """ project_controller = ProjectController(session) project_controller.raise_if_project_does_not_exist(project_id) experiment_controller = ExperimentController(session) experiment_controller.raise_if_experiment_does_not_exist(experiment_id) operator_controller = OperatorController(session) operator_controller.raise_if_operator_does_not_exist(operator_id) parameter_controller = OperatorParameterController(session) operator = parameter_controller.update_parameter(name=name, operator_id=operator_id, parameter=parameter) return operator