-
Notifications
You must be signed in to change notification settings - Fork 16.4k
Add feture of "not-ready" provider. #36391
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add feture of "not-ready" provider. #36391
Conversation
|
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. |
d4de189 to
b1a388a
Compare
|
I also added a chapter in the Provider release documentation about all possible states of provider packages. Now we have 4:
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 |
At least move removed/suspended into the separate list Good point. That list is maintained separately - because it is part of the Let me add a separate PR for that in the release management process. |
airflow/providers/fab/provider.yaml
Outdated
There was a problem hiding this comment.
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;
There was a problem hiding this comment.
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 :)
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hussein-awala
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good
699410e to
36f1d1a
Compare
36f1d1a to
9c539fa
Compare
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.
9c539fa to
b2194d6
Compare
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)
|
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:
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. |
|
I see, thanks for the explanations, it makes sense to me |
|
BTW. It's been improved since and it's easier to manage the state now with single |






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-providersflag (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
fabproviders 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.rstor{issue_number}.significant.rst, in newsfragments.