This is an automated email from the ASF dual-hosted git repository.
kaxilnaik 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 3dbed17b0ef AIP-72 Add default api version for Execution API (#48548)
3dbed17b0ef is described below
commit 3dbed17b0ef52b3a46483219feb4b311251990eb
Author: Kalyan R <[email protected]>
AuthorDate: Mon Mar 31 17:33:34 2025 +0530
AIP-72 Add default api version for Execution API (#48548)
closes #48021
---
airflow-core/pyproject.toml | 2 +-
airflow-core/src/airflow/api_fastapi/execution_api/app.py | 1 +
airflow-core/tests/unit/api_fastapi/execution_api/conftest.py | 4 +---
airflow-core/tests/unit/api_fastapi/execution_api/test_app.py | 7 +++++++
.../execution_api/versions/v2025_03_19/test_task_instances.py | 1 +
5 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/airflow-core/pyproject.toml b/airflow-core/pyproject.toml
index 105f3bbfdd7..c11e69ae046 100644
--- a/airflow-core/pyproject.toml
+++ b/airflow-core/pyproject.toml
@@ -69,7 +69,7 @@ dependencies = [
"argcomplete>=1.10",
"asgiref>=2.3.0",
"attrs>=22.1.0, !=25.2.0",
- "cadwyn>=5.1.3",
+ "cadwyn>=5.2.1",
"colorlog>=6.8.2",
"cron-descriptor>=1.2.24",
"croniter>=2.0.2",
diff --git a/airflow-core/src/airflow/api_fastapi/execution_api/app.py
b/airflow-core/src/airflow/api_fastapi/execution_api/app.py
index 8e73cfd08c4..d2fe78198b5 100644
--- a/airflow-core/src/airflow/api_fastapi/execution_api/app.py
+++ b/airflow-core/src/airflow/api_fastapi/execution_api/app.py
@@ -132,6 +132,7 @@ def create_task_execution_api_app() -> FastAPI:
description="The private Airflow Task Execution API.",
lifespan=lifespan,
api_version_parameter_name="Airflow-API-Version",
+ api_version_default_value=bundle.versions[0].value,
versions=bundle,
)
diff --git a/airflow-core/tests/unit/api_fastapi/execution_api/conftest.py
b/airflow-core/tests/unit/api_fastapi/execution_api/conftest.py
index 14ea02263f9..25dd84f92c4 100644
--- a/airflow-core/tests/unit/api_fastapi/execution_api/conftest.py
+++ b/airflow-core/tests/unit/api_fastapi/execution_api/conftest.py
@@ -31,9 +31,7 @@ def client(request: pytest.FixtureRequest):
app = cached_app(apps="execution")
# By specifying a "far-future" date, this will make the tests always run
against the latest version
- with TestClient(
- app, headers={"Authorization": "Bearer fake", "Airflow-API-Version":
"9999-12-31"}
- ) as client:
+ with TestClient(app, headers={"Authorization": "Bearer fake"}) as client:
auth = AsyncMock(spec=JWTValidator)
auth.avalidated_claims.return_value = {"sub":
"edb09971-4e0e-4221-ad3f-800852d38085"}
diff --git a/airflow-core/tests/unit/api_fastapi/execution_api/test_app.py
b/airflow-core/tests/unit/api_fastapi/execution_api/test_app.py
index 1baa9487ce6..76a8269c2c1 100644
--- a/airflow-core/tests/unit/api_fastapi/execution_api/test_app.py
+++ b/airflow-core/tests/unit/api_fastapi/execution_api/test_app.py
@@ -19,6 +19,7 @@ from __future__ import annotations
import pytest
from airflow.api_fastapi.execution_api.datamodels.taskinstance import
TaskInstance
+from airflow.api_fastapi.execution_api.versions import bundle
pytestmark = pytest.mark.db_test
@@ -34,3 +35,9 @@ def test_custom_openapi_includes_extra_schemas(client):
schema = openapi_schema["components"]["schemas"]["TaskInstance"]
assert schema == TaskInstance.model_json_schema()
+
+
+def test_access_api_contract(client):
+ response = client.get("/execution/docs")
+ assert response.status_code == 200
+ assert response.headers["airflow-api-version"] == bundle.versions[0].value
diff --git
a/airflow-core/tests/unit/api_fastapi/execution_api/versions/v2025_03_19/test_task_instances.py
b/airflow-core/tests/unit/api_fastapi/execution_api/versions/v2025_03_19/test_task_instances.py
index 9ac6880ba04..a57bdb32638 100644
---
a/airflow-core/tests/unit/api_fastapi/execution_api/versions/v2025_03_19/test_task_instances.py
+++
b/airflow-core/tests/unit/api_fastapi/execution_api/versions/v2025_03_19/test_task_instances.py
@@ -69,5 +69,6 @@ class TestTIUpdateState:
},
)
assert response.status_code == expected_status_code
+ assert response.headers["airflow-api-version"] == "2025-03-19"
session.expire_all()