You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by GitBox <gi...@apache.org> on 2020/02/04 09:37:40 UTC

[GitHub] [airflow] ashb commented on a change in pull request #6230: [AIRFLOW-5413] Allow K8S worker pod to be configured from JSON/YAML file

ashb commented on a change in pull request #6230: [AIRFLOW-5413] Allow K8S worker pod to be configured from JSON/YAML file
URL: https://github.com/apache/airflow/pull/6230#discussion_r374559844
 
 

 ##########
 File path: airflow/kubernetes/pod_generator.py
 ##########
 @@ -301,36 +310,14 @@ def from_obj(obj) -> Optional[k8s.V1Pod]:
                     limits=limits
                 )
 
-        pod_spec_generator = PodGenerator(
-            image=namespaced.get('image'),
-            envs=namespaced.get('env'),
-            cmds=namespaced.get('cmds'),
-            args=namespaced.get('args'),
-            labels=namespaced.get('labels'),
-            node_selectors=namespaced.get('node_selectors'),
-            name=namespaced.get('name'),
-            ports=namespaced.get('ports'),
-            volumes=namespaced.get('volumes'),
-            volume_mounts=namespaced.get('volume_mounts'),
-            namespace=namespaced.get('namespace'),
-            image_pull_policy=namespaced.get('image_pull_policy'),
-            restart_policy=namespaced.get('restart_policy'),
-            image_pull_secrets=namespaced.get('image_pull_secrets'),
-            init_containers=namespaced.get('init_containers'),
-            service_account_name=namespaced.get('service_account_name'),
-            resources=resources,
-            annotations=namespaced.get('annotations'),
-            affinity=namespaced.get('affinity'),
-            hostnetwork=namespaced.get('hostnetwork'),
-            tolerations=namespaced.get('tolerations'),
-            security_context=namespaced.get('security_context'),
-            configmaps=namespaced.get('configmaps'),
-            dnspolicy=namespaced.get('dnspolicy'),
-            schedulername=namespaced.get('schedulername'),
-            pod=namespaced.get('pod'),
-            extract_xcom=namespaced.get('extract_xcom'),
-        )
+        pod_args = list(inspect.signature(PodGenerator).parameters)
 
+        def reducer(d: dict, arg: str):
+            return {**d, arg: namespaced.get(arg)}
+
+        pod_kwargs = reduce(reducer, pod_args, {})
 
 Review comment:
   This is ... odd/slower than it needs to be. A dict comprehension would be more-pythonic:
   
   ```suggestion
           pod_kwargs= { k: namespaced.get(k) for k in pod_args }
   ```
   
   I think. That said: Is there any reason why we don't just do this:
   
   ```python
       namespaced['resources'] = resources
       pod_spec_generator = PodGenerator(**namespaced)
   ```
   
   No need to build a new dict, no need to call inspect at run time (which is often a sign something 'clever' is going on, and clever is usually hard to read.)

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services