pulumi-sdwan 0.3.0a1743057086__py3-none-any.whl → 0.4.0a1743489278__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.

Potentially problematic release.


This version of pulumi-sdwan might be problematic. Click here for more details.

Files changed (69) hide show
  1. pulumi_sdwan/__init__.py +20 -0
  2. pulumi_sdwan/_inputs.py +890 -649
  3. pulumi_sdwan/cli_config_feature.py +6 -2
  4. pulumi_sdwan/configuration_group.py +35 -39
  5. pulumi_sdwan/dns_security_policy.py +701 -0
  6. pulumi_sdwan/get_configuration_group.py +11 -11
  7. pulumi_sdwan/get_dns_security_policy.py +272 -0
  8. pulumi_sdwan/get_intrusion_prevention_policy_definition.py +27 -1
  9. pulumi_sdwan/get_security_policy.py +99 -1
  10. pulumi_sdwan/get_service_lan_vpn_feature_associate_multicast_feature.py +18 -4
  11. pulumi_sdwan/get_service_lan_vpn_feature_associate_routing_bgp_feature.py +18 -4
  12. pulumi_sdwan/get_service_lan_vpn_feature_associate_routing_eigrp_feature.py +18 -4
  13. pulumi_sdwan/get_service_lan_vpn_feature_associate_routing_ospf_feature.py +18 -4
  14. pulumi_sdwan/get_service_lan_vpn_feature_associate_routing_ospfv3_ipv4_feature.py +18 -4
  15. pulumi_sdwan/get_service_lan_vpn_feature_associate_routing_ospfv3_ipv6_feature.py +18 -4
  16. pulumi_sdwan/get_service_lan_vpn_interface_ethernet_feature_associate_dhcp_server_feature.py +18 -4
  17. pulumi_sdwan/get_service_lan_vpn_interface_ethernet_feature_associate_tracker_feature.py +18 -4
  18. pulumi_sdwan/get_service_lan_vpn_interface_ethernet_feature_associate_tracker_group_feature.py +18 -4
  19. pulumi_sdwan/get_service_lan_vpn_interface_ipsec_feature_associate_dhcp_server_feature.py +18 -4
  20. pulumi_sdwan/get_service_lan_vpn_interface_svi_feature_associate_dhcp_server_feature.py +18 -4
  21. pulumi_sdwan/get_tag.py +140 -0
  22. pulumi_sdwan/get_transport_wan_vpn_feature_associate_routing_bgp_feature.py +18 -4
  23. pulumi_sdwan/get_transport_wan_vpn_feature_associate_routing_ospf_feature.py +18 -4
  24. pulumi_sdwan/get_transport_wan_vpn_feature_associate_routing_ospfv3_ipv4_feature.py +18 -4
  25. pulumi_sdwan/get_transport_wan_vpn_feature_associate_routing_ospfv3_ipv6_feature.py +18 -4
  26. pulumi_sdwan/get_transport_wan_vpn_interface_cellular_feature_associate_tracker_feature.py +18 -4
  27. pulumi_sdwan/get_transport_wan_vpn_interface_cellular_feature_associate_tracker_group_feature.py +18 -4
  28. pulumi_sdwan/get_transport_wan_vpn_interface_ethernet_feature_associate_ipv6_tracker_feature.py +18 -4
  29. pulumi_sdwan/get_transport_wan_vpn_interface_ethernet_feature_associate_ipv6_tracker_group_feature.py +18 -4
  30. pulumi_sdwan/get_transport_wan_vpn_interface_ethernet_feature_associate_tracker_feature.py +18 -4
  31. pulumi_sdwan/get_transport_wan_vpn_interface_ethernet_feature_associate_tracker_group_feature.py +18 -4
  32. pulumi_sdwan/get_transport_wan_vpn_interface_gre_feature_associate_tracker_feature.py +18 -4
  33. pulumi_sdwan/get_transport_wan_vpn_interface_ipsec_feature_associate_tracker_feature.py +18 -4
  34. pulumi_sdwan/get_url_filtering_policy_definition.py +13 -1
  35. pulumi_sdwan/intrusion_prevention_policy_definition.py +83 -32
  36. pulumi_sdwan/outputs.py +806 -449
  37. pulumi_sdwan/pulumi-plugin.json +1 -1
  38. pulumi_sdwan/security_policy.py +329 -0
  39. pulumi_sdwan/service_lan_vpn_feature_associate_multicast_feature.py +36 -4
  40. pulumi_sdwan/service_lan_vpn_feature_associate_routing_bgp_feature.py +36 -4
  41. pulumi_sdwan/service_lan_vpn_feature_associate_routing_eigrp_feature.py +36 -4
  42. pulumi_sdwan/service_lan_vpn_feature_associate_routing_ospf_feature.py +36 -4
  43. pulumi_sdwan/service_lan_vpn_feature_associate_routing_ospfv3_ipv4_feature.py +36 -4
  44. pulumi_sdwan/service_lan_vpn_feature_associate_routing_ospfv3_ipv6_feature.py +36 -4
  45. pulumi_sdwan/service_lan_vpn_interface_ethernet_feature_associate_dhcp_server_feature.py +36 -4
  46. pulumi_sdwan/service_lan_vpn_interface_ethernet_feature_associate_tracker_feature.py +36 -4
  47. pulumi_sdwan/service_lan_vpn_interface_ethernet_feature_associate_tracker_group_feature.py +36 -4
  48. pulumi_sdwan/service_lan_vpn_interface_ipsec_feature_associate_dhcp_server_feature.py +36 -4
  49. pulumi_sdwan/service_lan_vpn_interface_svi_feature_associate_dhcp_server_feature.py +36 -4
  50. pulumi_sdwan/tag.py +283 -0
  51. pulumi_sdwan/transport_cellular_profile_feature.py +29 -31
  52. pulumi_sdwan/transport_wan_vpn_feature_associate_routing_bgp_feature.py +36 -4
  53. pulumi_sdwan/transport_wan_vpn_feature_associate_routing_ospf_feature.py +36 -4
  54. pulumi_sdwan/transport_wan_vpn_feature_associate_routing_ospfv3_ipv4_feature.py +36 -4
  55. pulumi_sdwan/transport_wan_vpn_feature_associate_routing_ospfv3_ipv6_feature.py +36 -4
  56. pulumi_sdwan/transport_wan_vpn_interface_cellular_feature_associate_tracker_feature.py +36 -4
  57. pulumi_sdwan/transport_wan_vpn_interface_cellular_feature_associate_tracker_group_feature.py +36 -4
  58. pulumi_sdwan/transport_wan_vpn_interface_ethernet_feature_associate_ipv6_tracker_feature.py +36 -4
  59. pulumi_sdwan/transport_wan_vpn_interface_ethernet_feature_associate_ipv6_tracker_group_feature.py +36 -4
  60. pulumi_sdwan/transport_wan_vpn_interface_ethernet_feature_associate_tracker_feature.py +36 -4
  61. pulumi_sdwan/transport_wan_vpn_interface_ethernet_feature_associate_tracker_group_feature.py +36 -4
  62. pulumi_sdwan/transport_wan_vpn_interface_gre_feature_associate_tracker_feature.py +36 -4
  63. pulumi_sdwan/transport_wan_vpn_interface_ipsec_feature_associate_tracker_feature.py +36 -4
  64. pulumi_sdwan/url_filtering_policy_definition.py +36 -38
  65. pulumi_sdwan/zone_based_firewall_policy_definition.py +26 -14
  66. {pulumi_sdwan-0.3.0a1743057086.dist-info → pulumi_sdwan-0.4.0a1743489278.dist-info}/METADATA +1 -1
  67. {pulumi_sdwan-0.3.0a1743057086.dist-info → pulumi_sdwan-0.4.0a1743489278.dist-info}/RECORD +69 -65
  68. {pulumi_sdwan-0.3.0a1743057086.dist-info → pulumi_sdwan-0.4.0a1743489278.dist-info}/WHEEL +0 -0
  69. {pulumi_sdwan-0.3.0a1743057086.dist-info → pulumi_sdwan-0.4.0a1743489278.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,701 @@
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__ = ['DnsSecurityPolicyArgs', 'DnsSecurityPolicy']
20
+
21
+ @pulumi.input_type
22
+ class DnsSecurityPolicyArgs:
23
+ def __init__(__self__, *,
24
+ child_org_id: pulumi.Input[str],
25
+ dns_crypt: pulumi.Input[bool],
26
+ dns_server_ip: pulumi.Input[str],
27
+ feature_profile_id: pulumi.Input[str],
28
+ local_domain_bypass_enabled: pulumi.Input[bool],
29
+ local_domain_bypass_list_id: pulumi.Input[str],
30
+ match_all_vpn: pulumi.Input[bool],
31
+ umbrella_default: pulumi.Input[bool],
32
+ description: Optional[pulumi.Input[str]] = None,
33
+ name: Optional[pulumi.Input[str]] = None,
34
+ target_vpns: Optional[pulumi.Input[Sequence[pulumi.Input['DnsSecurityPolicyTargetVpnArgs']]]] = None):
35
+ """
36
+ The set of arguments for constructing a DnsSecurityPolicy resource.
37
+ :param pulumi.Input[str] child_org_id: String that is a number that corresponds to Umbrella Multi Org, can be empty if not using Umbrella Multi Org
38
+ :param pulumi.Input[bool] dns_crypt: If matchAllVpn is false, this field is only true if at least one of the targetVpns entires contains an umbrellaDefault true
39
+ :param pulumi.Input[str] dns_server_ip: Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry, Attribute conditional on `match_all_vpn` being equal to `true`
40
+ :param pulumi.Input[str] feature_profile_id: Feature Profile ID
41
+ :param pulumi.Input[bool] local_domain_bypass_enabled: Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry
42
+ :param pulumi.Input[bool] match_all_vpn: If this is true, there shouldn't be a targetVpns field, if false then targetVpns field should be there
43
+ :param pulumi.Input[bool] umbrella_default: Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry
44
+ :param pulumi.Input[str] description: The description of the Policy
45
+ :param pulumi.Input[str] name: The name of the Policy
46
+ :param pulumi.Input[Sequence[pulumi.Input['DnsSecurityPolicyTargetVpnArgs']]] target_vpns: Will be under data field only if matchAllVpn is false, if matchAllVpn is true field should not be in payload, Attribute conditional on `match_all_vpn` being equal to `false`
47
+ """
48
+ pulumi.set(__self__, "child_org_id", child_org_id)
49
+ pulumi.set(__self__, "dns_crypt", dns_crypt)
50
+ pulumi.set(__self__, "dns_server_ip", dns_server_ip)
51
+ pulumi.set(__self__, "feature_profile_id", feature_profile_id)
52
+ pulumi.set(__self__, "local_domain_bypass_enabled", local_domain_bypass_enabled)
53
+ pulumi.set(__self__, "local_domain_bypass_list_id", local_domain_bypass_list_id)
54
+ pulumi.set(__self__, "match_all_vpn", match_all_vpn)
55
+ pulumi.set(__self__, "umbrella_default", umbrella_default)
56
+ if description is not None:
57
+ pulumi.set(__self__, "description", description)
58
+ if name is not None:
59
+ pulumi.set(__self__, "name", name)
60
+ if target_vpns is not None:
61
+ pulumi.set(__self__, "target_vpns", target_vpns)
62
+
63
+ @property
64
+ @pulumi.getter(name="childOrgId")
65
+ def child_org_id(self) -> pulumi.Input[str]:
66
+ """
67
+ String that is a number that corresponds to Umbrella Multi Org, can be empty if not using Umbrella Multi Org
68
+ """
69
+ return pulumi.get(self, "child_org_id")
70
+
71
+ @child_org_id.setter
72
+ def child_org_id(self, value: pulumi.Input[str]):
73
+ pulumi.set(self, "child_org_id", value)
74
+
75
+ @property
76
+ @pulumi.getter(name="dnsCrypt")
77
+ def dns_crypt(self) -> pulumi.Input[bool]:
78
+ """
79
+ If matchAllVpn is false, this field is only true if at least one of the targetVpns entires contains an umbrellaDefault true
80
+ """
81
+ return pulumi.get(self, "dns_crypt")
82
+
83
+ @dns_crypt.setter
84
+ def dns_crypt(self, value: pulumi.Input[bool]):
85
+ pulumi.set(self, "dns_crypt", value)
86
+
87
+ @property
88
+ @pulumi.getter(name="dnsServerIp")
89
+ def dns_server_ip(self) -> pulumi.Input[str]:
90
+ """
91
+ Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry, Attribute conditional on `match_all_vpn` being equal to `true`
92
+ """
93
+ return pulumi.get(self, "dns_server_ip")
94
+
95
+ @dns_server_ip.setter
96
+ def dns_server_ip(self, value: pulumi.Input[str]):
97
+ pulumi.set(self, "dns_server_ip", value)
98
+
99
+ @property
100
+ @pulumi.getter(name="featureProfileId")
101
+ def feature_profile_id(self) -> pulumi.Input[str]:
102
+ """
103
+ Feature Profile ID
104
+ """
105
+ return pulumi.get(self, "feature_profile_id")
106
+
107
+ @feature_profile_id.setter
108
+ def feature_profile_id(self, value: pulumi.Input[str]):
109
+ pulumi.set(self, "feature_profile_id", value)
110
+
111
+ @property
112
+ @pulumi.getter(name="localDomainBypassEnabled")
113
+ def local_domain_bypass_enabled(self) -> pulumi.Input[bool]:
114
+ """
115
+ Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry
116
+ """
117
+ return pulumi.get(self, "local_domain_bypass_enabled")
118
+
119
+ @local_domain_bypass_enabled.setter
120
+ def local_domain_bypass_enabled(self, value: pulumi.Input[bool]):
121
+ pulumi.set(self, "local_domain_bypass_enabled", value)
122
+
123
+ @property
124
+ @pulumi.getter(name="localDomainBypassListId")
125
+ def local_domain_bypass_list_id(self) -> pulumi.Input[str]:
126
+ return pulumi.get(self, "local_domain_bypass_list_id")
127
+
128
+ @local_domain_bypass_list_id.setter
129
+ def local_domain_bypass_list_id(self, value: pulumi.Input[str]):
130
+ pulumi.set(self, "local_domain_bypass_list_id", value)
131
+
132
+ @property
133
+ @pulumi.getter(name="matchAllVpn")
134
+ def match_all_vpn(self) -> pulumi.Input[bool]:
135
+ """
136
+ If this is true, there shouldn't be a targetVpns field, if false then targetVpns field should be there
137
+ """
138
+ return pulumi.get(self, "match_all_vpn")
139
+
140
+ @match_all_vpn.setter
141
+ def match_all_vpn(self, value: pulumi.Input[bool]):
142
+ pulumi.set(self, "match_all_vpn", value)
143
+
144
+ @property
145
+ @pulumi.getter(name="umbrellaDefault")
146
+ def umbrella_default(self) -> pulumi.Input[bool]:
147
+ """
148
+ Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry
149
+ """
150
+ return pulumi.get(self, "umbrella_default")
151
+
152
+ @umbrella_default.setter
153
+ def umbrella_default(self, value: pulumi.Input[bool]):
154
+ pulumi.set(self, "umbrella_default", value)
155
+
156
+ @property
157
+ @pulumi.getter
158
+ def description(self) -> Optional[pulumi.Input[str]]:
159
+ """
160
+ The description of the Policy
161
+ """
162
+ return pulumi.get(self, "description")
163
+
164
+ @description.setter
165
+ def description(self, value: Optional[pulumi.Input[str]]):
166
+ pulumi.set(self, "description", value)
167
+
168
+ @property
169
+ @pulumi.getter
170
+ def name(self) -> Optional[pulumi.Input[str]]:
171
+ """
172
+ The name of the Policy
173
+ """
174
+ return pulumi.get(self, "name")
175
+
176
+ @name.setter
177
+ def name(self, value: Optional[pulumi.Input[str]]):
178
+ pulumi.set(self, "name", value)
179
+
180
+ @property
181
+ @pulumi.getter(name="targetVpns")
182
+ def target_vpns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DnsSecurityPolicyTargetVpnArgs']]]]:
183
+ """
184
+ Will be under data field only if matchAllVpn is false, if matchAllVpn is true field should not be in payload, Attribute conditional on `match_all_vpn` being equal to `false`
185
+ """
186
+ return pulumi.get(self, "target_vpns")
187
+
188
+ @target_vpns.setter
189
+ def target_vpns(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['DnsSecurityPolicyTargetVpnArgs']]]]):
190
+ pulumi.set(self, "target_vpns", value)
191
+
192
+
193
+ @pulumi.input_type
194
+ class _DnsSecurityPolicyState:
195
+ def __init__(__self__, *,
196
+ child_org_id: Optional[pulumi.Input[str]] = None,
197
+ description: Optional[pulumi.Input[str]] = None,
198
+ dns_crypt: Optional[pulumi.Input[bool]] = None,
199
+ dns_server_ip: Optional[pulumi.Input[str]] = None,
200
+ feature_profile_id: Optional[pulumi.Input[str]] = None,
201
+ local_domain_bypass_enabled: Optional[pulumi.Input[bool]] = None,
202
+ local_domain_bypass_list_id: Optional[pulumi.Input[str]] = None,
203
+ match_all_vpn: Optional[pulumi.Input[bool]] = None,
204
+ name: Optional[pulumi.Input[str]] = None,
205
+ target_vpns: Optional[pulumi.Input[Sequence[pulumi.Input['DnsSecurityPolicyTargetVpnArgs']]]] = None,
206
+ umbrella_default: Optional[pulumi.Input[bool]] = None,
207
+ version: Optional[pulumi.Input[int]] = None):
208
+ """
209
+ Input properties used for looking up and filtering DnsSecurityPolicy resources.
210
+ :param pulumi.Input[str] child_org_id: String that is a number that corresponds to Umbrella Multi Org, can be empty if not using Umbrella Multi Org
211
+ :param pulumi.Input[str] description: The description of the Policy
212
+ :param pulumi.Input[bool] dns_crypt: If matchAllVpn is false, this field is only true if at least one of the targetVpns entires contains an umbrellaDefault true
213
+ :param pulumi.Input[str] dns_server_ip: Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry, Attribute conditional on `match_all_vpn` being equal to `true`
214
+ :param pulumi.Input[str] feature_profile_id: Feature Profile ID
215
+ :param pulumi.Input[bool] local_domain_bypass_enabled: Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry
216
+ :param pulumi.Input[bool] match_all_vpn: If this is true, there shouldn't be a targetVpns field, if false then targetVpns field should be there
217
+ :param pulumi.Input[str] name: The name of the Policy
218
+ :param pulumi.Input[Sequence[pulumi.Input['DnsSecurityPolicyTargetVpnArgs']]] target_vpns: Will be under data field only if matchAllVpn is false, if matchAllVpn is true field should not be in payload, Attribute conditional on `match_all_vpn` being equal to `false`
219
+ :param pulumi.Input[bool] umbrella_default: Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry
220
+ :param pulumi.Input[int] version: The version of the Policy
221
+ """
222
+ if child_org_id is not None:
223
+ pulumi.set(__self__, "child_org_id", child_org_id)
224
+ if description is not None:
225
+ pulumi.set(__self__, "description", description)
226
+ if dns_crypt is not None:
227
+ pulumi.set(__self__, "dns_crypt", dns_crypt)
228
+ if dns_server_ip is not None:
229
+ pulumi.set(__self__, "dns_server_ip", dns_server_ip)
230
+ if feature_profile_id is not None:
231
+ pulumi.set(__self__, "feature_profile_id", feature_profile_id)
232
+ if local_domain_bypass_enabled is not None:
233
+ pulumi.set(__self__, "local_domain_bypass_enabled", local_domain_bypass_enabled)
234
+ if local_domain_bypass_list_id is not None:
235
+ pulumi.set(__self__, "local_domain_bypass_list_id", local_domain_bypass_list_id)
236
+ if match_all_vpn is not None:
237
+ pulumi.set(__self__, "match_all_vpn", match_all_vpn)
238
+ if name is not None:
239
+ pulumi.set(__self__, "name", name)
240
+ if target_vpns is not None:
241
+ pulumi.set(__self__, "target_vpns", target_vpns)
242
+ if umbrella_default is not None:
243
+ pulumi.set(__self__, "umbrella_default", umbrella_default)
244
+ if version is not None:
245
+ pulumi.set(__self__, "version", version)
246
+
247
+ @property
248
+ @pulumi.getter(name="childOrgId")
249
+ def child_org_id(self) -> Optional[pulumi.Input[str]]:
250
+ """
251
+ String that is a number that corresponds to Umbrella Multi Org, can be empty if not using Umbrella Multi Org
252
+ """
253
+ return pulumi.get(self, "child_org_id")
254
+
255
+ @child_org_id.setter
256
+ def child_org_id(self, value: Optional[pulumi.Input[str]]):
257
+ pulumi.set(self, "child_org_id", value)
258
+
259
+ @property
260
+ @pulumi.getter
261
+ def description(self) -> Optional[pulumi.Input[str]]:
262
+ """
263
+ The description of the Policy
264
+ """
265
+ return pulumi.get(self, "description")
266
+
267
+ @description.setter
268
+ def description(self, value: Optional[pulumi.Input[str]]):
269
+ pulumi.set(self, "description", value)
270
+
271
+ @property
272
+ @pulumi.getter(name="dnsCrypt")
273
+ def dns_crypt(self) -> Optional[pulumi.Input[bool]]:
274
+ """
275
+ If matchAllVpn is false, this field is only true if at least one of the targetVpns entires contains an umbrellaDefault true
276
+ """
277
+ return pulumi.get(self, "dns_crypt")
278
+
279
+ @dns_crypt.setter
280
+ def dns_crypt(self, value: Optional[pulumi.Input[bool]]):
281
+ pulumi.set(self, "dns_crypt", value)
282
+
283
+ @property
284
+ @pulumi.getter(name="dnsServerIp")
285
+ def dns_server_ip(self) -> Optional[pulumi.Input[str]]:
286
+ """
287
+ Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry, Attribute conditional on `match_all_vpn` being equal to `true`
288
+ """
289
+ return pulumi.get(self, "dns_server_ip")
290
+
291
+ @dns_server_ip.setter
292
+ def dns_server_ip(self, value: Optional[pulumi.Input[str]]):
293
+ pulumi.set(self, "dns_server_ip", value)
294
+
295
+ @property
296
+ @pulumi.getter(name="featureProfileId")
297
+ def feature_profile_id(self) -> Optional[pulumi.Input[str]]:
298
+ """
299
+ Feature Profile ID
300
+ """
301
+ return pulumi.get(self, "feature_profile_id")
302
+
303
+ @feature_profile_id.setter
304
+ def feature_profile_id(self, value: Optional[pulumi.Input[str]]):
305
+ pulumi.set(self, "feature_profile_id", value)
306
+
307
+ @property
308
+ @pulumi.getter(name="localDomainBypassEnabled")
309
+ def local_domain_bypass_enabled(self) -> Optional[pulumi.Input[bool]]:
310
+ """
311
+ Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry
312
+ """
313
+ return pulumi.get(self, "local_domain_bypass_enabled")
314
+
315
+ @local_domain_bypass_enabled.setter
316
+ def local_domain_bypass_enabled(self, value: Optional[pulumi.Input[bool]]):
317
+ pulumi.set(self, "local_domain_bypass_enabled", value)
318
+
319
+ @property
320
+ @pulumi.getter(name="localDomainBypassListId")
321
+ def local_domain_bypass_list_id(self) -> Optional[pulumi.Input[str]]:
322
+ return pulumi.get(self, "local_domain_bypass_list_id")
323
+
324
+ @local_domain_bypass_list_id.setter
325
+ def local_domain_bypass_list_id(self, value: Optional[pulumi.Input[str]]):
326
+ pulumi.set(self, "local_domain_bypass_list_id", value)
327
+
328
+ @property
329
+ @pulumi.getter(name="matchAllVpn")
330
+ def match_all_vpn(self) -> Optional[pulumi.Input[bool]]:
331
+ """
332
+ If this is true, there shouldn't be a targetVpns field, if false then targetVpns field should be there
333
+ """
334
+ return pulumi.get(self, "match_all_vpn")
335
+
336
+ @match_all_vpn.setter
337
+ def match_all_vpn(self, value: Optional[pulumi.Input[bool]]):
338
+ pulumi.set(self, "match_all_vpn", value)
339
+
340
+ @property
341
+ @pulumi.getter
342
+ def name(self) -> Optional[pulumi.Input[str]]:
343
+ """
344
+ The name of the Policy
345
+ """
346
+ return pulumi.get(self, "name")
347
+
348
+ @name.setter
349
+ def name(self, value: Optional[pulumi.Input[str]]):
350
+ pulumi.set(self, "name", value)
351
+
352
+ @property
353
+ @pulumi.getter(name="targetVpns")
354
+ def target_vpns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DnsSecurityPolicyTargetVpnArgs']]]]:
355
+ """
356
+ Will be under data field only if matchAllVpn is false, if matchAllVpn is true field should not be in payload, Attribute conditional on `match_all_vpn` being equal to `false`
357
+ """
358
+ return pulumi.get(self, "target_vpns")
359
+
360
+ @target_vpns.setter
361
+ def target_vpns(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['DnsSecurityPolicyTargetVpnArgs']]]]):
362
+ pulumi.set(self, "target_vpns", value)
363
+
364
+ @property
365
+ @pulumi.getter(name="umbrellaDefault")
366
+ def umbrella_default(self) -> Optional[pulumi.Input[bool]]:
367
+ """
368
+ Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry
369
+ """
370
+ return pulumi.get(self, "umbrella_default")
371
+
372
+ @umbrella_default.setter
373
+ def umbrella_default(self, value: Optional[pulumi.Input[bool]]):
374
+ pulumi.set(self, "umbrella_default", value)
375
+
376
+ @property
377
+ @pulumi.getter
378
+ def version(self) -> Optional[pulumi.Input[int]]:
379
+ """
380
+ The version of the Policy
381
+ """
382
+ return pulumi.get(self, "version")
383
+
384
+ @version.setter
385
+ def version(self, value: Optional[pulumi.Input[int]]):
386
+ pulumi.set(self, "version", value)
387
+
388
+
389
+ class DnsSecurityPolicy(pulumi.CustomResource):
390
+ @overload
391
+ def __init__(__self__,
392
+ resource_name: str,
393
+ opts: Optional[pulumi.ResourceOptions] = None,
394
+ child_org_id: Optional[pulumi.Input[str]] = None,
395
+ description: Optional[pulumi.Input[str]] = None,
396
+ dns_crypt: Optional[pulumi.Input[bool]] = None,
397
+ dns_server_ip: Optional[pulumi.Input[str]] = None,
398
+ feature_profile_id: Optional[pulumi.Input[str]] = None,
399
+ local_domain_bypass_enabled: Optional[pulumi.Input[bool]] = None,
400
+ local_domain_bypass_list_id: Optional[pulumi.Input[str]] = None,
401
+ match_all_vpn: Optional[pulumi.Input[bool]] = None,
402
+ name: Optional[pulumi.Input[str]] = None,
403
+ target_vpns: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DnsSecurityPolicyTargetVpnArgs', 'DnsSecurityPolicyTargetVpnArgsDict']]]]] = None,
404
+ umbrella_default: Optional[pulumi.Input[bool]] = None,
405
+ __props__=None):
406
+ """
407
+ This resource can manage a DNS Security Policy.
408
+ - Minimum SD-WAN Manager version: `20.12.0`
409
+
410
+ ## Example Usage
411
+
412
+ ```python
413
+ import pulumi
414
+ import pulumi_sdwan as sdwan
415
+
416
+ example = sdwan.DnsSecurityPolicy("example",
417
+ name="Example",
418
+ description="My Example",
419
+ feature_profile_id="f6dd22c8-0b4f-496c-9a0b-6813d1f8b8ac",
420
+ local_domain_bypass_list_id="0c4e096d-b06d-4052-93ed-70fe34fda6dc",
421
+ match_all_vpn=True,
422
+ umbrella_default=False,
423
+ dns_server_ip="1.2.3.4",
424
+ local_domain_bypass_enabled=True,
425
+ dns_crypt=False,
426
+ child_org_id="12334")
427
+ ```
428
+
429
+ ## Import
430
+
431
+ Expected import identifier with the format: "dns_security_policy_id,feature_profile_id"
432
+
433
+ ```sh
434
+ $ pulumi import sdwan:index/dnsSecurityPolicy:DnsSecurityPolicy example "f6b2c44c-693c-4763-b010-895aa3d236bd,f6dd22c8-0b4f-496c-9a0b-6813d1f8b8ac"
435
+ ```
436
+
437
+ :param str resource_name: The name of the resource.
438
+ :param pulumi.ResourceOptions opts: Options for the resource.
439
+ :param pulumi.Input[str] child_org_id: String that is a number that corresponds to Umbrella Multi Org, can be empty if not using Umbrella Multi Org
440
+ :param pulumi.Input[str] description: The description of the Policy
441
+ :param pulumi.Input[bool] dns_crypt: If matchAllVpn is false, this field is only true if at least one of the targetVpns entires contains an umbrellaDefault true
442
+ :param pulumi.Input[str] dns_server_ip: Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry, Attribute conditional on `match_all_vpn` being equal to `true`
443
+ :param pulumi.Input[str] feature_profile_id: Feature Profile ID
444
+ :param pulumi.Input[bool] local_domain_bypass_enabled: Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry
445
+ :param pulumi.Input[bool] match_all_vpn: If this is true, there shouldn't be a targetVpns field, if false then targetVpns field should be there
446
+ :param pulumi.Input[str] name: The name of the Policy
447
+ :param pulumi.Input[Sequence[pulumi.Input[Union['DnsSecurityPolicyTargetVpnArgs', 'DnsSecurityPolicyTargetVpnArgsDict']]]] target_vpns: Will be under data field only if matchAllVpn is false, if matchAllVpn is true field should not be in payload, Attribute conditional on `match_all_vpn` being equal to `false`
448
+ :param pulumi.Input[bool] umbrella_default: Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry
449
+ """
450
+ ...
451
+ @overload
452
+ def __init__(__self__,
453
+ resource_name: str,
454
+ args: DnsSecurityPolicyArgs,
455
+ opts: Optional[pulumi.ResourceOptions] = None):
456
+ """
457
+ This resource can manage a DNS Security Policy.
458
+ - Minimum SD-WAN Manager version: `20.12.0`
459
+
460
+ ## Example Usage
461
+
462
+ ```python
463
+ import pulumi
464
+ import pulumi_sdwan as sdwan
465
+
466
+ example = sdwan.DnsSecurityPolicy("example",
467
+ name="Example",
468
+ description="My Example",
469
+ feature_profile_id="f6dd22c8-0b4f-496c-9a0b-6813d1f8b8ac",
470
+ local_domain_bypass_list_id="0c4e096d-b06d-4052-93ed-70fe34fda6dc",
471
+ match_all_vpn=True,
472
+ umbrella_default=False,
473
+ dns_server_ip="1.2.3.4",
474
+ local_domain_bypass_enabled=True,
475
+ dns_crypt=False,
476
+ child_org_id="12334")
477
+ ```
478
+
479
+ ## Import
480
+
481
+ Expected import identifier with the format: "dns_security_policy_id,feature_profile_id"
482
+
483
+ ```sh
484
+ $ pulumi import sdwan:index/dnsSecurityPolicy:DnsSecurityPolicy example "f6b2c44c-693c-4763-b010-895aa3d236bd,f6dd22c8-0b4f-496c-9a0b-6813d1f8b8ac"
485
+ ```
486
+
487
+ :param str resource_name: The name of the resource.
488
+ :param DnsSecurityPolicyArgs args: The arguments to use to populate this resource's properties.
489
+ :param pulumi.ResourceOptions opts: Options for the resource.
490
+ """
491
+ ...
492
+ def __init__(__self__, resource_name: str, *args, **kwargs):
493
+ resource_args, opts = _utilities.get_resource_args_opts(DnsSecurityPolicyArgs, pulumi.ResourceOptions, *args, **kwargs)
494
+ if resource_args is not None:
495
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
496
+ else:
497
+ __self__._internal_init(resource_name, *args, **kwargs)
498
+
499
+ def _internal_init(__self__,
500
+ resource_name: str,
501
+ opts: Optional[pulumi.ResourceOptions] = None,
502
+ child_org_id: Optional[pulumi.Input[str]] = None,
503
+ description: Optional[pulumi.Input[str]] = None,
504
+ dns_crypt: Optional[pulumi.Input[bool]] = None,
505
+ dns_server_ip: Optional[pulumi.Input[str]] = None,
506
+ feature_profile_id: Optional[pulumi.Input[str]] = None,
507
+ local_domain_bypass_enabled: Optional[pulumi.Input[bool]] = None,
508
+ local_domain_bypass_list_id: Optional[pulumi.Input[str]] = None,
509
+ match_all_vpn: Optional[pulumi.Input[bool]] = None,
510
+ name: Optional[pulumi.Input[str]] = None,
511
+ target_vpns: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DnsSecurityPolicyTargetVpnArgs', 'DnsSecurityPolicyTargetVpnArgsDict']]]]] = None,
512
+ umbrella_default: Optional[pulumi.Input[bool]] = None,
513
+ __props__=None):
514
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
515
+ if not isinstance(opts, pulumi.ResourceOptions):
516
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
517
+ if opts.id is None:
518
+ if __props__ is not None:
519
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
520
+ __props__ = DnsSecurityPolicyArgs.__new__(DnsSecurityPolicyArgs)
521
+
522
+ if child_org_id is None and not opts.urn:
523
+ raise TypeError("Missing required property 'child_org_id'")
524
+ __props__.__dict__["child_org_id"] = child_org_id
525
+ __props__.__dict__["description"] = description
526
+ if dns_crypt is None and not opts.urn:
527
+ raise TypeError("Missing required property 'dns_crypt'")
528
+ __props__.__dict__["dns_crypt"] = dns_crypt
529
+ if dns_server_ip is None and not opts.urn:
530
+ raise TypeError("Missing required property 'dns_server_ip'")
531
+ __props__.__dict__["dns_server_ip"] = dns_server_ip
532
+ if feature_profile_id is None and not opts.urn:
533
+ raise TypeError("Missing required property 'feature_profile_id'")
534
+ __props__.__dict__["feature_profile_id"] = feature_profile_id
535
+ if local_domain_bypass_enabled is None and not opts.urn:
536
+ raise TypeError("Missing required property 'local_domain_bypass_enabled'")
537
+ __props__.__dict__["local_domain_bypass_enabled"] = local_domain_bypass_enabled
538
+ if local_domain_bypass_list_id is None and not opts.urn:
539
+ raise TypeError("Missing required property 'local_domain_bypass_list_id'")
540
+ __props__.__dict__["local_domain_bypass_list_id"] = local_domain_bypass_list_id
541
+ if match_all_vpn is None and not opts.urn:
542
+ raise TypeError("Missing required property 'match_all_vpn'")
543
+ __props__.__dict__["match_all_vpn"] = match_all_vpn
544
+ __props__.__dict__["name"] = name
545
+ __props__.__dict__["target_vpns"] = target_vpns
546
+ if umbrella_default is None and not opts.urn:
547
+ raise TypeError("Missing required property 'umbrella_default'")
548
+ __props__.__dict__["umbrella_default"] = umbrella_default
549
+ __props__.__dict__["version"] = None
550
+ super(DnsSecurityPolicy, __self__).__init__(
551
+ 'sdwan:index/dnsSecurityPolicy:DnsSecurityPolicy',
552
+ resource_name,
553
+ __props__,
554
+ opts)
555
+
556
+ @staticmethod
557
+ def get(resource_name: str,
558
+ id: pulumi.Input[str],
559
+ opts: Optional[pulumi.ResourceOptions] = None,
560
+ child_org_id: Optional[pulumi.Input[str]] = None,
561
+ description: Optional[pulumi.Input[str]] = None,
562
+ dns_crypt: Optional[pulumi.Input[bool]] = None,
563
+ dns_server_ip: Optional[pulumi.Input[str]] = None,
564
+ feature_profile_id: Optional[pulumi.Input[str]] = None,
565
+ local_domain_bypass_enabled: Optional[pulumi.Input[bool]] = None,
566
+ local_domain_bypass_list_id: Optional[pulumi.Input[str]] = None,
567
+ match_all_vpn: Optional[pulumi.Input[bool]] = None,
568
+ name: Optional[pulumi.Input[str]] = None,
569
+ target_vpns: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DnsSecurityPolicyTargetVpnArgs', 'DnsSecurityPolicyTargetVpnArgsDict']]]]] = None,
570
+ umbrella_default: Optional[pulumi.Input[bool]] = None,
571
+ version: Optional[pulumi.Input[int]] = None) -> 'DnsSecurityPolicy':
572
+ """
573
+ Get an existing DnsSecurityPolicy resource's state with the given name, id, and optional extra
574
+ properties used to qualify the lookup.
575
+
576
+ :param str resource_name: The unique name of the resulting resource.
577
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
578
+ :param pulumi.ResourceOptions opts: Options for the resource.
579
+ :param pulumi.Input[str] child_org_id: String that is a number that corresponds to Umbrella Multi Org, can be empty if not using Umbrella Multi Org
580
+ :param pulumi.Input[str] description: The description of the Policy
581
+ :param pulumi.Input[bool] dns_crypt: If matchAllVpn is false, this field is only true if at least one of the targetVpns entires contains an umbrellaDefault true
582
+ :param pulumi.Input[str] dns_server_ip: Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry, Attribute conditional on `match_all_vpn` being equal to `true`
583
+ :param pulumi.Input[str] feature_profile_id: Feature Profile ID
584
+ :param pulumi.Input[bool] local_domain_bypass_enabled: Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry
585
+ :param pulumi.Input[bool] match_all_vpn: If this is true, there shouldn't be a targetVpns field, if false then targetVpns field should be there
586
+ :param pulumi.Input[str] name: The name of the Policy
587
+ :param pulumi.Input[Sequence[pulumi.Input[Union['DnsSecurityPolicyTargetVpnArgs', 'DnsSecurityPolicyTargetVpnArgsDict']]]] target_vpns: Will be under data field only if matchAllVpn is false, if matchAllVpn is true field should not be in payload, Attribute conditional on `match_all_vpn` being equal to `false`
588
+ :param pulumi.Input[bool] umbrella_default: Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry
589
+ :param pulumi.Input[int] version: The version of the Policy
590
+ """
591
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
592
+
593
+ __props__ = _DnsSecurityPolicyState.__new__(_DnsSecurityPolicyState)
594
+
595
+ __props__.__dict__["child_org_id"] = child_org_id
596
+ __props__.__dict__["description"] = description
597
+ __props__.__dict__["dns_crypt"] = dns_crypt
598
+ __props__.__dict__["dns_server_ip"] = dns_server_ip
599
+ __props__.__dict__["feature_profile_id"] = feature_profile_id
600
+ __props__.__dict__["local_domain_bypass_enabled"] = local_domain_bypass_enabled
601
+ __props__.__dict__["local_domain_bypass_list_id"] = local_domain_bypass_list_id
602
+ __props__.__dict__["match_all_vpn"] = match_all_vpn
603
+ __props__.__dict__["name"] = name
604
+ __props__.__dict__["target_vpns"] = target_vpns
605
+ __props__.__dict__["umbrella_default"] = umbrella_default
606
+ __props__.__dict__["version"] = version
607
+ return DnsSecurityPolicy(resource_name, opts=opts, __props__=__props__)
608
+
609
+ @property
610
+ @pulumi.getter(name="childOrgId")
611
+ def child_org_id(self) -> pulumi.Output[str]:
612
+ """
613
+ String that is a number that corresponds to Umbrella Multi Org, can be empty if not using Umbrella Multi Org
614
+ """
615
+ return pulumi.get(self, "child_org_id")
616
+
617
+ @property
618
+ @pulumi.getter
619
+ def description(self) -> pulumi.Output[Optional[str]]:
620
+ """
621
+ The description of the Policy
622
+ """
623
+ return pulumi.get(self, "description")
624
+
625
+ @property
626
+ @pulumi.getter(name="dnsCrypt")
627
+ def dns_crypt(self) -> pulumi.Output[bool]:
628
+ """
629
+ If matchAllVpn is false, this field is only true if at least one of the targetVpns entires contains an umbrellaDefault true
630
+ """
631
+ return pulumi.get(self, "dns_crypt")
632
+
633
+ @property
634
+ @pulumi.getter(name="dnsServerIp")
635
+ def dns_server_ip(self) -> pulumi.Output[str]:
636
+ """
637
+ Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry, Attribute conditional on `match_all_vpn` being equal to `true`
638
+ """
639
+ return pulumi.get(self, "dns_server_ip")
640
+
641
+ @property
642
+ @pulumi.getter(name="featureProfileId")
643
+ def feature_profile_id(self) -> pulumi.Output[str]:
644
+ """
645
+ Feature Profile ID
646
+ """
647
+ return pulumi.get(self, "feature_profile_id")
648
+
649
+ @property
650
+ @pulumi.getter(name="localDomainBypassEnabled")
651
+ def local_domain_bypass_enabled(self) -> pulumi.Output[bool]:
652
+ """
653
+ Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry
654
+ """
655
+ return pulumi.get(self, "local_domain_bypass_enabled")
656
+
657
+ @property
658
+ @pulumi.getter(name="localDomainBypassListId")
659
+ def local_domain_bypass_list_id(self) -> pulumi.Output[str]:
660
+ return pulumi.get(self, "local_domain_bypass_list_id")
661
+
662
+ @property
663
+ @pulumi.getter(name="matchAllVpn")
664
+ def match_all_vpn(self) -> pulumi.Output[bool]:
665
+ """
666
+ If this is true, there shouldn't be a targetVpns field, if false then targetVpns field should be there
667
+ """
668
+ return pulumi.get(self, "match_all_vpn")
669
+
670
+ @property
671
+ @pulumi.getter
672
+ def name(self) -> pulumi.Output[str]:
673
+ """
674
+ The name of the Policy
675
+ """
676
+ return pulumi.get(self, "name")
677
+
678
+ @property
679
+ @pulumi.getter(name="targetVpns")
680
+ def target_vpns(self) -> pulumi.Output[Optional[Sequence['outputs.DnsSecurityPolicyTargetVpn']]]:
681
+ """
682
+ Will be under data field only if matchAllVpn is false, if matchAllVpn is true field should not be in payload, Attribute conditional on `match_all_vpn` being equal to `false`
683
+ """
684
+ return pulumi.get(self, "target_vpns")
685
+
686
+ @property
687
+ @pulumi.getter(name="umbrellaDefault")
688
+ def umbrella_default(self) -> pulumi.Output[bool]:
689
+ """
690
+ Field will only be under data field if matchAllVpn is true, otherwise field will be under targetVpns and set per entry
691
+ """
692
+ return pulumi.get(self, "umbrella_default")
693
+
694
+ @property
695
+ @pulumi.getter
696
+ def version(self) -> pulumi.Output[int]:
697
+ """
698
+ The version of the Policy
699
+ """
700
+ return pulumi.get(self, "version")
701
+