pulumi-hcloud 1.18.0a1710156455__py3-none-any.whl → 1.22.0a1736849475__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 -70
  8. pulumi_hcloud/firewall_attachment.py +27 -26
  9. pulumi_hcloud/floating_ip.py +39 -36
  10. pulumi_hcloud/floating_ip_assignment.py +11 -8
  11. pulumi_hcloud/get_certificate.py +25 -10
  12. pulumi_hcloud/get_certificates.py +14 -9
  13. pulumi_hcloud/get_datacenter.py +38 -27
  14. pulumi_hcloud/get_datacenters.py +28 -53
  15. pulumi_hcloud/get_firewall.py +38 -23
  16. pulumi_hcloud/get_firewalls.py +16 -9
  17. pulumi_hcloud/get_floating_ip.py +37 -17
  18. pulumi_hcloud/get_floating_ips.py +14 -9
  19. pulumi_hcloud/get_image.py +37 -13
  20. pulumi_hcloud/get_images.py +22 -9
  21. pulumi_hcloud/get_load_balancer.py +30 -11
  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 -9
  25. pulumi_hcloud/get_location.py +42 -29
  26. pulumi_hcloud/get_locations.py +28 -53
  27. pulumi_hcloud/get_network.py +28 -15
  28. pulumi_hcloud/get_networks.py +14 -9
  29. pulumi_hcloud/get_placement_group.py +31 -17
  30. pulumi_hcloud/get_placement_groups.py +16 -9
  31. pulumi_hcloud/get_primary_ip.py +42 -22
  32. pulumi_hcloud/get_primary_ips.py +14 -9
  33. pulumi_hcloud/get_server.py +43 -15
  34. pulumi_hcloud/get_server_type.py +75 -53
  35. pulumi_hcloud/get_server_types.py +39 -23
  36. pulumi_hcloud/get_servers.py +16 -9
  37. pulumi_hcloud/get_ssh_key.py +58 -36
  38. pulumi_hcloud/get_ssh_keys.py +35 -24
  39. pulumi_hcloud/get_volume.py +33 -16
  40. pulumi_hcloud/get_volumes.py +18 -11
  41. pulumi_hcloud/load_balancer.py +63 -64
  42. pulumi_hcloud/load_balancer_network.py +26 -17
  43. pulumi_hcloud/load_balancer_service.py +57 -54
  44. pulumi_hcloud/load_balancer_target.py +23 -18
  45. pulumi_hcloud/managed_certificate.py +57 -20
  46. pulumi_hcloud/network.py +27 -22
  47. pulumi_hcloud/network_route.py +13 -8
  48. pulumi_hcloud/network_subnet.py +13 -8
  49. pulumi_hcloud/outputs.py +265 -46
  50. pulumi_hcloud/placement_group.py +27 -22
  51. pulumi_hcloud/primary_ip.py +66 -47
  52. pulumi_hcloud/provider.py +5 -0
  53. pulumi_hcloud/pulumi-plugin.json +2 -1
  54. pulumi_hcloud/rdns.py +41 -40
  55. pulumi_hcloud/server.py +123 -176
  56. pulumi_hcloud/server_network.py +24 -17
  57. pulumi_hcloud/snapshot.py +25 -22
  58. pulumi_hcloud/ssh_key.py +52 -51
  59. pulumi_hcloud/uploaded_certificate.py +73 -20
  60. pulumi_hcloud/volume.py +37 -32
  61. pulumi_hcloud/volume_attachment.py +11 -8
  62. {pulumi_hcloud-1.18.0a1710156455.dist-info → pulumi_hcloud-1.22.0a1736849475.dist-info}/METADATA +7 -6
  63. pulumi_hcloud-1.22.0a1736849475.dist-info/RECORD +67 -0
  64. {pulumi_hcloud-1.18.0a1710156455.dist-info → pulumi_hcloud-1.22.0a1736849475.dist-info}/WHEEL +1 -1
  65. pulumi_hcloud-1.18.0a1710156455.dist-info/RECORD +0 -65
  66. {pulumi_hcloud-1.18.0a1710156455.dist-info → pulumi_hcloud-1.22.0a1736849475.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):
@@ -148,34 +153,34 @@ class PlacementGroup(pulumi.CustomResource):
148
153
 
