pulumiverse-scaleway 1.16.0__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 pulumiverse-scaleway might be problematic. Click here for more details.

Files changed (205) hide show
  1. pulumiverse_scaleway/__init__.py +1073 -0
  2. pulumiverse_scaleway/_inputs.py +8665 -0
  3. pulumiverse_scaleway/_utilities.py +327 -0
  4. pulumiverse_scaleway/account_project.py +316 -0
  5. pulumiverse_scaleway/account_ssh_key.py +450 -0
  6. pulumiverse_scaleway/apple_silicon_server.py +564 -0
  7. pulumiverse_scaleway/baremetal_server.py +1390 -0
  8. pulumiverse_scaleway/block_snapshot.py +391 -0
  9. pulumiverse_scaleway/block_volume.py +521 -0
  10. pulumiverse_scaleway/cockpit.py +299 -0
  11. pulumiverse_scaleway/cockpit_alert_manager.py +345 -0
  12. pulumiverse_scaleway/cockpit_grafana_user.py +326 -0
  13. pulumiverse_scaleway/cockpit_source.py +481 -0
  14. pulumiverse_scaleway/cockpit_token.py +461 -0
  15. pulumiverse_scaleway/config/__init__.py +8 -0
  16. pulumiverse_scaleway/config/__init__.pyi +56 -0
  17. pulumiverse_scaleway/config/vars.py +78 -0
  18. pulumiverse_scaleway/container.py +1387 -0
  19. pulumiverse_scaleway/container_cron.py +493 -0
  20. pulumiverse_scaleway/container_domain.py +400 -0
  21. pulumiverse_scaleway/container_namespace.py +589 -0
  22. pulumiverse_scaleway/container_token.py +454 -0
  23. pulumiverse_scaleway/container_trigger.py +478 -0
  24. pulumiverse_scaleway/database.py +407 -0
  25. pulumiverse_scaleway/database_acl.py +332 -0
  26. pulumiverse_scaleway/database_backup.py +574 -0
  27. pulumiverse_scaleway/database_instance.py +1636 -0
  28. pulumiverse_scaleway/database_privilege.py +422 -0
  29. pulumiverse_scaleway/database_read_replica.py +528 -0
  30. pulumiverse_scaleway/database_user.py +446 -0
  31. pulumiverse_scaleway/documentdb_database.py +450 -0
  32. pulumiverse_scaleway/documentdb_instance.py +812 -0
  33. pulumiverse_scaleway/documentdb_private_network_endpoint.py +352 -0
  34. pulumiverse_scaleway/documentdb_privilege.py +402 -0
  35. pulumiverse_scaleway/documentdb_read_replica.py +405 -0
  36. pulumiverse_scaleway/documentdb_user.py +442 -0
  37. pulumiverse_scaleway/domain_record.py +1074 -0
  38. pulumiverse_scaleway/domain_zone.py +458 -0
  39. pulumiverse_scaleway/flexible_ip.py +702 -0
  40. pulumiverse_scaleway/flexible_ip_mac_address.py +510 -0
  41. pulumiverse_scaleway/function.py +1145 -0
  42. pulumiverse_scaleway/function_cron.py +480 -0
  43. pulumiverse_scaleway/function_domain.py +361 -0
  44. pulumiverse_scaleway/function_namespace.py +533 -0
  45. pulumiverse_scaleway/function_token.py +462 -0
  46. pulumiverse_scaleway/function_trigger.py +478 -0
  47. pulumiverse_scaleway/get_account_project.py +164 -0
  48. pulumiverse_scaleway/get_account_ssh_key.py +201 -0
  49. pulumiverse_scaleway/get_availability_zones.py +131 -0
  50. pulumiverse_scaleway/get_baremetal_offer.py +245 -0
  51. pulumiverse_scaleway/get_baremetal_option.py +168 -0
  52. pulumiverse_scaleway/get_baremetal_os.py +174 -0
  53. pulumiverse_scaleway/get_baremetal_server.py +411 -0
  54. pulumiverse_scaleway/get_billing_consumptions.py +134 -0
  55. pulumiverse_scaleway/get_billing_invoices.py +154 -0
  56. pulumiverse_scaleway/get_block_snapshot.py +170 -0
  57. pulumiverse_scaleway/get_block_volume.py +186 -0
  58. pulumiverse_scaleway/get_cockpit.py +179 -0
  59. pulumiverse_scaleway/get_cockpit_plan.py +113 -0
  60. pulumiverse_scaleway/get_config.py +180 -0
  61. pulumiverse_scaleway/get_container.py +502 -0
  62. pulumiverse_scaleway/get_container_namespace.py +262 -0
  63. pulumiverse_scaleway/get_database.py +187 -0
  64. pulumiverse_scaleway/get_database_acl.py +143 -0
  65. pulumiverse_scaleway/get_database_backup.py +253 -0
  66. pulumiverse_scaleway/get_database_instance.py +404 -0
  67. pulumiverse_scaleway/get_database_privilege.py +181 -0
  68. pulumiverse_scaleway/get_documentdb_database.py +198 -0
  69. pulumiverse_scaleway/get_documentdb_instance.py +245 -0
  70. pulumiverse_scaleway/get_documentdb_load_balancer_endpoint.py +198 -0
  71. pulumiverse_scaleway/get_domain_record.py +334 -0
  72. pulumiverse_scaleway/get_domain_zone.py +225 -0
  73. pulumiverse_scaleway/get_flexible_ip.py +247 -0
  74. pulumiverse_scaleway/get_flexible_ips.py +240 -0
  75. pulumiverse_scaleway/get_function.py +357 -0
  76. pulumiverse_scaleway/get_function_namespace.py +227 -0
  77. pulumiverse_scaleway/get_iam_api_key.py +210 -0
  78. pulumiverse_scaleway/get_iam_application.py +210 -0
  79. pulumiverse_scaleway/get_iam_group.py +236 -0
  80. pulumiverse_scaleway/get_iam_ssh_key.py +212 -0
  81. pulumiverse_scaleway/get_iam_user.py +157 -0
  82. pulumiverse_scaleway/get_instance_image.py +305 -0
  83. pulumiverse_scaleway/get_instance_ip.py +204 -0
  84. pulumiverse_scaleway/get_instance_placement_group.py +212 -0
  85. pulumiverse_scaleway/get_instance_private_nic.py +215 -0
  86. pulumiverse_scaleway/get_instance_security_group.py +268 -0
  87. pulumiverse_scaleway/get_instance_server.py +502 -0
  88. pulumiverse_scaleway/get_instance_servers.py +187 -0
  89. pulumiverse_scaleway/get_instance_snapshot.py +248 -0
  90. pulumiverse_scaleway/get_instance_volume.py +215 -0
  91. pulumiverse_scaleway/get_iot_device.py +257 -0
  92. pulumiverse_scaleway/get_iot_hub.py +322 -0
  93. pulumiverse_scaleway/get_ipam_ip.py +419 -0
  94. pulumiverse_scaleway/get_ipam_ips.py +358 -0
  95. pulumiverse_scaleway/get_k8s_version.py +196 -0
  96. pulumiverse_scaleway/get_kubernetes_cluster.py +417 -0
  97. pulumiverse_scaleway/get_kubernetes_node_pool.py +436 -0
  98. pulumiverse_scaleway/get_lb_acls.py +198 -0
  99. pulumiverse_scaleway/get_lb_backend.py +486 -0
  100. pulumiverse_scaleway/get_lb_backends.py +196 -0
  101. pulumiverse_scaleway/get_lb_frontend.py +274 -0
  102. pulumiverse_scaleway/get_lb_frontends.py +196 -0
  103. pulumiverse_scaleway/get_lb_ips.py +198 -0
  104. pulumiverse_scaleway/get_lb_route.py +217 -0
  105. pulumiverse_scaleway/get_lb_routes.py +179 -0
  106. pulumiverse_scaleway/get_lbs.py +187 -0
  107. pulumiverse_scaleway/get_loadbalancer.py +339 -0
  108. pulumiverse_scaleway/get_loadbalancer_certificate.py +230 -0
  109. pulumiverse_scaleway/get_loadbalancer_ip.py +222 -0
  110. pulumiverse_scaleway/get_marketplace_image.py +147 -0
  111. pulumiverse_scaleway/get_mnq_sqs.py +150 -0
  112. pulumiverse_scaleway/get_object_bucket.py +278 -0
  113. pulumiverse_scaleway/get_object_bucket_policy.py +157 -0
  114. pulumiverse_scaleway/get_redis_cluster.py +347 -0
  115. pulumiverse_scaleway/get_registry_image.py +239 -0
  116. pulumiverse_scaleway/get_registry_namespace.py +199 -0
  117. pulumiverse_scaleway/get_secret.py +290 -0
  118. pulumiverse_scaleway/get_secret_version.py +303 -0
  119. pulumiverse_scaleway/get_tem_domain.py +367 -0
  120. pulumiverse_scaleway/get_vpc.py +246 -0
  121. pulumiverse_scaleway/get_vpc_gateway_network.py +287 -0
  122. pulumiverse_scaleway/get_vpc_private_network.py +282 -0
  123. pulumiverse_scaleway/get_vpc_public_gateway.py +304 -0
  124. pulumiverse_scaleway/get_vpc_public_gateway_dhcp.py +305 -0
  125. pulumiverse_scaleway/get_vpc_public_gateway_dhcp_reservation.py +382 -0
  126. pulumiverse_scaleway/get_vpc_public_gateway_ip.py +199 -0
  127. pulumiverse_scaleway/get_vpc_public_pat_rule.py +313 -0
  128. pulumiverse_scaleway/get_vpc_routes.py +208 -0
  129. pulumiverse_scaleway/get_vpcs.py +174 -0
  130. pulumiverse_scaleway/get_web_host_offer.py +192 -0
  131. pulumiverse_scaleway/get_webhosting.py +332 -0
  132. pulumiverse_scaleway/iam_api_key.py +620 -0
  133. pulumiverse_scaleway/iam_application.py +417 -0
  134. pulumiverse_scaleway/iam_group.py +566 -0
  135. pulumiverse_scaleway/iam_group_membership.py +323 -0
  136. pulumiverse_scaleway/iam_policy.py +727 -0
  137. pulumiverse_scaleway/iam_ssh_key.py +455 -0
  138. pulumiverse_scaleway/iam_user.py +466 -0
  139. pulumiverse_scaleway/instance_image.py +750 -0
  140. pulumiverse_scaleway/instance_ip.py +483 -0
  141. pulumiverse_scaleway/instance_ip_reverse_dns.py +308 -0
  142. pulumiverse_scaleway/instance_placement_group.py +479 -0
  143. pulumiverse_scaleway/instance_private_nic.py +454 -0
  144. pulumiverse_scaleway/instance_security_group.py +720 -0
  145. pulumiverse_scaleway/instance_security_group_rules.py +439 -0
  146. pulumiverse_scaleway/instance_server.py +1907 -0
  147. pulumiverse_scaleway/instance_snapshot.py +669 -0
  148. pulumiverse_scaleway/instance_user_data.py +435 -0
  149. pulumiverse_scaleway/instance_volume.py +535 -0
  150. pulumiverse_scaleway/iot_device.py +750 -0
  151. pulumiverse_scaleway/iot_hub.py +896 -0
  152. pulumiverse_scaleway/iot_network.py +425 -0
  153. pulumiverse_scaleway/iot_route.py +660 -0
  154. pulumiverse_scaleway/ipam_ip.py +666 -0
  155. pulumiverse_scaleway/ipam_ip_reverse_dns.py +318 -0
  156. pulumiverse_scaleway/job_definition.py +692 -0
  157. pulumiverse_scaleway/kubernetes_cluster.py +1538 -0
  158. pulumiverse_scaleway/kubernetes_node_pool.py +1255 -0
  159. pulumiverse_scaleway/loadbalancer.py +1095 -0
  160. pulumiverse_scaleway/loadbalancer_acl.py +520 -0
  161. pulumiverse_scaleway/loadbalancer_backend.py +1588 -0
  162. pulumiverse_scaleway/loadbalancer_certificate.py +460 -0
  163. pulumiverse_scaleway/loadbalancer_frontend.py +829 -0
  164. pulumiverse_scaleway/loadbalancer_ip.py +514 -0
  165. pulumiverse_scaleway/loadbalancer_route.py +523 -0
  166. pulumiverse_scaleway/mnq_nats_account.py +334 -0
  167. pulumiverse_scaleway/mnq_nats_credentials.py +328 -0
  168. pulumiverse_scaleway/mnq_sns.py +306 -0
  169. pulumiverse_scaleway/mnq_sns_credentials.py +413 -0
  170. pulumiverse_scaleway/mnq_sns_topic.py +659 -0
  171. pulumiverse_scaleway/mnq_sns_topic_subscription.py +699 -0
  172. pulumiverse_scaleway/mnq_sqs.py +304 -0
  173. pulumiverse_scaleway/mnq_sqs_credentials.py +413 -0
  174. pulumiverse_scaleway/mnq_sqs_queue.py +800 -0
  175. pulumiverse_scaleway/object_bucket.py +888 -0
  176. pulumiverse_scaleway/object_bucket_acl.py +592 -0
  177. pulumiverse_scaleway/object_bucket_lock_configuration.py +393 -0
  178. pulumiverse_scaleway/object_bucket_policy.py +671 -0
  179. pulumiverse_scaleway/object_bucket_website_configuration.py +532 -0
  180. pulumiverse_scaleway/object_item.py +711 -0
  181. pulumiverse_scaleway/outputs.py +11663 -0
  182. pulumiverse_scaleway/provider.py +327 -0
  183. pulumiverse_scaleway/pulumi-plugin.json +6 -0
  184. pulumiverse_scaleway/py.typed +0 -0
  185. pulumiverse_scaleway/redis_cluster.py +1166 -0
  186. pulumiverse_scaleway/registry_namespace.py +458 -0
  187. pulumiverse_scaleway/sdb_database.py +428 -0
  188. pulumiverse_scaleway/secret.py +560 -0
  189. pulumiverse_scaleway/secret_version.py +482 -0
  190. pulumiverse_scaleway/tem_domain.py +950 -0
  191. pulumiverse_scaleway/tem_domain_validation.py +303 -0
  192. pulumiverse_scaleway/vpc.py +536 -0
  193. pulumiverse_scaleway/vpc_gateway_network.py +866 -0
  194. pulumiverse_scaleway/vpc_private_network.py +734 -0
  195. pulumiverse_scaleway/vpc_public_gateway.py +789 -0
  196. pulumiverse_scaleway/vpc_public_gateway_dhcp.py +933 -0
  197. pulumiverse_scaleway/vpc_public_gateway_dhcp_reservation.py +514 -0
  198. pulumiverse_scaleway/vpc_public_gateway_ip.py +457 -0
  199. pulumiverse_scaleway/vpc_public_gateway_ip_reverse_dns.py +306 -0
  200. pulumiverse_scaleway/vpc_public_gateway_pat_rule.py +591 -0
  201. pulumiverse_scaleway/webhosting.py +805 -0
  202. pulumiverse_scaleway-1.16.0.dist-info/METADATA +69 -0
  203. pulumiverse_scaleway-1.16.0.dist-info/RECORD +205 -0
  204. pulumiverse_scaleway-1.16.0.dist-info/WHEEL +5 -0
  205. pulumiverse_scaleway-1.16.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1074 @@
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__ = ['DomainRecordArgs', 'DomainRecord']
20
+
21
+ @pulumi.input_type
22
+ class DomainRecordArgs:
23
+ def __init__(__self__, *,
24
+ data: pulumi.Input[str],
25
+ dns_zone: pulumi.Input[str],
26
+ type: pulumi.Input[str],
27
+ geo_ip: Optional[pulumi.Input['DomainRecordGeoIpArgs']] = None,
28
+ http_service: Optional[pulumi.Input['DomainRecordHttpServiceArgs']] = None,
29
+ keep_empty_zone: Optional[pulumi.Input[bool]] = None,
30
+ name: Optional[pulumi.Input[str]] = None,
31
+ priority: Optional[pulumi.Input[int]] = None,
32
+ project_id: Optional[pulumi.Input[str]] = None,
33
+ ttl: Optional[pulumi.Input[int]] = None,
34
+ views: Optional[pulumi.Input[Sequence[pulumi.Input['DomainRecordViewArgs']]]] = None,
35
+ weighteds: Optional[pulumi.Input[Sequence[pulumi.Input['DomainRecordWeightedArgs']]]] = None):
36
+ """
37
+ The set of arguments for constructing a DomainRecord resource.
38
+ :param pulumi.Input[str] data: The content of the record (an IPv4 for an `A`, a string for a `TXT`...).
39
+ :param pulumi.Input[str] dns_zone: The DNS Zone of the domain. If the DNS zone doesn't exist, it will be automatically created.
40
+ :param pulumi.Input[str] type: The type of the record (`A`, `AAAA`, `MX`, `CNAME`, `DNAME`, `ALIAS`, `NS`, `PTR`, `SRV`, `TXT`, `TLSA`, or `CAA`).
41
+ :param pulumi.Input['DomainRecordGeoIpArgs'] geo_ip: Return record based on client localisation
42
+ :param pulumi.Input['DomainRecordHttpServiceArgs'] http_service: Return record based on client localisation
43
+ :param pulumi.Input[bool] keep_empty_zone: When destroying a resource, if only NS records remain and this is set to `false`, the zone will be deleted. Please note, each zone not deleted will [cost you money](https://www.scaleway.com/en/dns/)
44
+ :param pulumi.Input[str] name: The name of the record (can be an empty string for a root record).
45
+ :param pulumi.Input[int] priority: The priority of the record (mostly used with an `MX` record)
46
+ :param pulumi.Input[str] project_id: The project_id you want to attach the resource to
47
+ :param pulumi.Input[int] ttl: Time To Live of the record in seconds.
48
+ :param pulumi.Input[Sequence[pulumi.Input['DomainRecordViewArgs']]] views: Return record based on client subnet
49
+ :param pulumi.Input[Sequence[pulumi.Input['DomainRecordWeightedArgs']]] weighteds: Return record based on weight
50
+ """
51
+ pulumi.set(__self__, "data", data)
52
+ pulumi.set(__self__, "dns_zone", dns_zone)
53
+ pulumi.set(__self__, "type", type)
54
+ if geo_ip is not None:
55
+ pulumi.set(__self__, "geo_ip", geo_ip)
56
+ if http_service is not None:
57
+ pulumi.set(__self__, "http_service", http_service)
58
+ if keep_empty_zone is not None:
59
+ pulumi.set(__self__, "keep_empty_zone", keep_empty_zone)
60
+ if name is not None:
61
+ pulumi.set(__self__, "name", name)
62
+ if priority is not None:
63
+ pulumi.set(__self__, "priority", priority)
64
+ if project_id is not None:
65
+ pulumi.set(__self__, "project_id", project_id)
66
+ if ttl is not None:
67
+ pulumi.set(__self__, "ttl", ttl)
68
+ if views is not None:
69
+ pulumi.set(__self__, "views", views)
70
+ if weighteds is not None:
71
+ pulumi.set(__self__, "weighteds", weighteds)
72
+
73
+ @property
74
+ @pulumi.getter
75
+ def data(self) -> pulumi.Input[str]:
76
+ """
77
+ The content of the record (an IPv4 for an `A`, a string for a `TXT`...).
78
+ """
79
+ return pulumi.get(self, "data")
80
+
81
+ @data.setter
82
+ def data(self, value: pulumi.Input[str]):
83
+ pulumi.set(self, "data", value)
84
+
85
+ @property
86
+ @pulumi.getter(name="dnsZone")
87
+ def dns_zone(self) -> pulumi.Input[str]:
88
+ """
89
+ The DNS Zone of the domain. If the DNS zone doesn't exist, it will be automatically created.
90
+ """
91
+ return pulumi.get(self, "dns_zone")
92
+
93
+ @dns_zone.setter
94
+ def dns_zone(self, value: pulumi.Input[str]):
95
+ pulumi.set(self, "dns_zone", value)
96
+
97
+ @property
98
+ @pulumi.getter
99
+ def type(self) -> pulumi.Input[str]:
100
+ """
101
+ The type of the record (`A`, `AAAA`, `MX`, `CNAME`, `DNAME`, `ALIAS`, `NS`, `PTR`, `SRV`, `TXT`, `TLSA`, or `CAA`).
102
+ """
103
+ return pulumi.get(self, "type")
104
+
105
+ @type.setter
106
+ def type(self, value: pulumi.Input[str]):
107
+ pulumi.set(self, "type", value)
108
+
109
+ @property
110
+ @pulumi.getter(name="geoIp")
111
+ def geo_ip(self) -> Optional[pulumi.Input['DomainRecordGeoIpArgs']]:
112
+ """
113
+ Return record based on client localisation
114
+ """
115
+ return pulumi.get(self, "geo_ip")
116
+
117
+ @geo_ip.setter
118
+ def geo_ip(self, value: Optional[pulumi.Input['DomainRecordGeoIpArgs']]):
119
+ pulumi.set(self, "geo_ip", value)
120
+
121
+ @property
122
+ @pulumi.getter(name="httpService")
123
+ def http_service(self) -> Optional[pulumi.Input['DomainRecordHttpServiceArgs']]:
124
+ """
125
+ Return record based on client localisation
126
+ """
127
+ return pulumi.get(self, "http_service")
128
+
129
+ @http_service.setter
130
+ def http_service(self, value: Optional[pulumi.Input['DomainRecordHttpServiceArgs']]):
131
+ pulumi.set(self, "http_service", value)
132
+
133
+ @property
134
+ @pulumi.getter(name="keepEmptyZone")
135
+ def keep_empty_zone(self) -> Optional[pulumi.Input[bool]]:
136
+ """
137
+ When destroying a resource, if only NS records remain and this is set to `false`, the zone will be deleted. Please note, each zone not deleted will [cost you money](https://www.scaleway.com/en/dns/)
138
+ """
139
+ return pulumi.get(self, "keep_empty_zone")
140
+
141
+ @keep_empty_zone.setter
142
+ def keep_empty_zone(self, value: Optional[pulumi.Input[bool]]):
143
+ pulumi.set(self, "keep_empty_zone", value)
144
+
145
+ @property
146
+ @pulumi.getter
147
+ def name(self) -> Optional[pulumi.Input[str]]:
148
+ """
149
+ The name of the record (can be an empty string for a root record).
150
+ """
151
+ return pulumi.get(self, "name")
152
+
153
+ @name.setter
154
+ def name(self, value: Optional[pulumi.Input[str]]):
155
+ pulumi.set(self, "name", value)
156
+
157
+ @property
158
+ @pulumi.getter
159
+ def priority(self) -> Optional[pulumi.Input[int]]:
160
+ """
161
+ The priority of the record (mostly used with an `MX` record)
162
+ """
163
+ return pulumi.get(self, "priority")
164
+
165
+ @priority.setter
166
+ def priority(self, value: Optional[pulumi.Input[int]]):
167
+ pulumi.set(self, "priority", value)
168
+
169
+ @property
170
+ @pulumi.getter(name="projectId")
171
+ def project_id(self) -> Optional[pulumi.Input[str]]:
172
+ """
173
+ The project_id you want to attach the resource to
174
+ """
175
+ return pulumi.get(self, "project_id")
176
+
177
+ @project_id.setter
178
+ def project_id(self, value: Optional[pulumi.Input[str]]):
179
+ pulumi.set(self, "project_id", value)
180
+
181
+ @property
182
+ @pulumi.getter
183
+ def ttl(self) -> Optional[pulumi.Input[int]]:
184
+ """
185
+ Time To Live of the record in seconds.
186
+ """
187
+ return pulumi.get(self, "ttl")
188
+
189
+ @ttl.setter
190
+ def ttl(self, value: Optional[pulumi.Input[int]]):
191
+ pulumi.set(self, "ttl", value)
192
+
193
+ @property
194
+ @pulumi.getter
195
+ def views(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DomainRecordViewArgs']]]]:
196
+ """
197
+ Return record based on client subnet
198
+ """
199
+ return pulumi.get(self, "views")
200
+
201
+ @views.setter
202
+ def views(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['DomainRecordViewArgs']]]]):
203
+ pulumi.set(self, "views", value)
204
+
205
+ @property
206
+ @pulumi.getter
207
+ def weighteds(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DomainRecordWeightedArgs']]]]:
208
+ """
209
+ Return record based on weight
210
+ """
211
+ return pulumi.get(self, "weighteds")
212
+
213
+ @weighteds.setter
214
+ def weighteds(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['DomainRecordWeightedArgs']]]]):
215
+ pulumi.set(self, "weighteds", value)
216
+
217
+
218
+ @pulumi.input_type
219
+ class _DomainRecordState:
220
+ def __init__(__self__, *,
221
+ data: Optional[pulumi.Input[str]] = None,
222
+ dns_zone: Optional[pulumi.Input[str]] = None,
223
+ fqdn: Optional[pulumi.Input[str]] = None,
224
+ geo_ip: Optional[pulumi.Input['DomainRecordGeoIpArgs']] = None,
225
+ http_service: Optional[pulumi.Input['DomainRecordHttpServiceArgs']] = None,
226
+ keep_empty_zone: Optional[pulumi.Input[bool]] = None,
227
+ name: Optional[pulumi.Input[str]] = None,
228
+ priority: Optional[pulumi.Input[int]] = None,
229
+ project_id: Optional[pulumi.Input[str]] = None,
230
+ root_zone: Optional[pulumi.Input[bool]] = None,
231
+ ttl: Optional[pulumi.Input[int]] = None,
232
+ type: Optional[pulumi.Input[str]] = None,
233
+ views: Optional[pulumi.Input[Sequence[pulumi.Input['DomainRecordViewArgs']]]] = None,
234
+ weighteds: Optional[pulumi.Input[Sequence[pulumi.Input['DomainRecordWeightedArgs']]]] = None):
235
+ """
236
+ Input properties used for looking up and filtering DomainRecord resources.
237
+ :param pulumi.Input[str] data: The content of the record (an IPv4 for an `A`, a string for a `TXT`...).
238
+ :param pulumi.Input[str] dns_zone: The DNS Zone of the domain. If the DNS zone doesn't exist, it will be automatically created.
239
+ :param pulumi.Input[str] fqdn: The FQDN of the record.
240
+ :param pulumi.Input['DomainRecordGeoIpArgs'] geo_ip: Return record based on client localisation
241
+ :param pulumi.Input['DomainRecordHttpServiceArgs'] http_service: Return record based on client localisation
242
+ :param pulumi.Input[bool] keep_empty_zone: When destroying a resource, if only NS records remain and this is set to `false`, the zone will be deleted. Please note, each zone not deleted will [cost you money](https://www.scaleway.com/en/dns/)
243
+ :param pulumi.Input[str] name: The name of the record (can be an empty string for a root record).
244
+ :param pulumi.Input[int] priority: The priority of the record (mostly used with an `MX` record)
245
+ :param pulumi.Input[str] project_id: The project_id you want to attach the resource to
246
+ :param pulumi.Input[bool] root_zone: Does the DNS zone is the root zone or not
247
+ :param pulumi.Input[int] ttl: Time To Live of the record in seconds.
248
+ :param pulumi.Input[str] type: The type of the record (`A`, `AAAA`, `MX`, `CNAME`, `DNAME`, `ALIAS`, `NS`, `PTR`, `SRV`, `TXT`, `TLSA`, or `CAA`).
249
+ :param pulumi.Input[Sequence[pulumi.Input['DomainRecordViewArgs']]] views: Return record based on client subnet
250
+ :param pulumi.Input[Sequence[pulumi.Input['DomainRecordWeightedArgs']]] weighteds: Return record based on weight
251
+ """
252
+ if data is not None:
253
+ pulumi.set(__self__, "data", data)
254
+ if dns_zone is not None:
255
+ pulumi.set(__self__, "dns_zone", dns_zone)
256
+ if fqdn is not None:
257
+ pulumi.set(__self__, "fqdn", fqdn)
258
+ if geo_ip is not None:
259
+ pulumi.set(__self__, "geo_ip", geo_ip)
260
+ if http_service is not None:
261
+ pulumi.set(__self__, "http_service", http_service)
262
+ if keep_empty_zone is not None:
263
+ pulumi.set(__self__, "keep_empty_zone", keep_empty_zone)
264
+ if name is not None:
265
+ pulumi.set(__self__, "name", name)
266
+ if priority is not None:
267
+ pulumi.set(__self__, "priority", priority)
268
+ if project_id is not None:
269
+ pulumi.set(__self__, "project_id", project_id)
270
+ if root_zone is not None:
271
+ pulumi.set(__self__, "root_zone", root_zone)
272
+ if ttl is not None:
273
+ pulumi.set(__self__, "ttl", ttl)
274
+ if type is not None:
275
+ pulumi.set(__self__, "type", type)
276
+ if views is not None:
277
+ pulumi.set(__self__, "views", views)
278
+ if weighteds is not None:
279
+ pulumi.set(__self__, "weighteds", weighteds)
280
+
281
+ @property
282
+ @pulumi.getter
283
+ def data(self) -> Optional[pulumi.Input[str]]:
284
+ """
285
+ The content of the record (an IPv4 for an `A`, a string for a `TXT`...).
286
+ """
287
+ return pulumi.get(self, "data")
288
+
289
+ @data.setter
290
+ def data(self, value: Optional[pulumi.Input[str]]):
291
+ pulumi.set(self, "data", value)
292
+
293
+ @property
294
+ @pulumi.getter(name="dnsZone")
295
+ def dns_zone(self) -> Optional[pulumi.Input[str]]:
296
+ """
297
+ The DNS Zone of the domain. If the DNS zone doesn't exist, it will be automatically created.
298
+ """
299
+ return pulumi.get(self, "dns_zone")
300
+
301
+ @dns_zone.setter
302
+ def dns_zone(self, value: Optional[pulumi.Input[str]]):
303
+ pulumi.set(self, "dns_zone", value)
304
+
305
+ @property
306
+ @pulumi.getter
307
+ def fqdn(self) -> Optional[pulumi.Input[str]]:
308
+ """
309
+ The FQDN of the record.
310
+ """
311
+ return pulumi.get(self, "fqdn")
312
+
313
+ @fqdn.setter
314
+ def fqdn(self, value: Optional[pulumi.Input[str]]):
315
+ pulumi.set(self, "fqdn", value)
316
+
317
+ @property
318
+ @pulumi.getter(name="geoIp")
319
+ def geo_ip(self) -> Optional[pulumi.Input['DomainRecordGeoIpArgs']]:
320
+ """
321
+ Return record based on client localisation
322
+ """
323
+ return pulumi.get(self, "geo_ip")
324
+
325
+ @geo_ip.setter
326
+ def geo_ip(self, value: Optional[pulumi.Input['DomainRecordGeoIpArgs']]):
327
+ pulumi.set(self, "geo_ip", value)
328
+
329
+ @property
330
+ @pulumi.getter(name="httpService")
331
+ def http_service(self) -> Optional[pulumi.Input['DomainRecordHttpServiceArgs']]:
332
+ """
333
+ Return record based on client localisation
334
+ """
335
+ return pulumi.get(self, "http_service")
336
+
337
+ @http_service.setter
338
+ def http_service(self, value: Optional[pulumi.Input['DomainRecordHttpServiceArgs']]):
339
+ pulumi.set(self, "http_service", value)
340
+
341
+ @property
342
+ @pulumi.getter(name="keepEmptyZone")
343
+ def keep_empty_zone(self) -> Optional[pulumi.Input[bool]]:
344
+ """
345
+ When destroying a resource, if only NS records remain and this is set to `false`, the zone will be deleted. Please note, each zone not deleted will [cost you money](https://www.scaleway.com/en/dns/)
346
+ """
347
+ return pulumi.get(self, "keep_empty_zone")
348
+
349
+ @keep_empty_zone.setter
350
+ def keep_empty_zone(self, value: Optional[pulumi.Input[bool]]):
351
+ pulumi.set(self, "keep_empty_zone", value)
352
+
353
+ @property
354
+ @pulumi.getter
355
+ def name(self) -> Optional[pulumi.Input[str]]:
356
+ """
357
+ The name of the record (can be an empty string for a root record).
358
+ """
359
+ return pulumi.get(self, "name")
360
+
361
+ @name.setter
362
+ def name(self, value: Optional[pulumi.Input[str]]):
363
+ pulumi.set(self, "name", value)
364
+
365
+ @property
366
+ @pulumi.getter
367
+ def priority(self) -> Optional[pulumi.Input[int]]:
368
+ """
369
+ The priority of the record (mostly used with an `MX` record)
370
+ """
371
+ return pulumi.get(self, "priority")
372
+
373
+ @priority.setter
374
+ def priority(self, value: Optional[pulumi.Input[int]]):
375
+ pulumi.set(self, "priority", value)
376
+
377
+ @property
378
+ @pulumi.getter(name="projectId")
379
+ def project_id(self) -> Optional[pulumi.Input[str]]:
380
+ """
381
+ The project_id you want to attach the resource to
382
+ """
383
+ return pulumi.get(self, "project_id")
384
+
385
+ @project_id.setter
386
+ def project_id(self, value: Optional[pulumi.Input[str]]):
387
+ pulumi.set(self, "project_id", value)
388
+
389
+ @property
390
+ @pulumi.getter(name="rootZone")
391
+ def root_zone(self) -> Optional[pulumi.Input[bool]]:
392
+ """
393
+ Does the DNS zone is the root zone or not
394
+ """
395
+ return pulumi.get(self, "root_zone")
396
+
397
+ @root_zone.setter
398
+ def root_zone(self, value: Optional[pulumi.Input[bool]]):
399
+ pulumi.set(self, "root_zone", value)
400
+
401
+ @property
402
+ @pulumi.getter
403
+ def ttl(self) -> Optional[pulumi.Input[int]]:
404
+ """
405
+ Time To Live of the record in seconds.
406
+ """
407
+ return pulumi.get(self, "ttl")
408
+
409
+ @ttl.setter
410
+ def ttl(self, value: Optional[pulumi.Input[int]]):
411
+ pulumi.set(self, "ttl", value)
412
+
413
+ @property
414
+ @pulumi.getter
415
+ def type(self) -> Optional[pulumi.Input[str]]:
416
+ """
417
+ The type of the record (`A`, `AAAA`, `MX`, `CNAME`, `DNAME`, `ALIAS`, `NS`, `PTR`, `SRV`, `TXT`, `TLSA`, or `CAA`).
418
+ """
419
+ return pulumi.get(self, "type")
420
+
421
+ @type.setter
422
+ def type(self, value: Optional[pulumi.Input[str]]):
423
+ pulumi.set(self, "type", value)
424
+
425
+ @property
426
+ @pulumi.getter
427
+ def views(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DomainRecordViewArgs']]]]:
428
+ """
429
+ Return record based on client subnet
430
+ """
431
+ return pulumi.get(self, "views")
432
+
433
+ @views.setter
434
+ def views(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['DomainRecordViewArgs']]]]):
435
+ pulumi.set(self, "views", value)
436
+
437
+ @property
438
+ @pulumi.getter
439
+ def weighteds(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DomainRecordWeightedArgs']]]]:
440
+ """
441
+ Return record based on weight
442
+ """
443
+ return pulumi.get(self, "weighteds")
444
+
445
+ @weighteds.setter
446
+ def weighteds(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['DomainRecordWeightedArgs']]]]):
447
+ pulumi.set(self, "weighteds", value)
448
+
449
+
450
+ class DomainRecord(pulumi.CustomResource):
451
+ @overload
452
+ def __init__(__self__,
453
+ resource_name: str,
454
+ opts: Optional[pulumi.ResourceOptions] = None,
455
+ data: Optional[pulumi.Input[str]] = None,
456
+ dns_zone: Optional[pulumi.Input[str]] = None,
457
+ geo_ip: Optional[pulumi.Input[Union['DomainRecordGeoIpArgs', 'DomainRecordGeoIpArgsDict']]] = None,
458
+ http_service: Optional[pulumi.Input[Union['DomainRecordHttpServiceArgs', 'DomainRecordHttpServiceArgsDict']]] = None,
459
+ keep_empty_zone: Optional[pulumi.Input[bool]] = None,
460
+ name: Optional[pulumi.Input[str]] = None,
461
+ priority: Optional[pulumi.Input[int]] = None,
462
+ project_id: Optional[pulumi.Input[str]] = None,
463
+ ttl: Optional[pulumi.Input[int]] = None,
464
+ type: Optional[pulumi.Input[str]] = None,
465
+ views: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DomainRecordViewArgs', 'DomainRecordViewArgsDict']]]]] = None,
466
+ weighteds: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DomainRecordWeightedArgs', 'DomainRecordWeightedArgsDict']]]]] = None,
467
+ __props__=None):
468
+ """
469
+ Creates and manages Scaleway Domain record.\\
470
+ For more information, see [the documentation](https://www.scaleway.com/en/docs/network/domains-and-dns/how-to/manage-dns-records/).
471
+
472
+ ## Example Usage
473
+
474
+ ### Basic
475
+
476
+ ```python
477
+ import pulumi
478
+ import pulumiverse_scaleway as scaleway
479
+
480
+ www = scaleway.DomainRecord("www",
481
+ dns_zone="domain.tld",
482
+ name="www",
483
+ type="A",
484
+ data="1.2.3.4",
485
+ ttl=3600)
486
+ www2 = scaleway.DomainRecord("www2",
487
+ dns_zone="domain.tld",
488
+ name="www",
489
+ type="A",
490
+ data="1.2.3.5",
491
+ ttl=3600)
492
+ mx = scaleway.DomainRecord("mx",
493
+ dns_zone="domain.tld",
494
+ name="",
495
+ type="MX",
496
+ data="mx.online.net.",
497
+ ttl=3600,
498
+ priority=10)
499
+ mx2 = scaleway.DomainRecord("mx2",
500
+ dns_zone="domain.tld",
501
+ name="",
502
+ type="MX",
503
+ data="mx-cache.online.net.",
504
+ ttl=3600,
505
+ priority=20)
506
+ ```
507
+
508
+ ### With dynamic records
509
+
510
+ ```python
511
+ import pulumi
512
+ import pulumiverse_scaleway as scaleway
513
+
514
+ geo_ip = scaleway.DomainRecord("geo_ip",
515
+ dns_zone="domain.tld",
516
+ name="images",
517
+ type="A",
518
+ data="1.2.3.4",
519
+ ttl=3600,
520
+ geo_ip={
521
+ "matches": [
522
+ {
523
+ "continents": ["EU"],
524
+ "countries": ["FR"],
525
+ "data": "1.2.3.5",
526
+ },
527
+ {
528
+ "continents": ["NA"],
529
+ "data": "4.3.2.1",
530
+ },
531
+ ],
532
+ })
533
+ http_service = scaleway.DomainRecord("http_service",
534
+ dns_zone="domain.tld",
535
+ name="app",
536
+ type="A",
537
+ data="1.2.3.4",
538
+ ttl=3600,
539
+ http_service={
540
+ "ips": [
541
+ "1.2.3.5",
542
+ "1.2.3.6",
543
+ ],
544
+ "must_contain": "up",
545
+ "url": "http://mywebsite.com/health",
546
+ "user_agent": "scw_service_up",
547
+ "strategy": "hashed",
548
+ })
549
+ view = scaleway.DomainRecord("view",
550
+ dns_zone="domain.tld",
551
+ name="db",
552
+ type="A",
553
+ data="1.2.3.4",
554
+ ttl=3600,
555
+ views=[
556
+ {
557
+ "subnet": "100.0.0.0/16",
558
+ "data": "1.2.3.5",
559
+ },
560
+ {
561
+ "subnet": "100.1.0.0/16",
562
+ "data": "1.2.3.6",
563
+ },
564
+ ])
565
+ weighted = scaleway.DomainRecord("weighted",
566
+ dns_zone="domain.tld",
567
+ name="web",
568
+ type="A",
569
+ data="1.2.3.4",
570
+ ttl=3600,
571
+ weighteds=[
572
+ {
573
+ "ip": "1.2.3.5",
574
+ "weight": 1,
575
+ },
576
+ {
577
+ "ip": "1.2.3.6",
578
+ "weight": 2,
579
+ },
580
+ ])
581
+ ```
582
+
583
+ ### Create an instance and add records with the new instance IP
584
+
585
+ ```python
586
+ import pulumi
587
+ import pulumiverse_scaleway as scaleway
588
+
589
+ config = pulumi.Config()
590
+ # Your project ID.
591
+ project_id = config.require("projectId")
592
+ # The DNS Zone used for testing records.
593
+ dns_zone = config.require("dnsZone")
594
+ public_ip = scaleway.InstanceIp("public_ip", project_id=project_id)
595
+ web = scaleway.InstanceServer("web",
596
+ project_id=project_id,
597
+ type="DEV1-S",
598
+ image="ubuntu_jammy",
599
+ tags=[
600
+ "front",
601
+ "web",
602
+ ],
603
+ ip_id=public_ip.id,
604
+ root_volume={
605
+ "size_in_gb": 20,
606
+ })
607
+ web_a = scaleway.DomainRecord("web_A",
608
+ dns_zone=dns_zone,
609
+ name="web",
610
+ type="A",
611
+ data=web.public_ip,
612
+ ttl=3600)
613
+ web_cname = scaleway.DomainRecord("web_cname",
614
+ dns_zone=dns_zone,
615
+ name="www",
616
+ type="CNAME",
617
+ data=f"web.{dns_zone}.",
618
+ ttl=3600)
619
+ web_alias = scaleway.DomainRecord("web_alias",
620
+ dns_zone=dns_zone,
621
+ name="",
622
+ type="ALIAS",
623
+ data=f"web.{dns_zone}.",
624
+ ttl=3600)
625
+ ```
626
+
627
+ ## Multiple records
628
+
629
+ Some record types can have multiple `data` with the same `name` (eg: `A`, `AAAA`, `MX`, `NS`...).\\
630
+ You can duplicate a resource `DomainRecord` with the same `name`, the records will be added.
631
+
632
+ Please note, some record (eg: `CNAME`, Multiple dynamic records of different types...) has to be unique.
633
+
634
+ ## Import
635
+
636
+ Record can be imported using the `{dns_zone}/{id}`, e.g.
637
+
638
+ bash
639
+
640
+ ```sh
641
+ $ pulumi import scaleway:index/domainRecord:DomainRecord www subdomain.domain.tld/11111111-1111-1111-1111-111111111111
642
+ ```
643
+
644
+ :param str resource_name: The name of the resource.
645
+ :param pulumi.ResourceOptions opts: Options for the resource.
646
+ :param pulumi.Input[str] data: The content of the record (an IPv4 for an `A`, a string for a `TXT`...).
647
+ :param pulumi.Input[str] dns_zone: The DNS Zone of the domain. If the DNS zone doesn't exist, it will be automatically created.
648
+ :param pulumi.Input[Union['DomainRecordGeoIpArgs', 'DomainRecordGeoIpArgsDict']] geo_ip: Return record based on client localisation
649
+ :param pulumi.Input[Union['DomainRecordHttpServiceArgs', 'DomainRecordHttpServiceArgsDict']] http_service: Return record based on client localisation
650
+ :param pulumi.Input[bool] keep_empty_zone: When destroying a resource, if only NS records remain and this is set to `false`, the zone will be deleted. Please note, each zone not deleted will [cost you money](https://www.scaleway.com/en/dns/)
651
+ :param pulumi.Input[str] name: The name of the record (can be an empty string for a root record).
652
+ :param pulumi.Input[int] priority: The priority of the record (mostly used with an `MX` record)
653
+ :param pulumi.Input[str] project_id: The project_id you want to attach the resource to
654
+ :param pulumi.Input[int] ttl: Time To Live of the record in seconds.
655
+ :param pulumi.Input[str] type: The type of the record (`A`, `AAAA`, `MX`, `CNAME`, `DNAME`, `ALIAS`, `NS`, `PTR`, `SRV`, `TXT`, `TLSA`, or `CAA`).
656
+ :param pulumi.Input[Sequence[pulumi.Input[Union['DomainRecordViewArgs', 'DomainRecordViewArgsDict']]]] views: Return record based on client subnet
657
+ :param pulumi.Input[Sequence[pulumi.Input[Union['DomainRecordWeightedArgs', 'DomainRecordWeightedArgsDict']]]] weighteds: Return record based on weight
658
+ """
659
+ ...
660
+ @overload
661
+ def __init__(__self__,
662
+ resource_name: str,
663
+ args: DomainRecordArgs,
664
+ opts: Optional[pulumi.ResourceOptions] = None):
665
+ """
666
+ Creates and manages Scaleway Domain record.\\
667
+ For more information, see [the documentation](https://www.scaleway.com/en/docs/network/domains-and-dns/how-to/manage-dns-records/).
668
+
669
+ ## Example Usage
670
+
671
+ ### Basic
672
+
673
+ ```python
674
+ import pulumi
675
+ import pulumiverse_scaleway as scaleway
676
+
677
+ www = scaleway.DomainRecord("www",
678
+ dns_zone="domain.tld",
679
+ name="www",
680
+ type="A",
681
+ data="1.2.3.4",
682
+ ttl=3600)
683
+ www2 = scaleway.DomainRecord("www2",
684
+ dns_zone="domain.tld",
685
+ name="www",
686
+ type="A",
687
+ data="1.2.3.5",
688
+ ttl=3600)
689
+ mx = scaleway.DomainRecord("mx",
690
+ dns_zone="domain.tld",
691
+ name="",
692
+ type="MX",
693
+ data="mx.online.net.",
694
+ ttl=3600,
695
+ priority=10)
696
+ mx2 = scaleway.DomainRecord("mx2",
697
+ dns_zone="domain.tld",
698
+ name="",
699
+ type="MX",
700
+ data="mx-cache.online.net.",
701
+ ttl=3600,
702
+ priority=20)
703
+ ```
704
+
705
+ ### With dynamic records
706
+
707
+ ```python
708
+ import pulumi
709
+ import pulumiverse_scaleway as scaleway
710
+
711
+ geo_ip = scaleway.DomainRecord("geo_ip",
712
+ dns_zone="domain.tld",
713
+ name="images",
714
+ type="A",
715
+ data="1.2.3.4",
716
+ ttl=3600,
717
+ geo_ip={
718
+ "matches": [
719
+ {
720
+ "continents": ["EU"],
721
+ "countries": ["FR"],
722
+ "data": "1.2.3.5",
723
+ },
724
+ {
725
+ "continents": ["NA"],
726
+ "data": "4.3.2.1",
727
+ },
728
+ ],
729
+ })
730
+ http_service = scaleway.DomainRecord("http_service",
731
+ dns_zone="domain.tld",
732
+ name="app",
733
+ type="A",
734
+ data="1.2.3.4",
735
+ ttl=3600,
736
+ http_service={
737
+ "ips": [
738
+ "1.2.3.5",
739
+ "1.2.3.6",
740
+ ],
741
+ "must_contain": "up",
742
+ "url": "http://mywebsite.com/health",
743
+ "user_agent": "scw_service_up",
744
+ "strategy": "hashed",
745
+ })
746
+ view = scaleway.DomainRecord("view",
747
+ dns_zone="domain.tld",
748
+ name="db",
749
+ type="A",
750
+ data="1.2.3.4",
751
+ ttl=3600,
752
+ views=[
753
+ {
754
+ "subnet": "100.0.0.0/16",
755
+ "data": "1.2.3.5",
756
+ },
757
+ {
758
+ "subnet": "100.1.0.0/16",
759
+ "data": "1.2.3.6",
760
+ },
761
+ ])
762
+ weighted = scaleway.DomainRecord("weighted",
763
+ dns_zone="domain.tld",
764
+ name="web",
765
+ type="A",
766
+ data="1.2.3.4",
767
+ ttl=3600,
768
+ weighteds=[
769
+ {
770
+ "ip": "1.2.3.5",
771
+ "weight": 1,
772
+ },
773
+ {
774
+ "ip": "1.2.3.6",
775
+ "weight": 2,
776
+ },
777
+ ])
778
+ ```
779
+
780
+ ### Create an instance and add records with the new instance IP
781
+
782
+ ```python
783
+ import pulumi
784
+ import pulumiverse_scaleway as scaleway
785
+
786
+ config = pulumi.Config()
787
+ # Your project ID.
788
+ project_id = config.require("projectId")
789
+ # The DNS Zone used for testing records.
790
+ dns_zone = config.require("dnsZone")
791
+ public_ip = scaleway.InstanceIp("public_ip", project_id=project_id)
792
+ web = scaleway.InstanceServer("web",
793
+ project_id=project_id,
794
+ type="DEV1-S",
795
+ image="ubuntu_jammy",
796
+ tags=[
797
+ "front",
798
+ "web",
799
+ ],
800
+ ip_id=public_ip.id,
801
+ root_volume={
802
+ "size_in_gb": 20,
803
+ })
804
+ web_a = scaleway.DomainRecord("web_A",
805
+ dns_zone=dns_zone,
806
+ name="web",
807
+ type="A",
808
+ data=web.public_ip,
809
+ ttl=3600)
810
+ web_cname = scaleway.DomainRecord("web_cname",
811
+ dns_zone=dns_zone,
812
+ name="www",
813
+ type="CNAME",
814
+ data=f"web.{dns_zone}.",
815
+ ttl=3600)
816
+ web_alias = scaleway.DomainRecord("web_alias",
817
+ dns_zone=dns_zone,
818
+ name="",
819
+ type="ALIAS",
820
+ data=f"web.{dns_zone}.",
821
+ ttl=3600)
822
+ ```
823
+
824
+ ## Multiple records
825
+
826
+ Some record types can have multiple `data` with the same `name` (eg: `A`, `AAAA`, `MX`, `NS`...).\\
827
+ You can duplicate a resource `DomainRecord` with the same `name`, the records will be added.
828
+
829
+ Please note, some record (eg: `CNAME`, Multiple dynamic records of different types...) has to be unique.
830
+
831
+ ## Import
832
+
833
+ Record can be imported using the `{dns_zone}/{id}`, e.g.
834
+
835
+ bash
836
+
837
+ ```sh
838
+ $ pulumi import scaleway:index/domainRecord:DomainRecord www subdomain.domain.tld/11111111-1111-1111-1111-111111111111
839
+ ```
840
+
841
+ :param str resource_name: The name of the resource.
842
+ :param DomainRecordArgs args: The arguments to use to populate this resource's properties.
843
+ :param pulumi.ResourceOptions opts: Options for the resource.
844
+ """
845
+ ...
846
+ def __init__(__self__, resource_name: str, *args, **kwargs):
847
+ resource_args, opts = _utilities.get_resource_args_opts(DomainRecordArgs, pulumi.ResourceOptions, *args, **kwargs)
848
+ if resource_args is not None:
849
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
850
+ else:
851
+ __self__._internal_init(resource_name, *args, **kwargs)
852
+
853
+ def _internal_init(__self__,
854
+ resource_name: str,
855
+ opts: Optional[pulumi.ResourceOptions] = None,
856
+ data: Optional[pulumi.Input[str]] = None,
857
+ dns_zone: Optional[pulumi.Input[str]] = None,
858
+ geo_ip: Optional[pulumi.Input[Union['DomainRecordGeoIpArgs', 'DomainRecordGeoIpArgsDict']]] = None,
859
+ http_service: Optional[pulumi.Input[Union['DomainRecordHttpServiceArgs', 'DomainRecordHttpServiceArgsDict']]] = None,
860
+ keep_empty_zone: Optional[pulumi.Input[bool]] = None,
861
+ name: Optional[pulumi.Input[str]] = None,
862
+ priority: Optional[pulumi.Input[int]] = None,
863
+ project_id: Optional[pulumi.Input[str]] = None,
864
+ ttl: Optional[pulumi.Input[int]] = None,
865
+ type: Optional[pulumi.Input[str]] = None,
866
+ views: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DomainRecordViewArgs', 'DomainRecordViewArgsDict']]]]] = None,
867
+ weighteds: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DomainRecordWeightedArgs', 'DomainRecordWeightedArgsDict']]]]] = None,
868
+ __props__=None):
869
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
870
+ if not isinstance(opts, pulumi.ResourceOptions):
871
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
872
+ if opts.id is None:
873
+ if __props__ is not None:
874
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
875
+ __props__ = DomainRecordArgs.__new__(DomainRecordArgs)
876
+
877
+ if data is None and not opts.urn:
878
+ raise TypeError("Missing required property 'data'")
879
+ __props__.__dict__["data"] = data
880
+ if dns_zone is None and not opts.urn:
881
+ raise TypeError("Missing required property 'dns_zone'")
882
+ __props__.__dict__["dns_zone"] = dns_zone
883
+ __props__.__dict__["geo_ip"] = geo_ip
884
+ __props__.__dict__["http_service"] = http_service
885
+ __props__.__dict__["keep_empty_zone"] = keep_empty_zone
886
+ __props__.__dict__["name"] = name
887
+ __props__.__dict__["priority"] = priority
888
+ __props__.__dict__["project_id"] = project_id
889
+ __props__.__dict__["ttl"] = ttl
890
+ if type is None and not opts.urn:
891
+ raise TypeError("Missing required property 'type'")
892
+ __props__.__dict__["type"] = type
893
+ __props__.__dict__["views"] = views
894
+ __props__.__dict__["weighteds"] = weighteds
895
+ __props__.__dict__["fqdn"] = None
896
+ __props__.__dict__["root_zone"] = None
897
+ super(DomainRecord, __self__).__init__(
898
+ 'scaleway:index/domainRecord:DomainRecord',
899
+ resource_name,
900
+ __props__,
901
+ opts)
902
+
903
+ @staticmethod
904
+ def get(resource_name: str,
905
+ id: pulumi.Input[str],
906
+ opts: Optional[pulumi.ResourceOptions] = None,
907
+ data: Optional[pulumi.Input[str]] = None,
908
+ dns_zone: Optional[pulumi.Input[str]] = None,
909
+ fqdn: Optional[pulumi.Input[str]] = None,
910
+ geo_ip: Optional[pulumi.Input[Union['DomainRecordGeoIpArgs', 'DomainRecordGeoIpArgsDict']]] = None,
911
+ http_service: Optional[pulumi.Input[Union['DomainRecordHttpServiceArgs', 'DomainRecordHttpServiceArgsDict']]] = None,
912
+ keep_empty_zone: Optional[pulumi.Input[bool]] = None,
913
+ name: Optional[pulumi.Input[str]] = None,
914
+ priority: Optional[pulumi.Input[int]] = None,
915
+ project_id: Optional[pulumi.Input[str]] = None,
916
+ root_zone: Optional[pulumi.Input[bool]] = None,
917
+ ttl: Optional[pulumi.Input[int]] = None,
918
+ type: Optional[pulumi.Input[str]] = None,
919
+ views: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DomainRecordViewArgs', 'DomainRecordViewArgsDict']]]]] = None,
920
+ weighteds: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DomainRecordWeightedArgs', 'DomainRecordWeightedArgsDict']]]]] = None) -> 'DomainRecord':
921
+ """
922
+ Get an existing DomainRecord resource's state with the given name, id, and optional extra
923
+ properties used to qualify the lookup.
924
+
925
+ :param str resource_name: The unique name of the resulting resource.
926
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
927
+ :param pulumi.ResourceOptions opts: Options for the resource.
928
+ :param pulumi.Input[str] data: The content of the record (an IPv4 for an `A`, a string for a `TXT`...).
929
+ :param pulumi.Input[str] dns_zone: The DNS Zone of the domain. If the DNS zone doesn't exist, it will be automatically created.
930
+ :param pulumi.Input[str] fqdn: The FQDN of the record.
931
+ :param pulumi.Input[Union['DomainRecordGeoIpArgs', 'DomainRecordGeoIpArgsDict']] geo_ip: Return record based on client localisation
932
+ :param pulumi.Input[Union['DomainRecordHttpServiceArgs', 'DomainRecordHttpServiceArgsDict']] http_service: Return record based on client localisation
933
+ :param pulumi.Input[bool] keep_empty_zone: When destroying a resource, if only NS records remain and this is set to `false`, the zone will be deleted. Please note, each zone not deleted will [cost you money](https://www.scaleway.com/en/dns/)
934
+ :param pulumi.Input[str] name: The name of the record (can be an empty string for a root record).
935
+ :param pulumi.Input[int] priority: The priority of the record (mostly used with an `MX` record)
936
+ :param pulumi.Input[str] project_id: The project_id you want to attach the resource to
937
+ :param pulumi.Input[bool] root_zone: Does the DNS zone is the root zone or not
938
+ :param pulumi.Input[int] ttl: Time To Live of the record in seconds.
939
+ :param pulumi.Input[str] type: The type of the record (`A`, `AAAA`, `MX`, `CNAME`, `DNAME`, `ALIAS`, `NS`, `PTR`, `SRV`, `TXT`, `TLSA`, or `CAA`).
940
+ :param pulumi.Input[Sequence[pulumi.Input[Union['DomainRecordViewArgs', 'DomainRecordViewArgsDict']]]] views: Return record based on client subnet
941
+ :param pulumi.Input[Sequence[pulumi.Input[Union['DomainRecordWeightedArgs', 'DomainRecordWeightedArgsDict']]]] weighteds: Return record based on weight
942
+ """
943
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
944
+
945
+ __props__ = _DomainRecordState.__new__(_DomainRecordState)
946
+
947
+ __props__.__dict__["data"] = data
948
+ __props__.__dict__["dns_zone"] = dns_zone
949
+ __props__.__dict__["fqdn"] = fqdn
950
+ __props__.__dict__["geo_ip"] = geo_ip
951
+ __props__.__dict__["http_service"] = http_service
952
+ __props__.__dict__["keep_empty_zone"] = keep_empty_zone
953
+ __props__.__dict__["name"] = name
954
+ __props__.__dict__["priority"] = priority
955
+ __props__.__dict__["project_id"] = project_id
956
+ __props__.__dict__["root_zone"] = root_zone
957
+ __props__.__dict__["ttl"] = ttl
958
+ __props__.__dict__["type"] = type
959
+ __props__.__dict__["views"] = views
960
+ __props__.__dict__["weighteds"] = weighteds
961
+ return DomainRecord(resource_name, opts=opts, __props__=__props__)
962
+
963
+ @property
964
+ @pulumi.getter
965
+ def data(self) -> pulumi.Output[str]:
966
+ """
967
+ The content of the record (an IPv4 for an `A`, a string for a `TXT`...).
968
+ """
969
+ return pulumi.get(self, "data")
970
+
971
+ @property
972
+ @pulumi.getter(name="dnsZone")
973
+ def dns_zone(self) -> pulumi.Output[str]:
974
+ """
975
+ The DNS Zone of the domain. If the DNS zone doesn't exist, it will be automatically created.
976
+ """
977
+ return pulumi.get(self, "dns_zone")
978
+
979
+ @property
980
+ @pulumi.getter
981
+ def fqdn(self) -> pulumi.Output[str]:
982
+ """
983
+ The FQDN of the record.
984
+ """
985
+ return pulumi.get(self, "fqdn")
986
+
987
+ @property
988
+ @pulumi.getter(name="geoIp")
989
+ def geo_ip(self) -> pulumi.Output[Optional['outputs.DomainRecordGeoIp']]:
990
+ """
991
+ Return record based on client localisation
992
+ """
993
+ return pulumi.get(self, "geo_ip")
994
+
995
+ @property
996
+ @pulumi.getter(name="httpService")
997
+ def http_service(self) -> pulumi.Output[Optional['outputs.DomainRecordHttpService']]:
998
+ """
999
+ Return record based on client localisation
1000
+ """
1001
+ return pulumi.get(self, "http_service")
1002
+
1003
+ @property
1004
+ @pulumi.getter(name="keepEmptyZone")
1005
+ def keep_empty_zone(self) -> pulumi.Output[Optional[bool]]:
1006
+ """
1007
+ When destroying a resource, if only NS records remain and this is set to `false`, the zone will be deleted. Please note, each zone not deleted will [cost you money](https://www.scaleway.com/en/dns/)
1008
+ """
1009
+ return pulumi.get(self, "keep_empty_zone")
1010
+
1011
+ @property
1012
+ @pulumi.getter
1013
+ def name(self) -> pulumi.Output[str]:
1014
+ """
1015
+ The name of the record (can be an empty string for a root record).
1016
+ """
1017
+ return pulumi.get(self, "name")
1018
+
1019
+ @property
1020
+ @pulumi.getter
1021
+ def priority(self) -> pulumi.Output[int]:
1022
+ """
1023
+ The priority of the record (mostly used with an `MX` record)
1024
+ """
1025
+ return pulumi.get(self, "priority")
1026
+
1027
+ @property
1028
+ @pulumi.getter(name="projectId")
1029
+ def project_id(self) -> pulumi.Output[str]:
1030
+ """
1031
+ The project_id you want to attach the resource to
1032
+ """
1033
+ return pulumi.get(self, "project_id")
1034
+
1035
+ @property
1036
+ @pulumi.getter(name="rootZone")
1037
+ def root_zone(self) -> pulumi.Output[bool]:
1038
+ """
1039
+ Does the DNS zone is the root zone or not
1040
+ """
1041
+ return pulumi.get(self, "root_zone")
1042
+
1043
+ @property
1044
+ @pulumi.getter
1045
+ def ttl(self) -> pulumi.Output[Optional[int]]:
1046
+ """
1047
+ Time To Live of the record in seconds.
1048
+ """
1049
+ return pulumi.get(self, "ttl")
1050
+
1051
+ @property
1052
+ @pulumi.getter
1053
+ def type(self) -> pulumi.Output[str]:
1054
+ """
1055
+ The type of the record (`A`, `AAAA`, `MX`, `CNAME`, `DNAME`, `ALIAS`, `NS`, `PTR`, `SRV`, `TXT`, `TLSA`, or `CAA`).
1056
+ """
1057
+ return pulumi.get(self, "type")
1058
+
1059
+ @property
1060
+ @pulumi.getter
1061
+ def views(self) -> pulumi.Output[Optional[Sequence['outputs.DomainRecordView']]]:
1062
+ """
1063
+ Return record based on client subnet
1064
+ """
1065
+ return pulumi.get(self, "views")
1066
+
1067
+ @property
1068
+ @pulumi.getter
1069
+ def weighteds(self) -> pulumi.Output[Optional[Sequence['outputs.DomainRecordWeighted']]]:
1070
+ """
1071
+ Return record based on weight
1072
+ """
1073
+ return pulumi.get(self, "weighteds")
1074
+