pulumi-digitalocean 4.49.0a1751946418__py3-none-any.whl → 4.50.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 pulumi-digitalocean might be problematic. Click here for more details.

Files changed (134) hide show
  1. pulumi_digitalocean/__init__.py +81 -1
  2. pulumi_digitalocean/_enums.py +9 -9
  3. pulumi_digitalocean/_inputs.py +11204 -8486
  4. pulumi_digitalocean/app.py +137 -88
  5. pulumi_digitalocean/cdn.py +104 -105
  6. pulumi_digitalocean/certificate.py +137 -138
  7. pulumi_digitalocean/config/__init__.py +1 -1
  8. pulumi_digitalocean/config/__init__.pyi +1 -2
  9. pulumi_digitalocean/config/vars.py +10 -11
  10. pulumi_digitalocean/container_registry.py +88 -89
  11. pulumi_digitalocean/container_registry_docker_credentials.py +70 -71
  12. pulumi_digitalocean/custom_image.py +175 -176
  13. pulumi_digitalocean/database_cluster.py +374 -347
  14. pulumi_digitalocean/database_connection_pool.py +157 -158
  15. pulumi_digitalocean/database_db.py +35 -36
  16. pulumi_digitalocean/database_firewall.py +21 -22
  17. pulumi_digitalocean/database_kafka_config.py +307 -308
  18. pulumi_digitalocean/database_kafka_topic.py +81 -82
  19. pulumi_digitalocean/database_mongodb_config.py +103 -104
  20. pulumi_digitalocean/database_mysql_config.py +477 -478
  21. pulumi_digitalocean/database_online_migration.py +460 -0
  22. pulumi_digitalocean/database_opensearch_config.py +664 -665
  23. pulumi_digitalocean/database_postgresql_config.py +857 -858
  24. pulumi_digitalocean/database_redis_config.py +209 -206
  25. pulumi_digitalocean/database_replica.py +197 -198
  26. pulumi_digitalocean/database_user.py +91 -92
  27. pulumi_digitalocean/database_valkey_config.py +804 -0
  28. pulumi_digitalocean/dns_record.py +180 -181
  29. pulumi_digitalocean/domain.py +53 -54
  30. pulumi_digitalocean/droplet.py +388 -389
  31. pulumi_digitalocean/droplet_autoscale.py +53 -54
  32. pulumi_digitalocean/droplet_snapshot.py +71 -72
  33. pulumi_digitalocean/firewall.py +78 -79
  34. pulumi_digitalocean/floating_ip.py +61 -62
  35. pulumi_digitalocean/floating_ip_assignment.py +35 -36
  36. pulumi_digitalocean/genai_agent.py +452 -453
  37. pulumi_digitalocean/genai_agent_knowledge_base_attachment.py +198 -0
  38. pulumi_digitalocean/genai_agent_route.py +354 -0
  39. pulumi_digitalocean/genai_function.py +464 -0
  40. pulumi_digitalocean/genai_knowledge_base.py +627 -0
  41. pulumi_digitalocean/genai_knowledge_base_data_source.py +220 -0
  42. pulumi_digitalocean/genai_openai_api_key.py +386 -0
  43. pulumi_digitalocean/get_account.py +17 -18
  44. pulumi_digitalocean/get_app.py +27 -28
  45. pulumi_digitalocean/get_certificate.py +21 -22
  46. pulumi_digitalocean/get_container_registry.py +21 -22
  47. pulumi_digitalocean/get_database_ca.py +11 -12
  48. pulumi_digitalocean/get_database_cluster.py +75 -62
  49. pulumi_digitalocean/get_database_connection_pool.py +35 -36
  50. pulumi_digitalocean/get_database_metrics_credentials.py +120 -0
  51. pulumi_digitalocean/get_database_replica.py +45 -46
  52. pulumi_digitalocean/get_database_user.py +26 -27
  53. pulumi_digitalocean/get_domain.py +15 -16
  54. pulumi_digitalocean/get_domains.py +6 -7
  55. pulumi_digitalocean/get_droplet.py +71 -72
  56. pulumi_digitalocean/get_droplet_autoscale.py +22 -23
  57. pulumi_digitalocean/get_droplet_snapshot.py +37 -38
  58. pulumi_digitalocean/get_droplets.py +12 -13
  59. pulumi_digitalocean/get_firewall.py +30 -31
  60. pulumi_digitalocean/get_floating_ip.py +15 -16
  61. pulumi_digitalocean/get_genai_agent.py +89 -90
  62. pulumi_digitalocean/get_genai_agent_versions.py +128 -0
  63. pulumi_digitalocean/get_genai_agents.py +10 -11
  64. pulumi_digitalocean/get_genai_agents_by_openai_api_key.py +97 -0
  65. pulumi_digitalocean/get_genai_knowledge_base.py +259 -0
  66. pulumi_digitalocean/get_genai_knowledge_base_data_sources.py +97 -0
  67. pulumi_digitalocean/get_genai_knowledge_bases.py +113 -0
  68. pulumi_digitalocean/get_genai_openai_api_key.py +152 -0
  69. pulumi_digitalocean/get_genai_openai_api_keys.py +113 -0
  70. pulumi_digitalocean/get_image.py +49 -50
  71. pulumi_digitalocean/get_images.py +6 -7
  72. pulumi_digitalocean/get_kubernetes_cluster.py +53 -54
  73. pulumi_digitalocean/get_kubernetes_versions.py +13 -14
  74. pulumi_digitalocean/get_load_balancer.py +59 -60
  75. pulumi_digitalocean/get_partner_attachment.py +30 -31
  76. pulumi_digitalocean/get_partner_attachment_service_key.py +13 -14
  77. pulumi_digitalocean/get_project.py +31 -32
  78. pulumi_digitalocean/get_projects.py +6 -7
  79. pulumi_digitalocean/get_record.py +31 -32
  80. pulumi_digitalocean/get_records.py +12 -13
  81. pulumi_digitalocean/get_region.py +17 -18
  82. pulumi_digitalocean/get_regions.py +6 -7
  83. pulumi_digitalocean/get_reserved_ip.py +15 -16
  84. pulumi_digitalocean/get_reserved_ipv6.py +15 -16
  85. pulumi_digitalocean/get_sizes.py +6 -7
  86. pulumi_digitalocean/get_spaces_bucket.py +21 -22
  87. pulumi_digitalocean/get_spaces_bucket_object.py +57 -58
  88. pulumi_digitalocean/get_spaces_bucket_objects.py +45 -46
  89. pulumi_digitalocean/get_spaces_buckets.py +6 -7
  90. pulumi_digitalocean/get_spaces_key.py +14 -15
  91. pulumi_digitalocean/get_ssh_key.py +13 -14
  92. pulumi_digitalocean/get_ssh_keys.py +6 -7
  93. pulumi_digitalocean/get_tag.py +21 -22
  94. pulumi_digitalocean/get_tags.py +6 -7
  95. pulumi_digitalocean/get_volume.py +33 -34
  96. pulumi_digitalocean/get_volume_snapshot.py +39 -40
  97. pulumi_digitalocean/get_vpc.py +29 -30
  98. pulumi_digitalocean/get_vpc_nat_gateway.py +33 -34
  99. pulumi_digitalocean/get_vpc_peering.py +23 -24
  100. pulumi_digitalocean/kubernetes_cluster.py +293 -294
  101. pulumi_digitalocean/kubernetes_node_pool.py +168 -169
  102. pulumi_digitalocean/load_balancer.py +374 -375
  103. pulumi_digitalocean/monitor_alert.py +149 -150
  104. pulumi_digitalocean/outputs.py +20079 -12647
  105. pulumi_digitalocean/partner_attachment.py +150 -151
  106. pulumi_digitalocean/project.py +139 -140
  107. pulumi_digitalocean/project_resources.py +35 -36
  108. pulumi_digitalocean/provider.py +84 -85
  109. pulumi_digitalocean/pulumi-plugin.json +1 -1
  110. pulumi_digitalocean/reserved_ip.py +61 -62
  111. pulumi_digitalocean/reserved_ip_assignment.py +35 -36
  112. pulumi_digitalocean/reserved_ipv6.py +53 -54
  113. pulumi_digitalocean/reserved_ipv6_assignment.py +35 -36
  114. pulumi_digitalocean/spaces_bucket.py +105 -106
  115. pulumi_digitalocean/spaces_bucket_cors_configuration.py +38 -39
  116. pulumi_digitalocean/spaces_bucket_logging.py +69 -70
  117. pulumi_digitalocean/spaces_bucket_object.py +282 -283
  118. pulumi_digitalocean/spaces_bucket_policy.py +52 -53
  119. pulumi_digitalocean/spaces_key.py +48 -49
  120. pulumi_digitalocean/ssh_key.py +44 -45
  121. pulumi_digitalocean/tag.py +72 -73
  122. pulumi_digitalocean/uptime_alert.py +106 -107
  123. pulumi_digitalocean/uptime_check.py +86 -87
  124. pulumi_digitalocean/volume.py +181 -182
  125. pulumi_digitalocean/volume_attachment.py +35 -36
  126. pulumi_digitalocean/volume_snapshot.py +88 -89
  127. pulumi_digitalocean/vpc.py +96 -97
  128. pulumi_digitalocean/vpc_nat_gateway.py +152 -153
  129. pulumi_digitalocean/vpc_peering.py +53 -54
  130. {pulumi_digitalocean-4.49.0a1751946418.dist-info → pulumi_digitalocean-4.50.0.dist-info}/METADATA +1 -1
  131. pulumi_digitalocean-4.50.0.dist-info/RECORD +135 -0
  132. pulumi_digitalocean-4.49.0a1751946418.dist-info/RECORD +0 -119
  133. {pulumi_digitalocean-4.49.0a1751946418.dist-info → pulumi_digitalocean-4.50.0.dist-info}/WHEEL +0 -0
  134. {pulumi_digitalocean-4.49.0a1751946418.dist-info → pulumi_digitalocean-4.50.0.dist-info}/top_level.txt +0 -0
