This is an automated email from the ASF dual-hosted git repository.
potiuk 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 fa4a73ccc5e Removal of deprecated items scheduled for May and June
(#51646)
fa4a73ccc5e is described below
commit fa4a73ccc5e0907ec1a4e1cbd7f4fe5253c33b46
Author: Nitochkin <[email protected]>
AuthorDate: Thu Jun 12 18:51:24 2025 +0200
Removal of deprecated items scheduled for May and June (#51646)
Co-authored-by: Anton Nitochkin <[email protected]>
---
providers/google/docs/changelog.rst | 4 +
.../google/cloud/hooks/vertex_ai/auto_ml.py | 36 ---------
.../google/cloud/operators/kubernetes_engine.py | 88 +---------------------
.../google/cloud/dataproc/example_dataproc_gke.py | 2 +-
.../kubernetes_engine/example_kubernetes_engine.py | 2 +-
.../example_kubernetes_engine_async.py | 2 +-
.../example_kubernetes_engine_job.py | 2 +-
.../example_kubernetes_engine_kueue.py | 2 +-
.../example_kubernetes_engine_resource.py | 2 +-
.../cloud/operators/test_kubernetes_engine.py | 83 +++++---------------
10 files changed, 31 insertions(+), 192 deletions(-)
diff --git a/providers/google/docs/changelog.rst
b/providers/google/docs/changelog.rst
index 67e2474b343..b3bc4d56b51 100644
--- a/providers/google/docs/changelog.rst
+++ b/providers/google/docs/changelog.rst
@@ -40,6 +40,9 @@ Breaking changes
* Operators
* ``Remove operator TextGenerationModelPredictOperator use
GenerativeModelGenerateContentOperator instead``
+ * ``Remove name attribute from GKEDeleteClusterOperator operator please use
cluster_name instead``
+ * ``Remove regional attribute from GKEStartPodOperator because parameter is
not in actual use``
+ * ``Remove is_delete_operator_pod attribute from GKEStartPodOperator please
use on_finish_action attribute instead``
* Hooks
@@ -47,6 +50,7 @@ Breaking changes
* ``Remove GenerativeModelHook.text_generation_model_predict use
GenerativeModelHook.generative_model_generate_content instead``
* ``Remove split_tablename function from
airflow.providers.google.cloud.hooks.bigquery``
``use
airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.split_tablename
instead``
+ * ``Remove get_auto_ml_text_training_job method from AutoMLHook because of
deprecation of AutoMLText API``
* Links
diff --git
a/providers/google/src/airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py
b/providers/google/src/airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py
index d0a3407ae30..c3d453b4594 100644
---
a/providers/google/src/airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py
+++
b/providers/google/src/airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py
@@ -185,42 +185,6 @@ class AutoMLHook(GoogleBaseHook, OperationHelper):
model_encryption_spec_key_name=model_encryption_spec_key_name,
)
- @deprecated(
- planned_removal_date="June 15, 2025",
- category=AirflowProviderDeprecationWarning,
- reason="Deprecation of AutoMLText API",
- )
- def get_auto_ml_text_training_job(
- self,
- display_name: str,
- prediction_type: str,
- multi_label: bool = False,
- sentiment_max: int = 10,
- project: str | None = None,
- location: str | None = None,
- labels: dict[str, str] | None = None,
- training_encryption_spec_key_name: str | None = None,
- model_encryption_spec_key_name: str | None = None,
- ) -> AutoMLTextTrainingJob:
- """
- Return AutoMLTextTrainingJob object.
-
- WARNING: Text creation API is deprecated since September 15, 2024
-
(https://cloud.google.com/vertex-ai/docs/tutorials/text-classification-automl/overview).
- """
- return AutoMLTextTrainingJob(
- display_name=display_name,
- prediction_type=prediction_type,
- multi_label=multi_label,
- sentiment_max=sentiment_max,
- project=project,
- location=location,
- credentials=self.get_credentials(),
- labels=labels,
-
training_encryption_spec_key_name=training_encryption_spec_key_name,
- model_encryption_spec_key_name=model_encryption_spec_key_name,
- )
-
def get_auto_ml_video_training_job(
self,
display_name: str,
diff --git
a/providers/google/src/airflow/providers/google/cloud/operators/kubernetes_engine.py
b/providers/google/src/airflow/providers/google/cloud/operators/kubernetes_engine.py
index 97963ce99ec..ef692eba1bc 100644
---
a/providers/google/src/airflow/providers/google/cloud/operators/kubernetes_engine.py
+++
b/providers/google/src/airflow/providers/google/cloud/operators/kubernetes_engine.py
@@ -57,7 +57,6 @@ from
airflow.providers.google.cloud.triggers.kubernetes_engine import (
GKEOperationTrigger,
GKEStartPodTrigger,
)
-from airflow.providers.google.common.deprecated import deprecated
from airflow.providers.google.common.hooks.base_google import
PROVIDE_PROJECT_ID
from airflow.providers_manager import ProvidersManager
from airflow.utils.timezone import utcnow
@@ -222,7 +221,6 @@ class GKEDeleteClusterOperator(GKEOperatorMixin,
GoogleCloudBaseOperator):
If set as a sequence, the identities from the list must grant
Service Account Token Creator IAM role to the directly preceding
identity, with first
account from the list granting this role to the originating account
(templated).
- :param name: (Deprecated) The name of the resource to delete, in this case
cluster name
:param api_version: The api version to use
:param deferrable: Run operator in the deferrable mode.
:param poll_interval: Interval size which defines how often operation
status is checked.
@@ -241,7 +239,6 @@ class GKEDeleteClusterOperator(GKEOperatorMixin,
GoogleCloudBaseOperator):
gcp_conn_id: str = "google_cloud_default",
impersonation_chain: str | Sequence[str] | None = None,
cluster_name: str | None = None,
- name: str | None = None,
api_version: str = "v2",
deferrable: bool = conf.getboolean("operators", "default_deferrable",
fallback=False),
poll_interval: int = 10,
@@ -251,36 +248,17 @@ class GKEDeleteClusterOperator(GKEOperatorMixin,
GoogleCloudBaseOperator):
super().__init__(*args, **kwargs)
self.location = location
- self.cluster_name = cluster_name or name
+ self.cluster_name = cluster_name
self.use_internal_ip = use_internal_ip
self.use_dns_endpoint = use_dns_endpoint
self.project_id = project_id
self.gcp_conn_id = gcp_conn_id
self.impersonation_chain = impersonation_chain
- self._name = name
self.api_version = api_version
self.deferrable = deferrable
self.poll_interval = poll_interval
self._check_input()
- @property
- @deprecated(
- planned_removal_date="May 01, 2025",
- use_instead="cluster_name",
- category=AirflowProviderDeprecationWarning,
- )
- def name(self) -> str | None:
- return self._name
-
- @name.setter
- @deprecated(
- planned_removal_date="May 01, 2025",
- use_instead="cluster_name",
- category=AirflowProviderDeprecationWarning,
- )
- def name(self, name: str) -> None:
- self._name = name
-
def _check_input(self) -> None:
if not all([self.project_id, self.cluster_name, self.location]):
self.log.error("One of (project_id, cluster_name, location) is
missing or incorrect")
@@ -622,16 +600,10 @@ class GKEStartPodOperator(GKEOperatorMixin,
KubernetesPodOperator):
If set as a sequence, the identities from the list must grant
Service Account Token Creator IAM role to the directly preceding
identity, with first
account from the list granting this role to the originating account
(templated).
- :param regional: (Deprecated) The location param is region name.
:param on_finish_action: What to do when the pod reaches its final state,
or the execution is interrupted.
If "delete_pod", the pod will be deleted regardless its state; if
"delete_succeeded_pod",
only succeeded pod will be deleted. You can set to "keep_pod" to keep
the pod.
Current default is `keep_pod`, but this will be changed in the next
major release of this provider.
- :param is_delete_operator_pod: (Deprecated) What to do when the pod
reaches its final
- state, or the execution is interrupted. If True, delete the
- pod; if False, leave the pod. Current default is False, but this will
be
- changed in the next major release of this provider.
- Deprecated - use `on_finish_action` instead.
:param deferrable: Run operator in the deferrable mode.
"""
@@ -651,30 +623,15 @@ class GKEStartPodOperator(GKEOperatorMixin,
KubernetesPodOperator):
project_id: str = PROVIDE_PROJECT_ID,
gcp_conn_id: str = "google_cloud_default",
impersonation_chain: str | Sequence[str] | None = None,
- regional: bool | None = None,
on_finish_action: str | None = None,
- is_delete_operator_pod: bool | None = None,
deferrable: bool = conf.getboolean("operators", "default_deferrable",
fallback=False),
*args,
**kwargs,
) -> None:
- if is_delete_operator_pod is not None:
- kwargs["on_finish_action"] = (
- OnFinishAction.DELETE_POD if is_delete_operator_pod else
OnFinishAction.KEEP_POD
- )
- elif on_finish_action is not None:
+ if on_finish_action is not None:
kwargs["on_finish_action"] = OnFinishAction(on_finish_action)
else:
- warnings.warn(
- f"You have not set parameter `on_finish_action` in class
{self.__class__.__name__}. "
- "Currently the default for this parameter is `keep_pod` but in
a future release"
- " the default will be changed to `delete_pod`. To ensure pods
are not deleted in"
- " the future you will need to set `on_finish_action=keep_pod`
explicitly.",
- AirflowProviderDeprecationWarning,
- stacklevel=2,
- )
- kwargs["on_finish_action"] = OnFinishAction.KEEP_POD
-
+ kwargs["on_finish_action"] = OnFinishAction.DELETE_POD
super().__init__(*args, **kwargs)
self.project_id = project_id
self.location = location
@@ -683,9 +640,6 @@ class GKEStartPodOperator(GKEOperatorMixin,
KubernetesPodOperator):
self.use_internal_ip = use_internal_ip
self.use_dns_endpoint = use_dns_endpoint
self.impersonation_chain = impersonation_chain
- self._regional = regional
- if is_delete_operator_pod is not None:
- self.is_delete_operator_pod = is_delete_operator_pod
self.deferrable = deferrable
# There is no need to manage the kube_config file, as it will be
generated automatically.
@@ -693,42 +647,6 @@ class GKEStartPodOperator(GKEOperatorMixin,
KubernetesPodOperator):
if self.config_file:
raise AirflowException("config_file is not an allowed parameter
for the GKEStartPodOperator.")
- @property
- @deprecated(
- planned_removal_date="May 01, 2025",
- use_instead="on_finish_action",
- category=AirflowProviderDeprecationWarning,
- )
- def is_delete_operator_pod(self) -> bool | None:
- return self._is_delete_operator_pod
-
- @is_delete_operator_pod.setter
- @deprecated(
- planned_removal_date="May 01, 2025",
- use_instead="on_finish_action",
- category=AirflowProviderDeprecationWarning,
- )
- def is_delete_operator_pod(self, is_delete_operator_pod) -> None:
- self._is_delete_operator_pod = is_delete_operator_pod
-
- @property
- @deprecated(
- planned_removal_date="May 01, 2025",
- reason="The parameter is not in actual use.",
- category=AirflowProviderDeprecationWarning,
- )
- def regional(self) -> bool | None:
- return self._regional
-
- @regional.setter
- @deprecated(
- planned_removal_date="May 01, 2025",
- reason="The parameter is not in actual use.",
- category=AirflowProviderDeprecationWarning,
- )
- def regional(self, regional) -> None:
- self._regional = regional
-
def invoke_defer_method(self, last_log_time: DateTime | None = None):
"""Redefine triggers which are being used in child classes."""
trigger_start_time = utcnow()
diff --git
a/providers/google/tests/system/google/cloud/dataproc/example_dataproc_gke.py
b/providers/google/tests/system/google/cloud/dataproc/example_dataproc_gke.py
index 5fb6e1da8a6..a85c4fcc3aa 100644
---
a/providers/google/tests/system/google/cloud/dataproc/example_dataproc_gke.py
+++
b/providers/google/tests/system/google/cloud/dataproc/example_dataproc_gke.py
@@ -128,7 +128,7 @@ with DAG(
delete_gke_cluster = GKEDeleteClusterOperator(
task_id="delete_gke_cluster",
- name=GKE_CLUSTER_NAME,
+ cluster_name=GKE_CLUSTER_NAME,
project_id=PROJECT_ID,
location=REGION,
trigger_rule=TriggerRule.ALL_DONE,
diff --git
a/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine.py
b/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine.py
index 09e88d55178..c214d95469f 100644
---
a/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine.py
+++
b/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine.py
@@ -111,7 +111,7 @@ with DAG(
# [START howto_operator_gke_delete_cluster]
delete_cluster = GKEDeleteClusterOperator(
task_id="delete_cluster",
- name=CLUSTER_NAME,
+ cluster_name=CLUSTER_NAME,
project_id=GCP_PROJECT_ID,
location=GCP_LOCATION,
)
diff --git
a/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine_async.py
b/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine_async.py
index 78b3a99ab83..257d97da9c0 100644
---
a/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine_async.py
+++
b/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine_async.py
@@ -114,7 +114,7 @@ with DAG(
# [START howto_operator_gke_delete_cluster_async]
delete_cluster = GKEDeleteClusterOperator(
task_id="delete_cluster",
- name=CLUSTER_NAME,
+ cluster_name=CLUSTER_NAME,
project_id=GCP_PROJECT_ID,
location=GCP_LOCATION,
deferrable=True,
diff --git
a/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine_job.py
b/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine_job.py
index 9ff3ef32a7c..578a8e62b84 100644
---
a/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine_job.py
+++
b/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine_job.py
@@ -162,7 +162,7 @@ with DAG(
delete_cluster = GKEDeleteClusterOperator(
task_id="delete_cluster",
- name=CLUSTER_NAME,
+ cluster_name=CLUSTER_NAME,
project_id=GCP_PROJECT_ID,
location=GCP_LOCATION,
trigger_rule=TriggerRule.ALL_DONE,
diff --git
a/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine_kueue.py
b/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine_kueue.py
index 44dbaae5537..07d07d840f6 100644
---
a/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine_kueue.py
+++
b/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine_kueue.py
@@ -160,7 +160,7 @@ with DAG(
delete_cluster = GKEDeleteClusterOperator(
task_id="delete_cluster",
- name=CLUSTER_NAME,
+ cluster_name=CLUSTER_NAME,
project_id=GCP_PROJECT_ID,
location=GCP_LOCATION,
trigger_rule=TriggerRule.ALL_DONE,
diff --git
a/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine_resource.py
b/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine_resource.py
index 28a6ac985b6..dba0c01b840 100644
---
a/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine_resource.py
+++
b/providers/google/tests/system/google/cloud/kubernetes_engine/example_kubernetes_engine_resource.py
@@ -93,7 +93,7 @@ with DAG(
delete_cluster = GKEDeleteClusterOperator(
task_id="delete_cluster",
- name=CLUSTER_NAME,
+ cluster_name=CLUSTER_NAME,
project_id=GCP_PROJECT_ID,
location=GCP_LOCATION,
trigger_rule=TriggerRule.ALL_DONE,
diff --git
a/providers/google/tests/unit/google/cloud/operators/test_kubernetes_engine.py
b/providers/google/tests/unit/google/cloud/operators/test_kubernetes_engine.py
index 4225bda418e..510db752b3d 100644
---
a/providers/google/tests/unit/google/cloud/operators/test_kubernetes_engine.py
+++
b/providers/google/tests/unit/google/cloud/operators/test_kubernetes_engine.py
@@ -695,88 +695,41 @@ class TestGKEStartPodOperator:
)
@pytest.mark.parametrize(
- "compatible_kpo, kwargs, expected_attributes",
+ "kwargs, expected_attributes",
[
(
- True,
{"on_finish_action": "delete_succeeded_pod"},
{"on_finish_action": OnFinishAction.DELETE_SUCCEEDED_POD},
),
(
- # test that priority for deprecated param
- True,
- {"on_finish_action": "keep_pod", "is_delete_operator_pod":
True},
- {"on_finish_action": OnFinishAction.DELETE_POD,
"is_delete_operator_pod": True},
- ),
- (
- # test default
- True,
- {},
- {"on_finish_action": OnFinishAction.KEEP_POD,
"is_delete_operator_pod": False},
- ),
- (
- False,
- {"is_delete_operator_pod": True},
- {"is_delete_operator_pod": True},
- ),
- (
- False,
- {"is_delete_operator_pod": False},
- {"is_delete_operator_pod": False},
+ {"on_finish_action": "keep_pod"},
+ {"on_finish_action": OnFinishAction.KEEP_POD},
),
(
- # test default
- False,
- {},
- {"is_delete_operator_pod": False},
+ {"on_finish_action": "delete_pod"},
+ {"on_finish_action": OnFinishAction.DELETE_POD},
),
],
)
def test_on_finish_action_handler(
self,
- compatible_kpo,
kwargs,
expected_attributes,
):
- kpo_init_args_mock = mock.MagicMock(**{"parameters":
["on_finish_action"] if compatible_kpo else []})
+ kpo_init_args_mock = mock.MagicMock(**{"parameters":
["on_finish_action"]})
with mock.patch("inspect.signature", return_value=kpo_init_args_mock):
- if "is_delete_operator_pod" in kwargs:
- with pytest.raises(AirflowProviderDeprecationWarning):
- GKEStartPodOperator(
- project_id=TEST_PROJECT_ID,
- location=TEST_LOCATION,
- cluster_name=GKE_CLUSTER_NAME,
- task_id=TEST_TASK_ID,
- name=K8S_POD_NAME,
- namespace=K8S_NAMESPACE,
- image=TEST_IMAGE,
- **kwargs,
- )
- elif "on_finish_action" not in kwargs:
- with pytest.raises(AirflowProviderDeprecationWarning):
- GKEStartPodOperator(
- project_id=TEST_PROJECT_ID,
- location=TEST_LOCATION,
- cluster_name=GKE_CLUSTER_NAME,
- task_id=TEST_TASK_ID,
- name=K8S_POD_NAME,
- namespace=K8S_NAMESPACE,
- image=TEST_IMAGE,
- **kwargs,
- )
- else:
- op = GKEStartPodOperator(
- project_id=TEST_PROJECT_ID,
- location=TEST_LOCATION,
- cluster_name=GKE_CLUSTER_NAME,
- task_id=TEST_TASK_ID,
- name=K8S_POD_NAME,
- namespace=K8S_NAMESPACE,
- image=TEST_IMAGE,
- **kwargs,
- )
- for expected_attr in expected_attributes:
- assert op.__getattribute__(expected_attr) ==
expected_attributes[expected_attr]
+ op = GKEStartPodOperator(
+ project_id=TEST_PROJECT_ID,
+ location=TEST_LOCATION,
+ cluster_name=GKE_CLUSTER_NAME,
+ task_id=TEST_TASK_ID,
+ name=K8S_POD_NAME,
+ namespace=K8S_NAMESPACE,
+ image=TEST_IMAGE,
+ **kwargs,
+ )
+ for expected_attr in expected_attributes:
+ assert op.__getattribute__(expected_attr) ==
expected_attributes[expected_attr]
@mock.patch(GKE_OPERATORS_PATH.format("GKEStartPodOperator.defer"))
@mock.patch(GKE_OPERATORS_PATH.format("GKEClusterAuthDetails.fetch_cluster_info"))