>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://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://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 > > > > > >