Terraform has launched a new "Plugin Framework" that replaces the Plugin SDK v2. This new framework supports some advanced scenarios that currently do not work properly. It can help us solve a number of bugs that we are experiencing:
SDK v2 only supports "int" while Plugin Framework supports explicit "int64" types (Related to hcloud-go v2, #997, #877)
Plugin Framework supports strongly typed access to fields, which will help with a number of issues I discovered while trying to migrate to hcloud-go v2
SDK v2 only supports binary ForceNew for schema attributes. For hcloud_server.server_type it makes sense to ForceNew when switching between x86 and Arm, but to keep the same server and scale it in case the architecture stays the same. This is supported by the Plugin Framework. See #853
What whould you like to see?
Terraform has launched a new "Plugin Framework" that replaces the Plugin SDK v2. This new framework supports some advanced scenarios that currently do not work properly. It can help us solve a number of bugs that we are experiencing:
ForceNew
for schema attributes. Forhcloud_server.server_type
it makes sense toForceNew
when switching between x86 and Arm, but to keep the same server and scale it in case the architecture stays the same. This is supported by the Plugin Framework. See #853hcloud_server.public_net
we have some bugs that are caused by the "Set" type for this argument. These can only be fixed in the Plugin Framework. See https://github.com/hetznercloud/terraform-provider-hcloud/issues/944 and https://github.com/hetznercloud/terraform-provider-hcloud/pull/597#issuecomment-2328321946This migration will be a huge refactoring effort. We plan on doing it in many smaller steps, migrating a couple of resources at a time.
hcloud_certificate
hcloud_uploaded_certificate
hcloud_managed_certificate
data.hcloud_certificate
data.hcloud_certificates
data.hcloud_datacenter
#779data.hcloud_datacenters
#779hcloud_firewall
hcloud_firewall_attachment
data.hcloud_firewall
data.hcloud_firewalls
hcloud_floating_ip
hcloud_floating_ip_assignment
data.hcloud_floating_ip
data.hcloud_floating_ips
data.hcloud_image
data.hcloud_images
hcloud_load_balancer
hcloud_load_balancer_network
hcloud_load_balancer_service
hcloud_load_balancer_target
data.hcloud_load_balancer
data.hcloud_load_balancers
data.hcloud_location
https://github.com/hetznercloud/terraform-provider-hcloud/pull/796data.hcloud_locations
https://github.com/hetznercloud/terraform-provider-hcloud/pull/796hcloud_network
hcloud_network_subnet
hcloud_network_route
data.hcloud_network
data.hcloud_networks
hcloud_placement_group
data.hcloud_placement_group
data.hcloud_placement_groups
hcloud_primary_ip
data.hcloud_primary_ip
data.hcloud_primary_ips
hcloud_rdns
hcloud_server
hcloud_server_network
data.hcloud_server
data.hcloud_servers
data.hcloud_server_type
https://github.com/hetznercloud/terraform-provider-hcloud/pull/959data.hcloud_server_types
https://github.com/hetznercloud/terraform-provider-hcloud/pull/959hcloud_snapshot
hcloud_ssh_key
#817data.hcloud_ssh_key
#817data.hcloud_ssh_keys
#817hcloud_volume
hcloud_volume_attachment
data.hcloud_volume
data.hcloud_volumes