I've been trying to find a decent description of this but couldn't find it anywhere. What is the difference between the "classic" and "native" version of plugins?
06/14/2022, 1:50 AM
Classic is (usually?) bridged Terraform: it uses Terraform's schema as a logical starting point, and re-implements the same stuff.
Native uses a cloud provider's "generic" and "auto-discoverable" APIs.
When a new feature is released by a cloud provider, hopefully both their APIs (the resource-specific one, and the "auto-discoverable" one) are released at the same time. So Pulumi just needs to point their code-generating magic at the provider's start point, and run. New version is released.
But for the classic versions, first Terraform has to update their SDK, presumably using the resource-specific API. Then Pulumi can point their code-generating magic at that. And then, new version released.
So one extra step, and it's a step that can take quite a while.
Flip side is, at least for AWS, the auto-discoverable API (Cloud Control, iirc?) isn't fully featured yet, and doesn't seem to be updated as fast as the resource-specific APIs. Which is a little disappointing... :(