def patch_dag(session, dag_id, update_mask=None): """ Update the specific DAG """ dag = session.query(DagModel).filter( DagModel.dag_id == dag_id).one_or_none() if not dag: raise NotFound(f"Dag with id: '{dag_id}' not found") try: patch_body = dag_schema.load(request.json, session=session) except ValidationError as err: raise BadRequest("Invalid Dag schema", detail=str(err.messages)) if update_mask: patch_body_ = {} if len(update_mask) > 1: raise BadRequest( detail= "Only `is_paused` field can be updated through the REST API") update_mask = update_mask[0] if update_mask != 'is_paused': raise BadRequest( detail= "Only `is_paused` field can be updated through the REST API") patch_body_[update_mask] = patch_body[update_mask] patch_body = patch_body_ setattr(dag, 'is_paused', patch_body['is_paused']) session.commit() return dag_schema.dump(dag)
def get_dag(dag_id, session): """Get basic information about a DAG.""" dag = session.query(DagModel).filter(DagModel.dag_id == dag_id).one_or_none() if dag is None: raise NotFound("DAG not found", detail=f"The DAG with dag_id: {dag_id} was not found") return dag_schema.dump(dag)
def patch_dag(session, dag_id): """ Update the specific DAG """ dag = session.query(DagModel).filter( DagModel.dag_id == dag_id).one_or_none() if not dag: raise NotFound(f"Dag with id: '{dag_id}' not found") try: patch_body = dag_schema.load(request.json, session=session) except ValidationError as err: raise BadRequest("Invalid Dag schema", detail=str(err.messages)) for key, value in patch_body.items(): setattr(dag, key, value) session.commit() return dag_schema.dump(dag)
def patch_dag(*, dag_id: str, update_mask: UpdateMask = None, session: Session = NEW_SESSION) -> APIResponse: """Update the specific DAG""" try: patch_body = dag_schema.load(request.json, session=session) except ValidationError as err: raise BadRequest(detail=str(err.messages)) if update_mask: patch_body_ = {} if update_mask != ['is_paused']: raise BadRequest(detail="Only `is_paused` field can be updated through the REST API") patch_body_[update_mask[0]] = patch_body[update_mask[0]] patch_body = patch_body_ dag = session.query(DagModel).filter(DagModel.dag_id == dag_id).one_or_none() if not dag: raise NotFound(f"Dag with id: '{dag_id}' not found") dag.is_paused = patch_body['is_paused'] session.flush() return dag_schema.dump(dag)