pulumi-digitalocean 4.46.0a1747979086__py3-none-any.whl → 4.56.0a1766428645__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. pulumi_digitalocean/__init__.py +195 -2
  2. pulumi_digitalocean/_enums.py +10 -10
  3. pulumi_digitalocean/_inputs.py +16851 -4937
  4. pulumi_digitalocean/_utilities.py +1 -1
  5. pulumi_digitalocean/app.py +237 -89
  6. pulumi_digitalocean/byoip_prefix.py +452 -0
  7. pulumi_digitalocean/cdn.py +105 -106
  8. pulumi_digitalocean/certificate.py +138 -139
  9. pulumi_digitalocean/config/__init__.py +2 -2
  10. pulumi_digitalocean/config/__init__.pyi +2 -3
  11. pulumi_digitalocean/config/vars.py +11 -12
  12. pulumi_digitalocean/container_registries.py +285 -0
  13. pulumi_digitalocean/container_registry.py +89 -90
  14. pulumi_digitalocean/container_registry_docker_credentials.py +83 -84
  15. pulumi_digitalocean/custom_image.py +176 -177
  16. pulumi_digitalocean/database_cluster.py +375 -348
  17. pulumi_digitalocean/database_connection_pool.py +158 -159
  18. pulumi_digitalocean/database_db.py +36 -37
  19. pulumi_digitalocean/database_firewall.py +22 -23
  20. pulumi_digitalocean/database_kafka_config.py +308 -309
  21. pulumi_digitalocean/database_kafka_schema_registry.py +360 -0
  22. pulumi_digitalocean/database_kafka_topic.py +82 -83
  23. pulumi_digitalocean/database_logsink_opensearch.py +680 -0
  24. pulumi_digitalocean/database_logsink_rsyslog.py +842 -0
  25. pulumi_digitalocean/database_mongodb_config.py +104 -105
  26. pulumi_digitalocean/database_mysql_config.py +478 -479
  27. pulumi_digitalocean/database_online_migration.py +460 -0
  28. pulumi_digitalocean/database_opensearch_config.py +665 -666
  29. pulumi_digitalocean/database_postgresql_config.py +858 -859
  30. pulumi_digitalocean/database_redis_config.py +210 -207
  31. pulumi_digitalocean/database_replica.py +198 -199
  32. pulumi_digitalocean/database_user.py +92 -93
  33. pulumi_digitalocean/database_valkey_config.py +776 -0
  34. pulumi_digitalocean/dns_record.py +181 -182
  35. pulumi_digitalocean/domain.py +54 -55
  36. pulumi_digitalocean/droplet.py +389 -390
  37. pulumi_digitalocean/droplet_autoscale.py +54 -55
  38. pulumi_digitalocean/droplet_snapshot.py +72 -73
  39. pulumi_digitalocean/firewall.py +79 -80
  40. pulumi_digitalocean/floating_ip.py +62 -63
  41. pulumi_digitalocean/floating_ip_assignment.py +36 -37
  42. pulumi_digitalocean/genai_agent.py +1903 -0
  43. pulumi_digitalocean/genai_agent_knowledge_base_attachment.py +198 -0
  44. pulumi_digitalocean/genai_agent_route.py +354 -0
  45. pulumi_digitalocean/genai_function.py +464 -0
  46. pulumi_digitalocean/genai_indexing_job_cancel.py +542 -0
  47. pulumi_digitalocean/genai_knowledge_base.py +627 -0
  48. pulumi_digitalocean/genai_knowledge_base_data_source.py +220 -0
  49. pulumi_digitalocean/genai_openai_api_key.py +386 -0
  50. pulumi_digitalocean/get_account.py +18 -19
  51. pulumi_digitalocean/get_app.py +28 -29
  52. pulumi_digitalocean/get_byoip_prefix.py +214 -0
  53. pulumi_digitalocean/get_byoip_prefix_resources.py +150 -0
  54. pulumi_digitalocean/get_certificate.py +22 -23
  55. pulumi_digitalocean/get_container_registries.py +151 -0
  56. pulumi_digitalocean/get_container_registry.py +22 -23
  57. pulumi_digitalocean/get_database_ca.py +12 -13
  58. pulumi_digitalocean/get_database_cluster.py +76 -63
  59. pulumi_digitalocean/get_database_connection_pool.py +36 -37
  60. pulumi_digitalocean/get_database_metrics_credentials.py +120 -0
  61. pulumi_digitalocean/get_database_replica.py +46 -47
  62. pulumi_digitalocean/get_database_user.py +27 -28
  63. pulumi_digitalocean/get_domain.py +16 -17
  64. pulumi_digitalocean/get_domains.py +7 -8
  65. pulumi_digitalocean/get_droplet.py +72 -73
  66. pulumi_digitalocean/get_droplet_autoscale.py +23 -24
  67. pulumi_digitalocean/get_droplet_snapshot.py +38 -39
  68. pulumi_digitalocean/get_droplets.py +13 -14
  69. pulumi_digitalocean/get_firewall.py +31 -32
  70. pulumi_digitalocean/get_floating_ip.py +16 -17
  71. pulumi_digitalocean/get_genai_agent.py +572 -0
  72. pulumi_digitalocean/get_genai_agent_versions.py +128 -0
  73. pulumi_digitalocean/get_genai_agents.py +128 -0
  74. pulumi_digitalocean/get_genai_agents_by_openai_api_key.py +97 -0
  75. pulumi_digitalocean/get_genai_indexing_job.py +239 -0
  76. pulumi_digitalocean/get_genai_indexing_job_data_sources.py +97 -0
  77. pulumi_digitalocean/get_genai_knowledge_base.py +259 -0
  78. pulumi_digitalocean/get_genai_knowledge_base_data_sources.py +97 -0
  79. pulumi_digitalocean/get_genai_knowledge_base_indexing_jobs.py +108 -0
  80. pulumi_digitalocean/get_genai_knowledge_bases.py +113 -0
  81. pulumi_digitalocean/get_genai_models.py +113 -0
  82. pulumi_digitalocean/get_genai_openai_api_key.py +152 -0
  83. pulumi_digitalocean/get_genai_openai_api_keys.py +113 -0
  84. pulumi_digitalocean/get_genai_regions.py +113 -0
  85. pulumi_digitalocean/get_image.py +50 -51
  86. pulumi_digitalocean/get_images.py +7 -8
  87. pulumi_digitalocean/get_kubernetes_cluster.py +117 -58
  88. pulumi_digitalocean/get_kubernetes_versions.py +14 -15
  89. pulumi_digitalocean/get_load_balancer.py +60 -61
  90. pulumi_digitalocean/get_nfs.py +205 -0
  91. pulumi_digitalocean/get_nfs_snapshot.py +188 -0
  92. pulumi_digitalocean/get_partner_attachment.py +61 -25
  93. pulumi_digitalocean/get_partner_attachment_service_key.py +118 -0
  94. pulumi_digitalocean/get_project.py +32 -33
  95. pulumi_digitalocean/get_projects.py +7 -8
  96. pulumi_digitalocean/get_record.py +32 -33
  97. pulumi_digitalocean/get_records.py +13 -14
  98. pulumi_digitalocean/get_region.py +18 -19
  99. pulumi_digitalocean/get_regions.py +7 -8
  100. pulumi_digitalocean/get_reserved_ip.py +16 -17
  101. pulumi_digitalocean/get_reserved_ipv6.py +16 -17
  102. pulumi_digitalocean/get_sizes.py +141 -8
  103. pulumi_digitalocean/get_spaces_bucket.py +22 -23
  104. pulumi_digitalocean/get_spaces_bucket_object.py +58 -59
  105. pulumi_digitalocean/get_spaces_bucket_objects.py +46 -47
  106. pulumi_digitalocean/get_spaces_buckets.py +7 -8
  107. pulumi_digitalocean/get_spaces_key.py +15 -16
  108. pulumi_digitalocean/get_ssh_key.py +14 -15
  109. pulumi_digitalocean/get_ssh_keys.py +7 -8
  110. pulumi_digitalocean/get_tag.py +22 -23
  111. pulumi_digitalocean/get_tags.py +7 -8
  112. pulumi_digitalocean/get_volume.py +34 -35
  113. pulumi_digitalocean/get_volume_snapshot.py +40 -41
  114. pulumi_digitalocean/get_vpc.py +30 -31
  115. pulumi_digitalocean/get_vpc_nat_gateway.py +263 -0
  116. pulumi_digitalocean/get_vpc_peering.py +24 -25
  117. pulumi_digitalocean/kubernetes_cluster.py +483 -296
  118. pulumi_digitalocean/kubernetes_node_pool.py +169 -170
  119. pulumi_digitalocean/load_balancer.py +375 -376
  120. pulumi_digitalocean/monitor_alert.py +150 -151
  121. pulumi_digitalocean/nfs.py +481 -0
  122. pulumi_digitalocean/nfs_attachment.py +289 -0
  123. pulumi_digitalocean/nfs_snapshot.py +379 -0
  124. pulumi_digitalocean/outputs.py +26671 -7785
  125. pulumi_digitalocean/partner_attachment.py +231 -110
  126. pulumi_digitalocean/project.py +140 -141
  127. pulumi_digitalocean/project_resources.py +36 -37
  128. pulumi_digitalocean/provider.py +85 -86
  129. pulumi_digitalocean/pulumi-plugin.json +1 -1
  130. pulumi_digitalocean/reserved_ip.py +62 -63
  131. pulumi_digitalocean/reserved_ip_assignment.py +36 -37
  132. pulumi_digitalocean/reserved_ipv6.py +64 -65
  133. pulumi_digitalocean/reserved_ipv6_assignment.py +36 -37
  134. pulumi_digitalocean/spaces_bucket.py +106 -107
  135. pulumi_digitalocean/spaces_bucket_cors_configuration.py +39 -40
  136. pulumi_digitalocean/spaces_bucket_logging.py +70 -71
  137. pulumi_digitalocean/spaces_bucket_object.py +283 -284
  138. pulumi_digitalocean/spaces_bucket_policy.py +53 -54
  139. pulumi_digitalocean/spaces_key.py +49 -50
  140. pulumi_digitalocean/ssh_key.py +45 -46
  141. pulumi_digitalocean/tag.py +73 -74
  142. pulumi_digitalocean/uptime_alert.py +107 -108
  143. pulumi_digitalocean/uptime_check.py +87 -88
  144. pulumi_digitalocean/volume.py +182 -183
  145. pulumi_digitalocean/volume_attachment.py +36 -37
  146. pulumi_digitalocean/volume_snapshot.py +89 -90
  147. pulumi_digitalocean/vpc.py +97 -98
  148. pulumi_digitalocean/vpc_nat_gateway.py +722 -0
  149. pulumi_digitalocean/vpc_peering.py +54 -59
  150. {pulumi_digitalocean-4.46.0a1747979086.dist-info → pulumi_digitalocean-4.56.0a1766428645.dist-info}/METADATA +1 -1
  151. pulumi_digitalocean-4.56.0a1766428645.dist-info/RECORD +154 -0
  152. {pulumi_digitalocean-4.46.0a1747979086.dist-info → pulumi_digitalocean-4.56.0a1766428645.dist-info}/WHEEL +1 -1
  153. pulumi_digitalocean-4.46.0a1747979086.dist-info/RECORD +0 -113
  154. {pulumi_digitalocean-4.46.0a1747979086.dist-info → pulumi_digitalocean-4.56.0a1766428645.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,680 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by pulumi-language-python. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import builtins as _builtins
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
+
17
+ __all__ = ['DatabaseLogsinkOpensearchArgs', 'DatabaseLogsinkOpensearch']
18
+
19
+ @pulumi.input_type
20
+ class DatabaseLogsinkOpensearchArgs:
21
+ def __init__(__self__, *,
22
+ cluster_id: pulumi.Input[_builtins.str],
23
+ endpoint: pulumi.Input[_builtins.str],
24
+ index_prefix: pulumi.Input[_builtins.str],
25
+ ca_cert: Optional[pulumi.Input[_builtins.str]] = None,
26
+ index_days_max: Optional[pulumi.Input[_builtins.int]] = None,
27
+ name: Optional[pulumi.Input[_builtins.str]] = None,
28
+ timeout_seconds: Optional[pulumi.Input[_builtins.int]] = None):
29
+ """
30
+ The set of arguments for constructing a DatabaseLogsinkOpensearch resource.
31
+ :param pulumi.Input[_builtins.str] cluster_id: UUID of the source database cluster that will forward logs.
32
+ :param pulumi.Input[_builtins.str] endpoint: HTTPS URL to the OpenSearch or Elasticsearch cluster (e.g., `https://host:port`). **Note**: Only HTTPS URLs are supported.
33
+ :param pulumi.Input[_builtins.str] index_prefix: Prefix for the indices where logs will be stored.
34
+ :param pulumi.Input[_builtins.str] ca_cert: CA certificate for TLS verification in PEM format. Can be specified using `file()` function. This field is marked as sensitive.
35
+ :param pulumi.Input[_builtins.int] index_days_max: Maximum number of days to retain indices. Must be 1 or greater.
36
+ :param pulumi.Input[_builtins.str] name: Display name for the logsink. **Note**: This is immutable; changing it will force recreation of the resource.
37
+ :param pulumi.Input[_builtins.int] timeout_seconds: Request timeout for log deliveries in seconds. Must be 1 or greater.
38
+ """
39
+ pulumi.set(__self__, "cluster_id", cluster_id)
40
+ pulumi.set(__self__, "endpoint", endpoint)
41
+ pulumi.set(__self__, "index_prefix", index_prefix)
42
+ if ca_cert is not None:
43
+ pulumi.set(__self__, "ca_cert", ca_cert)
44
+ if index_days_max is not None:
45
+ pulumi.set(__self__, "index_days_max", index_days_max)
46
+ if name is not None:
47
+ pulumi.set(__self__, "name", name)
48
+ if timeout_seconds is not None:
49
+ pulumi.set(__self__, "timeout_seconds", timeout_seconds)
50
+
51
+ @_builtins.property
52
+ @pulumi.getter(name="clusterId")
53
+ def cluster_id(self) -> pulumi.Input[_builtins.str]:
54
+ """
55
+ UUID of the source database cluster that will forward logs.
56
+ """
57
+ return pulumi.get(self, "cluster_id")
58
+
59
+ @cluster_id.setter
60
+ def cluster_id(self, value: pulumi.Input[_builtins.str]):
61
+ pulumi.set(self, "cluster_id", value)
62
+
63
+ @_builtins.property
64
+ @pulumi.getter
65
+ def endpoint(self) -> pulumi.Input[_builtins.str]:
66
+ """
67
+ HTTPS URL to the OpenSearch or Elasticsearch cluster (e.g., `https://host:port`). **Note**: Only HTTPS URLs are supported.
68
+ """
69
+ return pulumi.get(self, "endpoint")
70
+
71
+ @endpoint.setter
72
+ def endpoint(self, value: pulumi.Input[_builtins.str]):
73
+ pulumi.set(self, "endpoint", value)
74
+
75
+ @_builtins.property
76
+ @pulumi.getter(name="indexPrefix")
77
+ def index_prefix(self) -> pulumi.Input[_builtins.str]:
78
+ """
79
+ Prefix for the indices where logs will be stored.
80
+ """
81
+ return pulumi.get(self, "index_prefix")
82
+
83
+ @index_prefix.setter
84
+ def index_prefix(self, value: pulumi.Input[_builtins.str]):
85
+ pulumi.set(self, "index_prefix", value)
86
+
87
+ @_builtins.property
88
+ @pulumi.getter(name="caCert")
89
+ def ca_cert(self) -> Optional[pulumi.Input[_builtins.str]]:
90
+ """
91
+ CA certificate for TLS verification in PEM format. Can be specified using `file()` function. This field is marked as sensitive.
92
+ """
93
+ return pulumi.get(self, "ca_cert")
94
+
95
+ @ca_cert.setter
96
+ def ca_cert(self, value: Optional[pulumi.Input[_builtins.str]]):
97
+ pulumi.set(self, "ca_cert", value)
98
+
99
+ @_builtins.property
100
+ @pulumi.getter(name="indexDaysMax")
101
+ def index_days_max(self) -> Optional[pulumi.Input[_builtins.int]]:
102
+ """
103
+ Maximum number of days to retain indices. Must be 1 or greater.
104
+ """
105
+ return pulumi.get(self, "index_days_max")
106
+
107
+ @index_days_max.setter
108
+ def index_days_max(self, value: Optional[pulumi.Input[_builtins.int]]):
109
+ pulumi.set(self, "index_days_max", value)
110
+
111
+ @_builtins.property
112
+ @pulumi.getter
113
+ def name(self) -> Optional[pulumi.Input[_builtins.str]]:
114
+ """
115
+ Display name for the logsink. **Note**: This is immutable; changing it will force recreation of the resource.
116
+ """
117
+ return pulumi.get(self, "name")
118
+
119
+ @name.setter
120
+ def name(self, value: Optional[pulumi.Input[_builtins.str]]):
121
+ pulumi.set(self, "name", value)
122
+
123
+ @_builtins.property
124
+ @pulumi.getter(name="timeoutSeconds")
125
+ def timeout_seconds(self) -> Optional[pulumi.Input[_builtins.int]]:
126
+ """
127
+ Request timeout for log deliveries in seconds. Must be 1 or greater.
128
+ """
129
+ return pulumi.get(self, "timeout_seconds")
130
+
131
+ @timeout_seconds.setter
132
+ def timeout_seconds(self, value: Optional[pulumi.Input[_builtins.int]]):
133
+ pulumi.set(self, "timeout_seconds", value)
134
+
135
+
136
+ @pulumi.input_type
137
+ class _DatabaseLogsinkOpensearchState:
138
+ def __init__(__self__, *,
139
+ ca_cert: Optional[pulumi.Input[_builtins.str]] = None,
140
+ cluster_id: Optional[pulumi.Input[_builtins.str]] = None,
141
+ endpoint: Optional[pulumi.Input[_builtins.str]] = None,
142
+ index_days_max: Optional[pulumi.Input[_builtins.int]] = None,
143
+ index_prefix: Optional[pulumi.Input[_builtins.str]] = None,
144
+ logsink_id: Optional[pulumi.Input[_builtins.str]] = None,
145
+ name: Optional[pulumi.Input[_builtins.str]] = None,
146
+ timeout_seconds: Optional[pulumi.Input[_builtins.int]] = None):
147
+ """
148
+ Input properties used for looking up and filtering DatabaseLogsinkOpensearch resources.
149
+ :param pulumi.Input[_builtins.str] ca_cert: CA certificate for TLS verification in PEM format. Can be specified using `file()` function. This field is marked as sensitive.
150
+ :param pulumi.Input[_builtins.str] cluster_id: UUID of the source database cluster that will forward logs.
151
+ :param pulumi.Input[_builtins.str] endpoint: HTTPS URL to the OpenSearch or Elasticsearch cluster (e.g., `https://host:port`). **Note**: Only HTTPS URLs are supported.
152
+ :param pulumi.Input[_builtins.int] index_days_max: Maximum number of days to retain indices. Must be 1 or greater.
153
+ :param pulumi.Input[_builtins.str] index_prefix: Prefix for the indices where logs will be stored.
154
+ :param pulumi.Input[_builtins.str] logsink_id: The unique identifier for the logsink as returned by the DigitalOcean API.
155
+ :param pulumi.Input[_builtins.str] name: Display name for the logsink. **Note**: This is immutable; changing it will force recreation of the resource.
156
+ :param pulumi.Input[_builtins.int] timeout_seconds: Request timeout for log deliveries in seconds. Must be 1 or greater.
157
+ """
158
+ if ca_cert is not None:
159
+ pulumi.set(__self__, "ca_cert", ca_cert)
160
+ if cluster_id is not None:
161
+ pulumi.set(__self__, "cluster_id", cluster_id)
162
+ if endpoint is not None:
163
+ pulumi.set(__self__, "endpoint", endpoint)
164
+ if index_days_max is not None:
165
+ pulumi.set(__self__, "index_days_max", index_days_max)
166
+ if index_prefix is not None:
167
+ pulumi.set(__self__, "index_prefix", index_prefix)
168
+ if logsink_id is not None:
169
+ pulumi.set(__self__, "logsink_id", logsink_id)
170
+ if name is not None:
171
+ pulumi.set(__self__, "name", name)
172
+ if timeout_seconds is not None:
173
+ pulumi.set(__self__, "timeout_seconds", timeout_seconds)
174
+
175
+ @_builtins.property
176
+ @pulumi.getter(name="caCert")
177
+ def ca_cert(self) -> Optional[pulumi.Input[_builtins.str]]:
178
+ """
179
+ CA certificate for TLS verification in PEM format. Can be specified using `file()` function. This field is marked as sensitive.
180
+ """
181
+ return pulumi.get(self, "ca_cert")
182
+
183
+ @ca_cert.setter
184
+ def ca_cert(self, value: Optional[pulumi.Input[_builtins.str]]):
185
+ pulumi.set(self, "ca_cert", value)
186
+
187
+ @_builtins.property
188
+ @pulumi.getter(name="clusterId")
189
+ def cluster_id(self) -> Optional[pulumi.Input[_builtins.str]]:
190
+ """
191
+ UUID of the source database cluster that will forward logs.
192
+ """
193
+ return pulumi.get(self, "cluster_id")
194
+
195
+ @cluster_id.setter
196
+ def cluster_id(self, value: Optional[pulumi.Input[_builtins.str]]):
197
+ pulumi.set(self, "cluster_id", value)
198
+
199
+ @_builtins.property
200
+ @pulumi.getter
201
+ def endpoint(self) -> Optional[pulumi.Input[_builtins.str]]:
202
+ """
203
+ HTTPS URL to the OpenSearch or Elasticsearch cluster (e.g., `https://host:port`). **Note**: Only HTTPS URLs are supported.
204
+ """
205
+ return pulumi.get(self, "endpoint")
206
+
207
+ @endpoint.setter
208
+ def endpoint(self, value: Optional[pulumi.Input[_builtins.str]]):
209
+ pulumi.set(self, "endpoint", value)
210
+
211
+ @_builtins.property
212
+ @pulumi.getter(name="indexDaysMax")
213
+ def index_days_max(self) -> Optional[pulumi.Input[_builtins.int]]:
214
+ """
215
+ Maximum number of days to retain indices. Must be 1 or greater.
216
+ """
217
+ return pulumi.get(self, "index_days_max")
218
+
219
+ @index_days_max.setter
220
+ def index_days_max(self, value: Optional[pulumi.Input[_builtins.int]]):
221
+ pulumi.set(self, "index_days_max", value)
222
+
223
+ @_builtins.property
224
+ @pulumi.getter(name="indexPrefix")
225
+ def index_prefix(self) -> Optional[pulumi.Input[_builtins.str]]:
226
+ """
227
+ Prefix for the indices where logs will be stored.
228
+ """
229
+ return pulumi.get(self, "index_prefix")
230
+
231
+ @index_prefix.setter
232
+ def index_prefix(self, value: Optional[pulumi.Input[_builtins.str]]):
233
+ pulumi.set(self, "index_prefix", value)
234
+
235
+ @_builtins.property
236
+ @pulumi.getter(name="logsinkId")
237
+ def logsink_id(self) -> Optional[pulumi.Input[_builtins.str]]:
238
+ """
239
+ The unique identifier for the logsink as returned by the DigitalOcean API.
240
+ """
241
+ return pulumi.get(self, "logsink_id")
242
+
243
+ @logsink_id.setter
244
+ def logsink_id(self, value: Optional[pulumi.Input[_builtins.str]]):
245
+ pulumi.set(self, "logsink_id", value)
246
+
247
+ @_builtins.property
248
+ @pulumi.getter
249
+ def name(self) -> Optional[pulumi.Input[_builtins.str]]:
250
+ """
251
+ Display name for the logsink. **Note**: This is immutable; changing it will force recreation of the resource.
252
+ """
253
+ return pulumi.get(self, "name")
254
+
255
+ @name.setter
256
+ def name(self, value: Optional[pulumi.Input[_builtins.str]]):
257
+ pulumi.set(self, "name", value)
258
+
259
+ @_builtins.property
260
+ @pulumi.getter(name="timeoutSeconds")
261
+ def timeout_seconds(self) -> Optional[pulumi.Input[_builtins.int]]:
262
+ """
263
+ Request timeout for log deliveries in seconds. Must be 1 or greater.
264
+ """
265
+ return pulumi.get(self, "timeout_seconds")
266
+
267
+ @timeout_seconds.setter
268
+ def timeout_seconds(self, value: Optional[pulumi.Input[_builtins.int]]):
269
+ pulumi.set(self, "timeout_seconds", value)
270
+
271
+
272
+ @pulumi.type_token("digitalocean:index/databaseLogsinkOpensearch:DatabaseLogsinkOpensearch")
273
+ class DatabaseLogsinkOpensearch(pulumi.CustomResource):
274
+ @overload
275
+ def __init__(__self__,
276
+ resource_name: str,
277
+ opts: Optional[pulumi.ResourceOptions] = None,
278
+ ca_cert: Optional[pulumi.Input[_builtins.str]] = None,
279
+ cluster_id: Optional[pulumi.Input[_builtins.str]] = None,
280
+ endpoint: Optional[pulumi.Input[_builtins.str]] = None,
281
+ index_days_max: Optional[pulumi.Input[_builtins.int]] = None,
282
+ index_prefix: Optional[pulumi.Input[_builtins.str]] = None,
283
+ name: Optional[pulumi.Input[_builtins.str]] = None,
284
+ timeout_seconds: Optional[pulumi.Input[_builtins.int]] = None,
285
+ __props__=None):
286
+ """
287
+ Provides a DigitalOcean database logsink resource allowing you to forward logs from a managed database cluster to an external OpenSearch cluster or Elasticsearch endpoint.
288
+
289
+ This resource is compatible with both OpenSearch and Elasticsearch endpoints due to API compatibility. You can use this resource to connect to either service.
290
+
291
+ This resource supports the following DigitalOcean managed database engines:
292
+
293
+ * PostgreSQL
294
+ * MySQL
295
+ * Kafka
296
+ * Valkey
297
+
298
+ **Note**: MongoDB databases use a different log forwarding mechanism and require Datadog logsinks (not currently available in this provider).
299
+
300
+ ## Example Usage
301
+
302
+ ### Basic OpenSearch configuration
303
+
304
+ ```python
305
+ import pulumi
306
+ import pulumi_digitalocean as digitalocean
307
+
308
+ postgres_example = digitalocean.DatabaseCluster("postgres-example",
309
+ name="example-postgres-cluster",
310
+ engine="pg",
311
+ version="15",
312
+ size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,
313
+ region=digitalocean.Region.NYC1,
314
+ node_count=1)
315
+ example = digitalocean.DatabaseLogsinkOpensearch("example",
316
+ cluster_id=postgres_example.id,
317
+ name="opensearch-logs",
318
+ endpoint="https://opensearch.example.com:9200",
319
+ index_prefix="db-logs",
320
+ index_days_max=7)
321
+ ```
322
+
323
+ ### OpenSearch with authentication and CA certificate
324
+
325
+ ```python
326
+ import pulumi
327
+ import pulumi_digitalocean as digitalocean
328
+ import pulumi_std as std
329
+
330
+ example_secure = digitalocean.DatabaseLogsinkOpensearch("example-secure",
331
+ cluster_id=postgres_example["id"],
332
+ name="opensearch-secure",
333
+ endpoint="https://user:password@opensearch.example.com:9200",
334
+ index_prefix="secure-logs",
335
+ index_days_max=14,
336
+ ca_cert=std.file(input="/path/to/ca.pem").result,
337
+ timeout_seconds=30)
338
+ ```
339
+
340
+ ### Elasticsearch endpoint configuration
341
+
342
+ ```python
343
+ import pulumi
344
+ import pulumi_digitalocean as digitalocean
345
+
346
+ elasticsearch = digitalocean.DatabaseLogsinkOpensearch("elasticsearch",
347
+ cluster_id=postgres_example["id"],
348
+ name="elasticsearch-logs",
349
+ endpoint="https://elasticsearch.example.com:9243",
350
+ index_prefix="es-logs",
351
+ index_days_max=30)
352
+ ```
353
+
354
+ ### MySQL to OpenSearch configuration
355
+
356
+ ```python
357
+ import pulumi
358
+ import pulumi_digitalocean as digitalocean
359
+
360
+ mysql_example = digitalocean.DatabaseCluster("mysql-example",
361
+ name="example-mysql-cluster",
362
+ engine="mysql",
363
+ version="8",
364
+ size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,
365
+ region=digitalocean.Region.NYC1,
366
+ node_count=1)
367
+ mysql = digitalocean.DatabaseLogsinkOpensearch("mysql",
368
+ cluster_id=mysql_example.id,
369
+ name="mysql-logs",
370
+ endpoint="https://opensearch.example.com:9200",
371
+ index_prefix="mysql-logs",
372
+ index_days_max=7)
373
+ ```
374
+
375
+ ## Important Notes
376
+
377
+ ### Elasticsearch Compatibility
378
+ This resource works with both OpenSearch and Elasticsearch endpoints due to their API compatibility. Use the same resource type regardless of whether you're connecting to OpenSearch or Elasticsearch.
379
+
380
+ ### Managed OpenSearch with Trusted Sources
381
+ When forwarding logs to a DigitalOcean Managed OpenSearch cluster with trusted sources enabled, you must manually allow-list the IP addresses of your database cluster nodes.
382
+
383
+ ### Authentication
384
+ Include authentication credentials directly in the endpoint URL using the format `https://username:password@host:port`. Alternatively, configure authentication on your OpenSearch/Elasticsearch cluster to accept connections from your database cluster's IP addresses.
385
+
386
+ ## Import
387
+
388
+ Database logsink OpenSearch resources can be imported using the composite ID format `cluster_id,logsink_id`. For example:
389
+
390
+ ```sh
391
+ $ pulumi import digitalocean:index/databaseLogsinkOpensearch:DatabaseLogsinkOpensearch example 245bcfd0-7f31-4ce6-a2bc-475a116cca97,f38db7c8-1f31-4ce6-a2bc-475a116cca97
392
+ ```
393
+
394
+ **Note**: The cluster ID and logsink ID must be separated by a comma.
395
+
396
+ :param str resource_name: The name of the resource.
397
+ :param pulumi.ResourceOptions opts: Options for the resource.
398
+ :param pulumi.Input[_builtins.str] ca_cert: CA certificate for TLS verification in PEM format. Can be specified using `file()` function. This field is marked as sensitive.
399
+ :param pulumi.Input[_builtins.str] cluster_id: UUID of the source database cluster that will forward logs.
400
+ :param pulumi.Input[_builtins.str] endpoint: HTTPS URL to the OpenSearch or Elasticsearch cluster (e.g., `https://host:port`). **Note**: Only HTTPS URLs are supported.
401
+ :param pulumi.Input[_builtins.int] index_days_max: Maximum number of days to retain indices. Must be 1 or greater.
402
+ :param pulumi.Input[_builtins.str] index_prefix: Prefix for the indices where logs will be stored.
403
+ :param pulumi.Input[_builtins.str] name: Display name for the logsink. **Note**: This is immutable; changing it will force recreation of the resource.
404
+ :param pulumi.Input[_builtins.int] timeout_seconds: Request timeout for log deliveries in seconds. Must be 1 or greater.
405
+ """
406
+ ...
407
+ @overload
408
+ def __init__(__self__,
409
+ resource_name: str,
410
+ args: DatabaseLogsinkOpensearchArgs,
411
+ opts: Optional[pulumi.ResourceOptions] = None):
412
+ """
413
+ Provides a DigitalOcean database logsink resource allowing you to forward logs from a managed database cluster to an external OpenSearch cluster or Elasticsearch endpoint.
414
+
415
+ This resource is compatible with both OpenSearch and Elasticsearch endpoints due to API compatibility. You can use this resource to connect to either service.
416
+
417
+ This resource supports the following DigitalOcean managed database engines:
418
+
419
+ * PostgreSQL
420
+ * MySQL
421
+ * Kafka
422
+ * Valkey
423
+
424
+ **Note**: MongoDB databases use a different log forwarding mechanism and require Datadog logsinks (not currently available in this provider).
425
+
426
+ ## Example Usage
427
+
428
+ ### Basic OpenSearch configuration
429
+
430
+ ```python
431
+ import pulumi
432
+ import pulumi_digitalocean as digitalocean
433
+
434
+ postgres_example = digitalocean.DatabaseCluster("postgres-example",
435
+ name="example-postgres-cluster",
436
+ engine="pg",
437
+ version="15",
438
+ size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,
439
+ region=digitalocean.Region.NYC1,
440
+ node_count=1)
441
+ example = digitalocean.DatabaseLogsinkOpensearch("example",
442
+ cluster_id=postgres_example.id,
443
+ name="opensearch-logs",
444
+ endpoint="https://opensearch.example.com:9200",
445
+ index_prefix="db-logs",
446
+ index_days_max=7)
447
+ ```
448
+
449
+ ### OpenSearch with authentication and CA certificate
450
+
451
+ ```python
452
+ import pulumi
453
+ import pulumi_digitalocean as digitalocean
454
+ import pulumi_std as std
455
+
456
+ example_secure = digitalocean.DatabaseLogsinkOpensearch("example-secure",
457
+ cluster_id=postgres_example["id"],
458
+ name="opensearch-secure",
459
+ endpoint="https://user:password@opensearch.example.com:9200",
460
+ index_prefix="secure-logs",
461
+ index_days_max=14,
462
+ ca_cert=std.file(input="/path/to/ca.pem").result,
463
+ timeout_seconds=30)
464
+ ```
465
+
466
+ ### Elasticsearch endpoint configuration
467
+
468
+ ```python
469
+ import pulumi
470
+ import pulumi_digitalocean as digitalocean
471
+
472
+ elasticsearch = digitalocean.DatabaseLogsinkOpensearch("elasticsearch",
473
+ cluster_id=postgres_example["id"],
474
+ name="elasticsearch-logs",
475
+ endpoint="https://elasticsearch.example.com:9243",
476
+ index_prefix="es-logs",
477
+ index_days_max=30)
478
+ ```
479
+
480
+ ### MySQL to OpenSearch configuration
481
+
482
+ ```python
483
+ import pulumi
484
+ import pulumi_digitalocean as digitalocean
485
+
486
+ mysql_example = digitalocean.DatabaseCluster("mysql-example",
487
+ name="example-mysql-cluster",
488
+ engine="mysql",
489
+ version="8",
490
+ size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,
491
+ region=digitalocean.Region.NYC1,
492
+ node_count=1)
493
+ mysql = digitalocean.DatabaseLogsinkOpensearch("mysql",
494
+ cluster_id=mysql_example.id,
495
+ name="mysql-logs",
496
+ endpoint="https://opensearch.example.com:9200",
497
+ index_prefix="mysql-logs",
498
+ index_days_max=7)
499
+ ```
500
+
501
+ ## Important Notes
502
+
503
+ ### Elasticsearch Compatibility
504
+ This resource works with both OpenSearch and Elasticsearch endpoints due to their API compatibility. Use the same resource type regardless of whether you're connecting to OpenSearch or Elasticsearch.
505
+
506
+ ### Managed OpenSearch with Trusted Sources
507
+ When forwarding logs to a DigitalOcean Managed OpenSearch cluster with trusted sources enabled, you must manually allow-list the IP addresses of your database cluster nodes.
508
+
509
+ ### Authentication
510
+ Include authentication credentials directly in the endpoint URL using the format `https://username:password@host:port`. Alternatively, configure authentication on your OpenSearch/Elasticsearch cluster to accept connections from your database cluster's IP addresses.
511
+
512
+ ## Import
513
+
514
+ Database logsink OpenSearch resources can be imported using the composite ID format `cluster_id,logsink_id`. For example:
515
+
516
+ ```sh
517
+ $ pulumi import digitalocean:index/databaseLogsinkOpensearch:DatabaseLogsinkOpensearch example 245bcfd0-7f31-4ce6-a2bc-475a116cca97,f38db7c8-1f31-4ce6-a2bc-475a116cca97
518
+ ```
519
+
520
+ **Note**: The cluster ID and logsink ID must be separated by a comma.
521
+
522
+ :param str resource_name: The name of the resource.
523
+ :param DatabaseLogsinkOpensearchArgs args: The arguments to use to populate this resource's properties.
524
+ :param pulumi.ResourceOptions opts: Options for the resource.
525
+ """
526
+ ...
527
+ def __init__(__self__, resource_name: str, *args, **kwargs):
528
+ resource_args, opts = _utilities.get_resource_args_opts(DatabaseLogsinkOpensearchArgs, pulumi.ResourceOptions, *args, **kwargs)
529
+ if resource_args is not None:
530
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
531
+ else:
532
+ __self__._internal_init(resource_name, *args, **kwargs)
533
+
534
+ def _internal_init(__self__,
535
+ resource_name: str,
536
+ opts: Optional[pulumi.ResourceOptions] = None,
537
+ ca_cert: Optional[pulumi.Input[_builtins.str]] = None,
538
+ cluster_id: Optional[pulumi.Input[_builtins.str]] = None,
539
+ endpoint: Optional[pulumi.Input[_builtins.str]] = None,
540
+ index_days_max: Optional[pulumi.Input[_builtins.int]] = None,
541
+ index_prefix: Optional[pulumi.Input[_builtins.str]] = None,
542
+ name: Optional[pulumi.Input[_builtins.str]] = None,
543
+ timeout_seconds: Optional[pulumi.Input[_builtins.int]] = None,
544
+ __props__=None):
545
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
546
+ if not isinstance(opts, pulumi.ResourceOptions):
547
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
548
+ if opts.id is None:
549
+ if __props__ is not None:
550
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
551
+ __props__ = DatabaseLogsinkOpensearchArgs.__new__(DatabaseLogsinkOpensearchArgs)
552
+
553
+ __props__.__dict__["ca_cert"] = None if ca_cert is None else pulumi.Output.secret(ca_cert)
554
+ if cluster_id is None and not opts.urn:
555
+ raise TypeError("Missing required property 'cluster_id'")
556
+ __props__.__dict__["cluster_id"] = cluster_id
557
+ if endpoint is None and not opts.urn:
558
+ raise TypeError("Missing required property 'endpoint'")
559
+ __props__.__dict__["endpoint"] = endpoint
560
+ __props__.__dict__["index_days_max"] = index_days_max
561
+ if index_prefix is None and not opts.urn:
562
+ raise TypeError("Missing required property 'index_prefix'")
563
+ __props__.__dict__["index_prefix"] = index_prefix
564
+ __props__.__dict__["name"] = name
565
+ __props__.__dict__["timeout_seconds"] = timeout_seconds
566
+ __props__.__dict__["logsink_id"] = None
567
+ secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["caCert"])
568
+ opts = pulumi.ResourceOptions.merge(opts, secret_opts)
569
+ super(DatabaseLogsinkOpensearch, __self__).__init__(
570
+ 'digitalocean:index/databaseLogsinkOpensearch:DatabaseLogsinkOpensearch',
571
+ resource_name,
572
+ __props__,
573
+ opts)
574
+
575
+ @staticmethod
576
+ def get(resource_name: str,
577
+ id: pulumi.Input[str],
578
+ opts: Optional[pulumi.ResourceOptions] = None,
579
+ ca_cert: Optional[pulumi.Input[_builtins.str]] = None,
580
+ cluster_id: Optional[pulumi.Input[_builtins.str]] = None,
581
+ endpoint: Optional[pulumi.Input[_builtins.str]] = None,
582
+ index_days_max: Optional[pulumi.Input[_builtins.int]] = None,
583
+ index_prefix: Optional[pulumi.Input[_builtins.str]] = None,
584
+ logsink_id: Optional[pulumi.Input[_builtins.str]] = None,
585
+ name: Optional[pulumi.Input[_builtins.str]] = None,
586
+ timeout_seconds: Optional[pulumi.Input[_builtins.int]] = None) -> 'DatabaseLogsinkOpensearch':
587
+ """
588
+ Get an existing DatabaseLogsinkOpensearch resource's state with the given name, id, and optional extra
589
+ properties used to qualify the lookup.
590
+
591
+ :param str resource_name: The unique name of the resulting resource.
592
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
593
+ :param pulumi.ResourceOptions opts: Options for the resource.
594
+ :param pulumi.Input[_builtins.str] ca_cert: CA certificate for TLS verification in PEM format. Can be specified using `file()` function. This field is marked as sensitive.
595
+ :param pulumi.Input[_builtins.str] cluster_id: UUID of the source database cluster that will forward logs.
596
+ :param pulumi.Input[_builtins.str] endpoint: HTTPS URL to the OpenSearch or Elasticsearch cluster (e.g., `https://host:port`). **Note**: Only HTTPS URLs are supported.
597
+ :param pulumi.Input[_builtins.int] index_days_max: Maximum number of days to retain indices. Must be 1 or greater.
598
+ :param pulumi.Input[_builtins.str] index_prefix: Prefix for the indices where logs will be stored.
599
+ :param pulumi.Input[_builtins.str] logsink_id: The unique identifier for the logsink as returned by the DigitalOcean API.
600
+ :param pulumi.Input[_builtins.str] name: Display name for the logsink. **Note**: This is immutable; changing it will force recreation of the resource.
601
+ :param pulumi.Input[_builtins.int] timeout_seconds: Request timeout for log deliveries in seconds. Must be 1 or greater.
602
+ """
603
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
604
+
605
+ __props__ = _DatabaseLogsinkOpensearchState.__new__(_DatabaseLogsinkOpensearchState)
606
+
607
+ __props__.__dict__["ca_cert"] = ca_cert
608
+ __props__.__dict__["cluster_id"] = cluster_id
609
+ __props__.__dict__["endpoint"] = endpoint
610
+ __props__.__dict__["index_days_max"] = index_days_max
611
+ __props__.__dict__["index_prefix"] = index_prefix
612
+ __props__.__dict__["logsink_id"] = logsink_id
613
+ __props__.__dict__["name"] = name
614
+ __props__.__dict__["timeout_seconds"] = timeout_seconds
615
+ return DatabaseLogsinkOpensearch(resource_name, opts=opts, __props__=__props__)
616
+
617
+ @_builtins.property
618
+ @pulumi.getter(name="caCert")
619
+ def ca_cert(self) -> pulumi.Output[Optional[_builtins.str]]:
620
+ """
621
+ CA certificate for TLS verification in PEM format. Can be specified using `file()` function. This field is marked as sensitive.
622
+ """
623
+ return pulumi.get(self, "ca_cert")
624
+
625
+ @_builtins.property
626
+ @pulumi.getter(name="clusterId")
627
+ def cluster_id(self) -> pulumi.Output[_builtins.str]:
628
+ """
629
+ UUID of the source database cluster that will forward logs.
630
+ """
631
+ return pulumi.get(self, "cluster_id")
632
+
633
+ @_builtins.property
634
+ @pulumi.getter
635
+ def endpoint(self) -> pulumi.Output[_builtins.str]:
636
+ """
637
+ HTTPS URL to the OpenSearch or Elasticsearch cluster (e.g., `https://host:port`). **Note**: Only HTTPS URLs are supported.
638
+ """
639
+ return pulumi.get(self, "endpoint")
640
+
641
+ @_builtins.property
642
+ @pulumi.getter(name="indexDaysMax")
643
+ def index_days_max(self) -> pulumi.Output[Optional[_builtins.int]]:
644
+ """
645
+ Maximum number of days to retain indices. Must be 1 or greater.
646
+ """
647
+ return pulumi.get(self, "index_days_max")
648
+
649
+ @_builtins.property
650
+ @pulumi.getter(name="indexPrefix")
651
+ def index_prefix(self) -> pulumi.Output[_builtins.str]:
652
+ """
653
+ Prefix for the indices where logs will be stored.
654
+ """
655
+ return pulumi.get(self, "index_prefix")
656
+
657
+ @_builtins.property
658
+ @pulumi.getter(name="logsinkId")
659
+ def logsink_id(self) -> pulumi.Output[_builtins.str]:
660
+ """
661
+ The unique identifier for the logsink as returned by the DigitalOcean API.
662
+ """
663
+ return pulumi.get(self, "logsink_id")
664
+
665
+ @_builtins.property
666
+ @pulumi.getter
667
+ def name(self) -> pulumi.Output[_builtins.str]:
668
+ """
669
+ Display name for the logsink. **Note**: This is immutable; changing it will force recreation of the resource.
670
+ """
671
+ return pulumi.get(self, "name")
672
+
673
+ @_builtins.property
674
+ @pulumi.getter(name="timeoutSeconds")
675
+ def timeout_seconds(self) -> pulumi.Output[Optional[_builtins.int]]:
676
+ """
677
+ Request timeout for log deliveries in seconds. Must be 1 or greater.
678
+ """
679
+ return pulumi.get(self, "timeout_seconds")
680
+