@@ -2,8 +2,7 @@
2
2
  # *** WARNING: this file was generated by pulumi-language-python. ***
3
3
  # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
4
 
5
- import builtins
6
- import copy
5
+ import builtins as _builtins
7
6
  import warnings
8
7
  import sys
9
8
  import pulumi
@@ -23,12 +22,12 @@ __all__ = ['AppArgs', 'App']
23
22
  class AppArgs:
24
23
  def __init__(__self__, *,
25
24
  dedicated_ips: Optional[pulumi.Input[Sequence[pulumi.Input['AppDedicatedIpArgs']]]] = None,
26
- project_id: Optional[pulumi.Input[builtins.str]] = None,
25
+ project_id: Optional[pulumi.Input[_builtins.str]] = None,
27
26
  spec: Optional[pulumi.Input['AppSpecArgs']] = None):
28
27
  """
29
28
  The set of arguments for constructing a App resource.
30
29
  :param pulumi.Input[Sequence[pulumi.Input['AppDedicatedIpArgs']]] dedicated_ips: The dedicated egress IP addresses associated with the app.
31
- :param pulumi.Input[builtins.str] project_id: The ID of the project that the app is assigned to.
30
+ :param pulumi.Input[_builtins.str] project_id: The ID of the project that the app is assigned to.
32
31
 
33
32
  A spec can contain multiple components.
34
33
 
@@ -42,7 +41,7 @@ class AppArgs:
42
41
  if spec is not None:
43
42
  pulumi.set(__self__, "spec", spec)
44
43
 
45
- @property
44
+ @_builtins.property
46
45
  @pulumi.getter(name="dedicatedIps")
47
46
  def dedicated_ips(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['AppDedicatedIpArgs']]]]:
48
47
  """
