pulumiverse-scaleway 1.26.0a1742897201__py3-none-any.whl → 1.26.0a1743166124__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. pulumiverse_scaleway/__init__.py +105 -0
  2. pulumiverse_scaleway/_inputs.py +663 -0
  3. pulumiverse_scaleway/apple_silicon_server.py +105 -0
  4. pulumiverse_scaleway/applesilicon/server.py +105 -0
  5. pulumiverse_scaleway/domain/__init__.py +1 -0
  6. pulumiverse_scaleway/domain/_inputs.py +2697 -0
  7. pulumiverse_scaleway/domain/outputs.py +2145 -0
  8. pulumiverse_scaleway/domain/registration.py +777 -0
  9. pulumiverse_scaleway/edge_services_backend_stage.py +472 -0
  10. pulumiverse_scaleway/edge_services_cache_stage.py +490 -0
  11. pulumiverse_scaleway/edge_services_dns_stage.py +516 -0
  12. pulumiverse_scaleway/edge_services_head_stage.py +258 -0
  13. pulumiverse_scaleway/edge_services_pipeline.py +436 -0
  14. pulumiverse_scaleway/edge_services_plan.py +239 -0
  15. pulumiverse_scaleway/edge_services_route_stage.py +422 -0
  16. pulumiverse_scaleway/edge_services_tls_stage.py +546 -0
  17. pulumiverse_scaleway/edge_services_waf_stage.py +444 -0
  18. pulumiverse_scaleway/elasticmetal/ip.py +13 -7
  19. pulumiverse_scaleway/flexible_ip.py +13 -7
  20. pulumiverse_scaleway/get_lb_frontend.py +12 -1
  21. pulumiverse_scaleway/get_lb_route.py +12 -1
  22. pulumiverse_scaleway/get_secret.py +15 -4
  23. pulumiverse_scaleway/get_vpc_public_gateway.py +34 -1
  24. pulumiverse_scaleway/get_vpc_public_gateway_dhcp.py +8 -0
  25. pulumiverse_scaleway/get_vpc_public_gateway_dhcp_reservation.py +8 -0
  26. pulumiverse_scaleway/loadbalancer_backend.py +2 -2
  27. pulumiverse_scaleway/loadbalancer_frontend.py +47 -0
  28. pulumiverse_scaleway/loadbalancer_route.py +48 -1
  29. pulumiverse_scaleway/loadbalancers/backend.py +2 -2
  30. pulumiverse_scaleway/loadbalancers/frontend.py +47 -0
  31. pulumiverse_scaleway/loadbalancers/get_frontend.py +12 -1
  32. pulumiverse_scaleway/loadbalancers/get_route.py +12 -1
  33. pulumiverse_scaleway/loadbalancers/outputs.py +13 -2
  34. pulumiverse_scaleway/loadbalancers/route.py +48 -1
  35. pulumiverse_scaleway/network/__init__.py +1 -0
  36. pulumiverse_scaleway/network/_inputs.py +194 -0
  37. pulumiverse_scaleway/network/acl.py +415 -0
  38. pulumiverse_scaleway/network/gateway_network.py +104 -122
  39. pulumiverse_scaleway/network/get_public_gateway.py +34 -1
  40. pulumiverse_scaleway/network/get_public_gateway_dhcp.py +8 -0
  41. pulumiverse_scaleway/network/get_public_gateway_dhcp_reservation.py +8 -0
  42. pulumiverse_scaleway/network/outputs.py +139 -0
  43. pulumiverse_scaleway/network/public_gateway.py +124 -21
  44. pulumiverse_scaleway/network/public_gateway_dhcp.py +8 -0
  45. pulumiverse_scaleway/network/public_gateway_dhcp_reservation.py +8 -0
  46. pulumiverse_scaleway/outputs.py +662 -2
  47. pulumiverse_scaleway/pulumi-plugin.json +1 -1
  48. pulumiverse_scaleway/secret.py +22 -2
  49. pulumiverse_scaleway/secret_version.py +6 -6
  50. pulumiverse_scaleway/secrets/_inputs.py +154 -0
  51. pulumiverse_scaleway/secrets/get_secret.py +15 -4
  52. pulumiverse_scaleway/secrets/outputs.py +200 -0
  53. pulumiverse_scaleway/secrets/secret.py +22 -2
  54. pulumiverse_scaleway/tem/__init__.py +2 -0
  55. pulumiverse_scaleway/tem/blocked_list.py +442 -0
  56. pulumiverse_scaleway/tem/domain.py +7 -0
  57. pulumiverse_scaleway/tem/get_offer_subscription.py +254 -0
  58. pulumiverse_scaleway/tem_domain.py +7 -0
  59. pulumiverse_scaleway/vpc_gateway_network.py +104 -122
  60. pulumiverse_scaleway/vpc_public_gateway.py +124 -21
  61. pulumiverse_scaleway/vpc_public_gateway_dhcp.py +8 -0
  62. pulumiverse_scaleway/vpc_public_gateway_dhcp_reservation.py +8 -0
  63. {pulumiverse_scaleway-1.26.0a1742897201.dist-info → pulumiverse_scaleway-1.26.0a1743166124.dist-info}/METADATA +1 -1
  64. {pulumiverse_scaleway-1.26.0a1742897201.dist-info → pulumiverse_scaleway-1.26.0a1743166124.dist-info}/RECORD +66 -53
  65. {pulumiverse_scaleway-1.26.0a1742897201.dist-info → pulumiverse_scaleway-1.26.0a1743166124.dist-info}/WHEEL +1 -1
  66. {pulumiverse_scaleway-1.26.0a1742897201.dist-info → pulumiverse_scaleway-1.26.0a1743166124.dist-info}/top_level.txt +0 -0
