I'd say it could be great to deprecate the whole plugin system and use Python's "entry points" instead. I just didn't know that was an option and the standard way to do this when I originally wrote it... The current plugin system is a minefield for circular dependencies...
On Sat, Apr 13, 2019 at 10:50 AM Jarek Potiuk <jarek.pot...@polidea.com> wrote: > One comment here - The current connections.py file screams to get dynamic > discovery similar to what sqlalchemy does for dialects (for example). > > But on the other hand, I am not sure if this "registration" is really > needed. Maybe I am totally wrong, but somehow I don't find it particularly > useful to get hook by connection_type. > > I believe connection_type is useful for the UI to be able to select the > connection when you create it and have different UI fields defined by > connection. But nearly universally in other places, when operator is > instantiated, it also instantiates the hook it expects to use, rather than > rely on get_hook() or parse_from_uri() of the connection. Each operator > knows what connection type it needs. > > I checked it quickly and it seems the "get by connection type" or > parse_from_uri functionality is almost exclusively used by tests. > > Again - maybe I am completely wrong but maybe we should rethink the whole > "connection" class and get rid of the need of "registering" new connection > types at all (or move the relevant stuff to be UI only). > > > > On Fri, Apr 12, 2019 at 6:07 PM Daniel Imberman <daniel.imber...@gmail.com > > > wrote: > > > I think that's the important distinction. This wouldn't be removing > custom > > hooks and operators, this is just removing the python magic that has you > > placing them in a plugins folder. I can see the value in having the DAGs > > being real-time parsed as users might want to make small changes to > those, > > but operators/hooks should be fairly static once created. > > > > On Fri, Apr 12, 2019 at 8:53 AM Ash Berlin-Taylor <a...@apache.org> > wrote: > > > > > Can you give an example? > > > > > > We can still have custom hooks/operators per install, I'm just saying > > they > > > don't need to be implemented/"registered" with airflow.plugin -- all > that > > > provides is another way of having that be imported. > > > > > > -ash > > > > > > > On 12 Apr 2019, at 16:21, Chen Tong <cix...@gmail.com> wrote: > > > > > > > > IMHO, it's worth to have such dynamic hooks adding ability. I met > > issues > > > > before that the current hook cannot satisfy the needs. I have to > write > > my > > > > own hook and hacked Connections. If hook is not coupled tightly with > > > > Connections, it will be easier by switching to another python > package. > > > > > > > > On Fri, Apr 12, 2019 at 11:14 AM Daniel Imberman < > > > daniel.imber...@gmail.com> > > > > wrote: > > > > > > > >> I am all for this. The only complexity is ensuring the operator/hook > > > >> exists in the workers too, but overall highly for. > > > >> On Apr 12, 2019, 7:37 AM -0700, James Meickle < > > jmeic...@quantopian.com > > > .invalid>, > > > >> wrote: > > > >>> YES - I strongly agree with this! I first did it this way because I > > > >> wanted > > > >>> to follow the instructions, assuming there was some Airflow magic, > > and > > > >>> later found it really frustrating to maintain. We should be clear > > that > > > >>> standard Python packaging is the way to go. > > > >>> > > > >>> That being said, what if Airflow had an official Cookiecutter > > template > > > >> for > > > >>> Airflow operator packages, and suggested that as a way to manage > your > > > >>> operators in the docs? That would probably help people who aren't > as > > > >>> familiar with Python, and over time might increase quality of third > > > party > > > >>> operators (if it ships by default with linting/etc.) > > > >>> > > > >>> On Fri, Apr 12, 2019 at 3:54 AM Ash Berlin-Taylor <a...@apache.org> > > > >> wrote: > > > >>> > > > >>>> This is something I've said a number of times (but possibly never > on > > > >> the > > > >>>> list): > > > >>>> > > > >>>> I think we should deprecate adding Operators and Hooks via the > > Airflow > > > >>>> plugin mechanism. > > > >>>> > > > >>>> I think plugins should be reserved for any mechanism that a > plain-ol > > > >>>> python module import won't work for (which is basically anything > > that > > > >> needs > > > >>>> to tie deeply in to the Webserver or Scheduler process). > > > >>>> > > > >>>> To that endI think we should deprecate adding operators via > plugins: > > > >>>> > > > >>>> from airflow.operators.my_plugin import MyOperator > > > >>>> > > > >>>> can become > > > >>>> > > > >>>> from my_plugin import MyOperator > > > >>>> > > > >>>> with no impact on functionality. > > > >>>> > > > >>>> The same could be said for hooks, with one possible feature > > addition: > > > >>>> Right now the list of connection types in the Connections screen > is > > > >>>> hard-coded. Is it possible worth making that dynamic somehow based > > on > > > >> the > > > >>>> Hook classes that are loaded? i.e. adding the ability for hooks > > added > > > >> in > > > >>>> plguins to add items to that list? > > > >>>> > > > >>>> -ash > > > >> > > > > > > > > > > > -- > > Jarek Potiuk > Polidea <https://www.polidea.com/> | Principal Software Engineer > > M: +48 660 796 129 <+48660796129> > E: jarek.pot...@polidea.com >