Skip to content

Commit 2f6938b

Browse files
committed
add update workflow functionality
1 parent c276385 commit 2f6938b

File tree

3 files changed

+15
-16
lines changed

3 files changed

+15
-16
lines changed

jupyter_scheduler/models.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ class CreateJob(BaseModel):
8686
output_filename_template: Optional[str] = OUTPUT_FILENAME_TEMPLATE
8787
compute_type: Optional[str] = None
8888
package_input_folder: Optional[bool] = None
89-
depends_on: Optional[str] = None
89+
depends_on: Optional[List[str]] = None
9090
workflow_id: str = None
9191

9292
@root_validator
@@ -150,7 +150,7 @@ class DescribeJob(BaseModel):
150150
downloaded: bool = False
151151
package_input_folder: Optional[bool] = None
152152
packaged_files: Optional[List[str]] = []
153-
depends_on: Optional[str] = None
153+
depends_on: Optional[List[str]] = None
154154
workflow_id: str = None
155155

156156
class Config:
@@ -197,7 +197,7 @@ class UpdateJob(BaseModel):
197197
status: Optional[Status] = None
198198
name: Optional[str] = None
199199
compute_type: Optional[str] = None
200-
depends_on: Optional[str] = None
200+
depends_on: Optional[List[str]] = None
201201

202202

203203
class DeleteJob(BaseModel):

jupyter_scheduler/scheduler.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -570,13 +570,20 @@ def get_workflow(self, workflow_id: str) -> DescribeWorkflow:
570570
return model
571571

572572
def create_workflow_task(self, workflow_id: str, model: CreateJob) -> str:
573-
job_id = self.scheduler.create_job(model, run=False)
574-
workflow: DescribeWorkflow = self.scheduler.get_workflow(workflow_id)
573+
job_id = self.create_job(model, run=False)
574+
workflow: DescribeWorkflow = self.get_workflow(workflow_id)
575575
updated_tasks = (workflow.tasks or [])[:]
576576
updated_tasks.append(job_id)
577-
self.scheduler.update_workflow(workflow_id, UpdateWorkflow(depends_on=updated_tasks))
577+
self.update_workflow(workflow_id, UpdateWorkflow(tasks=updated_tasks))
578578
return job_id
579579

580+
def update_workflow(self, workflow_id: str, model: UpdateWorkflow):
581+
with self.db_session() as session:
582+
session.query(Workflow).filter(Workflow.workflow_id == workflow_id).update(
583+
model.dict(exclude_none=True)
584+
)
585+
session.commit()
586+
580587
def update_job(self, job_id: str, model: UpdateJob):
581588
with self.db_session() as session:
582589
session.query(Job).filter(Job.job_id == job_id).update(model.dict(exclude_none=True))

jupyter_scheduler/workflows.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -173,16 +173,8 @@ class Config:
173173

174174

175175
class UpdateWorkflow(BaseModel):
176-
workflow_id: str
177-
tasks: List[str] = None
178-
status: Status = None
176+
tasks: Optional[List[str]] = None
177+
status: Optional[Status] = None
179178

180179
class Config:
181180
orm_mode = True
182-
183-
184-
class UpdateWorkflow(BaseModel):
185-
status: Optional[Status] = None
186-
name: Optional[str] = None
187-
compute_type: Optional[str] = None
188-
depends_on: Optional[str] = None

0 commit comments

Comments
 (0)