2.25.0 (November 13, 2026)
💪 Improvements:
r/ovh_cloud_loadbalancer:network.idis now optional. When omitted, the network ofnetwork.subnet_idis used,network.idstaysnullhere and ind/ovh_cloud_loadbalancers, andcurrent_state.network.idholds the network in use. Removingnetwork.idfrom an existing configuration keeps the current value without recreating the load balancer; a different value still does (#1581)r/ovh_cloud_network_private_vrack_subnet: Addhost_routes, the static routes handed to the instances of the subnet through DHCP, as a list of{ destination, next_hop }updated in place. An empty list removes the routes, and leaving the attribute out keeps the current ones (#1578)d/ovh_cloud_network_private_vrack_subnet,d/ovh_cloud_network_private_vrack_subnets: Add the computedhost_routesattribute (#1578)r/ovh_cloud_storage_file_share_network:network_idis now optional. When omitted, the network ofsubnet_idis used. Removingnetwork_idfrom an existing configuration keeps the current value without recreating the share network; a different value still does (#1581)r/ovh_cloud_storage_object_bucket:object_locknow matches the API.status(ENABLEDorDISABLED, defaults toENABLED) arms the lock, soobject_lock = {}arms it without a default retention rule. The rule,modewithretention_daysor the newretention_years, is optional and updated in place. Only a change ofstatusreplaces the bucket, where before any change of the block did (#1573)d/ovh_cloud_storage_object_bucket,d/ovh_cloud_storage_object_buckets: Addobject_lock.status(#1573)r/ovh_dedicated_ceph_user: Adddiscard_key, to keep the key of the user out of the state. On import,discard_keyistruein the state so that the key is not stored before the configuration is known. The next apply reads it when the configuration does not setdiscard_key(#1574)
🐜 Bug fixes:
r/ovh_cloud_project_database_user,r/ovh_cloud_project_database_clickhouse_user,r/ovh_cloud_project_database_mongodb_user,r/ovh_cloud_project_database_opensearch_user,r/ovh_cloud_project_database_postgresql_user,r/ovh_cloud_project_database_valkey_user: Creating the built-in user (avnadmin, ordefaulton Valkey) no longer crashes the provider withinterface conversion: interface {} is nil, not string, a regression of v2.23.0. The existing user is adopted and its password reset, as before (#1563)r/ovh_cloud_storage_object_bucket: Creating a bucket withobject_lockno longer fails, as the lock status was not sent to the API, and the status is now read back. Importing a bucket without object lock, which the API reports asstatus = "DISABLED", no longer plans a replacement (#1573)d/ovh_iploadbalancing: Filtering byzoneno longer crashes the provider (#1564)r/ovh_iam_policy: Policies are now created, updated and deleted one at a time, as the API answers a 500 error to concurrent writes, which Terraform triggers when it applies several policies in parallel (#1570)
📚 Documentation:
- Public Cloud resources migration guide: Map
subnet.host_routesofovh_cloud_project_region_networkandhost_routeofovh_cloud_project_network_private_subnet_v2tohost_routesofovh_cloud_network_private_vrack_subnet, and update theobject_lockmapping ofovh_cloud_project_storageforstatusandretention_years(#1573, #1578) r/ovh_cloud_network_private_vrack_subnet,d/ovh_cloud_network_private_vrack_subnet,d/ovh_cloud_network_private_vrack_subnets: Describe the defaultallocation_pools(#1578)
⚙️ General:
- Public Cloud (
/v2/publicCloud) API calls now request version1.0of the schemas through theX-Schemas-Versionheader, the other v2 calls keep0.0(#1578) - Bump
golang.org/x/netfrom 0.61.0 to 0.62.0 (#1569)
❤️ Thanks for your contributions ❤️