Skip to content

Commit

Permalink
fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
romsharon98 committed Nov 6, 2024
1 parent 491ae92 commit b297cef
Show file tree
Hide file tree
Showing 7 changed files with 6 additions and 74 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ Read more on termination-log `here <https://kubernetes.io/docs/tasks/debug/debug
KubernetesPodOperator callbacks
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The :class:`~airflow.providers.cncf.kubernetes.operators.kubernetes_pod.KubernetesPodOperator` supports different
The :class:`~airflow.providers.cncf.kubernetes.operators.pod.KubernetesPodOperator` supports different
callbacks that can be used to trigger actions during the lifecycle of the pod. In order to use them, you need to
create a subclass of :class:`~airflow.providers.cncf.kubernetes.callbacks.KubernetesPodOperatorCallback` and override
the callbacks methods you want to use. Then you can pass your callback class to the operator using the ``callbacks``
Expand Down
7 changes: 1 addition & 6 deletions providers/src/airflow/providers/amazon/aws/operators/eks.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,9 @@
)
from airflow.providers.amazon.aws.utils import validate_execute_complete_event
from airflow.providers.amazon.aws.utils.waiter_with_logging import wait
from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperator
from airflow.providers.cncf.kubernetes.utils.pod_manager import OnFinishAction

try:
from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperator
except ImportError:
# preserve backward compatibility for older versions of cncf.kubernetes provider
from airflow.providers.cncf.kubernetes.operators.kubernetes_pod import KubernetesPodOperator

if TYPE_CHECKING:
from airflow.utils.context import Context

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ The following breaking changes were introduced:
* Remove ``execute_complete`` method from ``KubernetesPodOperator``. Use ``trigger_reentry`` instead.
* Remove ``xcom_push`` parameter from ``SparkKubernetesOperator``. Use ``do_xcom_push``.

* Triggeres
* Triggers
* Remove ``should_delete_pod`` parameter from ``KubernetesPodTrigger``. Use ``on_finish_action`` instead.

* Utils
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,10 @@
from __future__ import annotations

import re
from unittest import mock

import pytest

from airflow.exceptions import AirflowProviderDeprecationWarning
from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import create_pod_id, create_unique_id
from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import create_unique_id

pod_name_regex = r"^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$"

Expand Down Expand Up @@ -110,20 +108,3 @@ def test_create_pod_id(self, length, unique):
assert re.match(r"-[a-z0-9]{8}", actual[-9:])
else:
assert actual == base[:length]

@pytest.mark.parametrize("dag_id", ["fake-dag", None])
@pytest.mark.parametrize("task_id", ["fake-task", None])
@pytest.mark.parametrize("max_length", [10, 42, None])
@pytest.mark.parametrize("unique", [True, False])
def test_back_compat_create_pod_id(self, dag_id, task_id, max_length, unique):
with mock.patch(
"airflow.providers.cncf.kubernetes.kubernetes_helper_functions.create_unique_id"
) as mocked_create_unique_id:
with pytest.warns(
AirflowProviderDeprecationWarning, match=r"deprecated. Please use `create_unique_id`"
):
create_pod_id(dag_id, task_id, max_length=max_length, unique=unique)

mocked_create_unique_id.assert_called_once_with(
dag_id=dag_id, task_id=task_id, max_length=max_length, unique=unique
)
42 changes: 2 additions & 40 deletions providers/tests/cncf/kubernetes/test_pod_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
from airflow import __version__
from airflow.exceptions import AirflowConfigException, AirflowProviderDeprecationWarning
from airflow.providers.cncf.kubernetes.executors.kubernetes_executor import PodReconciliationError
from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import add_pod_suffix
from airflow.providers.cncf.kubernetes.pod_generator import (
PodDefaultsDeprecated,
PodGenerator,
datetime_to_label_safe_datestring,
extend_object_field,
Expand Down Expand Up @@ -160,41 +160,6 @@ def setup_method(self):
),
)

@mock.patch("airflow.providers.cncf.kubernetes.kubernetes_helper_functions.rand_str")
def test_gen_pod_extract_xcom(self, mock_rand_str, data_file):
"""
Method gen_pod is used nowhere in codebase and is deprecated.
This test is only retained for backcompat.
"""
mock_rand_str.return_value = self.rand_str
template_file = data_file("pods/generator_base_with_secrets.yaml").as_posix()

pod_generator = PodGenerator(pod_template_file=template_file, extract_xcom=True)
with pytest.warns(AirflowProviderDeprecationWarning):
result = pod_generator.gen_pod()
container_two = {
"name": "airflow-xcom-sidecar",
"image": "alpine",
"command": ["sh", "-c", PodDefaultsDeprecated.XCOM_CMD],
"volumeMounts": [{"name": "xcom", "mountPath": "/airflow/xcom"}],
"resources": {"requests": {"cpu": "1m"}},
}
self.expected.spec.containers.append(container_two)
base_container: k8s.V1Container = self.expected.spec.containers[0]
base_container.volume_mounts = base_container.volume_mounts or []
base_container.volume_mounts.append(k8s.V1VolumeMount(name="xcom", mount_path="/airflow/xcom"))
self.expected.spec.containers[0] = base_container
self.expected.spec.volumes = self.expected.spec.volumes or []
self.expected.spec.volumes.append(
k8s.V1Volume(
name="xcom",
empty_dir={},
)
)
result_dict = self.k8s_client.sanitize_for_serialization(result)
expected_dict = self.k8s_client.sanitize_for_serialization(self.expected)
assert result_dict == expected_dict

def test_from_obj_pod_override_object(self):
obj = {
"pod_override": k8s.V1Pod(
Expand Down Expand Up @@ -725,10 +690,7 @@ def test_deserialize_non_existent_model_file(self, caplog, tmp_path):
),
)
def test_pod_name_confirm_to_max_length(self, input):
with pytest.warns(
AirflowProviderDeprecationWarning, match="Use `add_pod_suffix` in `kubernetes_helper_functions`"
):
actual = PodGenerator.make_unique_pod_id(input)
actual = add_pod_suffix(input)
assert len(actual) <= 100
actual_base, actual_suffix = actual.rsplit("-", maxsplit=1)
# we limit pod id length to 100
Expand Down
2 changes: 0 additions & 2 deletions scripts/in_container/run_provider_yaml_files_check.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,6 @@
DEPRECATED_MODULES = [
"airflow.providers.apache.hdfs.sensors.hdfs",
"airflow.providers.apache.hdfs.hooks.hdfs",
"airflow.providers.cncf.kubernetes.triggers.kubernetes_pod",
"airflow.providers.cncf.kubernetes.operators.kubernetes_pod",
"airflow.providers.tabular.hooks.tabular",
"airflow.providers.yandex.hooks.yandexcloud_dataproc",
"airflow.providers.yandex.operators.yandexcloud_dataproc",
Expand Down
4 changes: 0 additions & 4 deletions tests/always/test_project_structure.py
Original file line number Diff line number Diff line change
Expand Up @@ -555,10 +555,6 @@ class TestElasticsearchProviderProjectStructure(ExampleCoverageTest):
class TestCncfProviderProjectStructure(ExampleCoverageTest):
PROVIDER = "cncf"
CLASS_DIRS = ProjectStructureTest.CLASS_DIRS
DEPRECATED_CLASSES = {
"airflow.providers.cncf.kubernetes.operators.kubernetes_pod",
"airflow.providers.cncf.kubernetes.triggers.kubernetes_pod",
}
BASE_CLASSES = {"airflow.providers.cncf.kubernetes.operators.resource.KubernetesResourceBaseOperator"}


Expand Down

0 comments on commit b297cef

Please sign in to comment.