-
Notifications
You must be signed in to change notification settings - Fork 4.2k
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
Connector Levels: Add new internal metadata fields #28904
Connector Levels: Add new internal metadata fields #28904
Conversation
Before Merging a Connector Pull RequestWow! What a great pull request you have here! 🎉 To merge this PR, ensure the following has been done/considered for each connector added or updated:
If the checklist is complete, but the CI check is failing,
|
Coverage report for source-postgres
|
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 reasonable! Only question is about required/defaults or not
class ReleaseStage1(BaseModel): | ||
__root__: Literal["community", "certified"] = Field( | ||
..., | ||
description="enum that describes a connector's release stage", | ||
title="ReleaseStage", |
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.
is it still called ReleaseStage in the new setup? I thought they were "quality level"s
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.
This is wrong! fixing
@@ -154,6 +170,7 @@ class Config: | |||
False, description="whether this is a custom connector definition" | |||
) | |||
releaseStage: Optional[ReleaseStage] = None | |||
supportLevel: Optional[ReleaseStage1] = None |
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.
Ah, this explains my question earlier - though I did find this confusing
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.
Ah missed this! will fix up!
description: Fields for internal use only | ||
type: object | ||
additionalProperties: false | ||
properties: |
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.
are these properties required? (I think it makes sense for these to be required, and to default to the lowest values if not provided (i.e. a new connector)
if so we should be able to apply the required and the defaults here (I think, on the defaults at least)
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.
If they are required, we should add one to the invalid examples where the properties don't exist.
I have the same overall question for supportLevel
- is it a required property?
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.
Originally I had left it as not a required property so as not to break metadata processing at this time.
Once these are out and the systems are updated the plan is to cut a v2 of the metadata spec
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'm not sure how adding this as required would break metadata processing since you've manually patched all of the files so far. Can you elaborate?
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 are still old metadata files that can be processed.
For example at this time if you were to rerun the add metadata partition job in our orchestrator we would see a lot of failures for previous versions of metadata files.
This isnt a major issue, and overtime we expect there are old metadata files we cant/no longer want to process. Hell even right now we fail silently as long as this doesnt occur on a latest file path.
However I believe its good practise that while were still updating our downstream systems to use these new fields we allow them to exist harmoniously with the existing (old) systems. That way we can always rollback changes to downstream systems in case things go wrong.
Also it delays me from cutting the v2 of the metadata spec. And the more we delay their the more we learn. and the more we learn the less likely we end up in a situation where we have to cut a v3 immediately afterward.
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.
Great idea! Also Ill add the defaults to the scaffold, but I want them to set them explicitly! If we add defaults here then they never have to add them to the metadata
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.
mm yeah i'm mostly concerned about community contributors - though I guess they'd not add the ab_internal stuff at all
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.
in that case no defaults but still reqired sub-keys makes sense to me!
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.
Fair call out. These are akward that way.
I think this means that the defaults for this fields are pushed to the consuming service.
In this case the transformation from metadata to registry entry
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.
Meaning for the Registry we can make these required and fill in the defaults when transforming from the metadata definition
2d85dcc
to
3dc8b34
Compare
/approve-and-merge reason="Adding benign metadata fields" |
* Add airbyte internal * Add tests * First pass * Set destinations to same levels as sources * Best guess at missing statuses * Best guess at _ql * Add separate enum class * Fix support level name * Update templates * Add one more test
Overview
closes #28712