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

Reply via email to