This is an automated email from the ASF dual-hosted git repository.
taragolis 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 4767f48a3b feat: add hostAliases to pod spec in KubernetesPodOperator
(#35063)
4767f48a3b is described below
commit 4767f48a3b4537092e62fc2f91ec832dd560db72
Author: Isaac A. Murchie <[email protected]>
AuthorDate: Tue Oct 24 19:08:49 2023 -0400
feat: add hostAliases to pod spec in KubernetesPodOperator (#35063)
* feat: add hostAliases to pod spec in KubernetesPodOperator
* chore: remove extra whitespace
---------
Co-authored-by: Isaac Murchie <[email protected]>
---
airflow/providers/cncf/kubernetes/operators/pod.py | 4 ++++
tests/providers/cncf/kubernetes/operators/test_pod.py | 9 +++++++++
2 files changed, 13 insertions(+)
diff --git a/airflow/providers/cncf/kubernetes/operators/pod.py
b/airflow/providers/cncf/kubernetes/operators/pod.py
index d8b01b155b..ff3e32e8c7 100644
--- a/airflow/providers/cncf/kubernetes/operators/pod.py
+++ b/airflow/providers/cncf/kubernetes/operators/pod.py
@@ -200,6 +200,7 @@ class KubernetesPodOperator(BaseOperator):
comma separated list: secret_a,secret_b
:param service_account_name: Name of the service account
:param hostnetwork: If True enable host networking on the pod.
+ :param host_aliases: A list of host aliases to apply to the containers in
the pod.
:param tolerations: A list of kubernetes tolerations.
:param security_context: security options the pod should run with
(PodSecurityContext).
:param container_security_context: security options the container should
run with.
@@ -303,6 +304,7 @@ class KubernetesPodOperator(BaseOperator):
image_pull_secrets: list[k8s.V1LocalObjectReference] | None = None,
service_account_name: str | None = None,
hostnetwork: bool = False,
+ host_aliases: list[k8s.V1HostAlias] | None = None,
tolerations: list[k8s.V1Toleration] | None = None,
security_context: k8s.V1PodSecurityContext | dict | None = None,
container_security_context: k8s.V1SecurityContext | dict | None = None,
@@ -381,6 +383,7 @@ class KubernetesPodOperator(BaseOperator):
self.image_pull_secrets =
convert_image_pull_secrets(image_pull_secrets) if image_pull_secrets else []
self.service_account_name = service_account_name
self.hostnetwork = hostnetwork
+ self.host_aliases = host_aliases
self.tolerations = (
[convert_toleration(toleration) for toleration in tolerations] if
tolerations else []
)
@@ -897,6 +900,7 @@ class KubernetesPodOperator(BaseOperator):
affinity=self.affinity,
tolerations=self.tolerations,
init_containers=self.init_containers,
+ host_aliases=self.host_aliases,
containers=[
k8s.V1Container(
image=self.image,
diff --git a/tests/providers/cncf/kubernetes/operators/test_pod.py
b/tests/providers/cncf/kubernetes/operators/test_pod.py
index 42fd7ecfe4..8a4927a65c 100644
--- a/tests/providers/cncf/kubernetes/operators/test_pod.py
+++ b/tests/providers/cncf/kubernetes/operators/test_pod.py
@@ -226,6 +226,15 @@ class TestKubernetesPodOperator:
pod = k.build_pod_request_obj(create_context(k))
assert pod.spec.security_context == security_context
+ def test_host_aliases(self):
+ host_aliases = [k8s.V1HostAlias(ip="192.0.2.1",
hostnames=["my.service.com"])]
+ k = KubernetesPodOperator(
+ host_aliases=host_aliases,
+ task_id="task",
+ )
+ pod = k.build_pod_request_obj(create_context(k))
+ assert pod.spec.host_aliases == host_aliases
+
def test_container_security_context(self):
container_security_context = {"allowPrivilegeEscalation": False}
k = KubernetesPodOperator(