This is an automated email from the ASF dual-hosted git repository.
jasonliu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new a0b3a3b8b48 Update BulkDeleteAction to use generic type (#59207)
a0b3a3b8b48 is described below
commit a0b3a3b8b48b718fa346b2c6e2863c6e0de9e71d
Author: Guan-Ming (Wesley) Chiu <[email protected]>
AuthorDate: Tue Dec 9 08:39:50 2025 +0800
Update BulkDeleteAction to use generic type (#59207)
---
.../api_fastapi/core_api/datamodels/common.py | 3 +-
.../core_api/openapi/v2-rest-api-generated.yaml | 6 +-
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 6 +-
.../airflow/ui/openapi-gen/requests/types.gen.ts | 6 +-
.../src/airflowctl/api/datamodels/generated.py | 122 ++++++++++-----------
5 files changed, 71 insertions(+), 72 deletions(-)
diff --git a/airflow-core/src/airflow/api_fastapi/core_api/datamodels/common.py
b/airflow-core/src/airflow/api_fastapi/core_api/datamodels/common.py
index 32eb2c232ae..48b55f2f1e6 100644
--- a/airflow-core/src/airflow/api_fastapi/core_api/datamodels/common.py
+++ b/airflow-core/src/airflow/api_fastapi/core_api/datamodels/common.py
@@ -28,7 +28,6 @@ from typing import Annotated, Any, Generic, Literal, TypeVar,
Union
from pydantic import Discriminator, Field, Tag
from airflow.api_fastapi.core_api.base import BaseModel, StrictBaseModel
-from airflow.api_fastapi.core_api.datamodels.task_instances import
BulkTaskInstanceBody
# Common Bulk Data Models
T = TypeVar("T")
@@ -92,7 +91,7 @@ class BulkDeleteAction(BulkBaseAction[T]):
"""Bulk Delete entity serializer for request bodies."""
action: Literal[BulkAction.DELETE] = Field(description="The action to be
performed on the entities.")
- entities: list[Union[str, BulkTaskInstanceBody]] = Field(
+ entities: list[Union[str, T]] = Field(
...,
description="A list of entity id/key or entity objects to be deleted.",
)
diff --git
a/airflow-core/src/airflow/api_fastapi/core_api/openapi/v2-rest-api-generated.yaml
b/airflow-core/src/airflow/api_fastapi/core_api/openapi/v2-rest-api-generated.yaml
index d3d4ca3976e..1cc83846212 100644
---
a/airflow-core/src/airflow/api_fastapi/core_api/openapi/v2-rest-api-generated.yaml
+++
b/airflow-core/src/airflow/api_fastapi/core_api/openapi/v2-rest-api-generated.yaml
@@ -9275,7 +9275,7 @@ components:
items:
anyOf:
- type: string
- - $ref: '#/components/schemas/BulkTaskInstanceBody'
+ - $ref: '#/components/schemas/ConnectionBody'
type: array
title: Entities
description: A list of entity id/key or entity objects to be deleted.
@@ -9299,7 +9299,7 @@ components:
items:
anyOf:
- type: string
- - $ref: '#/components/schemas/BulkTaskInstanceBody'
+ - $ref: '#/components/schemas/PoolBody'
type: array
title: Entities
description: A list of entity id/key or entity objects to be deleted.
@@ -9323,7 +9323,7 @@ components:
items:
anyOf:
- type: string
- - $ref: '#/components/schemas/BulkTaskInstanceBody'
+ - $ref: '#/components/schemas/VariableBody'
type: array
title: Entities
description: A list of entity id/key or entity objects to be deleted.
diff --git a/airflow-core/src/airflow/ui/openapi-gen/requests/schemas.gen.ts
b/airflow-core/src/airflow/ui/openapi-gen/requests/schemas.gen.ts
index f5c194142c1..aa3e4cbe958 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/requests/schemas.gen.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/requests/schemas.gen.ts
@@ -863,7 +863,7 @@ export const $BulkDeleteAction_ConnectionBody_ = {
type: 'string'
},
{
- '$ref': '#/components/schemas/BulkTaskInstanceBody'
+ '$ref': '#/components/schemas/ConnectionBody'
}
]
},
@@ -897,7 +897,7 @@ export const $BulkDeleteAction_PoolBody_ = {
type: 'string'
},
{
- '$ref': '#/components/schemas/BulkTaskInstanceBody'
+ '$ref': '#/components/schemas/PoolBody'
}
]
},
@@ -931,7 +931,7 @@ export const $BulkDeleteAction_VariableBody_ = {
type: 'string'
},
{
- '$ref': '#/components/schemas/BulkTaskInstanceBody'
+ '$ref': '#/components/schemas/VariableBody'
}
]
},
diff --git a/airflow-core/src/airflow/ui/openapi-gen/requests/types.gen.ts
b/airflow-core/src/airflow/ui/openapi-gen/requests/types.gen.ts
index eb0d872cefb..be194652722 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/requests/types.gen.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/requests/types.gen.ts
@@ -269,7 +269,7 @@ export type BulkDeleteAction_ConnectionBody_ = {
/**
* A list of entity id/key or entity objects to be deleted.
*/
- entities: Array<(string | BulkTaskInstanceBody)>;
+ entities: Array<(string | ConnectionBody)>;
action_on_non_existence?: BulkActionNotOnExistence;
};
@@ -281,7 +281,7 @@ export type BulkDeleteAction_PoolBody_ = {
/**
* A list of entity id/key or entity objects to be deleted.
*/
- entities: Array<(string | BulkTaskInstanceBody)>;
+ entities: Array<(string | PoolBody)>;
action_on_non_existence?: BulkActionNotOnExistence;
};
@@ -293,7 +293,7 @@ export type BulkDeleteAction_VariableBody_ = {
/**
* A list of entity id/key or entity objects to be deleted.
*/
- entities: Array<(string | BulkTaskInstanceBody)>;
+ entities: Array<(string | VariableBody)>;
action_on_non_existence?: BulkActionNotOnExistence;
};
diff --git a/airflow-ctl/src/airflowctl/api/datamodels/generated.py
b/airflow-ctl/src/airflowctl/api/datamodels/generated.py
index 7a8cd4396ba..cb3ff8db9e8 100644
--- a/airflow-ctl/src/airflowctl/api/datamodels/generated.py
+++ b/airflow-ctl/src/airflowctl/api/datamodels/generated.py
@@ -1152,6 +1152,48 @@ class BulkCreateActionVariableBody(BaseModel):
action_on_existence: BulkActionOnExistence | None = "fail"
+class BulkDeleteActionConnectionBody(BaseModel):
+ model_config = ConfigDict(
+ extra="forbid",
+ )
+ action: Annotated[
+ Literal["delete"], Field(description="The action to be performed on
the entities.", title="Action")
+ ]
+ entities: Annotated[
+ list[str | ConnectionBody],
+ Field(description="A list of entity id/key or entity objects to be
deleted.", title="Entities"),
+ ]
+ action_on_non_existence: BulkActionNotOnExistence | None = "fail"
+
+
+class BulkDeleteActionPoolBody(BaseModel):
+ model_config = ConfigDict(
+ extra="forbid",
+ )
+ action: Annotated[
+ Literal["delete"], Field(description="The action to be performed on
the entities.", title="Action")
+ ]
+ entities: Annotated[
+ list[str | PoolBody],
+ Field(description="A list of entity id/key or entity objects to be
deleted.", title="Entities"),
+ ]
+ action_on_non_existence: BulkActionNotOnExistence | None = "fail"
+
+
+class BulkDeleteActionVariableBody(BaseModel):
+ model_config = ConfigDict(
+ extra="forbid",
+ )
+ action: Annotated[
+ Literal["delete"], Field(description="The action to be performed on
the entities.", title="Action")
+ ]
+ entities: Annotated[
+ list[str | VariableBody],
+ Field(description="A list of entity id/key or entity objects to be
deleted.", title="Entities"),
+ ]
+ action_on_non_existence: BulkActionNotOnExistence | None = "fail"
+
+
class BulkTaskInstanceBody(BaseModel):
"""
Request body for bulk update, and delete task instances.
@@ -1804,62 +1846,52 @@ class BackfillCollectionResponse(BaseModel):
total_entries: Annotated[int, Field(title="Total Entries")]
-class BulkCreateActionBulkTaskInstanceBody(BaseModel):
+class BulkBodyConnectionBody(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
- action: Annotated[
- Literal["create"], Field(description="The action to be performed on
the entities.", title="Action")
- ]
- entities: Annotated[
- list[BulkTaskInstanceBody], Field(description="A list of entities to
be created.", title="Entities")
+ actions: Annotated[
+ list[
+ BulkCreateActionConnectionBody | BulkUpdateActionConnectionBody |
BulkDeleteActionConnectionBody
+ ],
+ Field(title="Actions"),
]
- action_on_existence: BulkActionOnExistence | None = "fail"
-class BulkDeleteActionBulkTaskInstanceBody(BaseModel):
+class BulkBodyPoolBody(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
- action: Annotated[
- Literal["delete"], Field(description="The action to be performed on
the entities.", title="Action")
- ]
- entities: Annotated[
- list[str | BulkTaskInstanceBody],
- Field(description="A list of entity id/key or entity objects to be
deleted.", title="Entities"),
+ actions: Annotated[
+ list[BulkCreateActionPoolBody | BulkUpdateActionPoolBody |
BulkDeleteActionPoolBody],
+ Field(title="Actions"),
]
- action_on_non_existence: BulkActionNotOnExistence | None = "fail"
-class BulkDeleteActionConnectionBody(BaseModel):
+class BulkBodyVariableBody(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
- action: Annotated[
- Literal["delete"], Field(description="The action to be performed on
the entities.", title="Action")
- ]
- entities: Annotated[
- list[str | BulkTaskInstanceBody],
- Field(description="A list of entity id/key or entity objects to be
deleted.", title="Entities"),
+ actions: Annotated[
+ list[BulkCreateActionVariableBody | BulkUpdateActionVariableBody |
BulkDeleteActionVariableBody],
+ Field(title="Actions"),
]
- action_on_non_existence: BulkActionNotOnExistence | None = "fail"
-class BulkDeleteActionPoolBody(BaseModel):
+class BulkCreateActionBulkTaskInstanceBody(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
action: Annotated[
- Literal["delete"], Field(description="The action to be performed on
the entities.", title="Action")
+ Literal["create"], Field(description="The action to be performed on
the entities.", title="Action")
]
entities: Annotated[
- list[str | BulkTaskInstanceBody],
- Field(description="A list of entity id/key or entity objects to be
deleted.", title="Entities"),
+ list[BulkTaskInstanceBody], Field(description="A list of entities to
be created.", title="Entities")
]
- action_on_non_existence: BulkActionNotOnExistence | None = "fail"
+ action_on_existence: BulkActionOnExistence | None = "fail"
-class BulkDeleteActionVariableBody(BaseModel):
+class BulkDeleteActionBulkTaskInstanceBody(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
@@ -1987,35 +2019,3 @@ class BulkBodyBulkTaskInstanceBody(BaseModel):
],
Field(title="Actions"),
]
-
-
-class BulkBodyConnectionBody(BaseModel):
- model_config = ConfigDict(
- extra="forbid",
- )
- actions: Annotated[
- list[
- BulkCreateActionConnectionBody | BulkUpdateActionConnectionBody |
BulkDeleteActionConnectionBody
- ],
- Field(title="Actions"),
- ]
-
-
-class BulkBodyPoolBody(BaseModel):
- model_config = ConfigDict(
- extra="forbid",
- )
- actions: Annotated[
- list[BulkCreateActionPoolBody | BulkUpdateActionPoolBody |
BulkDeleteActionPoolBody],
- Field(title="Actions"),
- ]
-
-
-class BulkBodyVariableBody(BaseModel):
- model_config = ConfigDict(
- extra="forbid",
- )
- actions: Annotated[
- list[BulkCreateActionVariableBody | BulkUpdateActionVariableBody |
BulkDeleteActionVariableBody],
- Field(title="Actions"),
- ]