pulumi-hcloud 1.18.0a1709364097__py3-none-any.whl → 1.22.0a1736833581__py3-none-any.whl

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 (66) hide show
  1. pulumi_hcloud/__init__.py +2 -0
  2. pulumi_hcloud/_inputs.py +247 -15
  3. pulumi_hcloud/_utilities.py +41 -5
  4. pulumi_hcloud/certificate.py +15 -10
  5. pulumi_hcloud/config/__init__.pyi +5 -0
  6. pulumi_hcloud/config/vars.py +5 -0
  7. pulumi_hcloud/firewall.py +77 -66
  8. pulumi_hcloud/firewall_attachment.py +31 -18
  9. pulumi_hcloud/floating_ip.py +39 -32
  10. pulumi_hcloud/floating_ip_assignment.py +11 -4
  11. pulumi_hcloud/get_certificate.py +25 -6
  12. pulumi_hcloud/get_certificates.py +14 -5
  13. pulumi_hcloud/get_datacenter.py +38 -23
  14. pulumi_hcloud/get_datacenters.py +28 -53
  15. pulumi_hcloud/get_firewall.py +38 -19
  16. pulumi_hcloud/get_firewalls.py +16 -5
  17. pulumi_hcloud/get_floating_ip.py +39 -13
  18. pulumi_hcloud/get_floating_ips.py +14 -5
  19. pulumi_hcloud/get_image.py +37 -9
  20. pulumi_hcloud/get_images.py +22 -5
  21. pulumi_hcloud/get_load_balancer.py +30 -7
  22. pulumi_hcloud/get_load_balancer_type.py +202 -0
  23. pulumi_hcloud/get_load_balancer_types.py +100 -0
  24. pulumi_hcloud/get_load_balancers.py +14 -5
  25. pulumi_hcloud/get_location.py +42 -25
  26. pulumi_hcloud/get_locations.py +28 -53
  27. pulumi_hcloud/get_network.py +28 -11
  28. pulumi_hcloud/get_networks.py +14 -5
  29. pulumi_hcloud/get_placement_group.py +31 -13
  30. pulumi_hcloud/get_placement_groups.py +16 -5
  31. pulumi_hcloud/get_primary_ip.py +44 -18
  32. pulumi_hcloud/get_primary_ips.py +14 -5
  33. pulumi_hcloud/get_server.py +43 -11
  34. pulumi_hcloud/get_server_type.py +75 -49
  35. pulumi_hcloud/get_server_types.py +39 -23
  36. pulumi_hcloud/get_servers.py +16 -5
  37. pulumi_hcloud/get_ssh_key.py +58 -32
  38. pulumi_hcloud/get_ssh_keys.py +35 -20
  39. pulumi_hcloud/get_volume.py +33 -12
  40. pulumi_hcloud/get_volumes.py +18 -7
  41. pulumi_hcloud/load_balancer.py +63 -60
  42. pulumi_hcloud/load_balancer_network.py +28 -15
  43. pulumi_hcloud/load_balancer_service.py +59 -52
  44. pulumi_hcloud/load_balancer_target.py +33 -24
  45. pulumi_hcloud/managed_certificate.py +57 -20
  46. pulumi_hcloud/network.py +27 -18
  47. pulumi_hcloud/network_route.py +15 -6
  48. pulumi_hcloud/network_subnet.py +15 -6
  49. pulumi_hcloud/outputs.py +265 -46
  50. pulumi_hcloud/placement_group.py +27 -18
  51. pulumi_hcloud/primary_ip.py +66 -43
  52. pulumi_hcloud/provider.py +5 -0
  53. pulumi_hcloud/pulumi-plugin.json +2 -1
  54. pulumi_hcloud/rdns.py +51 -34
  55. pulumi_hcloud/server.py +185 -130
  56. pulumi_hcloud/server_network.py +26 -15
  57. pulumi_hcloud/snapshot.py +25 -18
  58. pulumi_hcloud/ssh_key.py +52 -47
  59. pulumi_hcloud/uploaded_certificate.py +73 -20
  60. pulumi_hcloud/volume.py +37 -28
  61. pulumi_hcloud/volume_attachment.py +11 -4
  62. {pulumi_hcloud-1.18.0a1709364097.dist-info → pulumi_hcloud-1.22.0a1736833581.dist-info}/METADATA +7 -6
  63. pulumi_hcloud-1.22.0a1736833581.dist-info/RECORD +67 -0
  64. {pulumi_hcloud-1.18.0a1709364097.dist-info → pulumi_hcloud-1.22.0a1736833581.dist-info}/WHEEL +1 -1
  65. pulumi_hcloud-1.18.0a1709364097.dist-info/RECORD +0 -65
  66. {pulumi_hcloud-1.18.0a1709364097.dist-info → pulumi_hcloud-1.22.0a1736833581.dist-info}/top_level.txt +0 -0
