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
pulumi_hcloud/firewall.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
  from . import outputs
12
17
  from ._inputs import *
@@ -17,13 +22,13 @@ __all__ = ['FirewallArgs', 'Firewall']
17
22
  class FirewallArgs:
18
23
  def __init__(__self__, *,
19
24
  apply_tos: Optional[pulumi.Input[Sequence[pulumi.Input['FirewallApplyToArgs']]]] = None,
20
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
25
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
21
26
  name: Optional[pulumi.Input[str]] = None,
22
27
  rules: Optional[pulumi.Input[Sequence[pulumi.Input['FirewallRuleArgs']]]] = None):
23
28
  """
24
29
  The set of arguments for constructing a Firewall resource.
25
30
  :param pulumi.Input[Sequence[pulumi.Input['FirewallApplyToArgs']]] apply_tos: Resources the firewall should be assigned to
26
- :param pulumi.Input[Mapping[str, Any]] labels: User-defined labels (key-value pairs) should be created with.
31
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: User-defined labels (key-value pairs) should be created with.
27
32
  :param pulumi.Input[str] name: Name of the Firewall.
28
33
  :param pulumi.Input[Sequence[pulumi.Input['FirewallRuleArgs']]] rules: Configuration of a Rule from this Firewall.
29
34
  """
@@ -50,14 +55,14 @@ class FirewallArgs:
50
55
 
51
56
  @property
52
57
  @pulumi.getter
53
- def labels(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
58
+ def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
54
59
  """
55
60
  User-defined labels (key-value pairs) should be created with.
56
61
  """
57
62
  return pulumi.get(self, "labels")
58
63
 
59
64
  @labels.setter
60
- def labels(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
65
+ def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
61
66
  pulumi.set(self, "labels", value)
62
67
 
63
68
  @property
@@ -89,13 +94,13 @@ class FirewallArgs:
89
94
  class _FirewallState:
90
95
  def __init__(__self__, *,
91
96
  apply_tos: Optional[pulumi.Input[Sequence[pulumi.Input['FirewallApplyToArgs']]]] = None,
92
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
97
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
93
98
  name: Optional[pulumi.Input[str]] = None,
94
99
  rules: Optional[pulumi.Input[Sequence[pulumi.Input['FirewallRuleArgs']]]] = None):
95
100
  """
96
101
  Input properties used for looking up and filtering Firewall resources.
97
102
  :param pulumi.Input[Sequence[pulumi.Input['FirewallApplyToArgs']]] apply_tos: Resources the firewall should be assigned to
98
- :param pulumi.Input[Mapping[str, Any]] labels: User-defined labels (key-value pairs) should be created with.
103
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: User-defined labels (key-value pairs) should be created with.
99
104
  :param pulumi.Input[str] name: Name of the Firewall.
100
105
  :param pulumi.Input[Sequence[pulumi.Input['FirewallRuleArgs']]] rules: Configuration of a Rule from this Firewall.
101
106
  """
@@ -122,14 +127,14 @@ class _FirewallState:
122
127
 
123
128
  @property
124
129
  @pulumi.getter
125
- def labels(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
130
+ def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
126
131
  """
127
132
  User-defined labels (key-value pairs) should be created with.
128
133
  """
129
134
  return pulumi.get(self, "labels")
130
135
 
131
136
  @labels.setter
132
- def labels(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
137
+ def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
133
138
  pulumi.set(self, "labels", value)
134
139
 
135
140
  @property
@@ -162,61 +167,62 @@ class Firewall(pulumi.CustomResource):
162
167
  def __init__(__self__,
163
168
  resource_name: str,
164
169
  opts: Optional[pulumi.ResourceOptions] = None,
165
- apply_tos: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['FirewallApplyToArgs']]]]] = None,
166
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
170
+ apply_tos: Optional[pulumi.Input[Sequence[pulumi.Input[Union['FirewallApplyToArgs', 'FirewallApplyToArgsDict']]]]] = None,
171
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
167
172
  name: Optional[pulumi.Input[str]] = None,
168
- rules: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['FirewallRuleArgs']]]]] = None,
173
+ rules: Optional[pulumi.Input[Sequence[pulumi.Input[Union['FirewallRuleArgs', 'FirewallRuleArgsDict']]]]] = None,
169
174
  __props__=None):
