Skip to content

Commit

Permalink
adding GetTaskInstanceTryDetails
Browse files Browse the repository at this point in the history
  • Loading branch information
kandharvishnuu committed Nov 5, 2024
1 parent 5f9fdf0 commit d42bb1b
Show file tree
Hide file tree
Showing 10 changed files with 381 additions and 0 deletions.
1 change: 1 addition & 0 deletions airflow/api_connexion/endpoints/task_instance_endpoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -728,6 +728,7 @@ def get_mapped_task_instance_dependencies(
)


@mark_fastapi_migration_done
@security.requires_access_dag("GET", DagAccessEntity.TASK_INSTANCE)
@provide_session
def get_task_instance_try_details(
Expand Down
63 changes: 63 additions & 0 deletions airflow/api_fastapi/core_api/openapi/v1-generated.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1916,6 +1916,69 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/public/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/tries/{task_try_number}:
get:
tags:
- Task Instance
summary: Get Task Instance Try Details
description: Get task instance details by try number.
operationId: get_task_instance_try_details
parameters:
- name: dag_id
in: path
required: true
schema:
type: string
title: Dag Id
- name: dag_run_id
in: path
required: true
schema:
type: string
title: Dag Run Id
- name: task_id
in: path
required: true
schema:
type: string
title: Task Id
- name: task_try_number
in: path
required: true
schema:
type: integer
title: Task Try Number
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/TaskInstanceResponse'
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPExceptionResponse'
description: Unauthorized
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPExceptionResponse'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPExceptionResponse'
description: Not Found
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/public/variables/{variable_key}:
delete:
tags:
Expand Down
35 changes: 35 additions & 0 deletions airflow/api_fastapi/core_api/routes/public/task_instances.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,3 +93,38 @@ async def get_mapped_task_instance(
)

return TaskInstanceResponse.model_validate(task_instance, from_attributes=True)


@task_instances_router.get(
"/{task_id}/tries/{task_try_number}", responses=create_openapi_http_exception_doc([401, 403, 404])
)
async def get_task_instance_try_details(
dag_id: str,
dag_run_id: str,
task_id: str,
task_try_number: int,
session: Annotated[Session, Depends(get_session)],
) -> TaskInstanceResponse:
"""Get task instance details by try number."""
query = (
select(TI)
.where(
TI.dag_id == dag_id,
TI.run_id == dag_run_id,
TI.task_id == task_id,
TI.try_number == task_try_number,
)
.join(TI.dag_run)
.options(joinedload(TI.rendered_task_instance_fields))
)
task_instance = session.scalar(query)

if task_instance is None:
raise HTTPException(
404,
f"The Task Instance with dag_id: `{dag_id}`, run_id: `{dag_run_id}`, task_id: `{task_id}` and try_number: `{task_try_number}` was not found",
)
if task_instance.map_index != -1:
raise HTTPException(404, "Task instance is mapped, add the map_index value to the URL")

return TaskInstanceResponse.model_validate(task_instance, from_attributes=True)
25 changes: 25 additions & 0 deletions airflow/ui/openapi-gen/queries/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -521,6 +521,31 @@ export const UseTaskInstanceServiceGetMappedTaskInstanceKeyFn = (
useTaskInstanceServiceGetMappedTaskInstanceKey,
...(queryKey ?? [{ dagId, dagRunId, mapIndex, taskId }]),
];
export type TaskInstanceServiceGetTaskInstanceTryDetailsDefaultResponse =
Awaited<ReturnType<typeof TaskInstanceService.getTaskInstanceTryDetails>>;
export type TaskInstanceServiceGetTaskInstanceTryDetailsQueryResult<
TData = TaskInstanceServiceGetTaskInstanceTryDetailsDefaultResponse,
TError = unknown,
> = UseQueryResult<TData, TError>;
export const useTaskInstanceServiceGetTaskInstanceTryDetailsKey =
"TaskInstanceServiceGetTaskInstanceTryDetails";
export const UseTaskInstanceServiceGetTaskInstanceTryDetailsKeyFn = (
{
dagId,
dagRunId,
taskId,
taskTryNumber,
}: {
dagId: string;
dagRunId: string;
taskId: string;
taskTryNumber: number;
},
queryKey?: Array<unknown>,
) => [
useTaskInstanceServiceGetTaskInstanceTryDetailsKey,
...(queryKey ?? [{ dagId, dagRunId, taskId, taskTryNumber }]),
];
export type VariableServiceGetVariableDefaultResponse = Awaited<
ReturnType<typeof VariableService.getVariable>
>;
Expand Down
40 changes: 40 additions & 0 deletions airflow/ui/openapi-gen/queries/prefetch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -670,6 +670,46 @@ export const prefetchUseTaskInstanceServiceGetMappedTaskInstance = (
taskId,
}),
});
/**
* Get Task Instance Try Details
* Get task instance details by try number.
* @param data The data for the request.
* @param data.dagId
* @param data.dagRunId
* @param data.taskId
* @param data.taskTryNumber
* @returns TaskInstanceResponse Successful Response
* @throws ApiError
*/
export const prefetchUseTaskInstanceServiceGetTaskInstanceTryDetails = (
queryClient: QueryClient,
{
dagId,
dagRunId,
taskId,
taskTryNumber,
}: {
dagId: string;
dagRunId: string;
taskId: string;
taskTryNumber: number;
},
) =>
queryClient.prefetchQuery({
queryKey: Common.UseTaskInstanceServiceGetTaskInstanceTryDetailsKeyFn({
dagId,
dagRunId,
taskId,
taskTryNumber,
}),
queryFn: () =>
TaskInstanceService.getTaskInstanceTryDetails({
dagId,
dagRunId,
taskId,
taskTryNumber,
}),
});
/**
* Get Variable
* Get a variable entry.
Expand Down
44 changes: 44 additions & 0 deletions airflow/ui/openapi-gen/queries/queries.ts
Original file line number Diff line number Diff line change
Expand Up @@ -842,6 +842,50 @@ export const useTaskInstanceServiceGetMappedTaskInstance = <
}) as TData,
...options,
});
/**
* Get Task Instance Try Details
* Get task instance details by try number.
* @param data The data for the request.
* @param data.dagId
* @param data.dagRunId
* @param data.taskId
* @param data.taskTryNumber
* @returns TaskInstanceResponse Successful Response
* @throws ApiError
*/
export const useTaskInstanceServiceGetTaskInstanceTryDetails = <
TData = Common.TaskInstanceServiceGetTaskInstanceTryDetailsDefaultResponse,
TError = unknown,
TQueryKey extends Array<unknown> = unknown[],
>(
{
dagId,
dagRunId,
taskId,
taskTryNumber,
}: {
dagId: string;
dagRunId: string;
taskId: string;
taskTryNumber: number;
},
queryKey?: TQueryKey,
options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">,
) =>
useQuery<TData, TError>({
queryKey: Common.UseTaskInstanceServiceGetTaskInstanceTryDetailsKeyFn(
{ dagId, dagRunId, taskId, taskTryNumber },
queryKey,
),
queryFn: () =>
TaskInstanceService.getTaskInstanceTryDetails({
dagId,
dagRunId,
taskId,
taskTryNumber,
}) as TData,
...options,
});
/**
* Get Variable
* Get a variable entry.
Expand Down
44 changes: 44 additions & 0 deletions airflow/ui/openapi-gen/queries/suspense.ts
Original file line number Diff line number Diff line change
Expand Up @@ -828,6 +828,50 @@ export const useTaskInstanceServiceGetMappedTaskInstanceSuspense = <
}) as TData,
...options,
});
/**
* Get Task Instance Try Details
* Get task instance details by try number.
* @param data The data for the request.
* @param data.dagId
* @param data.dagRunId
* @param data.taskId
* @param data.taskTryNumber
* @returns TaskInstanceResponse Successful Response
* @throws ApiError
*/
export const useTaskInstanceServiceGetTaskInstanceTryDetailsSuspense = <
TData = Common.TaskInstanceServiceGetTaskInstanceTryDetailsDefaultResponse,
TError = unknown,
TQueryKey extends Array<unknown> = unknown[],
>(
{
dagId,
dagRunId,
taskId,
taskTryNumber,
}: {
dagId: string;
dagRunId: string;
taskId: string;
taskTryNumber: number;
},
queryKey?: TQueryKey,
options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">,
) =>
useSuspenseQuery<TData, TError>({
queryKey: Common.UseTaskInstanceServiceGetTaskInstanceTryDetailsKeyFn(
{ dagId, dagRunId, taskId, taskTryNumber },
queryKey,
),
queryFn: () =>
TaskInstanceService.getTaskInstanceTryDetails({
dagId,
dagRunId,
taskId,
taskTryNumber,
}) as TData,
...options,
});
/**
* Get Variable
* Get a variable entry.
Expand Down
34 changes: 34 additions & 0 deletions airflow/ui/openapi-gen/requests/services.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ import type {
GetTaskInstanceResponse,
GetMappedTaskInstanceData,
GetMappedTaskInstanceResponse,
GetTaskInstanceTryDetailsData,
GetTaskInstanceTryDetailsResponse,
DeleteVariableData,
DeleteVariableResponse,
GetVariableData,
Expand Down Expand Up @@ -1117,6 +1119,38 @@ export class TaskInstanceService {
},
});
}

/**
* Get Task Instance Try Details
* Get task instance details by try number.
* @param data The data for the request.
* @param data.dagId
* @param data.dagRunId
* @param data.taskId
* @param data.taskTryNumber
* @returns TaskInstanceResponse Successful Response
* @throws ApiError
*/
public static getTaskInstanceTryDetails(
data: GetTaskInstanceTryDetailsData,
): CancelablePromise<GetTaskInstanceTryDetailsResponse> {
return __request(OpenAPI, {
method: "GET",
url: "/public/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/tries/{task_try_number}",
path: {
dag_id: data.dagId,
dag_run_id: data.dagRunId,
task_id: data.taskId,
task_try_number: data.taskTryNumber,
},
errors: {
401: "Unauthorized",
403: "Forbidden",
404: "Not Found",
422: "Validation Error",
},
});
}
}