@@ -54,9 +53,9 @@ class AppArgs:
54
53
  def dedicated_ips(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['AppDedicatedIpArgs']]]]):
55
54
  pulumi.set(self, "dedicated_ips", value)
56
55
 
57
- @property
56
+ @_builtins.property
58
57
  @pulumi.getter(name="projectId")
59
- def project_id(self) -> Optional[pulumi.Input[builtins.str]]:
58
+ def project_id(self) -> Optional[pulumi.Input[_builtins.str]]:
60
59
  """
61
60
  The ID of the project that the app is assigned to.
62
61
 
@@ -67,10 +66,10 @@ class AppArgs:
67
66
  return pulumi.get(self, "project_id")
68
67
 
69
68
  @project_id.setter
70
- def project_id(self, value: Optional[pulumi.Input[builtins.str]]):
69
+ def project_id(self, value: Optional[pulumi.Input[_builtins.str]]):
71
70
  pulumi.set(self, "project_id", value)
72
71
 
73
- @property
72
+ @_builtins.property
74
73
  @pulumi.getter
75
74
  def spec(self) -> Optional[pulumi.Input['AppSpecArgs']]:
76
75
  """
@@ -86,32 +85,32 @@ class AppArgs:
86
85
  @pulumi.input_type
87
86
  class _AppState:
88
87
  def __init__(__self__, *,
89
- active_deployment_id: Optional[pulumi.Input[builtins.str]] = None,
90
- app_urn: Optional[pulumi.Input[builtins.str]] = None,
91
- created_at: Optional[pulumi.Input[builtins.str]] = None,
88
+ active_deployment_id: Optional[pulumi.Input[_builtins.str]] = None,
89
+ app_urn: Optional[pulumi.Input[_builtins.str]] = None,
90
+ created_at: Optional[pulumi.Input[_builtins.str]] = None,
92
91
  dedicated_ips: Optional[pulumi.Input[Sequence[pulumi.Input['AppDedicatedIpArgs']]]] = None,
93
- default_ingress: Optional[pulumi.Input[builtins.str]] = None,
94
- live_domain: Optional[pulumi.Input[builtins.str]] = None,
95
- live_url: Optional[pulumi.Input[builtins.str]] = None,
96
- project_id: Optional[pulumi.Input[builtins.str]] = None,
92
+ default_ingress: Optional[pulumi.Input[_builtins.str]] = None,
93
+ live_domain: Optional[pulumi.Input[_builtins.str]] = None,
94
+ live_url: Optional[pulumi.Input[_builtins.str]] = None,
95
+ project_id: Optional[pulumi.Input[_builtins.str]] = None,
97
96
  spec: Optional[pulumi.Input['AppSpecArgs']] = None,
98
- updated_at: Optional[pulumi.Input[builtins.str]] = None):
97
+ updated_at: Optional[pulumi.Input[_builtins.str]] = None):
99
98
  """
100
99
  Input properties used for looking up and filtering App resources.
101
- :param pulumi.Input[builtins.str] active_deployment_id: The ID the app's currently active deployment.
102
- :param pulumi.Input[builtins.str] app_urn: The uniform resource identifier for the app.
103
- :param pulumi.Input[builtins.str] created_at: The date and time of when the app was created.
100
+ :param pulumi.Input[_builtins.str] active_deployment_id: The ID the app's currently active deployment.
101
+ :param pulumi.Input[_builtins.str] app_urn: The uniform resource identifier for the app.
102
+ :param pulumi.Input[_builtins.str] created_at: The date and time of when the app was created.
104
103
  :param pulumi.Input[Sequence[pulumi.Input['AppDedicatedIpArgs']]] dedicated_ips: The dedicated egress IP addresses associated with the app.
105
- :param pulumi.Input[builtins.str] default_ingress: The default URL to access the app.
106
- :param pulumi.Input[builtins.str] live_domain: The live domain of the app.
107
- :param pulumi.Input[builtins.str] live_url: The live URL of the app.
108
- :param pulumi.Input[builtins.str] project_id: The ID of the project that the app is assigned to.
104
+ :param pulumi.Input[_builtins.str] default_ingress: The default URL to access the app.
105
+ :param pulumi.Input[_builtins.str] live_domain: The live domain of the app.
106
+ :param pulumi.Input[_builtins.str] live_url: The live URL of the app.
107
+ :param pulumi.Input[_builtins.str] project_id: The ID of the project that the app is assigned to.
109
108
 
110
109
  A spec can contain multiple components.
111
110
 
112
111
  A `service` can contain:
113
112
  :param pulumi.Input['AppSpecArgs'] spec: A DigitalOcean App spec describing the app.
114
- :param pulumi.Input[builtins.str] updated_at: The date and time of when the app was last updated.
113
+ :param pulumi.Input[_builtins.str] updated_at: The date and time of when the app was last updated.
115
114
  """
116
115
  if active_deployment_id is not None:
117
116
  pulumi.set(__self__, "active_deployment_id", active_deployment_id)
@@ -134,43 +133,43 @@ class _AppState:
134
133
  if updated_at is not None:
135
134
  pulumi.set(__self__, "updated_at", updated_at)
136
135
 
137
- @property
136
+ @_builtins.property
138
137
  @pulumi.getter(name="activeDeploymentId")
139
- def active_deployment_id(self) -> Optional[pulumi.Input[builtins.str]]:
138
+ def active_deployment_id(self) -> Optional[pulumi.Input[_builtins.str]]:
140
139
  """
141
140
  The ID the app's currently active deployment.
142
141
  """
