This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/master by this push:
new 7825be5 Randomize pod name (#12117)
7825be5 is described below
commit 7825be50d80d04da0db8fcee55df5e1339864c88
Author: Mariusz Strzelecki <[email protected]>
AuthorDate: Thu Nov 5 23:48:46 2020 +0100
Randomize pod name (#12117)
---
.../cncf/kubernetes/operators/kubernetes_pod.py | 2 +-
.../kubernetes/operators/test_kubernetes_pod.py | 27 ++++++++++++++++++++++
2 files changed, 28 insertions(+), 1 deletion(-)
diff --git a/airflow/providers/cncf/kubernetes/operators/kubernetes_pod.py
b/airflow/providers/cncf/kubernetes/operators/kubernetes_pod.py
index c71f067..7c976bc 100644
--- a/airflow/providers/cncf/kubernetes/operators/kubernetes_pod.py
+++ b/airflow/providers/cncf/kubernetes/operators/kubernetes_pod.py
@@ -384,7 +384,7 @@ class KubernetesPodOperator(BaseOperator): # pylint:
disable=too-many-instance-
metadata=k8s.V1ObjectMeta(
namespace=self.namespace,
labels=self.labels,
- name=self.name,
+ name=PodGenerator.make_unique_pod_id(self.name),
annotations=self.annotations,
),
spec=k8s.V1PodSpec(
diff --git a/tests/providers/cncf/kubernetes/operators/test_kubernetes_pod.py
b/tests/providers/cncf/kubernetes/operators/test_kubernetes_pod.py
index b30ca24..bfef5e5 100644
--- a/tests/providers/cncf/kubernetes/operators/test_kubernetes_pod.py
+++ b/tests/providers/cncf/kubernetes/operators/test_kubernetes_pod.py
@@ -137,3 +137,30 @@ class TestKubernetesPodOperator(unittest.TestCase):
self.assertEqual(task.image, "{{ image_jinja }}:16.04")
task.render_template_fields(context={"image_jinja": "ubuntu"})
self.assertEqual(task.image, "ubuntu:16.04")
+
+ @mock.patch("airflow.kubernetes.pod_launcher.PodLauncher.start_pod")
+ @mock.patch("airflow.kubernetes.pod_launcher.PodLauncher.monitor_pod")
+ @mock.patch("airflow.kubernetes.kube_client.get_kube_client")
+ def test_randomize_pod_name(self, mock_client, monitor_mock, start_mock):
+ from airflow.utils.state import State
+
+ name_base = 'test'
+
+ k = KubernetesPodOperator(
+ namespace='default',
+ image="ubuntu:16.04",
+ cmds=["bash", "-cx"],
+ arguments=["echo 10"],
+ labels={"foo": "bar"},
+ name=name_base,
+ task_id="task",
+ in_cluster=False,
+ do_xcom_push=False,
+ cluster_context='default',
+ )
+ monitor_mock.return_value = (State.SUCCESS, None)
+ context = self.create_context(k)
+ k.execute(context=context)
+
+ assert start_mock.call_args[0][0].metadata.name.startswith(name_base)
+ assert start_mock.call_args[0][0].metadata.name != name_base