149
154
  ## Example Usage
150
155
 
151
- <!--Start PulumiCodeChooser -->
152
156
  ```python
153
157
  import pulumi
154
158
  import pulumi_hcloud as hcloud
155
159
 
156
160
  my_placement_group = hcloud.PlacementGroup("my-placement-group",
161
+ name="my-placement-group",
157
162
  type="spread",
158
163
  labels={
159
164
  "key": "value",
160
165
  })
161
166
  node1 = hcloud.Server("node1",
167
+ name="node1",
162
168
  image="debian-11",
163
- server_type="cx11",
169
+ server_type="cx22",
164
170
  placement_group_id=my_placement_group.id)
165
171
  ```
166
- <!--End PulumiCodeChooser -->
167
172
 
168
173
  ## Import
169
174
 
170
175
  Placement Groups can be imported using its `id`:
171
176
 
172
177
  ```sh
173
- $ pulumi import hcloud:index/placementGroup:PlacementGroup my-placement-group id
178
+ $ pulumi import hcloud:index/placementGroup:PlacementGroup example "$PLACEMENT_GROUP_ID"
174
179
  ```
175
180
 
176
181
  :param str resource_name: The name of the resource.
177
182
  :param pulumi.ResourceOptions opts: Options for the resource.
178
- :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.
179
184
  :param pulumi.Input[str] name: Name of the Placement Group.
180
185
  :param pulumi.Input[str] type: Type of the Placement Group.
181
186
  """
@@ -190,29 +195,29 @@ class PlacementGroup(pulumi.CustomResource):
190
195
 
191
196
  ## Example Usage
192
197
 
193
- <!--Start PulumiCodeChooser -->
194
198
  ```python
195
199
  import pulumi
196
200
  import pulumi_hcloud as hcloud
197
201
 
198
202
  my_placement_group = hcloud.PlacementGroup("my-placement-group",
203
+ name="my-placement-group",
199
204
  type="spread",
200
205
  labels={
201
206
  "key": "value",
202
207
  })
203
208
  node1 = hcloud.Server("node1",
209
+ name="node1",
204
210
  image="debian-11",
205
- server_type="cx11",
211
+ server_type="cx22",
206
212
  placement_group_id=my_placement_group.id)
207
213
  ```
208
- <!--End PulumiCodeChooser -->
209
214
 
210
215
  ## Import
211
216
 
212
217
  Placement Groups can be imported using its `id`:
213
218
 
214
219
  ```sh
215
- $ pulumi import hcloud:index/placementGroup:PlacementGroup my-placement-group id
220
+ $ pulumi import hcloud:index/placementGroup:PlacementGroup example "$PLACEMENT_GROUP_ID"
216
221
  ```
217
222
 
218
223
  :param str resource_name: The name of the resource.
@@ -230,7 +235,7 @@ class PlacementGroup(pulumi.CustomResource):
230
235
  def _internal_init(__self__,
231
236
  resource_name: str,
232
237
  opts: Optional[pulumi.ResourceOptions] = None,
233
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
238
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
234
239
  name: Optional[pulumi.Input[str]] = None,
235
240
  type: Optional[pulumi.Input[str]] = None,
236
241
  __props__=None):
@@ -258,7 +263,7 @@ class PlacementGroup(pulumi.CustomResource):
258
263
  def get(resource_name: str,
259
264
  id: pulumi.Input[str],
260
265
  opts: Optional[pulumi.ResourceOptions] = None,
261
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
266
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
262
267
  name: Optional[pulumi.Input[str]] = None,
263
268
  servers: Optional[pulumi.Input[Sequence[pulumi.Input[int]]]] = None,
264
269
  type: Optional[pulumi.Input[str]] = None) -> 'PlacementGroup':
@@ -269,7 +274,7 @@ class PlacementGroup(pulumi.CustomResource):
269
274
  :param str resource_name: The unique name of the resulting resource.
270
275
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
271
276
  :param pulumi.ResourceOptions opts: Options for the resource.
272
- :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.
273
278
  :param pulumi.Input[str] name: Name of the Placement Group.
274
279
  :param pulumi.Input[str] type: Type of the Placement Group.
275
280
  """
