Skip to content

Commit 9e089ab

Browse files
ashbdimberman
andauthored
Fix Kube tests (#12479)
This is the same fix as in #12461, but we didn't notice it as the tests failed after 50 failures. It also turns out that the k8s API doesn't take a V1NodeSelector and instead just takes a dict. Co-authored-by: Daniel Imberman <daniel.imberman@gmail.com>
1 parent 93d64e5 commit 9e089ab

File tree

5 files changed

+8
-68
lines changed

5 files changed

+8
-68
lines changed

airflow/providers/cncf/kubernetes/backcompat/backwards_compat_converters.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,11 +146,6 @@ def convert_affinity(affinity) -> k8s.V1Affinity:
146146
return _convert_from_dict(affinity, k8s.V1Affinity)
147147

148148

149-
def convert_node_selector(node_selector) -> k8s.V1NodeSelector:
150-
"""Converts a dict into a k8s.V1NodeSelector"""
151-
return _convert_from_dict(node_selector, k8s.V1NodeSelector)
152-
153-
154149
def convert_toleration(toleration) -> k8s.V1Toleration:
155150
"""Converts a dict into an k8s.V1Toleration"""
156151
return _convert_from_dict(toleration, k8s.V1Toleration)

airflow/providers/cncf/kubernetes/operators/kubernetes_pod.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
convert_configmap,
3333
convert_env_vars,
3434
convert_image_pull_secrets,
35-
convert_node_selector,
3635
convert_pod_runtime_info_env,
3736
convert_port,
3837
convert_resources,
@@ -194,8 +193,8 @@ def __init__( # pylint: disable=too-many-arguments,too-many-locals
194193
resources: Optional[k8s.V1ResourceRequirements] = None,
195194
affinity: Optional[k8s.V1Affinity] = None,
196195
config_file: Optional[str] = None,
197-
node_selectors: Optional[k8s.V1NodeSelector] = None,
198-
node_selector: Optional[k8s.V1NodeSelector] = None,
196+
node_selectors: Optional[dict] = None,
197+
node_selector: Optional[dict] = None,
199198
image_pull_secrets: Optional[List[k8s.V1LocalObjectReference]] = None,
200199
service_account_name: str = 'default',
201200
is_delete_operator_pod: bool = False,
@@ -244,9 +243,9 @@ def __init__( # pylint: disable=too-many-arguments,too-many-locals
244243
if node_selectors:
245244
# Node selectors is incorrect based on k8s API
246245
warnings.warn("node_selectors is deprecated. Please use node_selector instead.")
247-
self.node_selector = convert_node_selector(node_selectors)
246+
self.node_selector = node_selectors or {}
248247
elif node_selector:
249-
self.node_selector = convert_node_selector(node_selector)
248+
self.node_selector = node_selector or {}
250249
else:
251250
self.node_selector = None
252251
self.annotations = annotations or {}

kubernetes_tests/test_kubernetes_pod_operator.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -873,7 +873,6 @@ def test_pod_template_file(
873873
'hostNetwork': False,
874874
'imagePullSecrets': [],
875875
'initContainers': [],
876-
'nodeSelector': {},
877876
'restartPolicy': 'Never',
878877
'securityContext': {},
879878
'serviceAccountName': 'default',

kubernetes_tests/test_kubernetes_pod_operator_backcompat.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ def setUp(self):
101101
'hostNetwork': False,
102102
'imagePullSecrets': [],
103103
'initContainers': [],
104-
'nodeSelector': {},
105104
'restartPolicy': 'Never',
106105
'securityContext': {},
107106
'serviceAccountName': 'default',

tests/providers/cncf/kubernetes/operators/test_kubernetes_pod.py

Lines changed: 4 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -339,40 +339,7 @@ def test_tolerations(self):
339339
self.assertEqual(client.sanitize_for_serialization(result)['spec']['tolerations'], tolerations)
340340

341341
def test_node_selector(self):
342-
k8s_api_node_selector = k8s.V1NodeSelector(
343-
node_selector_terms=[
344-
k8s.V1NodeSelectorTerm(
345-
match_expressions=[
346-
k8s.V1NodeSelectorRequirement(key="disktype", operator="In", values=["ssd"])
347-
]
348-
)
349-
]
350-
)
351-
352-
node_selector = {
353-
'nodeSelectorTerms': [
354-
{'matchExpressions': [{'key': 'disktype', 'operator': 'In', 'values': ['ssd']}]}
355-
]
356-
}
357-
358-
k = KubernetesPodOperator(
359-
namespace='default',
360-
image="ubuntu:16.04",
361-
cmds=["bash", "-cx"],
362-
arguments=["echo 10"],
363-
labels={"foo": "bar"},
364-
name="name",
365-
task_id="task",
366-
in_cluster=False,
367-
do_xcom_push=False,
368-
cluster_context='default',
369-
node_selector=k8s_api_node_selector,
370-
)
371-
372-
result = k.create_pod_request_obj()
373-
client = ApiClient()
374-
self.assertEqual(type(result.spec.node_selector), k8s.V1NodeSelector)
375-
self.assertEqual(client.sanitize_for_serialization(result)['spec']['nodeSelector'], node_selector)
342+
node_selector = {'beta.kubernetes.io/os': 'linux'}
376343

377344
k = KubernetesPodOperator(
378345
namespace='default',
@@ -385,12 +352,12 @@ def test_node_selector(self):
385352
in_cluster=False,
386353
do_xcom_push=False,
387354
cluster_context='default',
388-
node_selector=k8s_api_node_selector,
355+
node_selector=node_selector,
389356
)
390357

391358
result = k.create_pod_request_obj()
392359
client = ApiClient()
393-
self.assertEqual(type(result.spec.node_selector), k8s.V1NodeSelector)
360+
self.assertEqual(type(result.spec.node_selector), dict)
394361
self.assertEqual(client.sanitize_for_serialization(result)['spec']['nodeSelector'], node_selector)
395362

396363
# repeat tests using deprecated parameter
@@ -410,24 +377,5 @@ def test_node_selector(self):
410377

411378
result = k.create_pod_request_obj()
412379
client = ApiClient()
413-
self.assertEqual(type(result.spec.node_selector), k8s.V1NodeSelector)
414-
self.assertEqual(client.sanitize_for_serialization(result)['spec']['nodeSelector'], node_selector)
415-
416-
k = KubernetesPodOperator(
417-
namespace='default',
418-
image="ubuntu:16.04",
419-
cmds=["bash", "-cx"],
420-
arguments=["echo 10"],
421-
labels={"foo": "bar"},
422-
name="name",
423-
task_id="task",
424-
in_cluster=False,
425-
do_xcom_push=False,
426-
cluster_context='default',
427-
node_selectors=node_selector,
428-
)
429-
430-
result = k.create_pod_request_obj()
431-
client = ApiClient()
432-
self.assertEqual(type(result.spec.node_selector), k8s.V1NodeSelector)
380+
self.assertEqual(type(result.spec.node_selector), dict)
433381
self.assertEqual(client.sanitize_for_serialization(result)['spec']['nodeSelector'], node_selector)

0 commit comments

Comments
 (0)