170
175
  """
171
176
  Provides a Hetzner Cloud Firewall to represent a Firewall in the Hetzner Cloud.
172
177
 
173
178
  ## Example Usage
174
179
 
175
- <!--Start PulumiCodeChooser -->
176
180
  ```python
177
181
  import pulumi
178
182
  import pulumi_hcloud as hcloud
179
183
 
180
- myfirewall = hcloud.Firewall("myfirewall", rules=[
181
- hcloud.FirewallRuleArgs(
182
- direction="in",
183
- protocol="icmp",
184
- source_ips=[
185
- "0.0.0.0/0",
186
- "::/0",
187
- ],
188
- ),
189
- hcloud.FirewallRuleArgs(
190
- direction="in",
191
- protocol="tcp",
192
- port="80-85",
193
- source_ips=[
194
- "0.0.0.0/0",
195
- "::/0",
196
- ],
197
- ),
198
- ])
184
+ myfirewall = hcloud.Firewall("myfirewall",
185
+ name="my-firewall",
186
+ rules=[
187
+ {
188
+ "direction": "in",
189
+ "protocol": "icmp",
190
+ "source_ips": [
191
+ "0.0.0.0/0",
192
+ "::/0",
193
+ ],
194
+ },
195
+ {
196
+ "direction": "in",
197
+ "protocol": "tcp",
198
+ "port": "80-85",
199
+ "source_ips": [
200
+ "0.0.0.0/0",
201
+ "::/0",
202
+ ],
203
+ },
204
+ ])
199
205
  node1 = hcloud.Server("node1",
206
+ name="node1",
200
207
  image="debian-11",
201
- server_type="cx11",
208
+ server_type="cx22",
202
209
  firewall_ids=[myfirewall.id])
203
210
  ```
204
- <!--End PulumiCodeChooser -->
205
211
 
206
212
  ## Import
207
213
 
208
214
  Firewalls can be imported using its `id`:
209
215
 
210
216
  ```sh
211
- $ pulumi import hcloud:index/firewall:Firewall myfirewall id
217
+ $ pulumi import hcloud:index/firewall:Firewall example "$FIREWALL_ID"
212
218
  ```
213
219
 
214
220
  :param str resource_name: The name of the resource.
215
221
  :param pulumi.ResourceOptions opts: Options for the resource.
216
- :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['FirewallApplyToArgs']]]] apply_tos: Resources the firewall should be assigned to
217
- :param pulumi.Input[Mapping[str, Any]] labels: User-defined labels (key-value pairs) should be created with.
222
+ :param pulumi.Input[Sequence[pulumi.Input[Union['FirewallApplyToArgs', 'FirewallApplyToArgsDict']]]] apply_tos: Resources the firewall should be assigned to
223
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: User-defined labels (key-value pairs) should be created with.
218
224
  :param pulumi.Input[str] name: Name of the Firewall.
219
- :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['FirewallRuleArgs']]]] rules: Configuration of a Rule from this Firewall.
225
+ :param pulumi.Input[Sequence[pulumi.Input[Union['FirewallRuleArgs', 'FirewallRuleArgsDict']]]] rules: Configuration of a Rule from this Firewall.
220
226
  """
221
227
  ...
222
228
  @overload
@@ -229,43 +235,44 @@ class Firewall(pulumi.CustomResource):
229
235
 
230
236
  ## Example Usage
231
237
 
232
- <!--Start PulumiCodeChooser -->
233
238
  ```python
234
239
  import pulumi
235
240
  import pulumi_hcloud as hcloud
236
241
 
237
- myfirewall = hcloud.Firewall("myfirewall", rules=[
238
- hcloud.FirewallRuleArgs(
239
- direction="in",
240
- protocol="icmp",
241
- source_ips=[
242
- "0.0.0.0/0",
243
- "::/0",
244
- ],
245
- ),
246
- hcloud.FirewallRuleArgs(
247
- direction="in",
248
- protocol="tcp",
249
- port="80-85",
250
- source_ips=[
251
- "0.0.0.0/0",
252
- "::/0",
253
- ],
254
- ),
255
- ])
242
+ myfirewall = hcloud.Firewall("myfirewall",
243
+ name="my-firewall",
244
+ rules=[
245
+ {
246
+ "direction": "in",
247
+ "protocol": "icmp",
248
+ "source_ips": [
249
+ "0.0.0.0/0",
250
+ "::/0",
251
+ ],
252
+ },
253
+ {
254
+ "direction": "in",
255
+ "protocol": "tcp",
256
+ "port": "80-85",
257
+ "source_ips": [
258
+ "0.0.0.0/0",
259
+ "::/0",
260
+ ],
261
+ },
262
+ ])
256
263
  node1 = hcloud.Server("node1",
264
+ name="node1",
257
265
  image="debian-11",
258
- server_type="cx11",
266
+ server_type="cx22",
259
267
  firewall_ids=[myfirewall.id])
260
268
  ```
261
- <!--End PulumiCodeChooser -->
262
269
 
263
270
  ## Import
264
271
 
265
272
  Firewalls can be imported using its `id`:
266
273
 
