osintalex commented on code in PR #70679:
URL: https://github.com/apache/airflow/pull/70679#discussion_r3681878916


##########
providers/google/src/airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py:
##########
@@ -159,7 +159,18 @@ class 
CreateBatchPredictionJobOperator(GoogleCloudBaseOperator):
     :param poll_interval: Interval size which defines how often job status is 
checked in deferrable mode.
     """
 
-    template_fields = ("region", "project_id", "model_name", 
"impersonation_chain", "job_display_name")
+    template_fields = (
+        "region",
+        "project_id",
+        "model_name",
+        "impersonation_chain",
+        "job_display_name",
+        "gcs_source",
+        "bigquery_source",
+        "gcs_destination_prefix",
+        "gcs_destination_prefix",

Review Comment:
   Ty will catch.
   
   Regarding this https://github.com/apache/airflow/issues/70296
   
   I don't think I really understand the implications of this. From what I can 
tell in the operator the `__init__` method simply assigns these attributes onto 
the class 
https://github.com/apache/airflow/blob/main/providers/google/src/airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py#L165.
 
   
   I'm struggling to see how that would cause some sort of issue or antipattern 
here, it doesn't look like any anything happens in the constructor here apart 
from the assignment, which I believe is in alignment with your guide here 
https://airflow.apache.org/docs/apache-airflow/stable/howto/custom-operator.html#limitations.
 Let me know if I've misunderstood though.
   
   As for 2, yes I ran into this in production when running a batch inference 
job with sources in bigquery and destination in bigquery. It made in my 
experience the operator hard to understand and use since the bigquery source 
and destinations were not templatable, which I found counterintuitive. By 
comparison these sorts of fields are typically templatable across airflow, e.g. 
on bigquery insert job operators. It was also very difficult to debug since the 
job just mysteriously fails and you don't get any error feedback on the 
source/destination being invalid.
   
   This is what I was trying to articulate by 'normal', i.e. allowing these 
fields to be templatable in my opinion is much more consistent with most other 
airflow operators, where source/destination outputs to GCS or BQ are typically 
templatable. 
   
   Lacking the ability to template the operator makes it, in my opinion, quite 
unusable in most professional production environments where you would have 
dev/staging/prod environments that all need different input/output 
configurations but should run the same code.
   
   While I could create a new class that inherits from it, that doesn't feel so 
good to me since I would argue most people using this operator in production 
systems will want the same thing as me, i.e. ability to template these fields 
dynamically based on environment. Seems to me like something which should be 
supported by default.



-- 
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.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to