-
Notifications
You must be signed in to change notification settings - Fork 4.3k
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
🎉 New Source-connector for Zuora #4661
Conversation
…ov/2664-source-zuora
…ov/2664-source-zuora
…ov/2664-source-zuora
…ov/2664-source-zuora
…zarnov/2664-source-zuora
… arguments, formated code
/test connector=connectors/source-zuora
|
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.
Thanks for including custom integration tests, appreciate that!
Actual sync logic seems solid, made a couple of minor comments here and there.
Main thing to discuss is that I found the inheritance structure a little bit unintuitive, since mostly everything is ultimately a child of HttpStream
& ZuoraStream
. This would, for example, imply that ZuoraDescribeObject
is a ZuoraStream
by hierarchical inheritance. I can however see your reasoning here, to inherit a bunch of useful Http methods. I'd be tempted to create Mixins or just separate non-stream inherited classes for the non-stream Zuora logic (ZuoraBase
, ZuoraListObjects
, ZuoraDescribeObject
, ZuoraSubmitJob
, ZuoraJobStatusCheck
) and then have ZuoraObjectsBase
either inherit from these mixins or instantiate those objects and use the logic appropriately. Thing is when it comes to structure there are many ways to skin the cat and there isn't exactly a correct answer, so happy to discuss this more. Wdyt?
Couple of other things, missing some additions to files:
- airbyte-integrations/builds.md
- docs/SUMMARY.md
- docs/integrations/README.md
airbyte-integrations/connectors/source-zuora/integration_tests/integration_test.py
Outdated
Show resolved
Hide resolved
airbyte-integrations/connectors/source-zuora/integration_tests/integration_test.py
Show resolved
Hide resolved
Those are just added, I'll push the updates along with updated |
/test connector=connectors/source-zuora
|
@sherifnada Oleksandr and I discussed this earlier which sparked an idea to support this better in cdk. We could separate a RequestHandler() based on the logic in HttpStream, which HttpStream can then instantiate and use to retain same functionality. This separate RequestHandler() could then be utilised in cases like this source where we actually need varying requests (path, headers, params, response parsing) within a single HttpStream(). wdyt? |
@Phlair that sounds interesting, is it basically splitting out the client functionality for hitting the API out of the stream? Would you be able to illustrate with an example here or in an issue? |
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.
Approved.
I'll create an issue based on the above conversations and link here
Sounds great, I'll fix the conflicts of this branch and |
/test connector=connectors/source-zuora
|
/publish connector=connectors/source-zuora
|
created issue around points above: https://github.com/airbytehq/airbyte-internal-issues/issues/193 |
Many thanks, @Phlair |
What
Resolving the issue:
#2664 - New Source-connector for Zuora
How
Using CDK and custom methods implemented the connector logic for Zuora as a source for Airbyte.
Connector Features
As a source of data Airbyte Zuora Connector provides users with the following capabilities:
full-refresh
andincremental refresh
withoverwrite, append, append-deduplicate
methodsCode features:
(including the custom objects & custom fields)
updateddate
orcreateddate
, if the default cursor_fieldupdateddate
is not available to use in a particular streamPre-merge Checklist
Expand the checklist which is relevant for this PR.
Connector checklist
airbyte_secret
in the connector's spec./gradlew :airbyte-integrations:connectors:<name>:integrationTest
./test connector=connectors/<name>
command as documented here is passing.README.md
docs/SUMMARY.md
if it's a new connectordocs/integrations/<source or destination>/<name>
.docs/integrations/...
. See changelog exampledocs/integrations/README.md
contains a reference to the new connector/publish
command described here