@@ -285,7 +290,7 @@ class PlacementGroup(pulumi.CustomResource):
285
290
 
286
291
  @property
287
292
  @pulumi.getter
288
- def labels(self) -> pulumi.Output[Optional[Mapping[str, Any]]]:
293
+ def labels(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
289
294
  """
290
295
  User-defined labels (key-value pairs) should be created with.
291
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):
@@ -338,12 +351,12 @@ class PrimaryIp(pulumi.CustomResource):
338
351
 
339
352
  ## Example Usage
340
353
 
341
- <!--Start PulumiCodeChooser -->
342
354
  ```python
343
355
  import pulumi
344
356
  import pulumi_hcloud as hcloud
345
357
 
346
358
  main = hcloud.PrimaryIp("main",
359
+ name="primary_ip_test",
347
360
  datacenter="fsn1-dc14",
348
361
  type="ipv4",
349
362
  assignee_type="server",
@@ -352,36 +365,38 @@ class PrimaryIp(pulumi.CustomResource):
352
365
  "hallo": "welt",
353
366
  })
354
367
  # Link a server to a primary IP
355
- server_test = hcloud.Server("serverTest",
368
+ server_test = hcloud.Server("server_test",
369
+ name="test-server",
356
370
  image="ubuntu-20.04",
357
- server_type="cx11",
371
+ server_type="cx22",
358
372
  datacenter="fsn1-dc14",
359
373
  labels={
360
374
  "test": "tessst1",
361
375
  },
362
- public_nets=[hcloud.ServerPublicNetArgs(
363
- ipv4=main.id,
364
- )])
376
+ public_nets=[{
377
+ "ipv4": main.id,
378
+ }])
365
379
  ```
366
- <!--End PulumiCodeChooser -->
367
380
 
368
381
  ## Import
369
382
 
370
383
  Primary IPs can be imported using its `id`:
371
384
 
372
385
  ```sh
373
- $ pulumi import hcloud:index/primaryIp:PrimaryIp myip id
386
+ $ pulumi import hcloud:index/primaryIp:PrimaryIp example "$PRIMARY_IP_ID"
374
387
  ```
375
388
 
376
389
  :param str resource_name: The name of the resource.
377
390
  :param pulumi.ResourceOptions opts: Options for the resource.
378
- :param pulumi.Input[int] assignee_id: ID of the assigned resource
391
+ :param pulumi.Input[int] assignee_id: ID of the assigned resource.
379
392
  :param pulumi.Input[str] assignee_type: The type of the assigned resource. Currently supported: `server`
380
393
  :param pulumi.Input[bool] auto_delete: Whether auto delete is enabled.
381
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.
382
- :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.
383
396
  :param pulumi.Input[bool] delete_protection: Whether delete protection is enabled. See "Delete Protection" in the Provider Docs for details.
384
- :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).
385
400
  :param pulumi.Input[str] name: Name of the Primary IP.
386
401
  :param pulumi.Input[str] type: Type of the Primary IP. `ipv4` or `ipv6`
387
402
  """
@@ -399,12 +414,12 @@ class PrimaryIp(pulumi.CustomResource):
399
414
 
400
415
  ## Example Usage
401
416
 
402
- <!--Start PulumiCodeChooser -->
403
417
  ```python
404
418
  import pulumi
405
419
  import pulumi_hcloud as hcloud
406
420
 
407
421
  main = hcloud.PrimaryIp("main",
422
+ name="primary_ip_test",
408
423
  datacenter="fsn1-dc14",
409
424
  type="ipv4",
410
425
  assignee_type="server",
@@ -413,25 +428,25 @@ class PrimaryIp(pulumi.CustomResource):
413
428
  "hallo": "welt",
414
429
  })
415
430
  # Link a server to a primary IP
416
- server_test = hcloud.Server("serverTest",
431
+ server_test = hcloud.Server("server_test",
432
+ name="test-server",
417
433
  image="ubuntu-20.04",
418
- server_type="cx11",
434
+ server_type="cx22",
419
435
  datacenter="fsn1-dc14",
420
436
  labels={
421
437
  "test": "tessst1",
422
438
  },
423
- public_nets=[hcloud.ServerPublicNetArgs(
424
- ipv4=main.id,
425
- )])
439
+ public_nets=[{
440
+ "ipv4": main.id,
441
+ }])
426
442
  ```
427
- <!--End PulumiCodeChooser -->
428
443
 
429
444
  ## Import
430
445
 
431
446
  Primary IPs can be imported using its `id`:
432
447
 
433
448
  ```sh
434
- $ pulumi import hcloud:index/primaryIp:PrimaryIp myip id
449
+ $ pulumi import hcloud:index/primaryIp:PrimaryIp example "$PRIMARY_IP_ID"
435
450
  ```
436
451
 
437
452
  :param str resource_name: The name of the resource.
@@ -454,7 +469,7 @@ class PrimaryIp(pulumi.CustomResource):
454
469
  auto_delete: Optional[pulumi.Input[bool]] = None,
455
470
  datacenter: Optional[pulumi.Input[str]] = None,
456
471
  delete_protection: Optional[pulumi.Input[bool]] = None,
457
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
472
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
458
473
  name: Optional[pulumi.Input[str]] = None,
459
474
  type: Optional[pulumi.Input[str]] = None,
460
475
  __props__=None):
