Skip to content

Commit 3567eb0

Browse files
committed
[DOP-34829] Rename GET /v1/jobs/dependencies to /v1/jobs/hierarchy
1 parent 20ae79f commit 3567eb0

13 files changed

Lines changed: 51 additions & 51 deletions

File tree

data_rentgen/server/api/v1/router/dataset.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ async def paginate_datasets(
4545
return PageResponseV1[DatasetDetailedResponseV1].from_pagination(pagination)
4646

4747

48-
@router.get("/lineage", summary="Get Dataset lineage graph")
48+
@router.get("/lineage", summary="Get Dataset lineage graph", tags=["Lineage"])
4949
async def get_datasets_lineage(
5050
query_args: Annotated[DatasetLineageQueryV1, Query()],
5151
lineage_service: Annotated[LineageService, Depends()],

data_rentgen/server/api/v1/router/job.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
from data_rentgen.server.errors.schemas.invalid_request import InvalidRequestSchema
1010
from data_rentgen.server.errors.schemas.not_authorized import NotAuthorizedRedirectSchema, NotAuthorizedSchema
1111
from data_rentgen.server.schemas.v1 import (
12-
JobDependenciesQueryV1,
13-
JobDependenciesRelationsV1,
14-
JobDependenciesResponseV1,
1512
JobDetailedResponseV1,
13+
JobHierarchyQueryV1,
14+
JobHierarchyRelationsV1,
15+
JobHierarchyResponseV1,
1616
JobLineageQueryV1,
1717
JobPaginateQueryV1,
1818
JobResponseV1,
@@ -57,7 +57,7 @@ async def paginate_jobs(
5757
return PageResponseV1[JobDetailedResponseV1].from_pagination(pagination)
5858

5959

60-
@router.get("/lineage", summary="Get Job lineage graph")
60+
@router.get("/lineage", summary="Get Job lineage graph", tags=["Lineage"])
6161
async def get_jobs_lineage(
6262
query_args: Annotated[JobLineageQueryV1, Query()],
6363
lineage_service: Annotated[LineageService, Depends()],
@@ -85,39 +85,39 @@ async def get_job_types(
8585
return JobTypesResponseV1(job_types=list(job_types))
8686

8787

88-
@router.get("/dependencies", summary="Get ancestors and descendans of the Jobs")
89-
async def get_job_dependencies(
90-
query_args: Annotated[JobDependenciesQueryV1, Depends()],
88+
@router.get("/hierarchy", summary="Get ancestors and descendans of the Jobs", tags=["Hierarchy"])
89+
async def get_job_hierarchy(
90+
query_args: Annotated[JobHierarchyQueryV1, Depends()],
9191
job_service: Annotated[JobService, Depends()],
9292
current_user: Annotated[User, Depends(get_user())],
93-
) -> JobDependenciesResponseV1:
94-
job_dependencies = await job_service.get_job_dependencies(
93+
) -> JobHierarchyResponseV1:
94+
job_hierarchy = await job_service.get_jobs_hierarchy(
9595
start_node_id=query_args.start_node_id,
9696
direction=query_args.direction,
9797
depth=query_args.depth,
9898
)
99-
return JobDependenciesResponseV1(
100-
relations=JobDependenciesRelationsV1(
99+
return JobHierarchyResponseV1(
100+
relations=JobHierarchyRelationsV1(
101101
parents=[
102102
JobParentEntityRelationV1(
103103
from_=JobEntityV1(id=str(from_id)),
104104
to=JobEntityV1(id=str(to_id)),
105105
)
106-
for from_id, to_id in sorted(job_dependencies.parents)
106+
for from_id, to_id in sorted(job_hierarchy.parents)
107107
],
108108
dependencies=[
109109
JobDependencyV1(
110110
from_=JobEntityV1(id=str(from_id)),
111111
to=JobEntityV1(id=str(to_id)),
112112
type_=type_,
113113
)
114-
for from_id, to_id, type_ in sorted(job_dependencies.dependencies)
114+
for from_id, to_id, type_ in sorted(job_hierarchy.dependencies)
115115
],
116116
),
117117
nodes={
118118
"jobs": {
119119
str(job.id): JobResponseV1.model_validate(job.data)
120-
for job in sorted(job_dependencies.jobs, key=lambda item: item.id)
120+
for job in sorted(job_hierarchy.jobs, key=lambda item: item.id)
121121
}
122122
},
123123
)

data_rentgen/server/api/v1/router/operation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ async def operations(
4343
return PageResponseV1[OperationDetailedResponseV1].from_pagination(pagination)
4444

4545

46-
@router.get("/lineage", summary="Get Operation lineage graph")
46+
@router.get("/lineage", summary="Get Operation lineage graph", tags=["Lineage"])
4747
async def get_operations_lineage(
4848
query_args: Annotated[OperationLineageQueryV1, Query()],
4949
lineage_service: Annotated[LineageService, Depends()],

data_rentgen/server/api/v1/router/run.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ async def runs(
5151
return PageResponseV1[RunDetailedResponseV1].from_pagination(pagination)
5252

5353

54-
@router.get("/lineage", summary="Get Run lineage graph")
54+
@router.get("/lineage", summary="Get Run lineage graph", tags=["Lineage"])
5555
async def get_runs_lineage(
5656
query_args: Annotated[RunLineageQueryV1, Query()],
5757
lineage_service: Annotated[LineageService, Depends()],

data_rentgen/server/schemas/v1/__init__.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
DatasetSchemaV1,
1010
)
1111
from data_rentgen.server.schemas.v1.job import (
12-
JobDependenciesQueryV1,
13-
JobDependenciesRelationsV1,
14-
JobDependenciesResponseV1,
1512
JobDetailedResponseV1,
13+
JobHierarchyQueryV1,
14+
JobHierarchyRelationsV1,
15+
JobHierarchyResponseV1,
1616
JobPaginateQueryV1,
1717
JobResponseV1,
1818
JobTypesResponseV1,
@@ -87,10 +87,10 @@
8787
"DatasetSchemaV1",
8888
"DirectLineageColumnRelationV1",
8989
"IndirectLineageColumnRelationV1",
90-
"JobDependenciesQueryV1",
91-
"JobDependenciesRelationsV1",
92-
"JobDependenciesResponseV1",
9390
"JobDetailedResponseV1",
91+
"JobHierarchyQueryV1",
92+
"JobHierarchyRelationsV1",
93+
"JobHierarchyResponseV1",
9494
"JobLineageQueryV1",
9595
"JobPaginateQueryV1",
9696
"JobResponseV1",

data_rentgen/server/schemas/v1/job.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,17 +51,17 @@ class JobParentEntityRelationV1(BaseModel):
5151
to: JobEntityV1 = Field(description="End point of relation")
5252

5353

54-
class JobDependenciesRelationsV1(BaseModel):
54+
class JobHierarchyRelationsV1(BaseModel):
5555
parents: list[JobParentEntityRelationV1] = Field(description="Parent relations", default_factory=list)
5656
dependencies: list[JobDependencyV1] = Field(description="Job dependencies", default_factory=list)
5757

5858

59-
class JobDependenciesResponseV1(BaseModel):
59+
class JobHierarchyResponseV1(BaseModel):
6060
"Job dependencies"
6161

62-
relations: JobDependenciesRelationsV1 = Field(
62+
relations: JobHierarchyRelationsV1 = Field(
6363
description="Job parents and dependencies relations",
64-
default_factory=JobDependenciesRelationsV1,
64+
default_factory=JobHierarchyRelationsV1,
6565
)
6666
nodes: dict[str, dict[str, JobResponseV1]] = Field(description="Job nodes", default_factory=dict)
6767

@@ -110,12 +110,12 @@ class JobPaginateQueryV1(PaginateQueryV1):
110110
model_config = ConfigDict(extra="forbid")
111111

112112

113-
class JobDependenciesQueryV1(BaseModel):
113+
class JobHierarchyQueryV1(BaseModel):
114114
start_node_id: int = Field(description="Job id", examples=[42])
115115
direction: Literal["DOWNSTREAM", "UPSTREAM", "BOTH"] = Field(
116116
default="BOTH",
117117
description="Direction of the lineage",
118118
examples=["DOWNSTREAM", "UPSTREAM", "BOTH"],
119119
)
120-
depth: int = Field(description="Depth of dependencies between jobs", default=1)
120+
depth: int = Field(description="Levels of dependencies to dive into", default=1)
121121
model_config = ConfigDict(extra="ignore")

data_rentgen/server/services/job.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class JobServicePaginatedResult(PaginationDTO[JobServiceResult]):
6363

6464

6565
@dataclass
66-
class JobDependenciesResult:
66+
class JobHierarchyResult:
6767
parents: set[tuple[int, int]] = field(default_factory=set)
6868
dependencies: set[tuple[int, int, str | None]] = field(default_factory=set)
6969
jobs: list[JobServiceResult] = field(default_factory=list)
@@ -107,14 +107,14 @@ async def paginate(
107107
async def get_job_types(self) -> Sequence[str]:
108108
return await self._uow.job_type.get_job_types()
109109

110-
async def get_job_dependencies(
110+
async def get_jobs_hierarchy(
111111
self,
112112
start_node_id: int,
113113
direction: Literal["UPSTREAM", "DOWNSTREAM", "BOTH"],
114114
depth: int,
115-
) -> JobDependenciesResult:
115+
) -> JobHierarchyResult:
116116
logger.info(
117-
"Get Job dependencies with start at job with id %s and next params: direction: %s, depth: %s",
117+
"Get jobs hierarchy with start at job with id %s, direction %s, depth %s",
118118
start_node_id,
119119
direction,
120120
depth,
@@ -140,7 +140,7 @@ async def get_job_dependencies(
140140
ancestor_relations += await self._uow.job.list_ancestor_relations(list(dependency_job_ids))
141141
job_ids |= {p.parent_job_id for p in ancestor_relations}
142142
jobs = await self._uow.job.list_by_ids(list(job_ids))
143-
return JobDependenciesResult(
143+
return JobHierarchyResult(
144144
parents={(p.parent_job_id, p.child_job_id) for p in ancestor_relations + descendant_relations},
145145
dependencies={(d.from_job_id, d.to_job_id, d.type) for d in dependencies},
146146
jobs=[JobServiceResult.from_orm(job) for job in jobs],
109 KB
Loading

docs/entities/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ It contains following fields:
333333
- ``to: Job | Run`` - entity which waits.
334334
- ``type: str`` - type of dependency, any arbitrary string provided by integration, usually something like ``DIRECT_DEPENDENCY``, ``INDIRECT_DEPENDENCY``.
335335

336-
.. image:: job_dependencies.png
336+
.. image:: dependency_relation.png
337337

338338
Input relation
339339
~~~~~~~~~~~~~~

docs/entities/job_dependencies.png

-129 KB
Binary file not shown.

0 commit comments

Comments
 (0)