ashb commented on pull request #8974:
URL: https://github.com/apache/airflow/pull/8974#issuecomment-644739992


   > I see a few options of using Backend <> Hook in this scenario:
   > 
   >     1. we build an artificial connection and pass it to hook (very bad 
idea IMHO)
   
   Agreed, that sounds bad.
   
   > 
   >     2. Get Secret to use Hook directly. For that we will have to change 
the Hook to accept the basic parameters (host/port etc.) not only from 
connection but also if there is a lack of connection it should have additional 
parameters for host, port, user, passwords (or maybe just url)  from the 
parameters passed. I believe this is what you propose @ashb ? Correct?
   
   I was picturing just a URL (given that is how we configure the secrets 
backend now. Well URL + kwargs)
   
   > 
   >     3. Implement intermediary used by both Hook and Secret - (Client in my 
case) which is library used by both - Hook and Backend. Client has no relation 
to Connection - it's Hook's job to provide all the parameters to the Client 
parsed from the connection.
   
   I think my reservation to 3 was that this is a new concept to Airflow and it 
hadn't been mentioned before, nor was the reasoning for having this new class 
made clear. I should have been better about asking for that reason than jumping 
straight to my -1 comment.
   
   Equally, there was nothing in the PR or (doc) comments explaining why which 
means I had to guess or come to my own (wrong) conclusions.
   
   > For 2), I think exposing password/URL/login via Hook constructor is a bad 
idea. The hook should encourage connection as the only source of the 
connectivity information - because it is encrypted and shared with other 
workers by design. 
   
   Yes I agree. (I don't even like the pattern where AWS hooks accept an 
optional "region_name" parameter to some functions. Separate thing, but related 
point.)
   
   > Is the problem with documentation duplication? I think the separation of 
concerns is fairly solid here.
   
   On reflection I hadn't thought through my suggestion fully, but my objection 
was based around not setting precedent -- that is to not add a new "concept" 
inside a provider. But your points make sense, and Hook should only operate 
from connection info, not accept H+U+P directly.
   
   How about calling it 
airflow.providers.hashicorp._internal.client.VaultClient? That would address my 
concerns about a new concept. And I think this concern only comes in to play 
with (some) Secrets backends, but not for most other providers, which would 
just have a hook and not need this extra client class. Could we perhaps also 
add this to a comment in where ever this class ends up living.
    
   I also think this "client" class should be excluded from the generated API 
docs -- that makes it not part of the public API.
   
   I'm really sorry for making you do the extra work of moving the class (not 
to mention the time you had to spend writing the comment.)


----------------------------------------------------------------
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:
[email protected]


Reply via email to