apache / airflow

Apache Airflow - A platform to programmatically author, schedule, and monitor workflows
https://airflow.apache.org/
Apache License 2.0
36.58k stars 14.17k forks source link

AIP-84 Migrate public endpoints from api_connexion to the new rest api #42370

Open pierrejeambrun opened 2 weeks ago

pierrejeambrun commented 2 weeks ago

Body

https://github.com/apache/airflow/issues/42366 is taking care of migrating private endpoints.

This issue focus on migrating all the public ones. Ideally they shouldn't change too much and be feature rich compare to airflow 2.x.

An exemple PR can be found here https://github.com/apache/airflow/pull/42196

Tasks (total ~ 81 endpoints)

Backfill (6 endpoints)

Config (2 endpoints)

Connection @bugraoz93 (6 endpoints)

DAG (5 endpoints)

Dag Parsing (1 endpoint)

Dag Runs @rawwar (9 endpoints)

Dag Source (1 endpoint)

Dag Stats (1 endpoint)

Dag Warnings (1 endpoint)

Dataset / Assets (10 endpoints)

Event Logs (2 endpoints)

Extra Link (1 endpoint)

Health (1 endpoint)

Import Error (2 endpoints)

Log (1 endpoint)

Plugin (1 endpoint)

Pool (5 endpoints)

Provider (1 endpoint)

Task (2 endpoints)

Task Instance (15 endpoints)

Variables (5 endpoints) @pierrejeambrun

Version (1 endpoint)

XCom (2 endpoints)

Committer

omkar-foss commented 2 weeks ago

Trimming down views.py is very tempting 😄

May I pick this up? If yes, please assign this issue to me. Thanks!

pierrejeambrun commented 2 weeks ago

Hello @omkar-foss,

views.py are mostly 'rendered' front end that will get replaced by the new UI react, in views.py you also find private/UI REST route, most of them are with the /object/ prefix, such as def grid_data. If you want to work on those UI dedicated endpoints you can that would be part of https://github.com/apache/airflow/issues/42366.

This issue focuses on the public endpoints, those are located under the api_connexion folder.

In anycase, just mention the endpoint you are working on, so people do not do the same ones, and I will update the description to track that :). I think we should do one at the time.

omkar-foss commented 2 weeks ago

Hi @pierrejeambrun, thank you for explaining it to me, much appreciate it.

I'll start migrating the public endpoints, beginning with migration of the DAG Details API (get_dag_details) in api_connexion/endpoints/dag_endpoint.py.

Since this is a meta issue (missed that previously!), I'll create the issue/PR corresponding to the endpoint(s) that I'll be working on and link to this issue (like usual).

P.S: views.py will have to wait :)

bugraoz93 commented 1 week ago

Thanks for creating the ticket @pierrejeambrun! Let me take connection endpoints

pierrejeambrun commented 1 week ago

Great, thanks @bugraoz93

bugraoz93 commented 1 week ago

Thanks for assigning! Let me save you from regular updates :) I created issues for all the endpoints in connections.

pierrejeambrun commented 6 days ago

Great, thanks @bugraoz93. I just updated the meta issue with those new additions. Let me know if you plan to work on all of them so I can assign you, or just some of them so I can label the others with good first issue and let other contributors grab them :)

bugraoz93 commented 6 days ago

I am planning to work on all of them @pierrejeambrun. if you can assign them to me, that would be great! Thanks :)

omkar-foss commented 5 days ago

Hey folks! After https://github.com/apache/airflow/pull/42631 (open for review), I can pick up these two next in order:

  1. get_dag - https://github.com/apache/airflow/issues/42652
  2. delete_dag - https://github.com/apache/airflow/issues/42650

With these 2 done, I suppose we should have the dags.py migration complete. When you find some time, please update this meta and assign these to me, thank you! 😃

bbovenzi commented 5 days ago

@omkar-foss Assigned. Thanks for picking these issues up!

rawwar commented 5 days ago

I am working on the following

  1. get_connection - #42674
  2. get_connections - #42677
omkar-foss commented 5 days ago

Hey folks, just a heads-up on Pydantic aliases - try not to use AliasGenerator as it breaks Airflow lowest direct dependency resolution tests with a TypeError because lower versions of Pydantic wouldn't be having this patch. The TypeError looks like alias_generator ... must return str, not ... (for more info see this issue).

Can use either AliasChoices or AliasPath as those work fine. I faced this issue in https://github.com/apache/airflow/pull/42631 and spent a while on it, so just thought should let you all know!

potiuk commented 4 days ago

Hey folks, just a heads-up on Pydantic aliases - try not to use AliasGenerator as it breaks Airflow lowest direct

We can also update the minimum version of Pydantic to the version that is fixed. This is the feature of the "lowest direct" tests that they detect such minimum requirements are not met. So maybe you can figure out which is the minimum version and we set it @omkar-foss ?

omkar-foss commented 4 days ago

This is the feature of the "lowest direct" tests that they detect such minimum requirements are not met.

It's a very cool feature! Helping to find issues we normally wouldn't find during regular unit or integration tests.

We can also update the minimum version of Pydantic to the version that is fixed. So maybe you can figure out which is the minimum version and we set it

That would be great, the minimum Pydantic version that is fixed is v2.6.4, this commit for quick reference.

potiuk commented 4 days ago

That would be great, the minimum Pydantic version that is fixed is v2.6.4, this commit for quick reference.

Added min version for Pydantic in https://github.com/apache/airflow/pull/42694

pierrejeambrun commented 4 days ago

@rawwar

I am working on the following

get_connection - https://github.com/apache/airflow/pull/42674 get_connections - AIP-84 Migrate the public endpoint Get Connections to FastAPI #42677`

Thanks for your contribution and help on AIP-84, as mentioned above, I think @bugraoz93 is already working on connections endpoints, or is planning to do so. Feel free to choose any other endpoints that looks cool to you, under api_connexions/endpoints. Besides dag_endpoint and connection_endpoint eveything is up for a grab, just let me know and I will assign you :)

pierrejeambrun commented 9 hours ago

Assigning myself to variables