@@ -15,6 +15,8 @@ else:
15
15
  from .. import _utilities
16
16
 
17
17
  __all__ = [
18
+ 'AclRuleArgs',
19
+ 'AclRuleArgsDict',
18
20
  'GatewayNetworkIpamConfigArgs',
19
21
  'GatewayNetworkIpamConfigArgsDict',
20
22
  'PrivateNetworkIpv4SubnetArgs',
@@ -25,6 +27,198 @@ __all__ = [
25
27
 
26
28
  MYPY = False
27
29
 
30
+ if not MYPY:
31
+ class AclRuleArgsDict(TypedDict):
32
+ action: NotRequired[pulumi.Input[str]]
33
+ """
34
+ The policy to apply to the packet.
35
+ """
36
+ description: NotRequired[pulumi.Input[str]]
37
+ """
38
+ The rule description.
39
+ """
40
+ destination: NotRequired[pulumi.Input[str]]
41
+ """
42
+ The destination IP range to which this rule applies (CIDR notation with subnet mask).
43
+ """
44
+ dst_port_high: NotRequired[pulumi.Input[int]]
45
+ """
46
+ The ending port of the destination port range to which this rule applies (inclusive).
47
+ """
48
+ dst_port_low: NotRequired[pulumi.Input[int]]
49
+ """
50
+ The starting port of the destination port range to which this rule applies (inclusive).
51
+ """
52
+ protocol: NotRequired[pulumi.Input[str]]
53
+ """
54
+ The protocol to which this rule applies. Default value: ANY.
55
+ """
56
+ source: NotRequired[pulumi.Input[str]]
57
+ """
58
+ The Source IP range to which this rule applies (CIDR notation with subnet mask).
59
+ """
60
+ src_port_high: NotRequired[pulumi.Input[int]]
61
+ """
62
+ The ending port of the source port range to which this rule applies (inclusive).
63
+ """
64
+ src_port_low: NotRequired[pulumi.Input[int]]
65
+ """
66
+ The starting port of the source port range to which this rule applies (inclusive).
67
+ """
68
+ elif False:
69
+ AclRuleArgsDict: TypeAlias = Mapping[str, Any]
70
+
71
+ @pulumi.input_type
72
+ class AclRuleArgs:
73
+ def __init__(__self__, *,
74
+ action: Optional[pulumi.Input[str]] = None,
75
+ description: Optional[pulumi.Input[str]] = None,
76
+ destination: Optional[pulumi.Input[str]] = None,
77
+ dst_port_high: Optional[pulumi.Input[int]] = None,
78
+ dst_port_low: Optional[pulumi.Input[int]] = None,
79
+ protocol: Optional[pulumi.Input[str]] = None,
80
+ source: Optional[pulumi.Input[str]] = None,
81
+ src_port_high: Optional[pulumi.Input[int]] = None,
82
+ src_port_low: Optional[pulumi.Input[int]] = None):
83
+ """
84
+ :param pulumi.Input[str] action: The policy to apply to the packet.
85
+ :param pulumi.Input[str] description: The rule description.
86
+ :param pulumi.Input[str] destination: The destination IP range to which this rule applies (CIDR notation with subnet mask).
87
+ :param pulumi.Input[int] dst_port_high: The ending port of the destination port range to which this rule applies (inclusive).
88
+ :param pulumi.Input[int] dst_port_low: The starting port of the destination port range to which this rule applies (inclusive).
89
+ :param pulumi.Input[str] protocol: The protocol to which this rule applies. Default value: ANY.
90
+ :param pulumi.Input[str] source: The Source IP range to which this rule applies (CIDR notation with subnet mask).
91
+ :param pulumi.Input[int] src_port_high: The ending port of the source port range to which this rule applies (inclusive).
92
+ :param pulumi.Input[int] src_port_low: The starting port of the source port range to which this rule applies (inclusive).
93
+ """
94
+ if action is not None:
95
+ pulumi.set(__self__, "action", action)
96
+ if description is not None:
97
+ pulumi.set(__self__, "description", description)
98
+ if destination is not None:
99
+ pulumi.set(__self__, "destination", destination)
100
+ if dst_port_high is not None:
101
+ pulumi.set(__self__, "dst_port_high", dst_port_high)
102
+ if dst_port_low is not None:
103
+ pulumi.set(__self__, "dst_port_low", dst_port_low)
104
+ if protocol is not None:
105
+ pulumi.set(__self__, "protocol", protocol)
106
+ if source is not None:
107
+ pulumi.set(__self__, "source", source)
108
+ if src_port_high is not None:
109
+ pulumi.set(__self__, "src_port_high", src_port_high)
110
+ if src_port_low is not None:
111
+ pulumi.set(__self__, "src_port_low", src_port_low)
112
+
113
+ @property
114
+ @pulumi.getter
115
+ def action(self) -> Optional[pulumi.Input[str]]:
116
+ """
117
+ The policy to apply to the packet.
118
+ """
119
+ return pulumi.get(self, "action")
120
+
121
+ @action.setter
122
+ def action(self, value: Optional[pulumi.Input[str]]):
123
+ pulumi.set(self, "action", value)
124
+
125
+ @property
126
+ @pulumi.getter
127
+ def description(self) -> Optional[pulumi.Input[str]]:
128
+ """
129
+ The rule description.
130
+ """
131
+ return pulumi.get(self, "description")
132
+
133
+ @description.setter
134
+ def description(self, value: Optional[pulumi.Input[str]]):
135
+ pulumi.set(self, "description", value)
136
+
137
+ @property
138
+ @pulumi.getter
139
+ def destination(self) -> Optional[pulumi.Input[str]]:
140
+ """
141
+ The destination IP range to which this rule applies (CIDR notation with subnet mask).
142
+ """
143
+ return pulumi.get(self, "destination")
144
+
145
+ @destination.setter
146
+ def destination(self, value: Optional[pulumi.Input[str]]):
147
+ pulumi.set(self, "destination", value)
148
+
149
+ @property
150
+ @pulumi.getter(name="dstPortHigh")
151
+ def dst_port_high(self) -> Optional[pulumi.Input[int]]:
152
+ """
153
+ The ending port of the destination port range to which this rule applies (inclusive).
154
+ """
155
+ return pulumi.get(self, "dst_port_high")
156
+
157
+ @dst_port_high.setter
158
+ def dst_port_high(self, value: Optional[pulumi.Input[int]]):
159
+ pulumi.set(self, "dst_port_high", value)
160
+
161
+ @property
162
+ @pulumi.getter(name="dstPortLow")
163
+ def dst_port_low(self) -> Optional[pulumi.Input[int]]:
164
+ """
165
+ The starting port of the destination port range to which this rule applies (inclusive).
166
+ """
167
+ return pulumi.get(self, "dst_port_low")
168
+
169
+ @dst_port_low.setter
170
+ def dst_port_low(self, value: Optional[pulumi.Input[int]]):
171
+ pulumi.set(self, "dst_port_low", value)
172
+
173
+ @property
174
+ @pulumi.getter
175
+ def protocol(self) -> Optional[pulumi.Input[str]]:
176
+ """
177
+ The protocol to which this rule applies. Default value: ANY.
178
+ """
179
+ return pulumi.get(self, "protocol")
180
+
181
+ @protocol.setter
182
+ def protocol(self, value: Optional[pulumi.Input[str]]):
183
+ pulumi.set(self, "protocol", value)
184
+
185
+ @property
186
+ @pulumi.getter
187
+ def source(self) -> Optional[pulumi.Input[str]]:
188
+ """
189
+ The Source IP range to which this rule applies (CIDR notation with subnet mask).
190
+ """
191
+ return pulumi.get(self, "source")
192
+
193
+ @source.setter
194
+ def source(self, value: Optional[pulumi.Input[str]]):
195
+ pulumi.set(self, "source", value)
196
+
197
+ @property
198
+ @pulumi.getter(name="srcPortHigh")
199
+ def src_port_high(self) -> Optional[pulumi.Input[int]]:
200
+ """
201
+ The ending port of the source port range to which this rule applies (inclusive).
202
+ """
203
+ return pulumi.get(self, "src_port_high")
204
+
205
+ @src_port_high.setter
206
+ def src_port_high(self, value: Optional[pulumi.Input[int]]):
207
+ pulumi.set(self, "src_port_high", value)
208
+
209
+ @property
210
+ @pulumi.getter(name="srcPortLow")
211
+ def src_port_low(self) -> Optional[pulumi.Input[int]]:
212
+ """
213
+ The starting port of the source port range to which this rule applies (inclusive).
214
+ """
215
+ return pulumi.get(self, "src_port_low")
216
+
217
+ @src_port_low.setter
218
+ def src_port_low(self, value: Optional[pulumi.Input[int]]):
219
+ pulumi.set(self, "src_port_low", value)
220
+
221
+
28
222
  if not MYPY:
29
223
  class GatewayNetworkIpamConfigArgsDict(TypedDict):
30
224
  ipam_ip_id: NotRequired[pulumi.Input[str]]
@@ -0,0 +1,415 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
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
15
+ from .. import _utilities
16
+ from . import outputs
17
+ from ._inputs import *
18
+
19
+ __all__ = ['AclArgs', 'Acl']
20
+
21
+ @pulumi.input_type
22
+ class AclArgs:
23
+ def __init__(__self__, *,
24
+ default_policy: pulumi.Input[str],
25
+ rules: pulumi.Input[Sequence[pulumi.Input['AclRuleArgs']]],
26
+ vpc_id: pulumi.Input[str],
27
+ is_ipv6: Optional[pulumi.Input[bool]] = None,
28
+ region: Optional[pulumi.Input[str]] = None):
29
+ """
30
+ The set of arguments for constructing a Acl resource.
31
+ :param pulumi.Input[str] default_policy: The action to take for packets which do not match any rules.
32
+ :param pulumi.Input[Sequence[pulumi.Input['AclRuleArgs']]] rules: The list of Network ACL rules.
33
+ :param pulumi.Input[str] vpc_id: The VPC ID the ACL belongs to.
34
+ :param pulumi.Input[bool] is_ipv6: Defines whether this set of ACL rules is for IPv6 (false = IPv4). Each Network ACL can have rules for only one IP type.
35
+ :param pulumi.Input[str] region: `region`) The region of the ACL.
36
+ """
37
+ pulumi.set(__self__, "default_policy", default_policy)
38
+ pulumi.set(__self__, "rules", rules)
39
+ pulumi.set(__self__, "vpc_id", vpc_id)
40
+ if is_ipv6 is not None:
41
+ pulumi.set(__self__, "is_ipv6", is_ipv6)
42
+ if region is not None:
43
+ pulumi.set(__self__, "region", region)
44
+
45
+ @property
46
+ @pulumi.getter(name="defaultPolicy")
47
+ def default_policy(self) -> pulumi.Input[str]:
48
+ """
49
+ The action to take for packets which do not match any rules.
50
+ """
51
+ return pulumi.get(self, "default_policy")
52
+
53
+ @default_policy.setter
54
+ def default_policy(self, value: pulumi.Input[str]):
55
+ pulumi.set(self, "default_policy", value)
56
+
57
+ @property
58
+ @pulumi.getter
59
+ def rules(self) -> pulumi.Input[Sequence[pulumi.Input['AclRuleArgs']]]:
60
+ """
61
+ The list of Network ACL rules.
62
+ """
63
+ return pulumi.get(self, "rules")
64
+
65
+ @rules.setter
66
+ def rules(self, value: pulumi.Input[Sequence[pulumi.Input['AclRuleArgs']]]):
67
+ pulumi.set(self, "rules", value)
68
+
69
+ @property
70
+ @pulumi.getter(name="vpcId")
71
+ def vpc_id(self) -> pulumi.Input[str]:
72
+ """
73
+ The VPC ID the ACL belongs to.
74
+ """
75
+ return pulumi.get(self, "vpc_id")
76
+
77
+ @vpc_id.setter
78
+ def vpc_id(self, value: pulumi.Input[str]):
79
+ pulumi.set(self, "vpc_id", value)
80
+
81
+ @property
82
+ @pulumi.getter(name="isIpv6")
83
+ def is_ipv6(self) -> Optional[pulumi.Input[bool]]:
84
+ """
85
+ Defines whether this set of ACL rules is for IPv6 (false = IPv4). Each Network ACL can have rules for only one IP type.
86
+ """
87
+ return pulumi.get(self, "is_ipv6")
88
+
89
+ @is_ipv6.setter
90
+ def is_ipv6(self, value: Optional[pulumi.Input[bool]]):
91
+ pulumi.set(self, "is_ipv6", value)
92
+
93
+ @property
94
+ @pulumi.getter
95
+ def region(self) -> Optional[pulumi.Input[str]]:
96
+ """
97
+ `region`) The region of the ACL.
98
+ """
99
+ return pulumi.get(self, "region")
100
+
101
+ @region.setter
102
+ def region(self, value: Optional[pulumi.Input[str]]):
103
+ pulumi.set(self, "region", value)
104
+
105
+
106
+ @pulumi.input_type
107
+ class _AclState:
108
+ def __init__(__self__, *,
109
+ default_policy: Optional[pulumi.Input[str]] = None,
110
+ is_ipv6: Optional[pulumi.Input[bool]] = None,
111
+ region: Optional[pulumi.Input[str]] = None,
112
+ rules: Optional[pulumi.Input[Sequence[pulumi.Input['AclRuleArgs']]]] = None,
113
+ vpc_id: Optional[pulumi.Input[str]] = None):
114
+ """
115
+ Input properties used for looking up and filtering Acl resources.
116
+ :param pulumi.Input[str] default_policy: The action to take for packets which do not match any rules.
117
+ :param pulumi.Input[bool] is_ipv6: Defines whether this set of ACL rules is for IPv6 (false = IPv4). Each Network ACL can have rules for only one IP type.
118
+ :param pulumi.Input[str] region: `region`) The region of the ACL.
119
+ :param pulumi.Input[Sequence[pulumi.Input['AclRuleArgs']]] rules: The list of Network ACL rules.
120
+ :param pulumi.Input[str] vpc_id: The VPC ID the ACL belongs to.
121
+ """
122
+ if default_policy is not None:
123
+ pulumi.set(__self__, "default_policy", default_policy)
124
+ if is_ipv6 is not None:
125
+ pulumi.set(__self__, "is_ipv6", is_ipv6)
126
+ if region is not None:
127
+ pulumi.set(__self__, "region", region)
128
+ if rules is not None:
129
+ pulumi.set(__self__, "rules", rules)
130
+ if vpc_id is not None:
131
+ pulumi.set(__self__, "vpc_id", vpc_id)
132
+
133
+ @property
134
+ @pulumi.getter(name="defaultPolicy")
135
+ def default_policy(self) -> Optional[pulumi.Input[str]]:
136
+ """
137
+ The action to take for packets which do not match any rules.
138
+ """
139
+ return pulumi.get(self, "default_policy")
140
+
141
+ @default_policy.setter
142
+ def default_policy(self, value: Optional[pulumi.Input[str]]):
143
+ pulumi.set(self, "default_policy", value)
144
+
145
+ @property
146
+ @pulumi.getter(name="isIpv6")
147
+ def is_ipv6(self) -> Optional[pulumi.Input[bool]]:
148
+ """
149
+ Defines whether this set of ACL rules is for IPv6 (false = IPv4). Each Network ACL can have rules for only one IP type.
150
+ """
151
+ return pulumi.get(self, "is_ipv6")
152
+
153
+ @is_ipv6.setter
154
+ def is_ipv6(self, value: Optional[pulumi.Input[bool]]):
155
+ pulumi.set(self, "is_ipv6", value)
156
+
157
+ @property
158
+ @pulumi.getter
159
+ def region(self) -> Optional[pulumi.Input[str]]:
160
+ """
161
+ `region`) The region of the ACL.
162
+ """
163
+ return pulumi.get(self, "region")
164
+
165
+ @region.setter
166
+ def region(self, value: Optional[pulumi.Input[str]]):
167
+ pulumi.set(self, "region", value)
168
+
169
+ @property
170
+ @pulumi.getter
171
+ def rules(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['AclRuleArgs']]]]:
172
+ """
173
+ The list of Network ACL rules.
174
+ """
175
+ return pulumi.get(self, "rules")
176
+
177
+ @rules.setter
178
+ def rules(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['AclRuleArgs']]]]):
179
+ pulumi.set(self, "rules", value)
180
+
181
+ @property
182
+ @pulumi.getter(name="vpcId")
183
+ def vpc_id(self) -> Optional[pulumi.Input[str]]:
184
+ """
185
+ The VPC ID the ACL belongs to.
186
+ """
187
+ return pulumi.get(self, "vpc_id")
188
+
189
+ @vpc_id.setter
190
+ def vpc_id(self, value: Optional[pulumi.Input[str]]):
191
+ pulumi.set(self, "vpc_id", value)
192
+
193
+
194
+ class Acl(pulumi.CustomResource):
195
+ @overload
196
+ def __init__(__self__,
197
+ resource_name: str,
198
+ opts: Optional[pulumi.ResourceOptions] = None,
199
+ default_policy: Optional[pulumi.Input[str]] = None,
200
+ is_ipv6: Optional[pulumi.Input[bool]] = None,
201
+ region: Optional[pulumi.Input[str]] = None,
202
+ rules: Optional[pulumi.Input[Sequence[pulumi.Input[Union['AclRuleArgs', 'AclRuleArgsDict']]]]] = None,
203
+ vpc_id: Optional[pulumi.Input[str]] = None,
204
+ __props__=None):
205
+ """
206
+ Creates and manages Scaleway VPC ACLs.
207
+
208
+ ## Example Usage
209
+
210
+ ### Basic
211
+
212
+ ```python
213
+ import pulumi
214
+ import pulumiverse_scaleway as scaleway
215
+
216
+ vpc01 = scaleway.network.Vpc("vpc01", name="tf-vpc-acl")
217
+ acl01 = scaleway.network.Acl("acl01",
218
+ vpc_id=vpc01.id,
219
+ is_ipv6=False,
220
+ rules=[{
221
+ "protocol": "TCP",
222
+ "src_port_low": 0,
223
+ "src_port_high": 0,
224
+ "dst_port_low": 80,
225
+ "dst_port_high": 80,
226
+ "source": "0.0.0.0/0",
227
+ "destination": "0.0.0.0/0",
228
+ "description": "Allow HTTP traffic from any source",
229
+ "action": "accept",
230
+ }],
231
+ default_policy="drop")
232
+ ```
233
+
234
+ ## Import
235
+
236
+ ACLs can be imported using `{region}/{id}`, e.g.
237
+
238
+ bash
239
+
240
+ ```sh
241
+ $ pulumi import scaleway:network/acl:Acl main fr-par/11111111-1111-1111-1111-111111111111
242
+ ```
243
+
244
+ :param str resource_name: The name of the resource.
245
+ :param pulumi.ResourceOptions opts: Options for the resource.
246
+ :param pulumi.Input[str] default_policy: The action to take for packets which do not match any rules.
247
+ :param pulumi.Input[bool] is_ipv6: Defines whether this set of ACL rules is for IPv6 (false = IPv4). Each Network ACL can have rules for only one IP type.
248
+ :param pulumi.Input[str] region: `region`) The region of the ACL.
249
+ :param pulumi.Input[Sequence[pulumi.Input[Union['AclRuleArgs', 'AclRuleArgsDict']]]] rules: The list of Network ACL rules.
250
+ :param pulumi.Input[str] vpc_id: The VPC ID the ACL belongs to.
251
+ """
252
+ ...
253
+ @overload
254
+ def __init__(__self__,
255
+ resource_name: str,
256
+ args: AclArgs,
257
+ opts: Optional[pulumi.ResourceOptions] = None):
258
+ """
259
+ Creates and manages Scaleway VPC ACLs.
260
+
261
+ ## Example Usage
262
+
263
+ ### Basic
264
+
265
+ ```python
266
+ import pulumi
267
+ import pulumiverse_scaleway as scaleway
268
+
269
+ vpc01 = scaleway.network.Vpc("vpc01", name="tf-vpc-acl")
270
+ acl01 = scaleway.network.Acl("acl01",
271
+ vpc_id=vpc01.id,
272
+ is_ipv6=False,
273
+ rules=[{
274
+ "protocol": "TCP",
275
+ "src_port_low": 0,
276
+ "src_port_high": 0,
277
+ "dst_port_low": 80,
278
+ "dst_port_high": 80,
279
+ "source": "0.0.0.0/0",
280
+ "destination": "0.0.0.0/0",
281
+ "description": "Allow HTTP traffic from any source",
282
+ "action": "accept",
283
+ }],
284
+ default_policy="drop")
285
+ ```
286
+
287
+ ## Import
288
+
289
+ ACLs can be imported using `{region}/{id}`, e.g.
290
+
291
+ bash
292
+
293
+ ```sh
294
+ $ pulumi import scaleway:network/acl:Acl main fr-par/11111111-1111-1111-1111-111111111111
295
+ ```
296
+
297
+ :param str resource_name: The name of the resource.
298
+ :param AclArgs args: The arguments to use to populate this resource's properties.
299
+ :param pulumi.ResourceOptions opts: Options for the resource.
300
+ """
301
+ ...
302
+ def __init__(__self__, resource_name: str, *args, **kwargs):
303
+ resource_args, opts = _utilities.get_resource_args_opts(AclArgs, pulumi.ResourceOptions, *args, **kwargs)
304
+ if resource_args is not None:
305
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
306
+ else:
307
+ __self__._internal_init(resource_name, *args, **kwargs)
308
+
309
+ def _internal_init(__self__,
310
+ resource_name: str,
311
+ opts: Optional[pulumi.ResourceOptions] = None,
312
+ default_policy: Optional[pulumi.Input[str]] = None,
313
+ is_ipv6: Optional[pulumi.Input[bool]] = None,
314
+ region: Optional[pulumi.Input[str]] = None,
315
+ rules: Optional[pulumi.Input[Sequence[pulumi.Input[Union['AclRuleArgs', 'AclRuleArgsDict']]]]] = None,
316
+ vpc_id: Optional[pulumi.Input[str]] = None,
317
+ __props__=None):
318
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
319
+ if not isinstance(opts, pulumi.ResourceOptions):
320
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
321
+ if opts.id is None:
322
+ if __props__ is not None:
323
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
324
+ __props__ = AclArgs.__new__(AclArgs)
325
+
326
+ if default_policy is None and not opts.urn:
327
+ raise TypeError("Missing required property 'default_policy'")
328
+ __props__.__dict__["default_policy"] = default_policy
329
+ __props__.__dict__["is_ipv6"] = is_ipv6
330
+ __props__.__dict__["region"] = region
331
+ if rules is None and not opts.urn:
332
+ raise TypeError("Missing required property 'rules'")
333
+ __props__.__dict__["rules"] = rules
334
+ if vpc_id is None and not opts.urn:
335
+ raise TypeError("Missing required property 'vpc_id'")
336
+ __props__.__dict__["vpc_id"] = vpc_id
337
+ super(Acl, __self__).__init__(
338
+ 'scaleway:network/acl:Acl',
339
+ resource_name,
340
+ __props__,
341
+ opts)
342
+
343
+ @staticmethod
344
+ def get(resource_name: str,
345
+ id: pulumi.Input[str],
346
+ opts: Optional[pulumi.ResourceOptions] = None,
347
+ default_policy: Optional[pulumi.Input[str]] = None,
348
+ is_ipv6: Optional[pulumi.Input[bool]] = None,
349
+ region: Optional[pulumi.Input[str]] = None,
350
+ rules: Optional[pulumi.Input[Sequence[pulumi.Input[Union['AclRuleArgs', 'AclRuleArgsDict']]]]] = None,
351
+ vpc_id: Optional[pulumi.Input[str]] = None) -> 'Acl':
352
+ """
353
+ Get an existing Acl resource's state with the given name, id, and optional extra
354
+ properties used to qualify the lookup.
355
+
356
+ :param str resource_name: The unique name of the resulting resource.
357
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
358
+ :param pulumi.ResourceOptions opts: Options for the resource.
359
+ :param pulumi.Input[str] default_policy: The action to take for packets which do not match any rules.
360
+ :param pulumi.Input[bool] is_ipv6: Defines whether this set of ACL rules is for IPv6 (false = IPv4). Each Network ACL can have rules for only one IP type.
361
+ :param pulumi.Input[str] region: `region`) The region of the ACL.
362
+ :param pulumi.Input[Sequence[pulumi.Input[Union['AclRuleArgs', 'AclRuleArgsDict']]]] rules: The list of Network ACL rules.
363
+ :param pulumi.Input[str] vpc_id: The VPC ID the ACL belongs to.
364
+ """
365
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
366
+
367
+ __props__ = _AclState.__new__(_AclState)
368
+
369
+ __props__.__dict__["default_policy"] = default_policy
370
+ __props__.__dict__["is_ipv6"] = is_ipv6
371
+ __props__.__dict__["region"] = region
372
+ __props__.__dict__["rules"] = rules
373
+ __props__.__dict__["vpc_id"] = vpc_id
374
+ return Acl(resource_name, opts=opts, __props__=__props__)
375
+
376
+ @property
377
+ @pulumi.getter(name="defaultPolicy")
378
+ def default_policy(self) -> pulumi.Output[str]:
379
+ """
380
+ The action to take for packets which do not match any rules.
381
+ """
382
+ return pulumi.get(self, "default_policy")
383
+
384
+ @property
385
+ @pulumi.getter(name="isIpv6")
386
+ def is_ipv6(self) -> pulumi.Output[Optional[bool]]:
387
+ """
388
+ Defines whether this set of ACL rules is for IPv6 (false = IPv4). Each Network ACL can have rules for only one IP type.
389
+ """
390
+ return pulumi.get(self, "is_ipv6")
391
+
392
+ @property
393
+ @pulumi.getter
394
+ def region(self) -> pulumi.Output[str]:
395
+ """
396
+ `region`) The region of the ACL.
397
+ """
398
+ return pulumi.get(self, "region")
399
+
400
+ @property
401
+ @pulumi.getter
402
+ def rules(self) -> pulumi.Output[Sequence['outputs.AclRule']]:
403
+ """
404
+ The list of Network ACL rules.
405
+ """
406
+ return pulumi.get(self, "rules")
407
+
408
+ @property
409
+ @pulumi.getter(name="vpcId")
410
+ def vpc_id(self) -> pulumi.Output[str]:
411
+ """
412
+ The VPC ID the ACL belongs to.
413
+ """
414
+ return pulumi.get(self, "vpc_id")
415
+