export class VariableService {
Expand Down
36 changes: 36 additions & 0 deletions airflow/ui/openapi-gen/requests/types.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -934,6 +934,15 @@ export type GetMappedTaskInstanceData = {

export type GetMappedTaskInstanceResponse = TaskInstanceResponse;

export type GetTaskInstanceTryDetailsData = {
dagId: string;
dagRunId: string;
taskId: string;
taskTryNumber: number;
};

export type GetTaskInstanceTryDetailsResponse = TaskInstanceResponse;

export type DeleteVariableData = {
variableKey: string;
};
Expand Down Expand Up @@ -1857,6 +1866,33 @@ export type $OpenApiTs = {
};
};
};
"/public/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/tries/{task_try_number}": {
get: {
req: GetTaskInstanceTryDetailsData;
res: {
/**
* Successful Response
*/
200: TaskInstanceResponse;
/**
* Unauthorized
*/
401: HTTPExceptionResponse;
/**
* Forbidden
*/
403: HTTPExceptionResponse;
/**
* Not Found
*/
404: HTTPExceptionResponse;
/**
* Validation Error
*/
422: HTTPValidationError;
};
};
};
"/public/variables/{variable_key}": {
delete: {
req: DeleteVariableData;
Expand Down
Loading

0 comments on commit d42bb1b

Please sign in to comment.