@@ -4,9 +4,14 @@
4
4
 
5
5
  import copy
6
6
  import warnings
7
+ import sys
7
8
  import pulumi
8
9
  import pulumi.runtime
9
10
  from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
10
15
  from . import _utilities
11
16
 
12
17
  __all__ = ['PlacementGroupArgs', 'PlacementGroup']
@@ -15,12 +20,12 @@ __all__ = ['PlacementGroupArgs', 'PlacementGroup']
15
20
  class PlacementGroupArgs:
16
21
  def __init__(__self__, *,
17
22
  type: pulumi.Input[str],
18
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
23
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
19
24
  name: Optional[pulumi.Input[str]] = None):
20
25
  """
21
26
  The set of arguments for constructing a PlacementGroup resource.
22
27
  :param pulumi.Input[str] type: Type of the Placement Group.
23
- :param pulumi.Input[Mapping[str, Any]] labels: User-defined labels (key-value pairs) should be created with.
28
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: User-defined labels (key-value pairs) should be created with.
24
29
  :param pulumi.Input[str] name: Name of the Placement Group.
25
30
  """
26
31
  pulumi.set(__self__, "type", type)
@@ -43,14 +48,14 @@ class PlacementGroupArgs:
43
48
 
44
49
  @property
45
50
  @pulumi.getter
