Add support for the hahicorp mux library #121
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hashicorp has a new "framework" for provider development that replaces SDK v2.0. We can combine "framework" provider code which can still be in separate repos with SDK v2.0 provider code using the Hashicorp "mux" library. In this PR we adapt the existing pkg/provider code to allow us to use "mux" with "legacy" provider code that uses the framework that we put together for SDK v2.0.
To do this instead of creating one combined provider instance we create separate provider instances one for each service. There are a couple of restrictions on providers that are passed to the mux library:
We've implemented a NewProviderMux function in pkg/provider which creates sub-providers that satisfy the above restrictions. The inputs to this function are the same as those to NewProviderFunc. SDK v2.0 provider repos that use the framework don't need any changes. However we will need to add registration.ServiceRegistration implementations for all new "framework" providers that implement just the ProviderSchemaEntry and pass those down to NewProviderMux.