Oh.. I've totally forgotten about this discussion. We have some time before Airflow 2.9, so there is a chance that we could remove it into 2.9. Let me create a vote.
On Tue, 20 Feb 2024 at 23:10, Pierre Jeambrun <pierrejb...@gmail.com> wrote: > +1, stable API should be favoured > > On Tue 20 Feb 2024 at 16:10, Jarek Potiuk <ja...@potiuk.com> wrote: > > > Oh God . What an archeology. Yeah I think we had a limite when we > discussed > > it then (looking at the discussion) we did not have a solid replacement > yet > > (and the discussion was about deprecating it in 1.10). Since then we > marked > > it as experimental and left it in 2.0. > > But since then - we have - and it's well established and proven (REST > > API + Python Client) which very much serves the same purpose that the > > "remote" experimental CLI should serve (and I think that was the main > > problem that it did not exist back then). > > > > I'd say it calls for removal and significant note ("If you were still > using > > it, please use the REST API and Python Client instead"). > > > > On Tue, Feb 20, 2024 at 11:19 AM Andrey Anshin <andrey.ans...@taragol.is > > > > wrote: > > > > > BTW, I've found that this this top already discussed in the past, like > > more > > > that 3 years ago > > > > > > Github Issue https://github.com/apache/airflow/issues/10552 > (accidently > > > found when set sorting on issues as Least recently updated) > > > Dev List: > > https://lists.apache.org/thread/jdz9l7bsnsw5c3t27dxfrx5pd4wvjlxt > > > > > > > > > > > > On Tue, 20 Feb 2024 at 00:14, Andrey Anshin <andrey.ans...@taragol.is> > > > wrote: > > > > > > > Just for clarification, the proposal is about depreciation or even > > > removal > > > > of something obsolete. If we could do some improvement at the same > > moment > > > > it would be nice, if not also nice, that mean no additional work > > > > > > > > > > > > > > > > > > > > > > > > On Mon, 19 Feb 2024 at 22:55, Scheffler Jens (XC-AS/EAE-ADA-T) > > > > <jens.scheff...@de.bosch.com.invalid> wrote: > > > > > > > >> I do not habe a strong opinion on the topic but I am mostly with > > Jarek. > > > >> > > > >> The API must be multi tenant and mask all internal DB access - where > > we > > > >> are close-by with AIP-44 and the other efforts of multi tenancy > > > (missing a > > > >> list of all planned efforts, would be cool to have a mata AIP > keeping > > > the > > > >> completed and planned individual efforts) > > > >> > > > >> But in contrast I see the CLI only partly being a tool on tenant but > > > most > > > >> parts on the internal perimeter admin side. Might be a bit „gray > > zone“. > > > If > > > >> we habe overlap to REST API (do we have a list of rhings like > trigger > > > sag > > > >> or so?) we should remove and consolidate redundancy to API logic. > But > > > there > > > >> is for sure some „black magic“ which must not be migrated and needs > > > native > > > >> DB access. E.g. resetting DB or triggering DB migration. For REST > API > > as > > > >> well as internal API you need a web endpoint incl. minimal > > > authentication. > > > >> Some base admin tooling is needed for bootstrap and base admin. Like > > > >> creating the first admin user is impossible if no user. > > > >> > > > >> So before a lengthy discussion I‘d propose to document details and > > make > > > >> an AIP to discuss, that might be easier then a reply-to-all thred to > > > define > > > >> the scope of cleanup. Also and especially for API cöient we need to > > > check > > > >> for impact if breaking changes appear. > > > >> > > > >> Jens > > > >> > > > >> Sent from Outlook for iOS<https://aka.ms/o0ukef> > > > >> ________________________________ > > > >> From: Andrey Anshin <andrey.ans...@taragol.is> > > > >> Sent: Monday, February 19, 2024 3:54 PM > > > >> To: dev@airflow.apache.org <dev@airflow.apache.org> > > > >> Subject: Re: [DISCUSS] Deprecate cli options in Airflow > Configurations > > > >> and airflow.api.client > > > >> > > > >> >Actually - it's not at all part of AIP-44 :). Airflow CLI was > > > >> (consciously and deliberately) not part of it. > > > >> > > > >> Then better to check whether or not it accidentally uses it, add to > my > > > >> checklist > > > >> > > > >> > So I would be very much for removing that whole part - even in > > Airflow > > > >> 2.9. > > > >> > > > >> +1 for removal if it won't break our promises > > > >> > > > >> > > > >> > > > >> > > > >> On Mon, 19 Feb 2024 at 16:01, Jarek Potiuk <ja...@potiuk.com> > wrote: > > > >> > > > >> > Actually - it's not at all part of AIP-44 :). Airflow CLI was > > > >> (consciously > > > >> > and deliberately) not part of it. > > > >> > > > > >> > CLI is specifically treated as a "local" tool that is executed > > inside > > > >> the > > > >> > security perimeter where direct database access is needed (i.e. it > > > >> falls in > > > >> > the same category as 'scheduler', 'webserver`, `internal-api` > > > component > > > >> - > > > >> > all of which stil has direct DB access and AIP-44 does not change > > > that. > > > >> > AIP-44 is specifically about Worker, Triggerrer and Dag File > > Processor > > > >> > direct DB access only. > > > >> > > > > >> > I think if we want to allow CLI to be used without direct DB > > access, a > > > >> > better solution would be to make it use the public REST API of > ours, > > > not > > > >> > the internal api that is supposed to be used by > worker/triggerer/dag > > > >> file > > > >> > processor. There will be different authentication and > authorisation > > > >> methods > > > >> > than the ones that airflow CLI would - potentially use. I think if > > we > > > >> want > > > >> > to make airflow CLI use authorised/remote access - that needs a > > > separate > > > >> > AIP - where we define actors that should be able to use the CLI, > > > >> > authorisation mechanisms etc. (could be the same as in the REST > API, > > > >> but it > > > >> > needs to be clarified - currently the authorisation of CLI is > based > > > >> > exclusively on having access to the system/UNIX user that airflow > is > > > run > > > >> > with and where DB configuration to access DB is present). > > > >> > > > > >> > But coming back to the main subject - yes, I think that old API is > > > >> > experimental, and for a long time we have good replacement for it > > > (i.e. > > > >> the > > > >> > official REST API that has been battle-tested and is pretty > > > >> feature-full), > > > >> > so It is a good idea to remove the old API (and CLI configuration > > > >> option). > > > >> > It's not likely widely used, and it's also had experimental status > > > for a > > > >> > very long time (since the beginning of Airflow 2.0) - so similarly > > as > > > >> with > > > >> > the MSSQL support, we are free to decide to remove it and still > keep > > > our > > > >> > SemVer promises - it never made it on the Public Interface of > > Airflow > > > >> > > > > >> > > > > >> > > > > > > https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fairflow.apache.org%2Fdocs%2Fapache-airflow%2Fstable%2Fpublic-airflow-interface.html&data=05%7C02%7CJens.Scheffler%40de.bosch.com%7C7183c980c1634387b9c808dc315ab031%7C0ae51e1907c84e4bbb6d648ee58410f4%7C0%7C0%7C638439512771163568%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=hJSW%2FH7qQHQIH0YFHjxAoHWBNSejl2yUBpMx1Q9PQAo%3D&reserved=0 > > > >> < > > > >> > > > > > > https://airflow.apache.org/docs/apache-airflow/stable/public-airflow-interface.html > > > >> > > > > >> > - and since the very beginning we did not have an intention for it > > to > > > be > > > >> > public API. > > > >> > > > > >> > So I would be very much for removing that whole part - even in > > Airflow > > > >> 2.9. > > > >> > > > > >> > J. > > > >> > > > > >> > On Mon, Feb 19, 2024 at 11:53 AM Andrey Anshin < > > > >> andrey.ans...@taragol.is> > > > >> > wrote: > > > >> > > > > >> > > > the underlying question is what are we going to do with direct > > DB > > > >> > access > > > >> > > from the cli > > > >> > > > > > >> > > Good point! > > > >> > > I guess it should be covered by AIP-44, so if there are no > methods > > > >> which > > > >> > > implement these actions by AIP-44 it is better to create it > > instead > > > of > > > >> > just > > > >> > > moving old code. > > > >> > > > > > >> > > > > > >> > > > > > >> > > On Mon, 19 Feb 2024 at 14:35, Bolke de Bruin <bdbr...@gmail.com > > > > > >> wrote: > > > >> > > > > > >> > > > with regards to the api client: the intention was indeed to > > remove > > > >> > direct > > > >> > > > access to the DB, which I think is still a valid thing to do. > In > > > my > > > >> > > opinion > > > >> > > > the underlying question is what are we going to do with direct > > DB > > > >> > access > > > >> > > > from the cli. Is that something we want to keep or do we want > a > > > >> > different > > > >> > > > design? Just dropping the implementation seems a bit 'lazy' to > > me, > > > >> > while > > > >> > > I > > > >> > > > understand that it hasn't been touched in a while. > > > >> > > > > > > >> > > > B. > > > >> > > > > > > >> > > > On Sun, 18 Feb 2024 at 12:17, Andrey Anshin < > > > >> andrey.ans...@taragol.is> > > > >> > > > wrote: > > > >> > > > > > > >> > > > > Greetings guys! > > > >> > > > > > > > >> > > > > I want to start a discussion about deprecation cli > > configuration > > > >> > > options > > > >> > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > > > > https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fairflow.apache.org%2Fdocs%2Fapache-airflow%2Fstable%2Fconfigurations-ref.html%23cli&data=05%7C02%7CJens.Scheffler%40de.bosch.com%7C7183c980c1634387b9c808dc315ab031%7C0ae51e1907c84e4bbb6d648ee58410f4%7C0%7C0%7C638439512771174117%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=dQ3MPz8rgbWo%2FIezHpvAuJ4fxDAe%2FT9hx3WRloR3ZRQ%3D&reserved=0 > > > >> < > > > >> > > > > > > https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html#cli > > > >> > > > > >> > > > > as well as `airflow/api/client` in upcoming minor/feature > > > release > > > >> of > > > >> > > > > Airflow (2.9 or 2.10 depends on). > > > >> > > > > > > > >> > > > > This options control how end users retrieve information from > > the > > > >> > > > Database, > > > >> > > > > there is two kind provided classes > > > >> > > > `airflow.api.client.api_client.Client` - > > > >> > > > > direct access to DB, > `airflow.api.client.json_client.Client` - > > > >> access > > > >> > > > > through Experimental API > > > >> > > > > > > > >> > > > > However internal clients cover only this cli commands: > > > >> > > > > - trigger_dag: airflow dags trigger > > > >> > > > > - delete_dag: airflow dags delete > > > >> > > > > - get_pool: airflow pool get > > > >> > > > > - get_pools: airflow pool list and airflow pool export > > > >> > > > > - create_pool: airflow pool set and airflow pool import > > > >> > > > > - pool_delete: airflow pool delete > > > >> > > > > - get_lineage: doesn't use anywhere in CLI and Airflow > > codebase > > > >> > > > > > > > >> > > > > As a result, implementation of CLI spread across different > > > >> modules / > > > >> > > > > subpackages and in some cases could use experimental API. > > Seems > > > >> like > > > >> > it > > > >> > > > is > > > >> > > > > an abandoned implementation which comes from pre Airflow 2 > and > > > we > > > >> > have > > > >> > > to > > > >> > > > > support it nowadays. > > > >> > > > > > > > >> > > > > *My proposal*: > > > >> > > > > 1. Copy implementation from > > > >> `airflow.api.client.local_client.Client` > > > >> > > into > > > >> > > > > the the code from appropriate modules into the > > > >> airflow/cli/commands > > > >> > > > > 2. Set default value for `[cli] api_client` to None. In case > > if > > > >> > values > > > >> > > > set > > > >> > > > > in airflow.cfg (e.g. from the previous version of Airflow), > > > raise > > > >> > > future > > > >> > > > > warning and update it to None if it set to > > > >> > > > > `airflow.api.client.local_client.Client` in other cases do > not > > > >> touch > > > >> > > > > 3. Set default value for `[cli] endpoint_url` to None. In > case > > > if > > > >> > > values > > > >> > > > > set in airflow.cfg raise future warning, and do not update > > > value. > > > >> > > > > 4. `airflow.api.client.get_current_api_client` should able > to > > > >> return > > > >> > > > None, > > > >> > > > > if it return None, then it should use implementation from > the > > > >> > > > > airflow/cli/commands, otherwise use deprecated client, with > > > >> raising > > > >> > > > > RemovedInAirflow3Warning > > > >> > > > > > > > >> > > > > WDYT? > > > >> > > > > > > > >> > > > > > > >> > > > > > > >> > > > -- > > > >> > > > > > > >> > > > -- > > > >> > > > Bolke de Bruin > > > >> > > > bdbr...@gmail.com > > > >> > > > > > > >> > > > > > >> > > > > >> > > > > > > > > > >