267
274
  ```sh
268
- $ pulumi import hcloud:index/firewall:Firewall myfirewall id
275
+ $ pulumi import hcloud:index/firewall:Firewall example "$FIREWALL_ID"
269
276
  ```
270
277
 
271
278
  :param str resource_name: The name of the resource.
@@ -283,10 +290,10 @@ class Firewall(pulumi.CustomResource):
283
290
  def _internal_init(__self__,
284
291
  resource_name: str,
285
292
  opts: Optional[pulumi.ResourceOptions] = None,
286
- apply_tos: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['FirewallApplyToArgs']]]]] = None,
287
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
293
+ apply_tos: Optional[pulumi.Input[Sequence[pulumi.Input[Union['FirewallApplyToArgs', 'FirewallApplyToArgsDict']]]]] = None,
294
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
288
295
  name: Optional[pulumi.Input[str]] = None,
289
- rules: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['FirewallRuleArgs']]]]] = None,
296
+ rules: Optional[pulumi.Input[Sequence[pulumi.Input[Union['FirewallRuleArgs', 'FirewallRuleArgsDict']]]]] = None,
290
297
  __props__=None):
291
298
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
292
299
  if not isinstance(opts, pulumi.ResourceOptions):
@@ -310,10 +317,10 @@ class Firewall(pulumi.CustomResource):
310
317
  def get(resource_name: str,
311
318
  id: pulumi.Input[str],
312
319
  opts: Optional[pulumi.ResourceOptions] = None,
313
- apply_tos: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['FirewallApplyToArgs']]]]] = None,
314
- labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
320
+ apply_tos: Optional[pulumi.Input[Sequence[pulumi.Input[Union['FirewallApplyToArgs', 'FirewallApplyToArgsDict']]]]] = None,
321
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
315
322
  name: Optional[pulumi.Input[str]] = None,
316
- rules: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['FirewallRuleArgs']]]]] = None) -> 'Firewall':
323
+ rules: Optional[pulumi.Input[Sequence[pulumi.Input[Union['FirewallRuleArgs', 'FirewallRuleArgsDict']]]]] = None) -> 'Firewall':
317
324
  """
318
325
  Get an existing Firewall resource's state with the given name, id, and optional extra
319
326
  properties used to qualify the lookup.
@@ -321,10 +328,10 @@ class Firewall(pulumi.CustomResource):
321
328
  :param str resource_name: The unique name of the resulting resource.
322
329
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
323
330
  :param pulumi.ResourceOptions opts: Options for the resource.
324
- :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['FirewallApplyToArgs']]]] apply_tos: Resources the firewall should be assigned to
325
- :param pulumi.Input[Mapping[str, Any]] labels: User-defined labels (key-value pairs) should be created with.
331
+ :param pulumi.Input[Sequence[pulumi.Input[Union['FirewallApplyToArgs', 'FirewallApplyToArgsDict']]]] apply_tos: Resources the firewall should be assigned to
332
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: User-defined labels (key-value pairs) should be created with.
326
333
  :param pulumi.Input[str] name: Name of the Firewall.
327
- :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['FirewallRuleArgs']]]] rules: Configuration of a Rule from this Firewall.
334
+ :param pulumi.Input[Sequence[pulumi.Input[Union['FirewallRuleArgs', 'FirewallRuleArgsDict']]]] rules: Configuration of a Rule from this Firewall.
328
335
  """
329
336
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
330
337
 
@@ -346,7 +353,7 @@ class Firewall(pulumi.CustomResource):
346
353
 
347
354
  @property
348
355
  @pulumi.getter
349
- def labels(self) -> pulumi.Output[Mapping[str, Any]]:
356
+ def labels(self) -> pulumi.Output[Mapping[str, str]]:
350
357
  """
351
358
  User-defined labels (key-value pairs) should be created with.
352
359
  """
