This is an automated email from the ASF dual-hosted git repository.
jscheffl 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 0aa2ea73724 KubernetesPodOperator pushes XCom on successful execution.
(#58488)
0aa2ea73724 is described below
commit 0aa2ea73724544f1ce005effb3a77498974bd2b1
Author: AutomationDev85 <[email protected]>
AuthorDate: Thu Nov 20 22:15:16 2025 +0100
KubernetesPodOperator pushes XCom on successful execution. (#58488)
Co-authored-by: AutomationDev85 <AutomationDev85>
---
.../kubernetes/src/airflow/providers/cncf/kubernetes/operators/pod.py | 2 ++
.../cncf/kubernetes/tests/unit/cncf/kubernetes/operators/test_pod.py | 4 +++-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git
a/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/pod.py
b/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/pod.py
index 37339ebd631..cf836241311 100644
---
a/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/pod.py
+++
b/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/pod.py
@@ -935,6 +935,8 @@ class KubernetesPodOperator(BaseOperator):
raise
finally:
self._clean(event=event, context=context,
result=xcom_sidecar_output)
+ if self.do_xcom_push:
+ return xcom_sidecar_output
def _clean(self, event: dict[str, Any], result: dict | None, context:
Context) -> None:
if self.pod is None:
diff --git
a/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/operators/test_pod.py
b/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/operators/test_pod.py
index a061eead8fb..91069375b8d 100644
--- a/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/operators/test_pod.py
+++ b/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/operators/test_pod.py
@@ -2797,7 +2797,7 @@ def
test_async_kpo_wait_termination_before_cleanup_on_success(
}
k = KubernetesPodOperator(task_id="task", deferrable=True,
do_xcom_push=do_xcom_push)
- k.trigger_reentry({}, success_event)
+ result = k.trigger_reentry({}, success_event)
# check if it gets the pod
mocked_hook.return_value.get_pod.assert_called_once_with(TEST_NAME,
TEST_NAMESPACE)
@@ -2805,8 +2805,10 @@ def
test_async_kpo_wait_termination_before_cleanup_on_success(
# assert that the xcom are extracted/not extracted
if do_xcom_push:
mock_extract_xcom.assert_called_once()
+ assert result == mock_extract_xcom.return_value
else:
mock_extract_xcom.assert_not_called()
+ assert result is None
# check if it waits for the pod to complete
assert read_pod_mock.call_count == 3