Skip to content

Conversation

@potiuk
Copy link
Member

@potiuk potiuk commented Dec 23, 2023

This PR adds possibility of marking the provider as "not ready" in the provider.yaml (by setting optional field as "not-ready" to `true".

Setting provider as "not-ready", removes it by default from all the release management commands - preparing documentation files preparing provider packages, publishing docs.

You can include such providers via --include-not-ready-providers flag (or setting INCLUDE_NOT_READY_PROVIDERS environment variable to true).

This flag is set to True in our CI, so that we can make sure the providers in-progress are also being tested and verified, but when release manager prepares packages, those providers are not prepared.

That will help in early stage of a lifecycle of a provider when we already want to iterate and test it continuously, but - for example the API of such provider is not yet stable or when we are in progress of moving functionality for such provider from core.

This PR also marks fab providers as "not-ready" as it is still early days and we want to exclude it for now from any kind of release process.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in newsfragments.

@potiuk
Copy link
Member Author

potiuk commented Dec 23, 2023

CC: @bolkedebruin - respnding to some of the needs we had in the past. In the future things like "common.io" where the API is not ready to be released yet could be marked as "not-ready". I already marked "fab" provider as "not-ready" @vincbeck

CC: @eladkal

This is the way how we can exclude some providers from being released in the "upcoming" wave of providers. The nice thing is that we should be able to mark provider as "not-ready" even if it is already released, but - for-example- we are in progress of doing something and we think we should hold back with releasing the provider.

@potiuk potiuk force-pushed the allow-to-mark-packages-as-not-ready branch from d4de189 to b1a388a Compare December 23, 2023 16:00
@potiuk
Copy link
Member Author

potiuk commented Dec 23, 2023

I also added a chapter in the Provider release documentation about all possible states of provider packages. Now we have 4:

  • default
  • not-ready
  • suspended
  • removed

And I thought it might be worthwile to capture the differences between those 4 states in a single place. Release documentation seems like a good place for it.

@Taragolis
Copy link
Contributor

And I thought it might be worthwile to capture the differences between those 4 states in a single place. Release documentation seems like a good place for it.

I think it also would be nice to split into different sections list of providers as follow up in https://airflow.apache.org/docs/#providers-packagesdocsapache-airflow-providersindexhtml

At least move removed/suspended into the separate list

@potiuk
Copy link
Member Author

potiuk commented Dec 23, 2023

I think it also would be nice to split into different sections list of providers as follow up in https://airflow.apache.org/docs/#providers-packagesdocsapache-airflow-providersindexhtml

At least move removed/suspended into the separate list

Good point. That list is maintained separately - because it is part of the airlfow-site repository. And I think we should just remember to clean-it-up after we suspend/remove providers (getting the list of suspended/removed providers in this repo might be a bit more complex, so likely manual synchronization is better).

Let me add a separate PR for that in the release management process.

Comment on lines +29 to +31
Copy link
Contributor

@Taragolis Taragolis Dec 23, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we might be close to replace all states attributes by a single as enum (as follow up), e.g.:

"state": {
        "type": "string",
        "enum": ["ready", "not-ready", "suspended", "removed"]
      },

I think all states are mutually exclusive and lifecycle for abstract package would be

graph TD;
    not-ready-->ready;
    ready-->not-ready;
    ready-->suspended;
    ready-->removed;
    suspended-->removed;
Loading

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. We could do it this way as well. I will leave that exercise to you :)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a good idea

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BTW. Here is the PR about state updating by Release Manager #36392

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BTW. I like the diagram and added it to the docs now. But I fixed it. There is one more transition possible - ready -> not-ready. The way we have it defined now, we can mark a package as "not-ready" even if it has been previously released and it will be all-fine with tests and ci - but it will be skipped by default when releasing new wave.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks a bit different now :)

Screenshot 2023-12-23 at 17 49 40

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is a bit TOO much though 👎

Screenshot 2023-12-23 at 17 59 14

Copy link
Member Author

@potiuk potiuk Dec 23, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about this ?

Screenshot 2023-12-23 at 18 03 06

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok. This one seems to be nicest:

Screenshot 2023-12-23 at 18 05 24

Copy link
Member Author

@potiuk potiuk Dec 23, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or this for symmetry

Screenshot 2023-12-23 at 18 07 54

Copy link
Member

@hussein-awala hussein-awala left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good

@potiuk potiuk force-pushed the allow-to-mark-packages-as-not-ready branch 7 times, most recently from 699410e to 36f1d1a Compare December 23, 2023 17:02
@potiuk potiuk force-pushed the allow-to-mark-packages-as-not-ready branch from 36f1d1a to 9c539fa Compare December 23, 2023 17:05
This PR adds possibility of marking the provider as "not ready" in the
provider.yaml (by setting optional field as "not-ready" to `true".

Setting provider as "not-ready", removes it by default from all the
release management commands - preparing documentation files preparing
provider packages, publishing docs.

You can include such providers via `--include-not-ready-providers`
flag (or setting INCLUDE_NOT_READY_PROVIDERS environment variable to
true).

This flag is set to True in our CI, so that we can make sure the
providers in-progress are also being tested and verified, but when
release manager prepares packages, those providers are not prepared.

That will help in early stage of a lifecycle of a provider when we
already want to iterate and test it continuously, but - for example
the API of such provider is not yet stable or when we are in progress
of moving functionality for such provider from core.

This PR also marks `fab` providers as "not-ready" as it is still
early days and we want to exclude it for now from any kind of release
process.
@potiuk potiuk force-pushed the allow-to-mark-packages-as-not-ready branch from 9c539fa to b2194d6 Compare December 23, 2023 17:07
@potiuk potiuk merged commit 341d5b7 into apache:main Dec 23, 2023
@potiuk potiuk deleted the allow-to-mark-packages-as-not-ready branch December 23, 2023 18:49
potiuk added a commit that referenced this pull request Dec 30, 2023
This PR adds possibility of marking the provider as "not ready" in the
provider.yaml (by setting optional field as "not-ready" to `true".

Setting provider as "not-ready", removes it by default from all the
release management commands - preparing documentation files preparing
provider packages, publishing docs.

You can include such providers via `--include-not-ready-providers`
flag (or setting INCLUDE_NOT_READY_PROVIDERS environment variable to
true).

This flag is set to True in our CI, so that we can make sure the
providers in-progress are also being tested and verified, but when
release manager prepares packages, those providers are not prepared.

That will help in early stage of a lifecycle of a provider when we
already want to iterate and test it continuously, but - for example
the API of such provider is not yet stable or when we are in progress
of moving functionality for such provider from core.

This PR also marks `fab` providers as "not-ready" as it is still
early days and we want to exclude it for now from any kind of release
process.

(cherry picked from commit 341d5b7)
@potiuk potiuk added the changelog:skip Changes that should be skipped from the changelog (CI, tests, etc..) label Dec 30, 2023
@potiuk potiuk added this to the Airflow 2.8.1 milestone Dec 30, 2023
@vincbeck
Copy link
Contributor

vincbeck commented Jan 2, 2024

Quick question: why marking fab provider as not ready? To me, the code migration is done and the only remaining piece is #36232 but no breaking change is expected now onwards in fab provider.

@potiuk
Copy link
Member Author

potiuk commented Jan 2, 2024

Quick question: why marking fab provider as not ready? To me, the code migration is done and the only remaining piece is #36232 but no breaking change is expected now onwards in fab provider.

"Not ready" is only used to skip the package from being released. The thing is that we do not want to release FAB provider just yet. And when we prepare providers for release we prepare all packages that are eligible to be released. But it makes no sense to relase FAB yet - as we might find bugs and issues that make such relased package not really suitable and we will have to yank them. We had somewhat similar problem with common.io which we released quite a bit too early as it had some breaking changes that made them unusable.

Result:

Screenshot 2024-01-02 at 22 43 16

I think we should removre the "not-ready" flag some two weeks before Airflow 2.9 alpha/beta relase, to give us enough time to relase it in the regular provider's wave a week/two before Airflow needs it.

@vincbeck
Copy link
Contributor

vincbeck commented Jan 2, 2024

I see, thanks for the explanations, it makes sense to me

@potiuk
Copy link
Member Author

potiuk commented Jan 2, 2024

BTW. It's been improved since and it's easier to manage the state now with single state field in provider.yaml :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:dev-tools area:providers changelog:skip Changes that should be skipped from the changelog (CI, tests, etc..)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants