pulumi-digitalocean 4.50.0a1753397929__py3-none-any.whl → 4.50.0a1755187429__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 (28) hide show
  1. pulumi_digitalocean/__init__.py +80 -0
  2. pulumi_digitalocean/_inputs.py +7318 -4599
  3. pulumi_digitalocean/app.py +50 -0
  4. pulumi_digitalocean/database_cluster.py +28 -0
  5. pulumi_digitalocean/database_online_migration.py +460 -0
  6. pulumi_digitalocean/database_redis_config.py +4 -0
  7. pulumi_digitalocean/database_valkey_config.py +804 -0
  8. pulumi_digitalocean/genai_agent_knowledge_base_attachment.py +198 -0
  9. pulumi_digitalocean/genai_agent_route.py +354 -0
  10. pulumi_digitalocean/genai_function.py +464 -0
  11. pulumi_digitalocean/genai_knowledge_base.py +627 -0
  12. pulumi_digitalocean/genai_knowledge_base_data_source.py +220 -0
  13. pulumi_digitalocean/genai_openai_api_key.py +386 -0
  14. pulumi_digitalocean/get_database_cluster.py +15 -1
  15. pulumi_digitalocean/get_database_metrics_credentials.py +120 -0
  16. pulumi_digitalocean/get_genai_agent_versions.py +128 -0
  17. pulumi_digitalocean/get_genai_agents_by_openai_api_key.py +97 -0
  18. pulumi_digitalocean/get_genai_knowledge_base.py +259 -0
  19. pulumi_digitalocean/get_genai_knowledge_base_data_sources.py +97 -0
  20. pulumi_digitalocean/get_genai_knowledge_bases.py +113 -0
  21. pulumi_digitalocean/get_genai_openai_api_key.py +152 -0
  22. pulumi_digitalocean/get_genai_openai_api_keys.py +113 -0
  23. pulumi_digitalocean/outputs.py +15279 -7846
  24. pulumi_digitalocean/pulumi-plugin.json +1 -1
  25. {pulumi_digitalocean-4.50.0a1753397929.dist-info → pulumi_digitalocean-4.50.0a1755187429.dist-info}/METADATA +1 -1
  26. {pulumi_digitalocean-4.50.0a1753397929.dist-info → pulumi_digitalocean-4.50.0a1755187429.dist-info}/RECORD +28 -12
  27. {pulumi_digitalocean-4.50.0a1753397929.dist-info → pulumi_digitalocean-4.50.0a1755187429.dist-info}/WHEEL +0 -0
  28. {pulumi_digitalocean-4.50.0a1753397929.dist-info → pulumi_digitalocean-4.50.0a1755187429.dist-info}/top_level.txt +0 -0
@@ -372,6 +372,31 @@ class App(pulumi.CustomResource):
372
372
  })
373
373
  ```
374
374
 
375
+ ### Maintenance Example
376
+
377
+ ```python
378
+ import pulumi
379
+ import pulumi_digitalocean as digitalocean
380
+
381
+ maintenance_example = digitalocean.App("maintenance-example", spec={
382
+ "name": "maintenance-example",
383
+ "region": "ams",
384
+ "maintenance": {
385
+ "enabled": True,
386
+ "offline_page_url": "https://example.com/maintenance.html",
387
+ },
388
+ "services": [{
389
+ "name": "go-service",
390
+ "instance_count": 1,
391
+ "instance_size_slug": "apps-s-1vcpu-1gb",
392
+ "git": {
393
+ "repo_clone_url": "https://github.com/digitalocean/sample-golang.git",
394
+ "branch": "main",
395
+ },
396
+ }],
397
+ })
398
+ ```
399
+
375
400
  ## Import
376
401
 
377
402
  An app can be imported using its `id`, e.g.
@@ -500,6 +525,31 @@ class App(pulumi.CustomResource):
500
525
  })
501
526
  ```
502
527
 
528
+ ### Maintenance Example
529
+
530
+ ```python
531
+ import pulumi
532
+ import pulumi_digitalocean as digitalocean
533
+
534
+ maintenance_example = digitalocean.App("maintenance-example", spec={
535
+ "name": "maintenance-example",
536
+ "region": "ams",
537
+ "maintenance": {
538
+ "enabled": True,
539
+ "offline_page_url": "https://example.com/maintenance.html",
540
+ },
541
+ "services": [{
542
+ "name": "go-service",
543
+ "instance_count": 1,
544
+ "instance_size_slug": "apps-s-1vcpu-1gb",
545
+ "git": {
546
+ "repo_clone_url": "https://github.com/digitalocean/sample-golang.git",
547
+ "branch": "main",
548
+ },
549
+ }],
550
+ })
551
+ ```
552
+
503
553
  ## Import
504
554
 
505
555
  An app can be imported using its `id`, e.g.
@@ -255,6 +255,7 @@ class _DatabaseClusterState:
255
255
  eviction_policy: Optional[pulumi.Input[_builtins.str]] = None,
256
256
  host: Optional[pulumi.Input[_builtins.str]] = None,
257
257
  maintenance_windows: Optional[pulumi.Input[Sequence[pulumi.Input['DatabaseClusterMaintenanceWindowArgs']]]] = None,
258
+ metrics_endpoints: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
258
259
  name: Optional[pulumi.Input[_builtins.str]] = None,
259
260
  node_count: Optional[pulumi.Input[_builtins.int]] = None,
260
261
  password: Optional[pulumi.Input[_builtins.str]] = None,
@@ -285,6 +286,7 @@ class _DatabaseClusterState:
285
286
  :param pulumi.Input[_builtins.str] eviction_policy: A string specifying the eviction policy for a Valkey cluster. Valid values are: `noeviction`, `allkeys_lru`, `allkeys_random`, `volatile_lru`, `volatile_random`, or `volatile_ttl`.
286
287
  :param pulumi.Input[_builtins.str] host: Database cluster's hostname.
287
288
  :param pulumi.Input[Sequence[pulumi.Input['DatabaseClusterMaintenanceWindowArgs']]] maintenance_windows: Defines when the automatic maintenance should be performed for the database cluster.
289
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] metrics_endpoints: A list of metrics endpoints for the database cluster, providing URLs to access Prometheus-compatible metrics.
288
290
  :param pulumi.Input[_builtins.str] name: The name of the database cluster.
289
291
  :param pulumi.Input[_builtins.int] node_count: Number of nodes that will be included in the cluster. For `kafka` clusters, this must be 3.
290
292
  :param pulumi.Input[_builtins.str] password: Password for the cluster's default user.
@@ -323,6 +325,8 @@ class _DatabaseClusterState:
323
325
  pulumi.set(__self__, "host", host)
324
326
  if maintenance_windows is not None:
325
327
  pulumi.set(__self__, "maintenance_windows", maintenance_windows)
328
+ if metrics_endpoints is not None:
329
+ pulumi.set(__self__, "metrics_endpoints", metrics_endpoints)
326
330
  if name is not None:
327
331
  pulumi.set(__self__, "name", name)
328
332
  if node_count is not None:
@@ -449,6 +453,18 @@ class _DatabaseClusterState:
449
453
  def maintenance_windows(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['DatabaseClusterMaintenanceWindowArgs']]]]):
450
454
  pulumi.set(self, "maintenance_windows", value)
451
455
 
456
+ @_builtins.property
457
+ @pulumi.getter(name="metricsEndpoints")
458
+ def metrics_endpoints(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
459
+ """
460
+ A list of metrics endpoints for the database cluster, providing URLs to access Prometheus-compatible metrics.
461
+ """
462
+ return pulumi.get(self, "metrics_endpoints")
463
+
464
+ @metrics_endpoints.setter
465
+ def metrics_endpoints(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
466
+ pulumi.set(self, "metrics_endpoints", value)
467
+
452
468
  @_builtins.property
453
469
  @pulumi.getter
454
470
  def name(self) -> Optional[pulumi.Input[_builtins.str]]:
@@ -1072,6 +1088,7 @@ class DatabaseCluster(pulumi.CustomResource):
1072
1088
  __props__.__dict__["cluster_urn"] = None
1073
1089
  __props__.__dict__["database"] = None
1074
1090
  __props__.__dict__["host"] = None
1091
+ __props__.__dict__["metrics_endpoints"] = None
1075
1092
  __props__.__dict__["password"] = None
1076
1093
  __props__.__dict__["port"] = None
1077
1094
  __props__.__dict__["private_host"] = None
@@ -1103,6 +1120,7 @@ class DatabaseCluster(pulumi.CustomResource):
1103
1120
  eviction_policy: Optional[pulumi.Input[_builtins.str]] = None,
1104
1121
  host: Optional[pulumi.Input[_builtins.str]] = None,
1105
1122
  maintenance_windows: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DatabaseClusterMaintenanceWindowArgs', 'DatabaseClusterMaintenanceWindowArgsDict']]]]] = None,
1123
+ metrics_endpoints: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1106
1124
  name: Optional[pulumi.Input[_builtins.str]] = None,
1107
1125
  node_count: Optional[pulumi.Input[_builtins.int]] = None,
1108
1126
  password: Optional[pulumi.Input[_builtins.str]] = None,
@@ -1138,6 +1156,7 @@ class DatabaseCluster(pulumi.CustomResource):
1138
1156
  :param pulumi.Input[_builtins.str] eviction_policy: A string specifying the eviction policy for a Valkey cluster. Valid values are: `noeviction`, `allkeys_lru`, `allkeys_random`, `volatile_lru`, `volatile_random`, or `volatile_ttl`.
1139
1157
  :param pulumi.Input[_builtins.str] host: Database cluster's hostname.
1140
1158
  :param pulumi.Input[Sequence[pulumi.Input[Union['DatabaseClusterMaintenanceWindowArgs', 'DatabaseClusterMaintenanceWindowArgsDict']]]] maintenance_windows: Defines when the automatic maintenance should be performed for the database cluster.
1159
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] metrics_endpoints: A list of metrics endpoints for the database cluster, providing URLs to access Prometheus-compatible metrics.
1141
1160
  :param pulumi.Input[_builtins.str] name: The name of the database cluster.
1142
1161
  :param pulumi.Input[_builtins.int] node_count: Number of nodes that will be included in the cluster. For `kafka` clusters, this must be 3.
1143
1162
  :param pulumi.Input[_builtins.str] password: Password for the cluster's default user.
@@ -1173,6 +1192,7 @@ class DatabaseCluster(pulumi.CustomResource):
1173
1192
  __props__.__dict__["eviction_policy"] = eviction_policy
1174
1193
  __props__.__dict__["host"] = host
1175
1194
  __props__.__dict__["maintenance_windows"] = maintenance_windows
1195
+ __props__.__dict__["metrics_endpoints"] = metrics_endpoints
1176
1196
  __props__.__dict__["name"] = name
1177
1197
  __props__.__dict__["node_count"] = node_count
1178
1198
  __props__.__dict__["password"] = password
@@ -1250,6 +1270,14 @@ class DatabaseCluster(pulumi.CustomResource):
1250
1270
  """
1251
1271
  return pulumi.get(self, "maintenance_windows")
1252
1272
 
1273
+ @_builtins.property
1274
+ @pulumi.getter(name="metricsEndpoints")
1275
+ def metrics_endpoints(self) -> pulumi.Output[Sequence[_builtins.str]]:
1276
+ """
1277
+ A list of metrics endpoints for the database cluster, providing URLs to access Prometheus-compatible metrics.
1278
+ """
1279
+ return pulumi.get(self, "metrics_endpoints")
1280
+
1253
1281
  @_builtins.property
1254
1282
  @pulumi.getter
1255
1283
  def name(self) -> pulumi.Output[_builtins.str]:
@@ -0,0 +1,460 @@
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
+ from . import outputs
17
+ from ._inputs import *
18
+
19
+ __all__ = ['DatabaseOnlineMigrationArgs', 'DatabaseOnlineMigration']
20
+
21
+ @pulumi.input_type
22
+ class DatabaseOnlineMigrationArgs:
23
+ def __init__(__self__, *,
24
+ cluster_id: pulumi.Input[_builtins.str],
25
+ source: pulumi.Input['DatabaseOnlineMigrationSourceArgs'],
26
+ disable_ssl: Optional[pulumi.Input[_builtins.bool]] = None,
27
+ ignore_dbs: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None):
28
+ """
29
+ The set of arguments for constructing a DatabaseOnlineMigration resource.
30
+ :param pulumi.Input[_builtins.str] cluster_id: The ID of the target MySQL cluster.
31
+ :param pulumi.Input['DatabaseOnlineMigrationSourceArgs'] source: Configuration for migration
32
+ :param pulumi.Input[_builtins.bool] disable_ssl: When set to true, enables SSL encryption when connecting to the source database.
33
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] ignore_dbs: A list of databases that should be ignored during migration.
34
+ """
35
+ pulumi.set(__self__, "cluster_id", cluster_id)
36
+ pulumi.set(__self__, "source", source)
37
+ if disable_ssl is not None:
38
+ pulumi.set(__self__, "disable_ssl", disable_ssl)
39
+ if ignore_dbs is not None:
40
+ pulumi.set(__self__, "ignore_dbs", ignore_dbs)
41
+
42
+ @_builtins.property
43
+ @pulumi.getter(name="clusterId")
44
+ def cluster_id(self) -> pulumi.Input[_builtins.str]:
45
+ """
46
+ The ID of the target MySQL cluster.
47
+ """
48
+ return pulumi.get(self, "cluster_id")
49
+
50
+ @cluster_id.setter
51
+ def cluster_id(self, value: pulumi.Input[_builtins.str]):
52
+ pulumi.set(self, "cluster_id", value)
53
+
54
+ @_builtins.property
55
+ @pulumi.getter
56
+ def source(self) -> pulumi.Input['DatabaseOnlineMigrationSourceArgs']:
57
+ """
58
+ Configuration for migration
59
+ """
60
+ return pulumi.get(self, "source")
61
+
62
+ @source.setter
63
+ def source(self, value: pulumi.Input['DatabaseOnlineMigrationSourceArgs']):
64
+ pulumi.set(self, "source", value)
65
+
66
+ @_builtins.property
67
+ @pulumi.getter(name="disableSsl")
68
+ def disable_ssl(self) -> Optional[pulumi.Input[_builtins.bool]]:
69
+ """
70
+ When set to true, enables SSL encryption when connecting to the source database.
71
+ """
72
+ return pulumi.get(self, "disable_ssl")
73
+
74
+ @disable_ssl.setter
75
+ def disable_ssl(self, value: Optional[pulumi.Input[_builtins.bool]]):
76
+ pulumi.set(self, "disable_ssl", value)
77
+
78
+ @_builtins.property
79
+ @pulumi.getter(name="ignoreDbs")
80
+ def ignore_dbs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
81
+ """
82
+ A list of databases that should be ignored during migration.
83
+ """
84
+ return pulumi.get(self, "ignore_dbs")
85
+
86
+ @ignore_dbs.setter
87
+ def ignore_dbs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
88
+ pulumi.set(self, "ignore_dbs", value)
89
+
90
+
91
+ @pulumi.input_type
92
+ class _DatabaseOnlineMigrationState:
93
+ def __init__(__self__, *,
94
+ cluster_id: Optional[pulumi.Input[_builtins.str]] = None,
95
+ created_at: Optional[pulumi.Input[_builtins.str]] = None,
96
+ disable_ssl: Optional[pulumi.Input[_builtins.bool]] = None,
97
+ ignore_dbs: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
98
+ source: Optional[pulumi.Input['DatabaseOnlineMigrationSourceArgs']] = None,
99
+ status: Optional[pulumi.Input[_builtins.str]] = None):
100
+ """
101
+ Input properties used for looking up and filtering DatabaseOnlineMigration resources.
102
+ :param pulumi.Input[_builtins.str] cluster_id: The ID of the target MySQL cluster.
103
+ :param pulumi.Input[_builtins.str] created_at: The date and time when the online migration was created
104
+ :param pulumi.Input[_builtins.bool] disable_ssl: When set to true, enables SSL encryption when connecting to the source database.
105
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] ignore_dbs: A list of databases that should be ignored during migration.
106
+ :param pulumi.Input['DatabaseOnlineMigrationSourceArgs'] source: Configuration for migration
107
+ :param pulumi.Input[_builtins.str] status: The status of the online migration
108
+ """
109
+ if cluster_id is not None:
110
+ pulumi.set(__self__, "cluster_id", cluster_id)
111
+ if created_at is not None:
112
+ pulumi.set(__self__, "created_at", created_at)
113
+ if disable_ssl is not None:
114
+ pulumi.set(__self__, "disable_ssl", disable_ssl)
115
+ if ignore_dbs is not None:
116
+ pulumi.set(__self__, "ignore_dbs", ignore_dbs)
117
+ if source is not None:
118
+ pulumi.set(__self__, "source", source)
119
+ if status is not None:
120
+ pulumi.set(__self__, "status", status)
121
+
122
+ @_builtins.property
123
+ @pulumi.getter(name="clusterId")
124
+ def cluster_id(self) -> Optional[pulumi.Input[_builtins.str]]:
125
+ """
126
+ The ID of the target MySQL cluster.
127
+ """
128
+ return pulumi.get(self, "cluster_id")
129
+
130
+ @cluster_id.setter
131
+ def cluster_id(self, value: Optional[pulumi.Input[_builtins.str]]):
132
+ pulumi.set(self, "cluster_id", value)
133
+
134
+ @_builtins.property
135
+ @pulumi.getter(name="createdAt")
136
+ def created_at(self) -> Optional[pulumi.Input[_builtins.str]]:
137
+ """
138
+ The date and time when the online migration was created
139
+ """
140
+ return pulumi.get(self, "created_at")
141
+
142
+ @created_at.setter
143
+ def created_at(self, value: Optional[pulumi.Input[_builtins.str]]):
144
+ pulumi.set(self, "created_at", value)
145
+
146
+ @_builtins.property
147
+ @pulumi.getter(name="disableSsl")
148
+ def disable_ssl(self) -> Optional[pulumi.Input[_builtins.bool]]:
149
+ """
150
+ When set to true, enables SSL encryption when connecting to the source database.
151
+ """
152
+ return pulumi.get(self, "disable_ssl")
153
+
154
+ @disable_ssl.setter
155
+ def disable_ssl(self, value: Optional[pulumi.Input[_builtins.bool]]):
156
+ pulumi.set(self, "disable_ssl", value)
157
+
158
+ @_builtins.property
159
+ @pulumi.getter(name="ignoreDbs")
160
+ def ignore_dbs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
161
+ """
162
+ A list of databases that should be ignored during migration.
163
+ """
164
+ return pulumi.get(self, "ignore_dbs")
165
+
166
+ @ignore_dbs.setter
167
+ def ignore_dbs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
168
+ pulumi.set(self, "ignore_dbs", value)
169
+
170
+ @_builtins.property
171
+ @pulumi.getter
172
+ def source(self) -> Optional[pulumi.Input['DatabaseOnlineMigrationSourceArgs']]:
173
+ """
174
+ Configuration for migration
175
+ """
176
+ return pulumi.get(self, "source")
177
+
178
+ @source.setter
179
+ def source(self, value: Optional[pulumi.Input['DatabaseOnlineMigrationSourceArgs']]):
180
+ pulumi.set(self, "source", value)
181
+
182
+ @_builtins.property
183
+ @pulumi.getter
184
+ def status(self) -> Optional[pulumi.Input[_builtins.str]]:
185
+ """
186
+ The status of the online migration
187
+ """
188
+ return pulumi.get(self, "status")
189
+
190
+ @status.setter
191
+ def status(self, value: Optional[pulumi.Input[_builtins.str]]):
192
+ pulumi.set(self, "status", value)
193
+
194
+
195
+ @pulumi.type_token("digitalocean:index/databaseOnlineMigration:DatabaseOnlineMigration")
196
+ class DatabaseOnlineMigration(pulumi.CustomResource):
197
+ @overload
198
+ def __init__(__self__,
199
+ resource_name: str,
200
+ opts: Optional[pulumi.ResourceOptions] = None,
201
+ cluster_id: Optional[pulumi.Input[_builtins.str]] = None,
202
+ disable_ssl: Optional[pulumi.Input[_builtins.bool]] = None,
203
+ ignore_dbs: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
204
+ source: Optional[pulumi.Input[Union['DatabaseOnlineMigrationSourceArgs', 'DatabaseOnlineMigrationSourceArgsDict']]] = None,
205
+ __props__=None):
206
+ """
207
+ Provides a virtual resource that can be used to start an online migration
208
+ for a DigitalOcean managed database cluster. Migrating a cluster establishes a
209
+ connection with an existing cluster and replicates its contents to the target
210
+ cluster. If the existing database is continuously being written to, the migration
211
+ process will continue for up to two weeks unless it is manually stopped.
212
+ Online migration is only available for MySQL, PostgreSQL, Caching, and Valkey clusters.
213
+
214
+ ## Example Usage
215
+
216
+ ```python
217
+ import pulumi
218
+ import pulumi_digitalocean as digitalocean
219
+
220
+ source = digitalocean.DatabaseCluster("source",
221
+ name="st01",
222
+ engine="mysql",
223
+ version="8",
224
+ size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,
225
+ region=digitalocean.Region.NYC1,
226
+ node_count=1,
227
+ tags=["production"])
228
+ destination = digitalocean.DatabaseCluster("destination",
229
+ name="dt01",
230
+ engine="mysql",
231
+ version="8",
232
+ size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,
233
+ region=digitalocean.Region.NYC1,
234
+ node_count=1,
235
+ tags=["production"])
236
+ source_db = digitalocean.DatabaseDb("source_db",
237
+ cluster_id=source.id,
238
+ name="terraform-db-om-source")
239
+ foobar = digitalocean.DatabaseOnlineMigration("foobar",
240
+ cluster_id=destination.id,
241
+ source={
242
+ "host": source.host,
243
+ "db_name": source_db.name,
244
+ "port": source.port,
245
+ "username": source.user,
246
+ "password": source.password,
247
+ },
248
+ opts = pulumi.ResourceOptions(depends_on=[
249
+ destination,
250
+ source,
251
+ source_db,
252
+ ]))
253
+ ```
254
+
255
+ ## Import
256
+
257
+ A MySQL database cluster's online_migration can be imported using the `id` the parent cluster, e.g.
258
+
259
+ ```sh
260
+ $ pulumi import digitalocean:index/databaseOnlineMigration:DatabaseOnlineMigration example 4b62829a-9c42-465b-aaa3-84051048e712
261
+ ```
262
+
263
+ :param str resource_name: The name of the resource.
264
+ :param pulumi.ResourceOptions opts: Options for the resource.
265
+ :param pulumi.Input[_builtins.str] cluster_id: The ID of the target MySQL cluster.
266
+ :param pulumi.Input[_builtins.bool] disable_ssl: When set to true, enables SSL encryption when connecting to the source database.
267
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] ignore_dbs: A list of databases that should be ignored during migration.
268
+ :param pulumi.Input[Union['DatabaseOnlineMigrationSourceArgs', 'DatabaseOnlineMigrationSourceArgsDict']] source: Configuration for migration
269
+ """
270
+ ...
271
+ @overload
272
+ def __init__(__self__,
273
+ resource_name: str,
274
+ args: DatabaseOnlineMigrationArgs,
275
+ opts: Optional[pulumi.ResourceOptions] = None):
276
+ """
277
+ Provides a virtual resource that can be used to start an online migration
278
+ for a DigitalOcean managed database cluster. Migrating a cluster establishes a
279
+ connection with an existing cluster and replicates its contents to the target
280
+ cluster. If the existing database is continuously being written to, the migration
281
+ process will continue for up to two weeks unless it is manually stopped.
282
+ Online migration is only available for MySQL, PostgreSQL, Caching, and Valkey clusters.
283
+
284
+ ## Example Usage
285
+
286
+ ```python
287
+ import pulumi
288
+ import pulumi_digitalocean as digitalocean
289
+
290
+ source = digitalocean.DatabaseCluster("source",
291
+ name="st01",
292
+ engine="mysql",
293
+ version="8",
294
+ size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,
295
+ region=digitalocean.Region.NYC1,
296
+ node_count=1,
297
+ tags=["production"])
298
+ destination = digitalocean.DatabaseCluster("destination",
299
+ name="dt01",
300
+ engine="mysql",
301
+ version="8",
302
+ size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,
303
+ region=digitalocean.Region.NYC1,
304
+ node_count=1,
305
+ tags=["production"])
306
+ source_db = digitalocean.DatabaseDb("source_db",
307
+ cluster_id=source.id,
308
+ name="terraform-db-om-source")
309
+ foobar = digitalocean.DatabaseOnlineMigration("foobar",
310
+ cluster_id=destination.id,
311
+ source={
312
+ "host": source.host,
313
+ "db_name": source_db.name,
314
+ "port": source.port,
315
+ "username": source.user,
316
+ "password": source.password,
317
+ },
318
+ opts = pulumi.ResourceOptions(depends_on=[
319
+ destination,
320
+ source,
321
+ source_db,
322
+ ]))
323
+ ```
324
+
325
+ ## Import
326
+
327
+ A MySQL database cluster's online_migration can be imported using the `id` the parent cluster, e.g.
328
+
329
+ ```sh
330
+ $ pulumi import digitalocean:index/databaseOnlineMigration:DatabaseOnlineMigration example 4b62829a-9c42-465b-aaa3-84051048e712
331
+ ```
332
+
333
+ :param str resource_name: The name of the resource.
334
+ :param DatabaseOnlineMigrationArgs args: The arguments to use to populate this resource's properties.
335
+ :param pulumi.ResourceOptions opts: Options for the resource.
336
+ """
337
+ ...
338
+ def __init__(__self__, resource_name: str, *args, **kwargs):
339
+ resource_args, opts = _utilities.get_resource_args_opts(DatabaseOnlineMigrationArgs, pulumi.ResourceOptions, *args, **kwargs)
340
+ if resource_args is not None:
341
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
342
+ else:
343
+ __self__._internal_init(resource_name, *args, **kwargs)
344
+
345
+ def _internal_init(__self__,
346
+ resource_name: str,
347
+ opts: Optional[pulumi.ResourceOptions] = None,
348
+ cluster_id: Optional[pulumi.Input[_builtins.str]] = None,
349
+ disable_ssl: Optional[pulumi.Input[_builtins.bool]] = None,
350
+ ignore_dbs: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
351
+ source: Optional[pulumi.Input[Union['DatabaseOnlineMigrationSourceArgs', 'DatabaseOnlineMigrationSourceArgsDict']]] = None,
352
+ __props__=None):
353
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
354
+ if not isinstance(opts, pulumi.ResourceOptions):
355
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
356
+ if opts.id is None:
357
+ if __props__ is not None:
358
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
359
+ __props__ = DatabaseOnlineMigrationArgs.__new__(DatabaseOnlineMigrationArgs)
360
+
361
+ if cluster_id is None and not opts.urn:
362
+ raise TypeError("Missing required property 'cluster_id'")
363
+ __props__.__dict__["cluster_id"] = cluster_id
364
+ __props__.__dict__["disable_ssl"] = disable_ssl
365
+ __props__.__dict__["ignore_dbs"] = ignore_dbs
366
+ if source is None and not opts.urn:
367
+ raise TypeError("Missing required property 'source'")
368
+ __props__.__dict__["source"] = source
369
+ __props__.__dict__["created_at"] = None
370
+ __props__.__dict__["status"] = None
371
+ super(DatabaseOnlineMigration, __self__).__init__(
372
+ 'digitalocean:index/databaseOnlineMigration:DatabaseOnlineMigration',
373
+ resource_name,
374
+ __props__,
375
+ opts)
376
+
377
+ @staticmethod
378
+ def get(resource_name: str,
379
+ id: pulumi.Input[str],
380
+ opts: Optional[pulumi.ResourceOptions] = None,
381
+ cluster_id: Optional[pulumi.Input[_builtins.str]] = None,
382
+ created_at: Optional[pulumi.Input[_builtins.str]] = None,
383
+ disable_ssl: Optional[pulumi.Input[_builtins.bool]] = None,
384
+ ignore_dbs: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
385
+ source: Optional[pulumi.Input[Union['DatabaseOnlineMigrationSourceArgs', 'DatabaseOnlineMigrationSourceArgsDict']]] = None,
386
+ status: Optional[pulumi.Input[_builtins.str]] = None) -> 'DatabaseOnlineMigration':
387
+ """
388
+ Get an existing DatabaseOnlineMigration resource's state with the given name, id, and optional extra
389
+ properties used to qualify the lookup.
390
+
391
+ :param str resource_name: The unique name of the resulting resource.
392
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
393
+ :param pulumi.ResourceOptions opts: Options for the resource.
394
+ :param pulumi.Input[_builtins.str] cluster_id: The ID of the target MySQL cluster.
395
+ :param pulumi.Input[_builtins.str] created_at: The date and time when the online migration was created
396
+ :param pulumi.Input[_builtins.bool] disable_ssl: When set to true, enables SSL encryption when connecting to the source database.
397
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] ignore_dbs: A list of databases that should be ignored during migration.
398
+ :param pulumi.Input[Union['DatabaseOnlineMigrationSourceArgs', 'DatabaseOnlineMigrationSourceArgsDict']] source: Configuration for migration
399
+ :param pulumi.Input[_builtins.str] status: The status of the online migration
400
+ """
401
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
402
+
403
+ __props__ = _DatabaseOnlineMigrationState.__new__(_DatabaseOnlineMigrationState)
404
+
405
+ __props__.__dict__["cluster_id"] = cluster_id
406
+ __props__.__dict__["created_at"] = created_at
407
+ __props__.__dict__["disable_ssl"] = disable_ssl
408
+ __props__.__dict__["ignore_dbs"] = ignore_dbs
409
+ __props__.__dict__["source"] = source
410
+ __props__.__dict__["status"] = status
411
+ return DatabaseOnlineMigration(resource_name, opts=opts, __props__=__props__)
412
+
413
+ @_builtins.property
414
+ @pulumi.getter(name="clusterId")
415
+ def cluster_id(self) -> pulumi.Output[_builtins.str]:
416
+ """
417
+ The ID of the target MySQL cluster.
418
+ """
419
+ return pulumi.get(self, "cluster_id")
420
+
421
+ @_builtins.property
422
+ @pulumi.getter(name="createdAt")
423
+ def created_at(self) -> pulumi.Output[_builtins.str]:
424
+ """
425
+ The date and time when the online migration was created
426
+ """
427
+ return pulumi.get(self, "created_at")
428
+
429
+ @_builtins.property
430
+ @pulumi.getter(name="disableSsl")
431
+ def disable_ssl(self) -> pulumi.Output[Optional[_builtins.bool]]:
432
+ """
433
+ When set to true, enables SSL encryption when connecting to the source database.
434
+ """
435
+ return pulumi.get(self, "disable_ssl")
436
+
437
+ @_builtins.property
438
+ @pulumi.getter(name="ignoreDbs")
439
+ def ignore_dbs(self) -> pulumi.Output[Optional[Sequence[_builtins.str]]]:
440
+ """
441
+ A list of databases that should be ignored during migration.
442
+ """
443
+ return pulumi.get(self, "ignore_dbs")
444
+
445
+ @_builtins.property
446
+ @pulumi.getter
447
+ def source(self) -> pulumi.Output['outputs.DatabaseOnlineMigrationSource']:
448
+ """
449
+ Configuration for migration
450
+ """
451
+ return pulumi.get(self, "source")
452
+
453
+ @_builtins.property
454
+ @pulumi.getter
455
+ def status(self) -> pulumi.Output[_builtins.str]:
456
+ """
457
+ The status of the online migration
458
+ """
459
+ return pulumi.get(self, "status")
460
+
@@ -446,6 +446,8 @@ class DatabaseRedisConfig(pulumi.CustomResource):
446
446
  Provides a virtual resource that can be used to change advanced configuration
447
447
  options for a DigitalOcean managed Redis database cluster.
448
448
 
449
+ > **Note** DigitalOcean managed Redis cluster product is discontinued as of 30 June 2025 and is replaced by the Managed Valkey product. Use the `DatabaseValkeyConfig` resource instead of `DatabaseRedisConfig`
450
+
449
451
  > **Note** Redis configurations are only removed from state when destroyed. The remote configuration is not unset.
450
452
 
451
453
  ## Example Usage
@@ -503,6 +505,8 @@ class DatabaseRedisConfig(pulumi.CustomResource):
503
505
  Provides a virtual resource that can be used to change advanced configuration
504
506
  options for a DigitalOcean managed Redis database cluster.
505
507
 
508
+ > **Note** DigitalOcean managed Redis cluster product is discontinued as of 30 June 2025 and is replaced by the Managed Valkey product. Use the `DatabaseValkeyConfig` resource instead of `DatabaseRedisConfig`
509
+
506
510
  > **Note** Redis configurations are only removed from state when destroyed. The remote configuration is not unset.
507
511
 
508
512
  ## Example Usage