143
142
  return pulumi.get(self, "active_deployment_id")
144
143
 
145
144
  @active_deployment_id.setter
146
- def active_deployment_id(self, value: Optional[pulumi.Input[builtins.str]]):
145
+ def active_deployment_id(self, value: Optional[pulumi.Input[_builtins.str]]):
147
146
  pulumi.set(self, "active_deployment_id", value)
148
147
 
149
- @property
148
+ @_builtins.property
150
149
  @pulumi.getter(name="appUrn")
151
- def app_urn(self) -> Optional[pulumi.Input[builtins.str]]:
150
+ def app_urn(self) -> Optional[pulumi.Input[_builtins.str]]:
152
151
  """
153
152
  The uniform resource identifier for the app.
154
153
  """
155
154
  return pulumi.get(self, "app_urn")
156
155
 
157
156
  @app_urn.setter
158
- def app_urn(self, value: Optional[pulumi.Input[builtins.str]]):
157
+ def app_urn(self, value: Optional[pulumi.Input[_builtins.str]]):
159
158
  pulumi.set(self, "app_urn", value)
160
159
 
161
- @property
160
+ @_builtins.property
162
161
  @pulumi.getter(name="createdAt")
163
- def created_at(self) -> Optional[pulumi.Input[builtins.str]]:
162
+ def created_at(self) -> Optional[pulumi.Input[_builtins.str]]:
164
163
  """
165
164
  The date and time of when the app was created.
166
165
  """
167
166
  return pulumi.get(self, "created_at")
168
167
 
169
168
  @created_at.setter
170
- def created_at(self, value: Optional[pulumi.Input[builtins.str]]):
169
+ def created_at(self, value: Optional[pulumi.Input[_builtins.str]]):
171
170
  pulumi.set(self, "created_at", value)
172
171
 
173
- @property
172
+ @_builtins.property
174
173
  @pulumi.getter(name="dedicatedIps")
175
174
  def dedicated_ips(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['AppDedicatedIpArgs']]]]:
176
175
  """
@@ -182,45 +181,45 @@ class _AppState:
182
181
  def dedicated_ips(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['AppDedicatedIpArgs']]]]):
183
182
  pulumi.set(self, "dedicated_ips", value)
184
183
 
185
- @property
184
+ @_builtins.property
186
185
  @pulumi.getter(name="defaultIngress")
187
- def default_ingress(self) -> Optional[pulumi.Input[builtins.str]]:
186
+ def default_ingress(self) -> Optional[pulumi.Input[_builtins.str]]:
188
187
  """
189
188
  The default URL to access the app.
190
189
  """
191
190
  return pulumi.get(self, "default_ingress")
192
191
 
193
192
  @default_ingress.setter
194
- def default_ingress(self, value: Optional[pulumi.Input[builtins.str]]):
193
+ def default_ingress(self, value: Optional[pulumi.Input[_builtins.str]]):
195
194
  pulumi.set(self, "default_ingress", value)
196
195
 
197
- @property
196
+ @_builtins.property
198
197
  @pulumi.getter(name="liveDomain")
199
- def live_domain(self) -> Optional[pulumi.Input[builtins.str]]:
198
+ def live_domain(self) -> Optional[pulumi.Input[_builtins.str]]:
200
199
  """
201
200
  The live domain of the app.
202
201
  """
203
202
  return pulumi.get(self, "live_domain")
204
203
 
205
204
  @live_domain.setter
206
- def live_domain(self, value: Optional[pulumi.Input[builtins.str]]):
205
+ def live_domain(self, value: Optional[pulumi.Input[_builtins.str]]):
207
206
  pulumi.set(self, "live_domain", value)
208
207
 
209
- @property
208
+ @_builtins.property
210
209
  @pulumi.getter(name="liveUrl")
211
- def live_url(self) -> Optional[pulumi.Input[builtins.str]]:
210
+ def live_url(self) -> Optional[pulumi.Input[_builtins.str]]:
212
211
  """
213
212
  The live URL of the app.
