pulumi-hcloud 1.30.0a1768456027__tar.gz → 1.31.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/PKG-INFO +1 -1
  2. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_primary_ip.py +37 -2
  3. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_server.py +2 -1
  4. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_storage_box_subaccount.py +25 -1
  5. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/outputs.py +20 -0
  6. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/primary_ip.py +89 -7
  7. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/pulumi-plugin.json +1 -1
  8. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/server.py +39 -4
  9. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/storage_box.py +27 -7
  10. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/storage_box_subaccount.py +50 -1
  11. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud.egg-info/PKG-INFO +1 -1
  12. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pyproject.toml +1 -1
  13. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/README.md +0 -0
  14. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/__init__.py +0 -0
  15. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/_inputs.py +0 -0
  16. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/_utilities.py +0 -0
  17. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/certificate.py +0 -0
  18. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/config/__init__.py +0 -0
  19. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/config/__init__.pyi +0 -0
  20. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/config/vars.py +0 -0
  21. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/firewall.py +0 -0
  22. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/firewall_attachment.py +0 -0
  23. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/floating_ip.py +0 -0
  24. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/floating_ip_assignment.py +0 -0
  25. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_certificate.py +0 -0
  26. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_certificates.py +0 -0
  27. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_datacenter.py +0 -0
  28. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_datacenters.py +0 -0
  29. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_firewall.py +0 -0
  30. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_firewalls.py +0 -0
  31. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_floating_ip.py +0 -0
  32. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_floating_ips.py +0 -0
  33. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_image.py +0 -0
  34. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_images.py +0 -0
  35. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_load_balancer.py +0 -0
  36. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_load_balancer_type.py +0 -0
  37. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_load_balancer_types.py +0 -0
  38. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_load_balancers.py +0 -0
  39. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_location.py +0 -0
  40. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_locations.py +0 -0
  41. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_network.py +0 -0
  42. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_networks.py +0 -0
  43. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_placement_group.py +0 -0
  44. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_placement_groups.py +0 -0
  45. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_primary_ips.py +0 -0
  46. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_server_type.py +0 -0
  47. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_server_types.py +0 -0
  48. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_servers.py +0 -0
  49. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_ssh_key.py +0 -0
  50. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_ssh_keys.py +0 -0
  51. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_storage_box.py +0 -0
  52. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_storage_box_snapshot.py +0 -0
  53. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_storage_box_snapshots.py +0 -0
  54. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_storage_box_subaccounts.py +0 -0
  55. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_storage_box_type.py +0 -0
  56. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_storage_box_types.py +0 -0
  57. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_storage_boxes.py +0 -0
  58. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_volume.py +0 -0
  59. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_volumes.py +0 -0
  60. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_zone.py +0 -0
  61. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_zone_rrset.py +0 -0
  62. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_zone_rrsets.py +0 -0
  63. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/get_zones.py +0 -0
  64. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/load_balancer.py +0 -0
  65. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/load_balancer_network.py +0 -0
  66. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/load_balancer_service.py +0 -0
  67. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/load_balancer_target.py +0 -0
  68. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/managed_certificate.py +0 -0
  69. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/network.py +0 -0
  70. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/network_route.py +0 -0
  71. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/network_subnet.py +0 -0
  72. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/placement_group.py +0 -0
  73. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/provider.py +0 -0
  74. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/py.typed +0 -0
  75. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/rdns.py +0 -0
  76. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/server_network.py +0 -0
  77. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/snapshot.py +0 -0
  78. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/ssh_key.py +0 -0
  79. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/storage_box_snapshot.py +0 -0
  80. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/uploaded_certificate.py +0 -0
  81. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/volume.py +0 -0
  82. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/volume_attachment.py +0 -0
  83. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/zone.py +0 -0
  84. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud/zone_rrset.py +0 -0
  85. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud.egg-info/SOURCES.txt +0 -0
  86. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud.egg-info/dependency_links.txt +0 -0
  87. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud.egg-info/requires.txt +0 -0
  88. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/pulumi_hcloud.egg-info/top_level.txt +0 -0
  89. {pulumi_hcloud-1.30.0a1768456027 → pulumi_hcloud-1.31.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulumi_hcloud
3
- Version: 1.30.0a1768456027
3
+ Version: 1.31.0
4
4
  Summary: A Pulumi package for creating and managing hcloud cloud resources.
5
5
  License: Apache-2.0
6
6
  Project-URL: Homepage, https://pulumi.io
@@ -26,7 +26,7 @@ class GetPrimaryIpResult:
26
26
  """
27
27
  A collection of values returned by getPrimaryIp.
28
28
  """
29
- def __init__(__self__, assignee_id=None, assignee_type=None, auto_delete=None, datacenter=None, delete_protection=None, id=None, ip_address=None, ip_network=None, labels=None, name=None, type=None, with_selector=None):
29
+ def __init__(__self__, assignee_id=None, assignee_type=None, auto_delete=None, datacenter=None, delete_protection=None, id=None, ip_address=None, ip_network=None, labels=None, location=None, name=None, type=None, with_selector=None):
30
30
  if assignee_id and not isinstance(assignee_id, int):
31
31
  raise TypeError("Expected argument 'assignee_id' to be a int")
32
32
  pulumi.set(__self__, "assignee_id", assignee_id)
@@ -54,6 +54,9 @@ class GetPrimaryIpResult:
54
54
  if labels and not isinstance(labels, dict):
55
55
  raise TypeError("Expected argument 'labels' to be a dict")
56
56
  pulumi.set(__self__, "labels", labels)
57
+ if location and not isinstance(location, str):
58
+ raise TypeError("Expected argument 'location' to be a str")
59
+ pulumi.set(__self__, "location", location)
57
60
  if name and not isinstance(name, str):
58
61
  raise TypeError("Expected argument 'name' to be a str")
59
62
  pulumi.set(__self__, "name", name)
@@ -90,9 +93,10 @@ class GetPrimaryIpResult:
90
93
 
91
94
  @_builtins.property
92
95
  @pulumi.getter
96
+ @_utilities.deprecated("""The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.""")
93
97
  def datacenter(self) -> _builtins.str:
94
98
  """
95
- (string) The datacenter name of the Primary IP. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.
99
+ (string, deprecated) The datacenter name of the Primary IP. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.
96
100
  """
97
101
  return pulumi.get(self, "datacenter")
98
102
 
@@ -136,6 +140,14 @@ class GetPrimaryIpResult:
136
140
  """
137
141
  return pulumi.get(self, "labels")
138
142
 
143
+ @_builtins.property
144
+ @pulumi.getter
145
+ def location(self) -> _builtins.str:
146
+ """
147
+ (string) The location of the Primary IP. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.
148
+ """
149
+ return pulumi.get(self, "location")
150
+
139
151
  @_builtins.property
140
152
  @pulumi.getter
141
153
  def name(self) -> Optional[_builtins.str]:
@@ -173,6 +185,7 @@ class AwaitableGetPrimaryIpResult(GetPrimaryIpResult):
173
185
  ip_address=self.ip_address,
174
186
  ip_network=self.ip_network,
175
187
  labels=self.labels,
188
+ location=self.location,
176
189
  name=self.name,
177
190
  type=self.type,
178
191
  with_selector=self.with_selector)
@@ -194,6 +207,16 @@ def get_primary_ip(assignee_id: Optional[_builtins.int] = None,
194
207
  If a server is getting created, it has to have a primary ip. If a server is getting created without defining primary ips, two of them (one ipv4 and one ipv6) getting created & attached.
195
208
  Currently, Primary IPs can be only attached to servers.
196
209
 
210
+ ## Deprecations
211
+
212
+ ### `datacenter` attribute
213
+
214
+ The `datacenter` attribute is deprecated, use the `location` attribute instead.
215
+
216
+ See our the [API changelog](https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters) for more details.
217
+
218
+ > Please upgrade to `v1.58.0+` of the provider to avoid issues once the Hetzner Cloud API no longer returns the `datacenter` attribute.
219
+
197
220
  ## Example Usage
198
221
 
199
222
  # Data Source: PrimaryIp
@@ -250,6 +273,7 @@ def get_primary_ip(assignee_id: Optional[_builtins.int] = None,
250
273
  ip_address=pulumi.get(__ret__, 'ip_address'),
251
274
  ip_network=pulumi.get(__ret__, 'ip_network'),
252
275
  labels=pulumi.get(__ret__, 'labels'),
276
+ location=pulumi.get(__ret__, 'location'),
253
277
  name=pulumi.get(__ret__, 'name'),
254
278
  type=pulumi.get(__ret__, 'type'),
255
279
  with_selector=pulumi.get(__ret__, 'with_selector'))
@@ -269,6 +293,16 @@ def get_primary_ip_output(assignee_id: Optional[pulumi.Input[Optional[_builtins.
269
293
  If a server is getting created, it has to have a primary ip. If a server is getting created without defining primary ips, two of them (one ipv4 and one ipv6) getting created & attached.
270
294
  Currently, Primary IPs can be only attached to servers.
271
295
 
296
+ ## Deprecations
297
+
298
+ ### `datacenter` attribute
299
+
300
+ The `datacenter` attribute is deprecated, use the `location` attribute instead.
301
+
302
+ See our the [API changelog](https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters) for more details.
303
+
304
+ > Please upgrade to `v1.58.0+` of the provider to avoid issues once the Hetzner Cloud API no longer returns the `datacenter` attribute.
305
+
272
306
  ## Example Usage
273
307
 
274
308
  # Data Source: PrimaryIp
@@ -324,6 +358,7 @@ def get_primary_ip_output(assignee_id: Optional[pulumi.Input[Optional[_builtins.
324
358
  ip_address=pulumi.get(__response__, 'ip_address'),
325
359
  ip_network=pulumi.get(__response__, 'ip_network'),
326
360
  labels=pulumi.get(__response__, 'labels'),
361
+ location=pulumi.get(__response__, 'location'),
327
362
  name=pulumi.get(__response__, 'name'),
328
363
  type=pulumi.get(__response__, 'type'),
329
364
  with_selector=pulumi.get(__response__, 'with_selector')))
@@ -120,9 +120,10 @@ class GetServerResult:
120
120
 
121
121
  @_builtins.property
122
122
  @pulumi.getter
123
+ @_utilities.deprecated("""The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.""")
123
124
  def datacenter(self) -> _builtins.str:
124
125
  """
125
- (string) The datacenter name. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.
126
+ (string, deprecated) The datacenter name. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.
126
127
  """
127
128
  return pulumi.get(self, "datacenter")
128
129
 
@@ -27,7 +27,7 @@ class GetStorageBoxSubaccountResult:
27
27
  """
28
28
  A collection of values returned by getStorageBoxSubaccount.
29
29
  """
30
- def __init__(__self__, access_settings=None, description=None, home_directory=None, id=None, labels=None, server=None, storage_box_id=None, username=None, with_selector=None):
30
+ def __init__(__self__, access_settings=None, description=None, home_directory=None, id=None, labels=None, name=None, server=None, storage_box_id=None, username=None, with_selector=None):
31
31
  if access_settings and not isinstance(access_settings, dict):
32
32
  raise TypeError("Expected argument 'access_settings' to be a dict")
33
33
  pulumi.set(__self__, "access_settings", access_settings)
@@ -43,6 +43,9 @@ class GetStorageBoxSubaccountResult:
43
43
  if labels and not isinstance(labels, dict):
44
44
  raise TypeError("Expected argument 'labels' to be a dict")
45
45
  pulumi.set(__self__, "labels", labels)
46
+ if name and not isinstance(name, str):
47
+ raise TypeError("Expected argument 'name' to be a str")
48
+ pulumi.set(__self__, "name", name)
46
49
  if server and not isinstance(server, str):
47
50
  raise TypeError("Expected argument 'server' to be a str")
48
51
  pulumi.set(__self__, "server", server)
@@ -96,6 +99,14 @@ class GetStorageBoxSubaccountResult:
96
99
  """
97
100
  return pulumi.get(self, "labels")
98
101
 
102
+ @_builtins.property
103
+ @pulumi.getter
104
+ def name(self) -> _builtins.str:
105
+ """
106
+ Name of the Storage Box Subaccount.
107
+ """
108
+ return pulumi.get(self, "name")
109
+
99
110
  @_builtins.property
100
111
  @pulumi.getter
101
112
  def server(self) -> _builtins.str:
@@ -140,6 +151,7 @@ class AwaitableGetStorageBoxSubaccountResult(GetStorageBoxSubaccountResult):
140
151
  home_directory=self.home_directory,
141
152
  id=self.id,
142
153
  labels=self.labels,
154
+ name=self.name,
143
155
  server=self.server,
144
156
  storage_box_id=self.storage_box_id,
145
157
  username=self.username,
@@ -147,6 +159,7 @@ class AwaitableGetStorageBoxSubaccountResult(GetStorageBoxSubaccountResult):
147
159
 
148
160
 
149
161
  def get_storage_box_subaccount(id: Optional[_builtins.int] = None,
162
+ name: Optional[_builtins.str] = None,
150
163
  storage_box_id: Optional[_builtins.int] = None,
151
164
  username: Optional[_builtins.str] = None,
152
165
  with_selector: Optional[_builtins.str] = None,
@@ -162,6 +175,8 @@ def get_storage_box_subaccount(id: Optional[_builtins.int] = None,
162
175
  storage_box_id = config.require_object("storageBoxId")
163
176
  by_id = hcloud.get_storage_box_subaccount(storage_box_id=storage_box_id,
164
177
  id=2)
178
+ by_name = hcloud.get_storage_box_subaccount(storage_box_id=storage_box_id,
179
+ name="badger")
165
180
  by_username = hcloud.get_storage_box_subaccount(storage_box_id=storage_box_id,
166
181
  username="u507137-sub1")
167
182
  by_label_selector = hcloud.get_storage_box_subaccount(storage_box_id=storage_box_id,
@@ -170,12 +185,14 @@ def get_storage_box_subaccount(id: Optional[_builtins.int] = None,
170
185
 
171
186
 
172
187
  :param _builtins.int id: ID of the Storage Box Subaccount.
188
+ :param _builtins.str name: Name of the Storage Box Subaccount.
173
189
  :param _builtins.int storage_box_id: ID of the Storage Box.
174
190
  :param _builtins.str username: Username of the Storage Box Subaccount.
175
191
  :param _builtins.str with_selector: Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/hetzner#label-selector).
176
192
  """
177
193
  __args__ = dict()
178
194
  __args__['id'] = id
195
+ __args__['name'] = name
179
196
  __args__['storageBoxId'] = storage_box_id
180
197
  __args__['username'] = username
181
198
  __args__['withSelector'] = with_selector
@@ -188,11 +205,13 @@ def get_storage_box_subaccount(id: Optional[_builtins.int] = None,
188
205
  home_directory=pulumi.get(__ret__, 'home_directory'),
189
206
  id=pulumi.get(__ret__, 'id'),
190
207
  labels=pulumi.get(__ret__, 'labels'),
208
+ name=pulumi.get(__ret__, 'name'),
191
209
  server=pulumi.get(__ret__, 'server'),
192
210
  storage_box_id=pulumi.get(__ret__, 'storage_box_id'),
193
211
  username=pulumi.get(__ret__, 'username'),
194
212
  with_selector=pulumi.get(__ret__, 'with_selector'))
195
213
  def get_storage_box_subaccount_output(id: Optional[pulumi.Input[Optional[_builtins.int]]] = None,
214
+ name: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
196
215
  storage_box_id: Optional[pulumi.Input[_builtins.int]] = None,
197
216
  username: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
198
217
  with_selector: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
@@ -208,6 +227,8 @@ def get_storage_box_subaccount_output(id: Optional[pulumi.Input[Optional[_builti
208
227
  storage_box_id = config.require_object("storageBoxId")
209
228
  by_id = hcloud.get_storage_box_subaccount(storage_box_id=storage_box_id,
210
229
  id=2)
230
+ by_name = hcloud.get_storage_box_subaccount(storage_box_id=storage_box_id,
231
+ name="badger")
211
232
  by_username = hcloud.get_storage_box_subaccount(storage_box_id=storage_box_id,
212
233
  username="u507137-sub1")
213
234
  by_label_selector = hcloud.get_storage_box_subaccount(storage_box_id=storage_box_id,
@@ -216,12 +237,14 @@ def get_storage_box_subaccount_output(id: Optional[pulumi.Input[Optional[_builti
216
237
 
217
238
 
218
239
  :param _builtins.int id: ID of the Storage Box Subaccount.
240
+ :param _builtins.str name: Name of the Storage Box Subaccount.
219
241
  :param _builtins.int storage_box_id: ID of the Storage Box.
220
242
  :param _builtins.str username: Username of the Storage Box Subaccount.
221
243
  :param _builtins.str with_selector: Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/hetzner#label-selector).
222
244
  """
223
245
  __args__ = dict()
224
246
  __args__['id'] = id
247
+ __args__['name'] = name
225
248
  __args__['storageBoxId'] = storage_box_id
226
249
  __args__['username'] = username
227
250
  __args__['withSelector'] = with_selector
@@ -233,6 +256,7 @@ def get_storage_box_subaccount_output(id: Optional[pulumi.Input[Optional[_builti
233
256
  home_directory=pulumi.get(__response__, 'home_directory'),
234
257
  id=pulumi.get(__response__, 'id'),
235
258
  labels=pulumi.get(__response__, 'labels'),
259
+ name=pulumi.get(__response__, 'name'),
236
260
  server=pulumi.get(__response__, 'server'),
237
261
  storage_box_id=pulumi.get(__response__, 'storage_box_id'),
238
262
  username=pulumi.get(__response__, 'username'),
@@ -2547,6 +2547,7 @@ class GetPrimaryIpsPrimaryIpResult(dict):
2547
2547
  ip_address: _builtins.str,
2548
2548
  ip_network: _builtins.str,
2549
2549
  labels: Mapping[str, _builtins.str],
2550
+ location: _builtins.str,
2550
2551
  type: _builtins.str,
2551
2552
  name: Optional[_builtins.str] = None):
2552
2553
  pulumi.set(__self__, "assignee_id", assignee_id)
@@ -2558,6 +2559,7 @@ class GetPrimaryIpsPrimaryIpResult(dict):
2558
2559
  pulumi.set(__self__, "ip_address", ip_address)
2559
2560
  pulumi.set(__self__, "ip_network", ip_network)
2560
2561
  pulumi.set(__self__, "labels", labels)
2562
+ pulumi.set(__self__, "location", location)
2561
2563
  pulumi.set(__self__, "type", type)
2562
2564
  if name is not None:
2563
2565
  pulumi.set(__self__, "name", name)
@@ -2579,6 +2581,7 @@ class GetPrimaryIpsPrimaryIpResult(dict):
2579
2581
 
2580
2582
  @_builtins.property
2581
2583
  @pulumi.getter
2584
+ @_utilities.deprecated("""The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.""")
2582
2585
  def datacenter(self) -> _builtins.str:
2583
2586
  return pulumi.get(self, "datacenter")
2584
2587
 
@@ -2607,6 +2610,11 @@ class GetPrimaryIpsPrimaryIpResult(dict):
2607
2610
  def labels(self) -> Mapping[str, _builtins.str]:
2608
2611
  return pulumi.get(self, "labels")
2609
2612
 
2613
+ @_builtins.property
2614
+ @pulumi.getter
2615
+ def location(self) -> _builtins.str:
2616
+ return pulumi.get(self, "location")
2617
+
2610
2618
  @_builtins.property
2611
2619
  @pulumi.getter
2612
2620
  def type(self) -> _builtins.str:
@@ -3025,6 +3033,7 @@ class GetServersServerResult(dict):
3025
3033
 
3026
3034
  @_builtins.property
3027
3035
  @pulumi.getter
3036
+ @_utilities.deprecated("""The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.""")
3028
3037
  def datacenter(self) -> _builtins.str:
3029
3038
  return pulumi.get(self, "datacenter")
3030
3039
 
@@ -3550,6 +3559,7 @@ class GetStorageBoxSubaccountsSubaccountResult(dict):
3550
3559
  home_directory: _builtins.str,
3551
3560
  id: _builtins.int,
3552
3561
  labels: Mapping[str, _builtins.str],
3562
+ name: _builtins.str,
3553
3563
  server: _builtins.str,
3554
3564
  storage_box_id: _builtins.int,
3555
3565
  username: _builtins.str):
@@ -3559,6 +3569,7 @@ class GetStorageBoxSubaccountsSubaccountResult(dict):
3559
3569
  :param _builtins.str home_directory: Home directory of the Storage Box Subaccount.
3560
3570
  :param _builtins.int id: ID of the Storage Box Subaccount.
3561
3571
  :param Mapping[str, _builtins.str] labels: User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.
3572
+ :param _builtins.str name: Name of the Storage Box Subaccount.
3562
3573
  :param _builtins.str server: FQDN of the Storage Box Subaccount.
3563
3574
  :param _builtins.int storage_box_id: ID of the Storage Box.
3564
3575
  :param _builtins.str username: Username of the Storage Box Subaccount.
@@ -3568,6 +3579,7 @@ class GetStorageBoxSubaccountsSubaccountResult(dict):
3568
3579
  pulumi.set(__self__, "home_directory", home_directory)
3569
3580
  pulumi.set(__self__, "id", id)
3570
3581
  pulumi.set(__self__, "labels", labels)
3582
+ pulumi.set(__self__, "name", name)
3571
3583
  pulumi.set(__self__, "server", server)
3572
3584
  pulumi.set(__self__, "storage_box_id", storage_box_id)
3573
3585
  pulumi.set(__self__, "username", username)
@@ -3612,6 +3624,14 @@ class GetStorageBoxSubaccountsSubaccountResult(dict):
3612
3624
  """
3613
3625
  return pulumi.get(self, "labels")
3614
3626
 
3627
+ @_builtins.property
3628
+ @pulumi.getter
3629
+ def name(self) -> _builtins.str:
3630
+ """
3631
+ Name of the Storage Box Subaccount.
3632
+ """
3633
+ return pulumi.get(self, "name")
3634
+
3615
3635
  @_builtins.property
3616
3636
  @pulumi.getter
3617
3637
  def server(self) -> _builtins.str:
@@ -26,6 +26,7 @@ class PrimaryIpArgs:
26
26
  datacenter: Optional[pulumi.Input[_builtins.str]] = None,
27
27
  delete_protection: Optional[pulumi.Input[_builtins.bool]] = None,
28
28
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
29
+ location: Optional[pulumi.Input[_builtins.str]] = None,
29
30
  name: Optional[pulumi.Input[_builtins.str]] = None):
30
31
  """
31
32
  The set of arguments for constructing a PrimaryIp resource.
@@ -37,8 +38,9 @@ class PrimaryIpArgs:
37
38
  :param pulumi.Input[_builtins.str] datacenter: The datacenter name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.
38
39
  :param pulumi.Input[_builtins.bool] delete_protection: Whether delete protection is enabled. See "Delete Protection" in the Provider Docs for details.
39
40
 
40
- Note: At least one of `datacenter` or `assignee_id` is required.
41
+ Note: At least one of `location`, `datacenter` or `assignee_id` is required.
41
42
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] labels: User-defined labels (key-value pairs).
43
+ :param pulumi.Input[_builtins.str] location: The location name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.
42
44
  :param pulumi.Input[_builtins.str] name: Name of the Primary IP.
43
45
  """
44
46
  pulumi.set(__self__, "assignee_type", assignee_type)
@@ -46,12 +48,17 @@ class PrimaryIpArgs:
46
48
  pulumi.set(__self__, "type", type)
47
49
  if assignee_id is not None:
48
50
  pulumi.set(__self__, "assignee_id", assignee_id)
51
+ if datacenter is not None:
52
+ warnings.warn("""The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.""", DeprecationWarning)
53
+ pulumi.log.warn("""datacenter is deprecated: The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.""")
49
54
  if datacenter is not None:
50
55
  pulumi.set(__self__, "datacenter", datacenter)
51
56
  if delete_protection is not None:
52
57
  pulumi.set(__self__, "delete_protection", delete_protection)
53
58
  if labels is not None:
54
59
  pulumi.set(__self__, "labels", labels)
60
+ if location is not None:
61
+ pulumi.set(__self__, "location", location)
55
62
  if name is not None:
56
63
  pulumi.set(__self__, "name", name)
57
64
 
@@ -106,6 +113,7 @@ class PrimaryIpArgs:
106
113
 
107
114
  @_builtins.property
108
115
  @pulumi.getter
116
+ @_utilities.deprecated("""The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.""")
109
117
  def datacenter(self) -> Optional[pulumi.Input[_builtins.str]]:
110
118
  """
111
119
  The datacenter name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.
@@ -122,7 +130,7 @@ class PrimaryIpArgs:
122
130
  """
123
131
  Whether delete protection is enabled. See "Delete Protection" in the Provider Docs for details.
124
132
 
125
- Note: At least one of `datacenter` or `assignee_id` is required.
133
+ Note: At least one of `location`, `datacenter` or `assignee_id` is required.
126
134
  """
127
135
  return pulumi.get(self, "delete_protection")
128
136
 
@@ -142,6 +150,18 @@ class PrimaryIpArgs:
142
150
  def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
143
151
  pulumi.set(self, "labels", value)
144
152
 
153
+ @_builtins.property
154
+ @pulumi.getter
155
+ def location(self) -> Optional[pulumi.Input[_builtins.str]]:
156
+ """
157
+ The location name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.
158
+ """
159
+ return pulumi.get(self, "location")
160
+
161
+ @location.setter
162
+ def location(self, value: Optional[pulumi.Input[_builtins.str]]):
163
+ pulumi.set(self, "location", value)
164
+
145
165
  @_builtins.property
146
166
  @pulumi.getter
147
167
  def name(self) -> Optional[pulumi.Input[_builtins.str]]:
@@ -166,6 +186,7 @@ class _PrimaryIpState:
166
186
  ip_address: Optional[pulumi.Input[_builtins.str]] = None,
167
187
  ip_network: Optional[pulumi.Input[_builtins.str]] = None,
168
188
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
189
+ location: Optional[pulumi.Input[_builtins.str]] = None,
169
190
  name: Optional[pulumi.Input[_builtins.str]] = None,
170
191
  type: Optional[pulumi.Input[_builtins.str]] = None):
171
192
  """
@@ -177,10 +198,11 @@ class _PrimaryIpState:
177
198
  :param pulumi.Input[_builtins.str] datacenter: The datacenter name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.
178
199
  :param pulumi.Input[_builtins.bool] delete_protection: Whether delete protection is enabled. See "Delete Protection" in the Provider Docs for details.
179
200
 
180
- Note: At least one of `datacenter` or `assignee_id` is required.
201
+ Note: At least one of `location`, `datacenter` or `assignee_id` is required.
181
202
  :param pulumi.Input[_builtins.str] ip_address: (string) IP Address of the Primary IP.
182
203
  :param pulumi.Input[_builtins.str] ip_network: (string) IPv6 subnet of the Primary IP for IPv6 addresses. (Only set if `type` is `ipv6`)
183
204
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] labels: User-defined labels (key-value pairs).
205
+ :param pulumi.Input[_builtins.str] location: The location name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.
184
206
  :param pulumi.Input[_builtins.str] name: Name of the Primary IP.
185
207
  :param pulumi.Input[_builtins.str] type: Type of the Primary IP. `ipv4` or `ipv6`
186
208
  """
@@ -190,6 +212,9 @@ class _PrimaryIpState:
190
212
  pulumi.set(__self__, "assignee_type", assignee_type)
191
213
  if auto_delete is not None:
192
214
  pulumi.set(__self__, "auto_delete", auto_delete)
215
+ if datacenter is not None:
216
+ warnings.warn("""The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.""", DeprecationWarning)
217
+ pulumi.log.warn("""datacenter is deprecated: The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.""")
193
218
  if datacenter is not None:
194
219
  pulumi.set(__self__, "datacenter", datacenter)
195
220
  if delete_protection is not None:
@@ -200,6 +225,8 @@ class _PrimaryIpState:
200
225
  pulumi.set(__self__, "ip_network", ip_network)
201
226
  if labels is not None:
202
227
  pulumi.set(__self__, "labels", labels)
228
+ if location is not None:
229
+ pulumi.set(__self__, "location", location)
203
230
  if name is not None:
204
231
  pulumi.set(__self__, "name", name)
205
232
  if type is not None:
@@ -244,6 +271,7 @@ class _PrimaryIpState:
244
271
 
245
272
  @_builtins.property
246
273
  @pulumi.getter
274
+ @_utilities.deprecated("""The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.""")
247
275
  def datacenter(self) -> Optional[pulumi.Input[_builtins.str]]:
248
276
  """
249
277
  The datacenter name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.
@@ -260,7 +288,7 @@ class _PrimaryIpState:
260
288
  """
261
289
  Whether delete protection is enabled. See "Delete Protection" in the Provider Docs for details.
262
290
 
263
- Note: At least one of `datacenter` or `assignee_id` is required.
291
+ Note: At least one of `location`, `datacenter` or `assignee_id` is required.
264
292
  """
265
293
  return pulumi.get(self, "delete_protection")
266
294
 
@@ -304,6 +332,18 @@ class _PrimaryIpState:
304
332
  def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
305
333
  pulumi.set(self, "labels", value)
306
334
 
335
+ @_builtins.property
336
+ @pulumi.getter
337
+ def location(self) -> Optional[pulumi.Input[_builtins.str]]:
338
+ """
339
+ The location name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.
340
+ """
341
+ return pulumi.get(self, "location")
342
+
343
+ @location.setter
344
+ def location(self, value: Optional[pulumi.Input[_builtins.str]]):
345
+ pulumi.set(self, "location", value)
346
+
307
347
  @_builtins.property
308
348
  @pulumi.getter
309
349
  def name(self) -> Optional[pulumi.Input[_builtins.str]]:
@@ -341,6 +381,7 @@ class PrimaryIp(pulumi.CustomResource):
341
381
  datacenter: Optional[pulumi.Input[_builtins.str]] = None,
342
382
  delete_protection: Optional[pulumi.Input[_builtins.bool]] = None,
343
383
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
384
+ location: Optional[pulumi.Input[_builtins.str]] = None,
344
385
  name: Optional[pulumi.Input[_builtins.str]] = None,
345
386
  type: Optional[pulumi.Input[_builtins.str]] = None,
346
387
  __props__=None):
@@ -350,6 +391,19 @@ class PrimaryIp(pulumi.CustomResource):
350
391
  If a server is getting created, it has to have a primary ip. If a server is getting created without defining primary ips, two of them (one ipv4 and one ipv6) getting created & attached.
351
392
  Currently, Primary IPs can be only attached to servers.
352
393
 
394
+ ## Deprecations
395
+
396
+ ### `datacenter` attribute
397
+
398
+ The `datacenter` attribute is deprecated, use the `location` attribute instead.
399
+
400
+ See our the [API changelog](https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters) for more details.
401
+
402
+ > Please upgrade to `v1.58.0+` of the provider to avoid issues once the Hetzner Cloud API no longer accepts
403
+ and returns the `datacenter` attribute. This version of the provider remains backward compatible by preserving
404
+ the `datacenter` value in the state and by extracting the `location` name from the `datacenter` attribute when
405
+ communicating with the API.
406
+
353
407
  ## Example Usage
354
408
 
355
409
  ```python
@@ -396,8 +450,9 @@ class PrimaryIp(pulumi.CustomResource):
396
450
  :param pulumi.Input[_builtins.str] datacenter: The datacenter name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.
397
451
  :param pulumi.Input[_builtins.bool] delete_protection: Whether delete protection is enabled. See "Delete Protection" in the Provider Docs for details.
398
452
 
399
- Note: At least one of `datacenter` or `assignee_id` is required.
453
+ Note: At least one of `location`, `datacenter` or `assignee_id` is required.
400
454
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] labels: User-defined labels (key-value pairs).
455
+ :param pulumi.Input[_builtins.str] location: The location name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.
401
456
  :param pulumi.Input[_builtins.str] name: Name of the Primary IP.
402
457
  :param pulumi.Input[_builtins.str] type: Type of the Primary IP. `ipv4` or `ipv6`
403
458
  """
@@ -413,6 +468,19 @@ class PrimaryIp(pulumi.CustomResource):
413
468
  If a server is getting created, it has to have a primary ip. If a server is getting created without defining primary ips, two of them (one ipv4 and one ipv6) getting created & attached.
414
469
  Currently, Primary IPs can be only attached to servers.
415
470
 
471
+ ## Deprecations
472
+
473
+ ### `datacenter` attribute
474
+
475
+ The `datacenter` attribute is deprecated, use the `location` attribute instead.
476
+
477
+ See our the [API changelog](https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters) for more details.
478
+
479
+ > Please upgrade to `v1.58.0+` of the provider to avoid issues once the Hetzner Cloud API no longer accepts
480
+ and returns the `datacenter` attribute. This version of the provider remains backward compatible by preserving
481
+ the `datacenter` value in the state and by extracting the `location` name from the `datacenter` attribute when
482
+ communicating with the API.
483
+
416
484
  ## Example Usage
417
485
 
418
486
  ```python
@@ -471,6 +539,7 @@ class PrimaryIp(pulumi.CustomResource):
471
539
  datacenter: Optional[pulumi.Input[_builtins.str]] = None,
472
540
  delete_protection: Optional[pulumi.Input[_builtins.bool]] = None,
473
541
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
542
+ location: Optional[pulumi.Input[_builtins.str]] = None,
474
543
  name: Optional[pulumi.Input[_builtins.str]] = None,
475
544
  type: Optional[pulumi.Input[_builtins.str]] = None,
476
545
  __props__=None):
@@ -492,6 +561,7 @@ class PrimaryIp(pulumi.CustomResource):
492
561
  __props__.__dict__["datacenter"] = datacenter
493
562
  __props__.__dict__["delete_protection"] = delete_protection
494
563
  __props__.__dict__["labels"] = labels
564
+ __props__.__dict__["location"] = location
495
565
  __props__.__dict__["name"] = name
496
566
  if type is None and not opts.urn:
497
567
  raise TypeError("Missing required property 'type'")
@@ -516,6 +586,7 @@ class PrimaryIp(pulumi.CustomResource):
516
586
  ip_address: Optional[pulumi.Input[_builtins.str]] = None,
517
587
  ip_network: Optional[pulumi.Input[_builtins.str]] = None,
518
588
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
589
+ location: Optional[pulumi.Input[_builtins.str]] = None,
519
590
  name: Optional[pulumi.Input[_builtins.str]] = None,
520
591
  type: Optional[pulumi.Input[_builtins.str]] = None) -> 'PrimaryIp':
521
592
  """
@@ -532,10 +603,11 @@ class PrimaryIp(pulumi.CustomResource):
532
603
  :param pulumi.Input[_builtins.str] datacenter: The datacenter name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.
533
604
  :param pulumi.Input[_builtins.bool] delete_protection: Whether delete protection is enabled. See "Delete Protection" in the Provider Docs for details.
534
605
 
535
- Note: At least one of `datacenter` or `assignee_id` is required.
606
+ Note: At least one of `location`, `datacenter` or `assignee_id` is required.
536
607
  :param pulumi.Input[_builtins.str] ip_address: (string) IP Address of the Primary IP.
537
608
  :param pulumi.Input[_builtins.str] ip_network: (string) IPv6 subnet of the Primary IP for IPv6 addresses. (Only set if `type` is `ipv6`)
538
609
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] labels: User-defined labels (key-value pairs).
610
+ :param pulumi.Input[_builtins.str] location: The location name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.
539
611
  :param pulumi.Input[_builtins.str] name: Name of the Primary IP.
540
612
  :param pulumi.Input[_builtins.str] type: Type of the Primary IP. `ipv4` or `ipv6`
541
613
  """
@@ -551,6 +623,7 @@ class PrimaryIp(pulumi.CustomResource):
551
623
  __props__.__dict__["ip_address"] = ip_address
552
624
  __props__.__dict__["ip_network"] = ip_network
553
625
  __props__.__dict__["labels"] = labels
626
+ __props__.__dict__["location"] = location
554
627
  __props__.__dict__["name"] = name
555
628
  __props__.__dict__["type"] = type
556
629
  return PrimaryIp(resource_name, opts=opts, __props__=__props__)
@@ -582,6 +655,7 @@ class PrimaryIp(pulumi.CustomResource):
582
655
 
583
656
  @_builtins.property
584
657
  @pulumi.getter
658
+ @_utilities.deprecated("""The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.""")
585
659
  def datacenter(self) -> pulumi.Output[_builtins.str]:
586
660
  """
587
661
  The datacenter name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.
@@ -594,7 +668,7 @@ class PrimaryIp(pulumi.CustomResource):
594
668
  """
595
669
  Whether delete protection is enabled. See "Delete Protection" in the Provider Docs for details.
596
670
 
597
- Note: At least one of `datacenter` or `assignee_id` is required.
671
+ Note: At least one of `location`, `datacenter` or `assignee_id` is required.
598
672
  """
599
673
  return pulumi.get(self, "delete_protection")
600
674
 
@@ -622,6 +696,14 @@ class PrimaryIp(pulumi.CustomResource):
622
696
  """
623
697
  return pulumi.get(self, "labels")
624
698
 
699
+ @_builtins.property
700
+ @pulumi.getter
701
+ def location(self) -> pulumi.Output[_builtins.str]:
702
+ """
703
+ The location name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.
704
+ """
705
+ return pulumi.get(self, "location")
706
+
625
707
  @_builtins.property
626
708
  @pulumi.getter
627
709
  def name(self) -> pulumi.Output[_builtins.str]:
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "resource": true,
3
3
  "name": "hcloud",
4
- "version": "1.30.0-alpha.1768456027"
4
+ "version": "1.31.0"
5
5
  }