Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ def __init__(
api_group: str = "flink.apache.org",
api_version: str = "v1beta1",
plural: str = "flinkdeployments",
taskmanager_pods_namespace: str | None = None,
**kwargs,
) -> None:
super().__init__(**kwargs)
Expand All @@ -73,6 +74,7 @@ def __init__(
self.api_group = api_group
self.api_version = api_version
self.plural = plural
self.taskmanager_pods_namespace = taskmanager_pods_namespace

def _log_driver(self, application_state: str, response: dict) -> None:
log_method = self.log.error if application_state in self.FAILURE_STATES else self.log.info
Expand All @@ -88,7 +90,9 @@ def _log_driver(self, application_state: str, response: dict) -> None:

task_manager_labels = status_info["taskManager"]["labelSelector"]
all_pods = self.hook.get_namespaced_pod_list(
namespace="default", watch=False, label_selector=task_manager_labels
namespace=self.taskmanager_pods_namespace or self.namespace or "default",
watch=False,
label_selector=task_manager_labels,
)

namespace = response["metadata"]["namespace"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1143,6 +1143,76 @@ def test_driver_logging_completed(
name="flink-stream-example",
)

@patch(
"kubernetes.client.api.custom_objects_api.CustomObjectsApi.get_namespaced_custom_object",
return_value=TEST_READY_CLUSTER,
)
@patch("logging.Logger.info")
@patch(
"airflow.providers.cncf.kubernetes.hooks.kubernetes.KubernetesHook.get_pod_logs",
return_value=TEST_POD_LOGS,
)
@patch(
"airflow.providers.cncf.kubernetes.hooks.kubernetes.KubernetesHook.get_namespaced_pod_list",
return_value=TASK_MANAGER_POD_LIST,
)
def test_logging_taskmanager_from_taskmanager_namespace_when_namespace_is_set(
self, mock_namespaced_pod_list, mock_pod_logs, info_log_call, mock_namespaced_crd, mock_kube_conn
):
namespace = "different-namespace123456"
namespae_name = "test123"

sensor = FlinkKubernetesSensor(
application_name="flink-stream-example",
namespace=namespace,
taskmanager_pods_namespace=namespae_name,
attach_log=True,
dag=self.dag,
task_id="test_task_id",
)

sensor.poke(context=None)

mock_namespaced_pod_list.assert_called_once_with(
namespace=namespae_name,
watch=False,
label_selector="component=taskmanager,app=flink-stream-example",
)

@patch(
"kubernetes.client.api.custom_objects_api.CustomObjectsApi.get_namespaced_custom_object",
return_value=TEST_READY_CLUSTER,
)
@patch("logging.Logger.info")
@patch(
"airflow.providers.cncf.kubernetes.hooks.kubernetes.KubernetesHook.get_pod_logs",
return_value=TEST_POD_LOGS,
)
@patch(
"airflow.providers.cncf.kubernetes.hooks.kubernetes.KubernetesHook.get_namespaced_pod_list",
return_value=TASK_MANAGER_POD_LIST,
)
def test_logging_taskmanager_from_non_default_namespace(
self, mock_namespaced_pod_list, mock_pod_logs, info_log_call, mock_namespaced_crd, mock_kube_conn
):
namespae_name = "test123"

sensor = FlinkKubernetesSensor(
application_name="flink-stream-example",
namespace=namespae_name,
attach_log=True,
dag=self.dag,
task_id="test_task_id",
)

sensor.poke(context=None)

mock_namespaced_pod_list.assert_called_once_with(
namespace=namespae_name,
watch=False,
label_selector="component=taskmanager,app=flink-stream-example",
)

@patch(
"kubernetes.client.api.custom_objects_api.CustomObjectsApi.get_namespaced_custom_object",
return_value=TEST_READY_CLUSTER,
Expand Down