214
213
  """
215
214
  return pulumi.get(self, "live_url")
216
215
 
217
216
  @live_url.setter
218
- def live_url(self, value: Optional[pulumi.Input[builtins.str]]):
217
+ def live_url(self, value: Optional[pulumi.Input[_builtins.str]]):
219
218
  pulumi.set(self, "live_url", value)
220
219
 
221
- @property
220
+ @_builtins.property
222
221
  @pulumi.getter(name="projectId")
223
- def project_id(self) -> Optional[pulumi.Input[builtins.str]]:
222
+ def project_id(self) -> Optional[pulumi.Input[_builtins.str]]:
224
223
  """
225
224
  The ID of the project that the app is assigned to.
226
225
 
@@ -231,10 +230,10 @@ class _AppState:
231
230
  return pulumi.get(self, "project_id")
232
231
 
233
232
  @project_id.setter
234
- def project_id(self, value: Optional[pulumi.Input[builtins.str]]):
233
+ def project_id(self, value: Optional[pulumi.Input[_builtins.str]]):
235
234
  pulumi.set(self, "project_id", value)
236
235
 
237
- @property
236
+ @_builtins.property
238
237
  @pulumi.getter
239
238
  def spec(self) -> Optional[pulumi.Input['AppSpecArgs']]:
240
239
  """
@@ -246,16 +245,16 @@ class _AppState:
246
245
  def spec(self, value: Optional[pulumi.Input['AppSpecArgs']]):
247
246
  pulumi.set(self, "spec", value)
248
247
 
249
- @property
248
+ @_builtins.property
250
249
  @pulumi.getter(name="updatedAt")
251
- def updated_at(self) -> Optional[pulumi.Input[builtins.str]]:
250
+ def updated_at(self) -> Optional[pulumi.Input[_builtins.str]]:
252
251
  """
253
252
  The date and time of when the app was last updated.
254
253
  """
255
254
  return pulumi.get(self, "updated_at")
256
255
 
257
256
  @updated_at.setter
258
- def updated_at(self, value: Optional[pulumi.Input[builtins.str]]):
257
+ def updated_at(self, value: Optional[pulumi.Input[_builtins.str]]):
259
258
  pulumi.set(self, "updated_at", value)
260
259
 
261
260
 
@@ -266,7 +265,7 @@ class App(pulumi.CustomResource):
266
265
  resource_name: str,
267
266
  opts: Optional[pulumi.ResourceOptions] = None,
268
267
  dedicated_ips: Optional[pulumi.Input[Sequence[pulumi.Input[Union['AppDedicatedIpArgs', 'AppDedicatedIpArgsDict']]]]] = None,
269
- project_id: Optional[pulumi.Input[builtins.str]] = None,
268
+ project_id: Optional[pulumi.Input[_builtins.str]] = None,
270
269
  spec: Optional[pulumi.Input[Union['AppSpecArgs', 'AppSpecArgsDict']]] = None,
271
270
  __props__=None):
272
271
  """
@@ -373,6 +372,31 @@ class App(pulumi.CustomResource):
373
372
  })
374
373
  ```
375
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
+
376
400
  ## Import
377
401
 
378
402
  An app can be imported using its `id`, e.g.
@@ -384,7 +408,7 @@ class App(pulumi.CustomResource):
384
408
  :param str resource_name: The name of the resource.
385
409
  :param pulumi.ResourceOptions opts: Options for the resource.
386
410
  :param pulumi.Input[Sequence[pulumi.Input[Union['AppDedicatedIpArgs', 'AppDedicatedIpArgsDict']]]] dedicated_ips: The dedicated egress IP addresses associated with the app.
387
- :param pulumi.Input[builtins.str] project_id: The ID of the project that the app is assigned to.
411
+ :param pulumi.Input[_builtins.str] project_id: The ID of the project that the app is assigned to.
388
412
 
389
413
  A spec can contain multiple components.
390
414
 
@@ -501,6 +525,31 @@ class App(pulumi.CustomResource):
501
525
  })
502
526
  ```
503
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
+
504
553
  ## Import
505
554
 
506
555
  An app can be imported using its `id`, e.g.
@@ -525,7 +574,7 @@ class App(pulumi.CustomResource):
525
574
  resource_name: str,
526
575
  opts: Optional[pulumi.ResourceOptions] = None,
527
576
  dedicated_ips: Optional[pulumi.Input[Sequence[pulumi.Input[Union['AppDedicatedIpArgs', 'AppDedicatedIpArgsDict']]]]] = None,
528
- project_id: Optional[pulumi.Input[builtins.str]] = None,
577
+ project_id: Optional[pulumi.Input[_builtins.str]] = None,
529
578
  spec: Optional[pulumi.Input[Union['AppSpecArgs', 'AppSpecArgsDict']]] = None,