@@ -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__ = ['FirewallAttachmentArgs', 'FirewallAttachment']
@@ -146,7 +151,7 @@ class FirewallAttachment(pulumi.CustomResource):
146
151
  """
147
152
  Attaches resource to a Hetzner Cloud Firewall.
148
153
 
149
- *Note*: only one `FirewallAttachment` per Firewall is allowed.
154
+ _Note_: only one `FirewallAttachment` per Firewall is allowed.
150
155
  Any resources that should be attached to that Firewall need to be
151
156
  specified in that `FirewallAttachment`.
152
157
 
@@ -154,40 +159,38 @@ class FirewallAttachment(pulumi.CustomResource):
154
159
 
155
160
  ### Attach Servers
156
161
 
157
- <!--Start PulumiCodeChooser -->
158
162
  ```python
159
163
  import pulumi
160
164
  import pulumi_hcloud as hcloud
161
165
 
162
- test_server = hcloud.Server("testServer",
163
- server_type="cx11",
166
+ test_server = hcloud.Server("test_server",
167
+ name="test-server",
168
+ server_type="cx22",
164
169
  image="ubuntu-20.04")
165
- basic_firewall = hcloud.Firewall("basicFirewall")
166
- fw_ref = hcloud.FirewallAttachment("fwRef",
170
+ basic_firewall = hcloud.Firewall("basic_firewall", name="basic_firewall")
171
+ fw_ref = hcloud.FirewallAttachment("fw_ref",
167
172
  firewall_id=basic_firewall.id,
168
173
  server_ids=[test_server.id])
169
174
  ```
170
- <!--End PulumiCodeChooser -->
171
175
 
172
176
  ### Attach Label Selectors
173
177
 
174
- <!--Start PulumiCodeChooser -->
175
178
  ```python
176
179
  import pulumi
177
180
  import pulumi_hcloud as hcloud
178
181
 
179
- test_server = hcloud.Server("testServer",
180
- server_type="cx11",
182
+ test_server = hcloud.Server("test_server",
183
+ name="test-server",
184
+ server_type="cx22",
181
185
  image="ubuntu-20.04",
182
186
  labels={
183
187
  "firewall-attachment": "test-server",
184
188
  })
185
- basic_firewall = hcloud.Firewall("basicFirewall")
186
- fw_ref = hcloud.FirewallAttachment("fwRef",
189
+ basic_firewall = hcloud.Firewall("basic_firewall", name="basic_firewall")
190
+ fw_ref = hcloud.FirewallAttachment("fw_ref",
187
191
  firewall_id=basic_firewall.id,
188
192
  label_selectors=["firewall-attachment=test-server"])
189
193
  ```
190
- <!--End PulumiCodeChooser -->
191
194
 
192
195
  :param str resource_name: The name of the resource.
193
196
  :param pulumi.ResourceOptions opts: Options for the resource.
@@ -207,7 +210,7 @@ class FirewallAttachment(pulumi.CustomResource):
207
210
  """
208
211
  Attaches resource to a Hetzner Cloud Firewall.
209
212
 
210
- *Note*: only one `FirewallAttachment` per Firewall is allowed.
213
+ _Note_: only one `FirewallAttachment` per Firewall is allowed.
211
214
  Any resources that should be attached to that Firewall need to be
212
215
  specified in that `FirewallAttachment`.
213
216
 
@@ -215,40 +218,38 @@ class FirewallAttachment(pulumi.CustomResource):
215
218
 
216
219
  ### Attach Servers
217
220
 
218
- <!--Start PulumiCodeChooser -->
219
221
  ```python
220
222
  import pulumi
221
223
  import pulumi_hcloud as hcloud
222
224
 
223
- test_server = hcloud.Server("testServer",
224
- server_type="cx11",
225
+ test_server = hcloud.Server("test_server",
226
+ name="test-server",
227
+ server_type="cx22",
225
228
  image="ubuntu-20.04")
226
- basic_firewall = hcloud.Firewall("basicFirewall")
227
- fw_ref = hcloud.FirewallAttachment("fwRef",
229
+ basic_firewall = hcloud.Firewall("basic_firewall", name="basic_firewall")
230
+ fw_ref = hcloud.FirewallAttachment("fw_ref",
228
231
  firewall_id=basic_firewall.id,
229
232
  server_ids=[test_server.id])
230
233
  ```
231
- <!--End PulumiCodeChooser -->
232
234
 
233
235
  ### Attach Label Selectors
234
236
 
235
- <!--Start PulumiCodeChooser -->
236
237
  ```python
237
238
  import pulumi
238
239
  import pulumi_hcloud as hcloud
239
240
 
240
- test_server = hcloud.Server("testServer",
241
- server_type="cx11",
241
+ test_server = hcloud.Server("test_server",
242
+ name="test-server",
243
+ server_type="cx22",
242
244
  image="ubuntu-20.04",
243
245
  labels={
244
246
  "firewall-attachment": "test-server",
245
247
  })
246
- basic_firewall = hcloud.Firewall("basicFirewall")
247
- fw_ref = hcloud.FirewallAttachment("fwRef",
248
+ basic_firewall = hcloud.Firewall("basic_firewall", name="basic_firewall")
249
+ fw_ref = hcloud.FirewallAttachment("fw_ref",
248
250
  firewall_id=basic_firewall.id,
249
251
  label_selectors=["firewall-attachment=test-server"])
250
252
  ```
251
- <!--End PulumiCodeChooser -->
252
253
 
253
254
  :param str resource_name: The name of the resource.
254
255
  :param FirewallAttachmentArgs args: The arguments to use to populate this resource's properties.