Skip to content

Commit 742694f

Browse files
committed
Sequence tasks with dependencies
1 parent a4ace82 commit 742694f

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

src/databricks/labs/ucx/assessment/sequencing.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,17 @@ def register_job(self, job: jobs.Job) -> MaybeMigrationNode:
193193
problems.extend(maybe_task_node.problems)
194194
if maybe_task_node.node:
195195
self._outgoing_references[job_node.key].add(maybe_task_node.node)
196+
# Only after registering all tasks, we can resolve the task dependencies
197+
for task in job.settings.tasks or []:
198+
task_key = ("TASK", f"{job.job_id}/{task.task_key}")
199+
for task_dependency in task.depends_on or []:
200+
task_dependency_key = ("TASK", f"{job.job_id}/{task_dependency.task_key}")
201+
maybe_task_dependency = self._nodes.get(task_dependency_key)
202+
if maybe_task_dependency:
203+
self._outgoing_references[task_key].add(maybe_task_dependency)
204+
else:
205+
problem = DependencyProblem('task-dependency-not-found', f"Could not find task: {task_dependency}")
206+
problems.append(problem)
196207
return MaybeMigrationNode(job_node, problems)
197208

198209
def _register_workflow_task(self, task: jobs.Task, parent: MigrationNode) -> MaybeMigrationNode:

tests/unit/assessment/test_sequencing.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ def test_sequence_steps_from_job_task_referencing_other_task(ws, admin_locator)
316316
steps = list(sequencer.generate_steps())
317317
assert steps == [
318318
MigrationStep(
319-
step_id=1,
319+
step_id=2,
320320
step_number=0,
321321
object_type="TASK",
322322
object_id="1234/task1",
@@ -325,17 +325,17 @@ def test_sequence_steps_from_job_task_referencing_other_task(ws, admin_locator)
325325
required_step_ids=[],
326326
),
327327
MigrationStep(
328-
step_id=2,
329-
step_number=0,
328+
step_id=1,
329+
step_number=1,
330330
object_type="TASK",
331331
object_id="1234/task2",
332332
object_name="task2",
333333
object_owner="John Doe",
334-
required_step_ids=[1],
334+
required_step_ids=[2],
335335
),
336336
MigrationStep(
337337
step_id=0,
338-
step_number=1,
338+
step_number=2,
339339
object_type="JOB",
340340
object_id="1234",
341341
object_name="job",

0 commit comments

Comments
 (0)