530
579
  __props__=None):
531
580
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
@@ -556,16 +605,16 @@ class App(pulumi.CustomResource):
556
605
  def get(resource_name: str,
557
606
  id: pulumi.Input[str],
558
607
  opts: Optional[pulumi.ResourceOptions] = None,
559
- active_deployment_id: Optional[pulumi.Input[builtins.str]] = None,
560
- app_urn: Optional[pulumi.Input[builtins.str]] = None,
561
- created_at: Optional[pulumi.Input[builtins.str]] = None,
608
+ active_deployment_id: Optional[pulumi.Input[_builtins.str]] = None,
609
+ app_urn: Optional[pulumi.Input[_builtins.str]] = None,
610
+ created_at: Optional[pulumi.Input[_builtins.str]] = None,
562
611
  dedicated_ips: Optional[pulumi.Input[Sequence[pulumi.Input[Union['AppDedicatedIpArgs', 'AppDedicatedIpArgsDict']]]]] = None,
563
- default_ingress: Optional[pulumi.Input[builtins.str]] = None,
564
- live_domain: Optional[pulumi.Input[builtins.str]] = None,
565
- live_url: Optional[pulumi.Input[builtins.str]] = None,
566
- project_id: Optional[pulumi.Input[builtins.str]] = None,
612
+ default_ingress: Optional[pulumi.Input[_builtins.str]] = None,
613
+ live_domain: Optional[pulumi.Input[_builtins.str]] = None,
614
+ live_url: Optional[pulumi.Input[_builtins.str]] = None,
615
+ project_id: Optional[pulumi.Input[_builtins.str]] = None,
567
616
  spec: Optional[pulumi.Input[Union['AppSpecArgs', 'AppSpecArgsDict']]] = None,
568
- updated_at: Optional[pulumi.Input[builtins.str]] = None) -> 'App':
617
+ updated_at: Optional[pulumi.Input[_builtins.str]] = None) -> 'App':
569
618
  """
570
619
  Get an existing App resource's state with the given name, id, and optional extra
571
620
  properties used to qualify the lookup.
@@ -573,20 +622,20 @@ class App(pulumi.CustomResource):
573
622
  :param str resource_name: The unique name of the resulting resource.
574
623
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
575
624
  :param pulumi.ResourceOptions opts: Options for the resource.
576
- :param pulumi.Input[builtins.str] active_deployment_id: The ID the app's currently active deployment.
577
- :param pulumi.Input[builtins.str] app_urn: The uniform resource identifier for the app.
578
- :param pulumi.Input[builtins.str] created_at: The date and time of when the app was created.
625
+ :param pulumi.Input[_builtins.str] active_deployment_id: The ID the app's currently active deployment.
626
+ :param pulumi.Input[_builtins.str] app_urn: The uniform resource identifier for the app.
627
+ :param pulumi.Input[_builtins.str] created_at: The date and time of when the app was created.
579
628
  :param pulumi.Input[Sequence[pulumi.Input[Union['AppDedicatedIpArgs', 'AppDedicatedIpArgsDict']]]] dedicated_ips: The dedicated egress IP addresses associated with the app.
580
- :param pulumi.Input[builtins.str] default_ingress: The default URL to access the app.
581
- :param pulumi.Input[builtins.str] live_domain: The live domain of the app.
582
- :param pulumi.Input[builtins.str] live_url: The live URL of the app.
583
- :param pulumi.Input[builtins.str] project_id: The ID of the project that the app is assigned to.
629
+ :param pulumi.Input[_builtins.str] default_ingress: The default URL to access the app.
630
+ :param pulumi.Input[_builtins.str] live_domain: The live domain of the app.
631
+ :param pulumi.Input[_builtins.str] live_url: The live URL of the app.
632
+ :param pulumi.Input[_builtins.str] project_id: The ID of the project that the app is assigned to.
584
633
 
585
634
  A spec can contain multiple components.
586
635
 
587
636
  A `service` can contain:
588
637
  :param pulumi.Input[Union['AppSpecArgs', 'AppSpecArgsDict']] spec: A DigitalOcean App spec describing the app.
589
- :param pulumi.Input[builtins.str] updated_at: The date and time of when the app was last updated.
638
+ :param pulumi.Input[_builtins.str] updated_at: The date and time of when the app was last updated.
590
639
  """