@@ -499,7 +514,7 @@ class PrimaryIp(pulumi.CustomResource):
499
514
  delete_protection: Optional[pulumi.Input[bool]] = None,
500
515
  ip_address: Optional[pulumi.Input[str]] = None,
501
516
  ip_network: Optional[pulumi.Input[str]] = None,
502
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
517
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
503
518
  name: Optional[pulumi.Input[str]] = None,
504
519
  type: Optional[pulumi.Input[str]] = None) -> 'PrimaryIp':
505
520
  """
@@ -509,15 +524,17 @@ class PrimaryIp(pulumi.CustomResource):
509
524
  :param str resource_name: The unique name of the resulting resource.
510
525
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
511
526
  :param pulumi.ResourceOptions opts: Options for the resource.
512
- :param pulumi.Input[int] assignee_id: ID of the assigned resource
527
+ :param pulumi.Input[int] assignee_id: ID of the assigned resource.
513
528
  :param pulumi.Input[str] assignee_type: The type of the assigned resource. Currently supported: `server`
514
529
  :param pulumi.Input[bool] auto_delete: Whether auto delete is enabled.
515
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.
516
- :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.
517
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.
518
535
  :param pulumi.Input[str] ip_address: (string) IP Address of the Primary IP.
519
536
  :param pulumi.Input[str] ip_network: (string) IPv6 subnet of the Primary IP for IPv6 addresses. (Only set if `type` is `ipv6`)
520
- :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).
521
538
  :param pulumi.Input[str] name: Name of the Primary IP.
522
539
  :param pulumi.Input[str] type: Type of the Primary IP. `ipv4` or `ipv6`
523
540
  """
@@ -541,7 +558,7 @@ class PrimaryIp(pulumi.CustomResource):
541
558
  @pulumi.getter(name="assigneeId")
542
559
  def assignee_id(self) -> pulumi.Output[int]:
543
560
  """
544
- ID of the assigned resource
561
+ ID of the assigned resource.
545
562
  """
546
563
  return pulumi.get(self, "assignee_id")
547
564
 
@@ -566,7 +583,7 @@ class PrimaryIp(pulumi.CustomResource):
566
583
  @pulumi.getter
567
584
  def datacenter(self) -> pulumi.Output[str]:
568
585
  """
569
- 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.
570
587
  """
571
588
  return pulumi.get(self, "datacenter")
572
589
 
@@ -575,6 +592,8 @@ class PrimaryIp(pulumi.CustomResource):
575
592
  def delete_protection(self) -> pulumi.Output[Optional[bool]]:
576
593
  """
577
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.
578
597
  """
579
598
  return pulumi.get(self, "delete_protection")
580
599
 
@@ -596,9 +615,9 @@ class PrimaryIp(pulumi.CustomResource):
596
615
 
597
616
  @property
598
617
  @pulumi.getter
599
- def labels(self) -> pulumi.Output[Optional[Mapping[str, Any]]]:
618
+ def labels(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
600
619
  """
601
- Description of the Primary IP.
620
+ User-defined labels (key-value pairs).
602
621
  """
603
622
  return pulumi.get(self, "labels")
604
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.1736849475"
4
5
  }