46
- def labels(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
51
+ def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
47
52
  """
48
53
  User-defined labels (key-value pairs) should be created with.
49
54
  """
50
55
  return pulumi.get(self, "labels")
51
56
 
52
57
  @labels.setter
53
- def labels(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
58
+ def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
54
59
  pulumi.set(self, "labels", value)
55
60
 
56
61
  @property
@@ -69,13 +74,13 @@ class PlacementGroupArgs:
69
74
  @pulumi.input_type
70
75
  class _PlacementGroupState:
71
76
  def __init__(__self__, *,
72
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
77
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
73
78
  name: Optional[pulumi.Input[str]] = None,
74
79
  servers: Optional[pulumi.Input[Sequence[pulumi.Input[int]]]] = None,
75
80
  type: Optional[pulumi.Input[str]] = None):
76
81
  """
77
82
  Input properties used for looking up and filtering PlacementGroup resources.
78
- :param pulumi.Input[Mapping[str, Any]] labels: User-defined labels (key-value pairs) should be created with.
83
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: User-defined labels (key-value pairs) should be created with.
79
84
  :param pulumi.Input[str] name: Name of the Placement Group.
80
85
  :param pulumi.Input[str] type: Type of the Placement Group.
81
86
  """
@@ -90,14 +95,14 @@ class _PlacementGroupState:
90
95
 
91
96
  @property
92
97
  @pulumi.getter
93
- def labels(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
98
+ def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
94
99
  """
95
100
  User-defined labels (key-value pairs) should be created with.
96
101
  """
97
102
  return pulumi.get(self, "labels")
98
103
 
99
104
  @labels.setter
100
- def labels(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
105
+ def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
101
106
  pulumi.set(self, "labels", value)
102
107
 
103
108
  @property
@@ -139,7 +144,7 @@ class PlacementGroup(pulumi.CustomResource):
139
144
  def __init__(__self__,
140
145
  resource_name: str,
141
146
  opts: Optional[pulumi.ResourceOptions] = None,
142
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
147
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
143
148
  name: Optional[pulumi.Input[str]] = None,
144
149
  type: Optional[pulumi.Input[str]] = None,
145
150
  __props__=None):
@@ -153,13 +158,15 @@ class PlacementGroup(pulumi.CustomResource):
153
158
  import pulumi_hcloud as hcloud
154
159
 
155
160
  my_placement_group = hcloud.PlacementGroup("my-placement-group",
161
+ name="my-placement-group",
156
162
  type="spread",
157
163
  labels={
158
164
  "key": "value",
159
165
  })
160
166
  node1 = hcloud.Server("node1",
167
+ name="node1",
161
168
  image="debian-11",
162
- server_type="cx11",
169
+ server_type="cx22",
163
170
  placement_group_id=my_placement_group.id)
164
171
  ```
165
172
 
@@ -168,12 +175,12 @@ class PlacementGroup(pulumi.CustomResource):
168
175
  Placement Groups can be imported using its `id`:
169
176
 
170
177
  ```sh
171
- $ pulumi import hcloud:index/placementGroup:PlacementGroup my-placement-group id
178
+ $ pulumi import hcloud:index/placementGroup:PlacementGroup example "$PLACEMENT_GROUP_ID"
172
179
  ```
173
180
 
174
181
  :param str resource_name: The name of the resource.
175
182
  :param pulumi.ResourceOptions opts: Options for the resource.
176
- :param pulumi.Input[Mapping[str, Any]] labels: User-defined labels (key-value pairs) should be created with.
183
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: User-defined labels (key-value pairs) should be created with.
177
184
  :param pulumi.Input[str] name: Name of the Placement Group.
178
185
  :param pulumi.Input[str] type: Type of the Placement Group.
179
186
  """
@@ -193,13 +200,15 @@ class PlacementGroup(pulumi.CustomResource):
193
200
  import pulumi_hcloud as hcloud
194
201
 
195
202
  my_placement_group = hcloud.PlacementGroup("my-placement-group",
203
+ name="my-placement-group",
196
204
  type="spread",
197
205
  labels={
198
206
  "key": "value",
199
207
  })
200
208
  node1 = hcloud.Server("node1",
209
+ name="node1",
201
210
  image="debian-11",
202
- server_type="cx11",
211
+ server_type="cx22",
203
212
  placement_group_id=my_placement_group.id)
204
213
  ```
205
214
 
@@ -208,7 +217,7 @@ class PlacementGroup(pulumi.CustomResource):
208
217
  Placement Groups can be imported using its `id`:
209
218
 
210
219
  ```sh
211
- $ pulumi import hcloud:index/placementGroup:PlacementGroup my-placement-group id
220
+ $ pulumi import hcloud:index/placementGroup:PlacementGroup example "$PLACEMENT_GROUP_ID"
212
221
  ```
213
222
 
214
223
  :param str resource_name: The name of the resource.
@@ -226,7 +235,7 @@ class PlacementGroup(pulumi.CustomResource):
226
235
  def _internal_init(__self__,
227
236
  resource_name: str,
228
237
  opts: Optional[pulumi.ResourceOptions] = None,
229
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
238
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
230
239
  name: Optional[pulumi.Input[str]] = None,
231
240
  type: Optional[pulumi.Input[str]] = None,
232
241
  __props__=None):
@@ -254,7 +263,7 @@ class PlacementGroup(pulumi.CustomResource):
254
263
  def get(resource_name: str,
255
264
  id: pulumi.Input[str],
256
265
  opts: Optional[pulumi.ResourceOptions] = None,
257
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
266
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
258
267
  name: Optional[pulumi.Input[str]] = None,
259
268
  servers: Optional[pulumi.Input[Sequence[pulumi.Input[int]]]] = None,
260
269
  type: Optional[pulumi.Input[str]] = None) -> 'PlacementGroup':
@@ -265,7 +274,7 @@ class PlacementGroup(pulumi.CustomResource):
265
274
  :param str resource_name: The unique name of the resulting resource.
266
275
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
267
276
  :param pulumi.ResourceOptions opts: Options for the resource.
268
- :param pulumi.Input[Mapping[str, Any]] labels: User-defined labels (key-value pairs) should be created with.
277
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: User-defined labels (key-value pairs) should be created with.
269
278
  :param pulumi.Input[str] name: Name of the Placement Group.
270
279
  :param pulumi.Input[str] type: Type of the Placement Group.
271
280
  """
@@ -281,7 +290,7 @@ class PlacementGroup(pulumi.CustomResource):
281
290
 
282
291
  @property
283
292
  @pulumi.getter
284
- def labels(self) -> pulumi.Output[Optional[Mapping[str, Any]]]:
293
+ def labels(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
285
294
  """
286
295
  User-defined labels (key-value pairs) should be created with.
287
296
  """
@@ -4,9 +4,14 @@
4
4
 
5
5
  import copy
6
6
  import warnings
7
+ import sys
7
8
  import pulumi
8
9
  import pulumi.runtime
9
10
  from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
10
15
  from . import _utilities
11
16
 
12
17
  __all__ = ['PrimaryIpArgs', 'PrimaryIp']
@@ -20,7 +25,7 @@ class PrimaryIpArgs:
20
25
  assignee_id: Optional[pulumi.Input[int]] = None,
21
26
  datacenter: Optional[pulumi.Input[str]] = None,
22
27
  delete_protection: Optional[pulumi.Input[bool]] = None,
23
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
28
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
24
29
  name: Optional[pulumi.Input[str]] = None):
25
30
  """
26
31
  The set of arguments for constructing a PrimaryIp resource.
@@ -28,10 +33,12 @@ class PrimaryIpArgs:
28
33
  :param pulumi.Input[bool] auto_delete: Whether auto delete is enabled.
29
34
  `Important note:`It is recommended to set `auto_delete` to `false`, because if a server assigned to the managed ip is getting deleted, it will also delete the primary IP which will break the TF state.
30
35
  :param pulumi.Input[str] type: Type of the Primary IP. `ipv4` or `ipv6`
31
- :param pulumi.Input[int] assignee_id: ID of the assigned resource
32
- :param pulumi.Input[str] datacenter: The datacenter name to create the resource in.
36
+ :param pulumi.Input[int] assignee_id: ID of the assigned resource.
37
+ :param pulumi.Input[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.
33
38
  :param pulumi.Input[bool] delete_protection: Whether delete protection is enabled. See "Delete Protection" in the Provider Docs for details.
34
- :param pulumi.Input[Mapping[str, Any]] labels: Description of the Primary IP.
39
+
40
+ Note: At least one of `datacenter` or `assignee_id` is required.
41
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: User-defined labels (key-value pairs).
35
42
  :param pulumi.Input[str] name: Name of the Primary IP.
36
43
  """
37
44
  pulumi.set(__self__, "assignee_type", assignee_type)
@@ -89,7 +96,7 @@ class PrimaryIpArgs:
89
96
  @pulumi.getter(name="assigneeId")
90
97
  def assignee_id(self) -> Optional[pulumi.Input[int]]:
91
98
  """
92
- ID of the assigned resource
99
+ ID of the assigned resource.
93
100
  """
94
101
  return pulumi.get(self, "assignee_id")
95
102
 
@@ -101,7 +108,7 @@ class PrimaryIpArgs:
101
108
  @pulumi.getter
102
109
  def datacenter(self) -> Optional[pulumi.Input[str]]:
103
110
  """
104
- The datacenter name to create the resource in.
111
+ 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.
105
112
  """
106
113
  return pulumi.get(self, "datacenter")
107
114
 
@@ -114,6 +121,8 @@ class PrimaryIpArgs:
114
121
  def delete_protection(self) -> Optional[pulumi.Input[bool]]:
115
122
  """
116
123
  Whether delete protection is enabled. See "Delete Protection" in the Provider Docs for details.
124
+
125
+ Note: At least one of `datacenter` or `assignee_id` is required.
117
126
  """
118
127
  return pulumi.get(self, "delete_protection")
119
128
 
@@ -123,14 +132,14 @@ class PrimaryIpArgs:
123
132
 
124
133
  @property
125
134
  @pulumi.getter
126
- def labels(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
135
+ def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
127
136
  """
128
- Description of the Primary IP.
137
+ User-defined labels (key-value pairs).
129
138
  """
130
139
  return pulumi.get(self, "labels")
131
140
 
132
141
  @labels.setter
133
- def labels(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
142
+ def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
134
143
  pulumi.set(self, "labels", value)
135
144
 
136
145
  @property
@@ -156,20 +165,22 @@ class _PrimaryIpState:
156
165
  delete_protection: Optional[pulumi.Input[bool]] = None,
157
166
  ip_address: Optional[pulumi.Input[str]] = None,
158
167
  ip_network: Optional[pulumi.Input[str]] = None,
159
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
168
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
160
169
  name: Optional[pulumi.Input[str]] = None,
161
170
  type: Optional[pulumi.Input[str]] = None):
162
171
  """
163
172
  Input properties used for looking up and filtering PrimaryIp resources.
164
- :param pulumi.Input[int] assignee_id: ID of the assigned resource
173
+ :param pulumi.Input[int] assignee_id: ID of the assigned resource.
165
174
  :param pulumi.Input[str] assignee_type: The type of the assigned resource. Currently supported: `server`
166
175
  :param pulumi.Input[bool] auto_delete: Whether auto delete is enabled.
167
176
  `Important note:`It is recommended to set `auto_delete` to `false`, because if a server assigned to the managed ip is getting deleted, it will also delete the primary IP which will break the TF state.
168
- :param pulumi.Input[str] datacenter: The datacenter name to create the resource in.
177
+ :param pulumi.Input[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.
169
178
  :param pulumi.Input[bool] delete_protection: Whether delete protection is enabled. See "Delete Protection" in the Provider Docs for details.
179
+
180
+ Note: At least one of `datacenter` or `assignee_id` is required.
170
181
  :param pulumi.Input[str] ip_address: (string) IP Address of the Primary IP.
171
182
  :param pulumi.Input[str] ip_network: (string) IPv6 subnet of the Primary IP for IPv6 addresses. (Only set if `type` is `ipv6`)
172
- :param pulumi.Input[Mapping[str, Any]] labels: Description of the Primary IP.
183
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: User-defined labels (key-value pairs).
173
184
  :param pulumi.Input[str] name: Name of the Primary IP.
174
185
  :param pulumi.Input[str] type: Type of the Primary IP. `ipv4` or `ipv6`
175
186
  """
@@ -198,7 +209,7 @@ class _PrimaryIpState:
198
209
  @pulumi.getter(name="assigneeId")
199
210
  def assignee_id(self) -> Optional[pulumi.Input[int]]:
200
211
  """
201
- ID of the assigned resource
212
+ ID of the assigned resource.
202
213
  """
203
214
  return pulumi.get(self, "assignee_id")
204
215
 
@@ -235,7 +246,7 @@ class _PrimaryIpState:
235
246
  @pulumi.getter
236
247
  def datacenter(self) -> Optional[pulumi.Input[str]]:
237
248
  """
238
- The datacenter name to create the resource in.
249
+ 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.
239
250
  """
240
251
  return pulumi.get(self, "datacenter")
241
252
 
@@ -248,6 +259,8 @@ class _PrimaryIpState:
248
259
  def delete_protection(self) -> Optional[pulumi.Input[bool]]:
249
260
  """
250
261
  Whether delete protection is enabled. See "Delete Protection" in the Provider Docs for details.
262
+
263
+ Note: At least one of `datacenter` or `assignee_id` is required.
251
264
  """
252
265
  return pulumi.get(self, "delete_protection")
253
266
 
@@ -281,14 +294,14 @@ class _PrimaryIpState:
281
294
 
282
295
  @property
283
296
  @pulumi.getter
284
- def labels(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
297
+ def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
285
298
  """
286
- Description of the Primary IP.
299
+ User-defined labels (key-value pairs).
287
300
  """
288
301
  return pulumi.get(self, "labels")
289
302
 
290
303
  @labels.setter
291
- def labels(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
304
+ def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
292
305
  pulumi.set(self, "labels", value)
293
306
 
294
307
  @property
@@ -326,7 +339,7 @@ class PrimaryIp(pulumi.CustomResource):
326
339
  auto_delete: Optional[pulumi.Input[bool]] = None,
327
340
  datacenter: Optional[pulumi.Input[str]] = None,
328
341
  delete_protection: Optional[pulumi.Input[bool]] = None,
329
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
342
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
330
343
  name: Optional[pulumi.Input[str]] = None,
331
344
  type: Optional[pulumi.Input[str]] = None,
332
345
  __props__=None):
@@ -343,6 +356,7 @@ class PrimaryIp(pulumi.CustomResource):
343
356
  import pulumi_hcloud as hcloud
344
357
 
345
358
  main = hcloud.PrimaryIp("main",
359
+ name="primary_ip_test",
346
360
  datacenter="fsn1-dc14",
347
361
  type="ipv4",
348
362
  assignee_type="server",
@@ -351,16 +365,17 @@ class PrimaryIp(pulumi.CustomResource):
351
365
  "hallo": "welt",
352
366
  })
353
367
  # Link a server to a primary IP
354
- server_test = hcloud.Server("serverTest",
368
+ server_test = hcloud.Server("server_test",
369
+ name="test-server",
355
370
  image="ubuntu-20.04",
356
- server_type="cx11",
371
+ server_type="cx22",
357
372
  datacenter="fsn1-dc14",
358
373
  labels={
359
374
  "test": "tessst1",
360
375
  },
361
- public_nets=[hcloud.ServerPublicNetArgs(
362
- ipv4=main.id,
363
- )])
376
+ public_nets=[{
377
+ "ipv4": main.id,
378
+ }])
364
379
  ```
365
380
 
366
381
  ## Import
@@ -368,18 +383,20 @@ class PrimaryIp(pulumi.CustomResource):
368
383
  Primary IPs can be imported using its `id`:
369
384
 
370
385
  ```sh
371
- $ pulumi import hcloud:index/primaryIp:PrimaryIp myip id
386
+ $ pulumi import hcloud:index/primaryIp:PrimaryIp example "$PRIMARY_IP_ID"
372
387
  ```
373
388
 
374
389
  :param str resource_name: The name of the resource.
375
390
  :param pulumi.ResourceOptions opts: Options for the resource.
376
- :param pulumi.Input[int] assignee_id: ID of the assigned resource
391
+ :param pulumi.Input[int] assignee_id: ID of the assigned resource.
377
392
  :param pulumi.Input[str] assignee_type: The type of the assigned resource. Currently supported: `server`
378
393
  :param pulumi.Input[bool] auto_delete: Whether auto delete is enabled.
379
394
  `Important note:`It is recommended to set `auto_delete` to `false`, because if a server assigned to the managed ip is getting deleted, it will also delete the primary IP which will break the TF state.
380
- :param pulumi.Input[str] datacenter: The datacenter name to create the resource in.
395
+ :param pulumi.Input[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.
381
396
  :param pulumi.Input[bool] delete_protection: Whether delete protection is enabled. See "Delete Protection" in the Provider Docs for details.
382
- :param pulumi.Input[Mapping[str, Any]] labels: Description of the Primary IP.
397
+
398
+ Note: At least one of `datacenter` or `assignee_id` is required.
399
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: User-defined labels (key-value pairs).
383
400
  :param pulumi.Input[str] name: Name of the Primary IP.
384
401
  :param pulumi.Input[str] type: Type of the Primary IP. `ipv4` or `ipv6`
385
402
  """
@@ -402,6 +419,7 @@ class PrimaryIp(pulumi.CustomResource):
402
419
  import pulumi_hcloud as hcloud
403
420
 
404
421
  main = hcloud.PrimaryIp("main",
422
+ name="primary_ip_test",
405
423
  datacenter="fsn1-dc14",
406
424
  type="ipv4",
407
425
  assignee_type="server",
@@ -410,16 +428,17 @@ class PrimaryIp(pulumi.CustomResource):
410
428
  "hallo": "welt",
411
429
  })
412
430
  # Link a server to a primary IP
413
- server_test = hcloud.Server("serverTest",
431
+ server_test = hcloud.Server("server_test",
432
+ name="test-server",
414
433
  image="ubuntu-20.04",
415
- server_type="cx11",
434
+ server_type="cx22",
416
435
  datacenter="fsn1-dc14",
417
436
  labels={
418
437
  "test": "tessst1",
419
438
  },
420
- public_nets=[hcloud.ServerPublicNetArgs(
421
- ipv4=main.id,
422
- )])
439
+ public_nets=[{
440
+ "ipv4": main.id,
441
+ }])
423
442
  ```
424
443
 
425
444
  ## Import
@@ -427,7 +446,7 @@ class PrimaryIp(pulumi.CustomResource):
427
446
  Primary IPs can be imported using its `id`:
428
447
 
429
448
  ```sh
430
- $ pulumi import hcloud:index/primaryIp:PrimaryIp myip id
449
+ $ pulumi import hcloud:index/primaryIp:PrimaryIp example "$PRIMARY_IP_ID"
431
450
  ```
432
451
 
433
452
  :param str resource_name: The name of the resource.
@@ -450,7 +469,7 @@ class PrimaryIp(pulumi.CustomResource):
450
469
  auto_delete: Optional[pulumi.Input[bool]] = None,
451
470
  datacenter: Optional[pulumi.Input[str]] = None,
452
471
  delete_protection: Optional[pulumi.Input[bool]] = None,
453
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
472
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
454
473
  name: Optional[pulumi.Input[str]] = None,
455
474
  type: Optional[pulumi.Input[str]] = None,
456
475
  __props__=None):
@@ -495,7 +514,7 @@ class PrimaryIp(pulumi.CustomResource):
495
514
  delete_protection: Optional[pulumi.Input[bool]] = None,
496
515
  ip_address: Optional[pulumi.Input[str]] = None,
497
516
  ip_network: Optional[pulumi.Input[str]] = None,
498
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
517
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
499
518
  name: Optional[pulumi.Input[str]] = None,
500
519
  type: Optional[pulumi.Input[str]] = None) -> 'PrimaryIp':
501
520
  """
@@ -505,15 +524,17 @@ class PrimaryIp(pulumi.CustomResource):
505
524
  :param str resource_name: The unique name of the resulting resource.
506
525
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
507
526
  :param pulumi.ResourceOptions opts: Options for the resource.
508
- :param pulumi.Input[int] assignee_id: ID of the assigned resource
527
+ :param pulumi.Input[int] assignee_id: ID of the assigned resource.
509
528
  :param pulumi.Input[str] assignee_type: The type of the assigned resource. Currently supported: `server`
510
529
  :param pulumi.Input[bool] auto_delete: Whether auto delete is enabled.
511
530
  `Important note:`It is recommended to set `auto_delete` to `false`, because if a server assigned to the managed ip is getting deleted, it will also delete the primary IP which will break the TF state.
512
- :param pulumi.Input[str] datacenter: The datacenter name to create the resource in.
531
+ :param pulumi.Input[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.
513
532
  :param pulumi.Input[bool] delete_protection: Whether delete protection is enabled. See "Delete Protection" in the Provider Docs for details.
533
+
534
+ Note: At least one of `datacenter` or `assignee_id` is required.
514
535
  :param pulumi.Input[str] ip_address: (string) IP Address of the Primary IP.
515
536
  :param pulumi.Input[str] ip_network: (string) IPv6 subnet of the Primary IP for IPv6 addresses. (Only set if `type` is `ipv6`)
516
- :param pulumi.Input[Mapping[str, Any]] labels: Description of the Primary IP.
537
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: User-defined labels (key-value pairs).
517
538
  :param pulumi.Input[str] name: Name of the Primary IP.
518
539
  :param pulumi.Input[str] type: Type of the Primary IP. `ipv4` or `ipv6`
519
540
  """
@@ -537,7 +558,7 @@ class PrimaryIp(pulumi.CustomResource):
537
558
  @pulumi.getter(name="assigneeId")
538
559
  def assignee_id(self) -> pulumi.Output[int]:
539
560
  """
540
- ID of the assigned resource
561
+ ID of the assigned resource.
541
562
  """
542
563
  return pulumi.get(self, "assignee_id")
543
564
 
@@ -562,7 +583,7 @@ class PrimaryIp(pulumi.CustomResource):
562
583
  @pulumi.getter
563
584
  def datacenter(self) -> pulumi.Output[str]:
564
585
  """
565
- The datacenter name to create the resource in.
586
+ 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.
566
587
  """
567
588
  return pulumi.get(self, "datacenter")
568
589
 
@@ -571,6 +592,8 @@ class PrimaryIp(pulumi.CustomResource):
571
592
  def delete_protection(self) -> pulumi.Output[Optional[bool]]:
572
593
  """
573
594
  Whether delete protection is enabled. See "Delete Protection" in the Provider Docs for details.
595
+
596
+ Note: At least one of `datacenter` or `assignee_id` is required.
574
597
  """
575
598
  return pulumi.get(self, "delete_protection")
576
599
 
@@ -592,9 +615,9 @@ class PrimaryIp(pulumi.CustomResource):
592
615
 
593
616
  @property
594
617
  @pulumi.getter
595
- def labels(self) -> pulumi.Output[Optional[Mapping[str, Any]]]:
618
+ def labels(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
596
619
  """
597
- Description of the Primary IP.
620
+ User-defined labels (key-value pairs).
598
621
  """
599
622
  return pulumi.get(self, "labels")
600
623
 
pulumi_hcloud/provider.py CHANGED
@@ -4,9 +4,14 @@
4
4
 
5
5
  import copy
6
6
  import warnings
7
+ import sys
7
8
  import pulumi
8
9
  import pulumi.runtime
9
10
  from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
10
15
  from . import _utilities
11
16
 
12
17
  __all__ = ['ProviderArgs', 'Provider']
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "resource": true,
3
- "name": "hcloud"
3
+ "name": "hcloud",
4
+ "version": "1.22.0-alpha.1736833581"
4
5
  }