591
640
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
592
641
 
@@ -604,31 +653,31 @@ class App(pulumi.CustomResource):
604
653
  __props__.__dict__["updated_at"] = updated_at
605
654
  return App(resource_name, opts=opts, __props__=__props__)
606
655
 
607
- @property
656
+ @_builtins.property
608
657
  @pulumi.getter(name="activeDeploymentId")
609
- def active_deployment_id(self) -> pulumi.Output[builtins.str]:
658
+ def active_deployment_id(self) -> pulumi.Output[_builtins.str]:
610
659
  """
611
660
  The ID the app's currently active deployment.
612
661
  """
613
662
  return pulumi.get(self, "active_deployment_id")
614
663
 
615
- @property
664
+ @_builtins.property
616
665
  @pulumi.getter(name="appUrn")
617
- def app_urn(self) -> pulumi.Output[builtins.str]:
666
+ def app_urn(self) -> pulumi.Output[_builtins.str]:
618
667
  """
619
668
  The uniform resource identifier for the app.
620
669
  """
621
670
  return pulumi.get(self, "app_urn")
622
671
 
623
- @property
672
+ @_builtins.property
624
673
  @pulumi.getter(name="createdAt")
625
- def created_at(self) -> pulumi.Output[builtins.str]:
674
+ def created_at(self) -> pulumi.Output[_builtins.str]:
626
675
  """
627
676
  The date and time of when the app was created.
628
677
  """
629
678
  return pulumi.get(self, "created_at")
630
679
 
631
- @property
680
+ @_builtins.property
632
681
  @pulumi.getter(name="dedicatedIps")
633
682
  def dedicated_ips(self) -> pulumi.Output[Sequence['outputs.AppDedicatedIp']]:
634
683
  """
@@ -636,33 +685,33 @@ class App(pulumi.CustomResource):
636
685
  """
637
686
  return pulumi.get(self, "dedicated_ips")
638
687
 
639
- @property
688
+ @_builtins.property
640
689
  @pulumi.getter(name="defaultIngress")
641
- def default_ingress(self) -> pulumi.Output[builtins.str]:
690
+ def default_ingress(self) -> pulumi.Output[_builtins.str]:
642
691
  """
643
692
  The default URL to access the app.
644
693
  """
645
694
  return pulumi.get(self, "default_ingress")
646
695
 
647
- @property
696
+ @_builtins.property
648
697
  @pulumi.getter(name="liveDomain")
649
- def live_domain(self) -> pulumi.Output[builtins.str]:
698
+ def live_domain(self) -> pulumi.Output[_builtins.str]:
650
699
  """
651
700
  The live domain of the app.
652
701
  """
653
702
  return pulumi.get(self, "live_domain")
654
703
 
655
- @property
704
+ @_builtins.property
656
705
  @pulumi.getter(name="liveUrl")
657
- def live_url(self) -> pulumi.Output[builtins.str]:
706
+ def live_url(self) -> pulumi.Output[_builtins.str]:
658
707
  """
659
708
  The live URL of the app.
660
709
  """
661
710
  return pulumi.get(self, "live_url")
662
711
 
663
- @property
712
+ @_builtins.property
664
713
  @pulumi.getter(name="projectId")
665
- def project_id(self) -> pulumi.Output[builtins.str]:
714
+ def project_id(self) -> pulumi.Output[_builtins.str]:
666
715
  """
667
716
  The ID of the project that the app is assigned to.
668
717
 
@@ -672,7 +721,7 @@ class App(pulumi.CustomResource):
672
721
  """
673
722
  return pulumi.get(self, "project_id")
674
723
 
675
- @property
724
+ @_builtins.property
676
725
  @pulumi.getter
677
726
  def spec(self) -> pulumi.Output[Optional['outputs.AppSpec']]:
678
727
  """
@@ -680,9 +729,9 @@ class App(pulumi.CustomResource):
680
729
  """
681
730
  return pulumi.get(self, "spec")
682
731
 
683
- @property
732
+ @_builtins.property
684
733
  @pulumi.getter(name="updatedAt")
685
- def updated_at(self) -> pulumi.Output[builtins.str]:
734
+ def updated_at(self) -> pulumi.Output[_builtins.str]:
686
735
  """
687
736
  The date and time of when the app was last updated.
688
737
  """