diff --git a/examples/go.mod b/examples/go.mod
index 07d87f63..600e298f 100644
--- a/examples/go.mod
+++ b/examples/go.mod
@@ -2,7 +2,7 @@ module github.com/pulumi/pulumi-digitalocean/examples/v4
 
 go 1.21
 
-require github.com/pulumi/pulumi/pkg/v3 v3.140.0
+require github.com/pulumi/pulumi/pkg/v3 v3.142.0
 
 require (
 	cloud.google.com/go v0.112.1 // indirect
@@ -123,7 +123,7 @@ require (
 	github.com/pmezard/go-difflib v1.0.0 // indirect
 	github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect
 	github.com/pulumi/esc v0.10.0 // indirect
-	github.com/pulumi/pulumi/sdk/v3 v3.140.0 // indirect
+	github.com/pulumi/pulumi/sdk/v3 v3.142.0 // indirect
 	github.com/rivo/uniseg v0.4.4 // indirect
 	github.com/rogpeppe/go-internal v1.12.0 // indirect
 	github.com/ryanuber/go-glob v1.0.0 // indirect
diff --git a/examples/go.sum b/examples/go.sum
index e2374cde..304740d7 100644
--- a/examples/go.sum
+++ b/examples/go.sum
@@ -339,10 +339,10 @@ github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435
 github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE=
 github.com/pulumi/esc v0.10.0 h1:jzBKzkLVW0mePeanDRfqSQoCJ5yrkux0jIwAkUxpRKE=
 github.com/pulumi/esc v0.10.0/go.mod h1:2Bfa+FWj/xl8CKqRTWbWgDX0SOD4opdQgvYSURTGK2c=
-github.com/pulumi/pulumi/pkg/v3 v3.140.0 h1:/bvHa19HY/6qHWvuAOVII8qr72MDGGczBWlPYlPo3j0=
-github.com/pulumi/pulumi/pkg/v3 v3.140.0/go.mod h1:rcTtSyisd7BzZTugNk/s9zlYgX9S0S10+pha3Tko6yM=
-github.com/pulumi/pulumi/sdk/v3 v3.140.0 h1:+Z/RBvdYg7tBNkBwk4p/FzlV7niBT3TbLAICq/Y0LDU=
-github.com/pulumi/pulumi/sdk/v3 v3.140.0/go.mod h1:PvKsX88co8XuwuPdzolMvew5lZV+4JmZfkeSjj7A6dI=
+github.com/pulumi/pulumi/pkg/v3 v3.142.0 h1:UE8TFyXrlxvPrATpd3Kl3En34KrFIFWOxxNAodywPNU=
+github.com/pulumi/pulumi/pkg/v3 v3.142.0/go.mod h1:3k6WwRIT7veiDnk3Yo2NtqEYX+4dgLCrMIFvEOnjQqI=
+github.com/pulumi/pulumi/sdk/v3 v3.142.0 h1:SmcVddGuvwAh3g3XUVQQ5gVRQUKH1yZ6iETpDNHIHlw=
+github.com/pulumi/pulumi/sdk/v3 v3.142.0/go.mod h1:PvKsX88co8XuwuPdzolMvew5lZV+4JmZfkeSjj7A6dI=
 github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
 github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
 github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
diff --git a/provider/cmd/pulumi-resource-digitalocean/schema.json b/provider/cmd/pulumi-resource-digitalocean/schema.json
index eee3ed5d..a73b1161 100644
--- a/provider/cmd/pulumi-resource-digitalocean/schema.json
+++ b/provider/cmd/pulumi-resource-digitalocean/schema.json
@@ -8783,7 +8783,7 @@
             }
         },
         "digitalocean:index/certificate:Certificate": {
-            "description": "Provides a DigitalOcean Certificate resource that allows you to manage\ncertificates for configuring TLS termination in Load Balancers.\nCertificates created with this resource can be referenced in your\nLoad Balancer configuration via their ID. The certificate can either\nbe a custom one provided by you or automatically generated one with\nLet's Encrypt.\n\n## Example Usage\n\n### Custom Certificate\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * as std from \"@pulumi/std\";\n\nconst cert = new digitalocean.Certificate(\"cert\", {\n    name: \"custom-example\",\n    type: digitalocean.CertificateType.Custom,\n    privateKey: std.file({\n        input: \"/Users/myuser/certs/privkey.pem\",\n    }).then(invoke =\u003e invoke.result),\n    leafCertificate: std.file({\n        input: \"/Users/myuser/certs/cert.pem\",\n    }).then(invoke =\u003e invoke.result),\n    certificateChain: std.file({\n        input: \"/Users/myuser/certs/fullchain.pem\",\n    }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\nimport pulumi_std as std\n\ncert = digitalocean.Certificate(\"cert\",\n    name=\"custom-example\",\n    type=digitalocean.CertificateType.CUSTOM,\n    private_key=std.file(input=\"/Users/myuser/certs/privkey.pem\").result,\n    leaf_certificate=std.file(input=\"/Users/myuser/certs/cert.pem\").result,\n    certificate_chain=std.file(input=\"/Users/myuser/certs/fullchain.pem\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cert = new DigitalOcean.Certificate(\"cert\", new()\n    {\n        Name = \"custom-example\",\n        Type = DigitalOcean.CertificateType.Custom,\n        PrivateKey = Std.File.Invoke(new()\n        {\n            Input = \"/Users/myuser/certs/privkey.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n        LeafCertificate = Std.File.Invoke(new()\n        {\n            Input = \"/Users/myuser/certs/cert.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n        CertificateChain = Std.File.Invoke(new()\n        {\n            Input = \"/Users/myuser/certs/fullchain.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/Users/myuser/certs/privkey.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/Users/myuser/certs/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile2, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/Users/myuser/certs/fullchain.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewCertificate(ctx, \"cert\", \u0026digitalocean.CertificateArgs{\n\t\t\tName:             pulumi.String(\"custom-example\"),\n\t\t\tType:             pulumi.String(digitalocean.CertificateTypeCustom),\n\t\t\tPrivateKey:       pulumi.String(invokeFile.Result),\n\t\t\tLeafCertificate:  pulumi.String(invokeFile1.Result),\n\t\t\tCertificateChain: pulumi.String(invokeFile2.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Certificate;\nimport com.pulumi.digitalocean.CertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var cert = new Certificate(\"cert\", CertificateArgs.builder()\n            .name(\"custom-example\")\n            .type(\"custom\")\n            .privateKey(StdFunctions.file(FileArgs.builder()\n                .input(\"/Users/myuser/certs/privkey.pem\")\n                .build()).result())\n            .leafCertificate(StdFunctions.file(FileArgs.builder()\n                .input(\"/Users/myuser/certs/cert.pem\")\n                .build()).result())\n            .certificateChain(StdFunctions.file(FileArgs.builder()\n                .input(\"/Users/myuser/certs/fullchain.pem\")\n                .build()).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cert:\n    type: digitalocean:Certificate\n    properties:\n      name: custom-example\n      type: custom\n      privateKey:\n        fn::invoke:\n          Function: std:file\n          Arguments:\n            input: /Users/myuser/certs/privkey.pem\n          Return: result\n      leafCertificate:\n        fn::invoke:\n          Function: std:file\n          Arguments:\n            input: /Users/myuser/certs/cert.pem\n          Return: result\n      certificateChain:\n        fn::invoke:\n          Function: std:file\n          Arguments:\n            input: /Users/myuser/certs/fullchain.pem\n          Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Let's Encrypt Certificate\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst cert = new digitalocean.Certificate(\"cert\", {\n    name: \"le-example\",\n    type: digitalocean.CertificateType.LetsEncrypt,\n    domains: [\"example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ncert = digitalocean.Certificate(\"cert\",\n    name=\"le-example\",\n    type=digitalocean.CertificateType.LETS_ENCRYPT,\n    domains=[\"example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cert = new DigitalOcean.Certificate(\"cert\", new()\n    {\n        Name = \"le-example\",\n        Type = DigitalOcean.CertificateType.LetsEncrypt,\n        Domains = new[]\n        {\n            \"example.com\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewCertificate(ctx, \"cert\", \u0026digitalocean.CertificateArgs{\n\t\t\tName: pulumi.String(\"le-example\"),\n\t\t\tType: pulumi.String(digitalocean.CertificateTypeLetsEncrypt),\n\t\t\tDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Certificate;\nimport com.pulumi.digitalocean.CertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var cert = new Certificate(\"cert\", CertificateArgs.builder()\n            .name(\"le-example\")\n            .type(\"lets_encrypt\")\n            .domains(\"example.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cert:\n    type: digitalocean:Certificate\n    properties:\n      name: le-example\n      type: lets_encrypt\n      domains:\n        - example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Use with Other Resources\n\nBoth custom and Let's Encrypt certificates can be used with other resources\nincluding the `digitalocean.LoadBalancer` and `digitalocean.Cdn` resources.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst cert = new digitalocean.Certificate(\"cert\", {\n    name: \"le-example\",\n    type: digitalocean.CertificateType.LetsEncrypt,\n    domains: [\"example.com\"],\n});\n// Create a new Load Balancer with TLS termination\nconst _public = new digitalocean.LoadBalancer(\"public\", {\n    name: \"secure-loadbalancer-1\",\n    region: digitalocean.Region.NYC3,\n    dropletTag: \"backend\",\n    forwardingRules: [{\n        entryPort: 443,\n        entryProtocol: \"https\",\n        targetPort: 80,\n        targetProtocol: \"http\",\n        certificateName: cert.name,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ncert = digitalocean.Certificate(\"cert\",\n    name=\"le-example\",\n    type=digitalocean.CertificateType.LETS_ENCRYPT,\n    domains=[\"example.com\"])\n# Create a new Load Balancer with TLS termination\npublic = digitalocean.LoadBalancer(\"public\",\n    name=\"secure-loadbalancer-1\",\n    region=digitalocean.Region.NYC3,\n    droplet_tag=\"backend\",\n    forwarding_rules=[{\n        \"entry_port\": 443,\n        \"entry_protocol\": \"https\",\n        \"target_port\": 80,\n        \"target_protocol\": \"http\",\n        \"certificate_name\": cert.name,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cert = new DigitalOcean.Certificate(\"cert\", new()\n    {\n        Name = \"le-example\",\n        Type = DigitalOcean.CertificateType.LetsEncrypt,\n        Domains = new[]\n        {\n            \"example.com\",\n        },\n    });\n\n    // Create a new Load Balancer with TLS termination\n    var @public = new DigitalOcean.LoadBalancer(\"public\", new()\n    {\n        Name = \"secure-loadbalancer-1\",\n        Region = DigitalOcean.Region.NYC3,\n        DropletTag = \"backend\",\n        ForwardingRules = new[]\n        {\n            new DigitalOcean.Inputs.LoadBalancerForwardingRuleArgs\n            {\n                EntryPort = 443,\n                EntryProtocol = \"https\",\n                TargetPort = 80,\n                TargetProtocol = \"http\",\n                CertificateName = cert.Name,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcert, err := digitalocean.NewCertificate(ctx, \"cert\", \u0026digitalocean.CertificateArgs{\n\t\t\tName: pulumi.String(\"le-example\"),\n\t\t\tType: pulumi.String(digitalocean.CertificateTypeLetsEncrypt),\n\t\t\tDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a new Load Balancer with TLS termination\n\t\t_, err = digitalocean.NewLoadBalancer(ctx, \"public\", \u0026digitalocean.LoadBalancerArgs{\n\t\t\tName:       pulumi.String(\"secure-loadbalancer-1\"),\n\t\t\tRegion:     pulumi.String(digitalocean.RegionNYC3),\n\t\t\tDropletTag: pulumi.String(\"backend\"),\n\t\t\tForwardingRules: digitalocean.LoadBalancerForwardingRuleArray{\n\t\t\t\t\u0026digitalocean.LoadBalancerForwardingRuleArgs{\n\t\t\t\t\tEntryPort:       pulumi.Int(443),\n\t\t\t\t\tEntryProtocol:   pulumi.String(\"https\"),\n\t\t\t\t\tTargetPort:      pulumi.Int(80),\n\t\t\t\t\tTargetProtocol:  pulumi.String(\"http\"),\n\t\t\t\t\tCertificateName: cert.Name,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Certificate;\nimport com.pulumi.digitalocean.CertificateArgs;\nimport com.pulumi.digitalocean.LoadBalancer;\nimport com.pulumi.digitalocean.LoadBalancerArgs;\nimport com.pulumi.digitalocean.inputs.LoadBalancerForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var cert = new Certificate(\"cert\", CertificateArgs.builder()\n            .name(\"le-example\")\n            .type(\"lets_encrypt\")\n            .domains(\"example.com\")\n            .build());\n\n        // Create a new Load Balancer with TLS termination\n        var public_ = new LoadBalancer(\"public\", LoadBalancerArgs.builder()\n            .name(\"secure-loadbalancer-1\")\n            .region(\"nyc3\")\n            .dropletTag(\"backend\")\n            .forwardingRules(LoadBalancerForwardingRuleArgs.builder()\n                .entryPort(443)\n                .entryProtocol(\"https\")\n                .targetPort(80)\n                .targetProtocol(\"http\")\n                .certificateName(cert.name())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cert:\n    type: digitalocean:Certificate\n    properties:\n      name: le-example\n      type: lets_encrypt\n      domains:\n        - example.com\n  # Create a new Load Balancer with TLS termination\n  public:\n    type: digitalocean:LoadBalancer\n    properties:\n      name: secure-loadbalancer-1\n      region: nyc3\n      dropletTag: backend\n      forwardingRules:\n        - entryPort: 443\n          entryProtocol: https\n          targetPort: 80\n          targetProtocol: http\n          certificateName: ${cert.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificates can be imported using the certificate `name`, e.g.\n\n```sh\n$ pulumi import digitalocean:index/certificate:Certificate mycertificate cert-01\n```\n\n",
+            "description": "Provides a DigitalOcean Certificate resource that allows you to manage\ncertificates for configuring TLS termination in Load Balancers.\nCertificates created with this resource can be referenced in your\nLoad Balancer configuration via their ID. The certificate can either\nbe a custom one provided by you or automatically generated one with\nLet's Encrypt.\n\n## Example Usage\n\n### Custom Certificate\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * as std from \"@pulumi/std\";\n\nconst cert = new digitalocean.Certificate(\"cert\", {\n    name: \"custom-example\",\n    type: digitalocean.CertificateType.Custom,\n    privateKey: std.file({\n        input: \"/Users/myuser/certs/privkey.pem\",\n    }).then(invoke =\u003e invoke.result),\n    leafCertificate: std.file({\n        input: \"/Users/myuser/certs/cert.pem\",\n    }).then(invoke =\u003e invoke.result),\n    certificateChain: std.file({\n        input: \"/Users/myuser/certs/fullchain.pem\",\n    }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\nimport pulumi_std as std\n\ncert = digitalocean.Certificate(\"cert\",\n    name=\"custom-example\",\n    type=digitalocean.CertificateType.CUSTOM,\n    private_key=std.file(input=\"/Users/myuser/certs/privkey.pem\").result,\n    leaf_certificate=std.file(input=\"/Users/myuser/certs/cert.pem\").result,\n    certificate_chain=std.file(input=\"/Users/myuser/certs/fullchain.pem\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cert = new DigitalOcean.Certificate(\"cert\", new()\n    {\n        Name = \"custom-example\",\n        Type = DigitalOcean.CertificateType.Custom,\n        PrivateKey = Std.File.Invoke(new()\n        {\n            Input = \"/Users/myuser/certs/privkey.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n        LeafCertificate = Std.File.Invoke(new()\n        {\n            Input = \"/Users/myuser/certs/cert.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n        CertificateChain = Std.File.Invoke(new()\n        {\n            Input = \"/Users/myuser/certs/fullchain.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/Users/myuser/certs/privkey.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/Users/myuser/certs/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile2, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/Users/myuser/certs/fullchain.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewCertificate(ctx, \"cert\", \u0026digitalocean.CertificateArgs{\n\t\t\tName:             pulumi.String(\"custom-example\"),\n\t\t\tType:             pulumi.String(digitalocean.CertificateTypeCustom),\n\t\t\tPrivateKey:       pulumi.String(invokeFile.Result),\n\t\t\tLeafCertificate:  pulumi.String(invokeFile1.Result),\n\t\t\tCertificateChain: pulumi.String(invokeFile2.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Certificate;\nimport com.pulumi.digitalocean.CertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var cert = new Certificate(\"cert\", CertificateArgs.builder()\n            .name(\"custom-example\")\n            .type(\"custom\")\n            .privateKey(StdFunctions.file(FileArgs.builder()\n                .input(\"/Users/myuser/certs/privkey.pem\")\n                .build()).result())\n            .leafCertificate(StdFunctions.file(FileArgs.builder()\n                .input(\"/Users/myuser/certs/cert.pem\")\n                .build()).result())\n            .certificateChain(StdFunctions.file(FileArgs.builder()\n                .input(\"/Users/myuser/certs/fullchain.pem\")\n                .build()).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cert:\n    type: digitalocean:Certificate\n    properties:\n      name: custom-example\n      type: custom\n      privateKey:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: /Users/myuser/certs/privkey.pem\n          return: result\n      leafCertificate:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: /Users/myuser/certs/cert.pem\n          return: result\n      certificateChain:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: /Users/myuser/certs/fullchain.pem\n          return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Let's Encrypt Certificate\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst cert = new digitalocean.Certificate(\"cert\", {\n    name: \"le-example\",\n    type: digitalocean.CertificateType.LetsEncrypt,\n    domains: [\"example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ncert = digitalocean.Certificate(\"cert\",\n    name=\"le-example\",\n    type=digitalocean.CertificateType.LETS_ENCRYPT,\n    domains=[\"example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cert = new DigitalOcean.Certificate(\"cert\", new()\n    {\n        Name = \"le-example\",\n        Type = DigitalOcean.CertificateType.LetsEncrypt,\n        Domains = new[]\n        {\n            \"example.com\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewCertificate(ctx, \"cert\", \u0026digitalocean.CertificateArgs{\n\t\t\tName: pulumi.String(\"le-example\"),\n\t\t\tType: pulumi.String(digitalocean.CertificateTypeLetsEncrypt),\n\t\t\tDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Certificate;\nimport com.pulumi.digitalocean.CertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var cert = new Certificate(\"cert\", CertificateArgs.builder()\n            .name(\"le-example\")\n            .type(\"lets_encrypt\")\n            .domains(\"example.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cert:\n    type: digitalocean:Certificate\n    properties:\n      name: le-example\n      type: lets_encrypt\n      domains:\n        - example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Use with Other Resources\n\nBoth custom and Let's Encrypt certificates can be used with other resources\nincluding the `digitalocean.LoadBalancer` and `digitalocean.Cdn` resources.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst cert = new digitalocean.Certificate(\"cert\", {\n    name: \"le-example\",\n    type: digitalocean.CertificateType.LetsEncrypt,\n    domains: [\"example.com\"],\n});\n// Create a new Load Balancer with TLS termination\nconst _public = new digitalocean.LoadBalancer(\"public\", {\n    name: \"secure-loadbalancer-1\",\n    region: digitalocean.Region.NYC3,\n    dropletTag: \"backend\",\n    forwardingRules: [{\n        entryPort: 443,\n        entryProtocol: \"https\",\n        targetPort: 80,\n        targetProtocol: \"http\",\n        certificateName: cert.name,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ncert = digitalocean.Certificate(\"cert\",\n    name=\"le-example\",\n    type=digitalocean.CertificateType.LETS_ENCRYPT,\n    domains=[\"example.com\"])\n# Create a new Load Balancer with TLS termination\npublic = digitalocean.LoadBalancer(\"public\",\n    name=\"secure-loadbalancer-1\",\n    region=digitalocean.Region.NYC3,\n    droplet_tag=\"backend\",\n    forwarding_rules=[{\n        \"entry_port\": 443,\n        \"entry_protocol\": \"https\",\n        \"target_port\": 80,\n        \"target_protocol\": \"http\",\n        \"certificate_name\": cert.name,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cert = new DigitalOcean.Certificate(\"cert\", new()\n    {\n        Name = \"le-example\",\n        Type = DigitalOcean.CertificateType.LetsEncrypt,\n        Domains = new[]\n        {\n            \"example.com\",\n        },\n    });\n\n    // Create a new Load Balancer with TLS termination\n    var @public = new DigitalOcean.LoadBalancer(\"public\", new()\n    {\n        Name = \"secure-loadbalancer-1\",\n        Region = DigitalOcean.Region.NYC3,\n        DropletTag = \"backend\",\n        ForwardingRules = new[]\n        {\n            new DigitalOcean.Inputs.LoadBalancerForwardingRuleArgs\n            {\n                EntryPort = 443,\n                EntryProtocol = \"https\",\n                TargetPort = 80,\n                TargetProtocol = \"http\",\n                CertificateName = cert.Name,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcert, err := digitalocean.NewCertificate(ctx, \"cert\", \u0026digitalocean.CertificateArgs{\n\t\t\tName: pulumi.String(\"le-example\"),\n\t\t\tType: pulumi.String(digitalocean.CertificateTypeLetsEncrypt),\n\t\t\tDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a new Load Balancer with TLS termination\n\t\t_, err = digitalocean.NewLoadBalancer(ctx, \"public\", \u0026digitalocean.LoadBalancerArgs{\n\t\t\tName:       pulumi.String(\"secure-loadbalancer-1\"),\n\t\t\tRegion:     pulumi.String(digitalocean.RegionNYC3),\n\t\t\tDropletTag: pulumi.String(\"backend\"),\n\t\t\tForwardingRules: digitalocean.LoadBalancerForwardingRuleArray{\n\t\t\t\t\u0026digitalocean.LoadBalancerForwardingRuleArgs{\n\t\t\t\t\tEntryPort:       pulumi.Int(443),\n\t\t\t\t\tEntryProtocol:   pulumi.String(\"https\"),\n\t\t\t\t\tTargetPort:      pulumi.Int(80),\n\t\t\t\t\tTargetProtocol:  pulumi.String(\"http\"),\n\t\t\t\t\tCertificateName: cert.Name,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Certificate;\nimport com.pulumi.digitalocean.CertificateArgs;\nimport com.pulumi.digitalocean.LoadBalancer;\nimport com.pulumi.digitalocean.LoadBalancerArgs;\nimport com.pulumi.digitalocean.inputs.LoadBalancerForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var cert = new Certificate(\"cert\", CertificateArgs.builder()\n            .name(\"le-example\")\n            .type(\"lets_encrypt\")\n            .domains(\"example.com\")\n            .build());\n\n        // Create a new Load Balancer with TLS termination\n        var public_ = new LoadBalancer(\"public\", LoadBalancerArgs.builder()\n            .name(\"secure-loadbalancer-1\")\n            .region(\"nyc3\")\n            .dropletTag(\"backend\")\n            .forwardingRules(LoadBalancerForwardingRuleArgs.builder()\n                .entryPort(443)\n                .entryProtocol(\"https\")\n                .targetPort(80)\n                .targetProtocol(\"http\")\n                .certificateName(cert.name())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cert:\n    type: digitalocean:Certificate\n    properties:\n      name: le-example\n      type: lets_encrypt\n      domains:\n        - example.com\n  # Create a new Load Balancer with TLS termination\n  public:\n    type: digitalocean:LoadBalancer\n    properties:\n      name: secure-loadbalancer-1\n      region: nyc3\n      dropletTag: backend\n      forwardingRules:\n        - entryPort: 443\n          entryProtocol: https\n          targetPort: 80\n          targetProtocol: http\n          certificateName: ${cert.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificates can be imported using the certificate `name`, e.g.\n\n```sh\n$ pulumi import digitalocean:index/certificate:Certificate mycertificate cert-01\n```\n\n",
             "properties": {
                 "certificateChain": {
                     "type": "string",
@@ -9044,7 +9044,7 @@
             }
         },
         "digitalocean:index/containerRegistryDockerCredentials:ContainerRegistryDockerCredentials": {
-            "description": "Get Docker credentials for your DigitalOcean container registry.\n\nAn error is triggered if the provided container registry name does not exist.\n\n## Example Usage\n\n### Basic Example\n\nGet the container registry:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = new digitalocean.ContainerRegistryDockerCredentials(\"example\", {registryName: \"example\"});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.ContainerRegistryDockerCredentials(\"example\", registry_name=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new DigitalOcean.ContainerRegistryDockerCredentials(\"example\", new()\n    {\n        RegistryName = \"example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewContainerRegistryDockerCredentials(ctx, \"example\", \u0026digitalocean.ContainerRegistryDockerCredentialsArgs{\n\t\t\tRegistryName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentials;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new ContainerRegistryDockerCredentials(\"example\", ContainerRegistryDockerCredentialsArgs.builder()\n            .registryName(\"example\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:ContainerRegistryDockerCredentials\n    properties:\n      registryName: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Docker Provider Example\n\nUse the `endpoint` and `docker_credentials` with the Docker provider:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getContainerRegistry({\n    name: \"example\",\n});\nconst exampleContainerRegistryDockerCredentials = new digitalocean.ContainerRegistryDockerCredentials(\"example\", {registryName: \"example\"});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_container_registry(name=\"example\")\nexample_container_registry_docker_credentials = digitalocean.ContainerRegistryDockerCredentials(\"example\", registry_name=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetContainerRegistry.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleContainerRegistryDockerCredentials = new DigitalOcean.ContainerRegistryDockerCredentials(\"example\", new()\n    {\n        RegistryName = \"example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupContainerRegistry(ctx, \u0026digitalocean.LookupContainerRegistryArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewContainerRegistryDockerCredentials(ctx, \"example\", \u0026digitalocean.ContainerRegistryDockerCredentialsArgs{\n\t\t\tRegistryName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetContainerRegistryArgs;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentials;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getContainerRegistry(GetContainerRegistryArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleContainerRegistryDockerCredentials = new ContainerRegistryDockerCredentials(\"exampleContainerRegistryDockerCredentials\", ContainerRegistryDockerCredentialsArgs.builder()\n            .registryName(\"example\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleContainerRegistryDockerCredentials:\n    type: digitalocean:ContainerRegistryDockerCredentials\n    name: example\n    properties:\n      registryName: example\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getContainerRegistry\n      Arguments:\n        name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Kubernetes Example\n\nCombined with the Kubernetes Provider's `kubernetes_secret` resource, you can\naccess the registry from inside your cluster:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * as kubernetes from \"@pulumi/kubernetes\";\n\nconst exampleContainerRegistryDockerCredentials = new digitalocean.ContainerRegistryDockerCredentials(\"example\", {registryName: \"example\"});\nconst example = digitalocean.getKubernetesCluster({\n    name: \"prod-cluster-01\",\n});\nconst exampleSecret = new kubernetes.core.v1.Secret(\"example\", {\n    metadata: {\n        name: \"docker-cfg\",\n    },\n    data: {\n        \".dockerconfigjson\": exampleContainerRegistryDockerCredentials.dockerCredentials,\n    },\n    type: \"kubernetes.io/dockerconfigjson\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\nimport pulumi_kubernetes as kubernetes\n\nexample_container_registry_docker_credentials = digitalocean.ContainerRegistryDockerCredentials(\"example\", registry_name=\"example\")\nexample = digitalocean.get_kubernetes_cluster(name=\"prod-cluster-01\")\nexample_secret = kubernetes.core.v1.Secret(\"example\",\n    metadata={\n        \"name\": \"docker-cfg\",\n    },\n    data={\n        \".dockerconfigjson\": example_container_registry_docker_credentials.docker_credentials,\n    },\n    type=\"kubernetes.io/dockerconfigjson\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\nusing Kubernetes = Pulumi.Kubernetes;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleContainerRegistryDockerCredentials = new DigitalOcean.ContainerRegistryDockerCredentials(\"example\", new()\n    {\n        RegistryName = \"example\",\n    });\n\n    var example = DigitalOcean.GetKubernetesCluster.Invoke(new()\n    {\n        Name = \"prod-cluster-01\",\n    });\n\n    var exampleSecret = new Kubernetes.Core.V1.Secret(\"example\", new()\n    {\n        Metadata = new Kubernetes.Types.Inputs.Meta.V1.ObjectMetaArgs\n        {\n            Name = \"docker-cfg\",\n        },\n        Data = \n        {\n            { \".dockerconfigjson\", exampleContainerRegistryDockerCredentials.DockerCredentials },\n        },\n        Type = \"kubernetes.io/dockerconfigjson\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\tcorev1 \"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/core/v1\"\n\tmetav1 \"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleContainerRegistryDockerCredentials, err := digitalocean.NewContainerRegistryDockerCredentials(ctx, \"example\", \u0026digitalocean.ContainerRegistryDockerCredentialsArgs{\n\t\t\tRegistryName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.LookupKubernetesCluster(ctx, \u0026digitalocean.LookupKubernetesClusterArgs{\n\t\t\tName: \"prod-cluster-01\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = corev1.NewSecret(ctx, \"example\", \u0026corev1.SecretArgs{\n\t\t\tMetadata: \u0026metav1.ObjectMetaArgs{\n\t\t\t\tName: pulumi.String(\"docker-cfg\"),\n\t\t\t},\n\t\t\tData: pulumi.StringMap{\n\t\t\t\t\".dockerconfigjson\": exampleContainerRegistryDockerCredentials.DockerCredentials,\n\t\t\t},\n\t\t\tType: pulumi.String(\"kubernetes.io/dockerconfigjson\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentials;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentialsArgs;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetKubernetesClusterArgs;\nimport com.pulumi.kubernetes.core_v1.Secret;\nimport com.pulumi.kubernetes.core_v1.SecretArgs;\nimport com.pulumi.kubernetes.meta_v1.inputs.ObjectMetaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleContainerRegistryDockerCredentials = new ContainerRegistryDockerCredentials(\"exampleContainerRegistryDockerCredentials\", ContainerRegistryDockerCredentialsArgs.builder()\n            .registryName(\"example\")\n            .build());\n\n        final var example = DigitaloceanFunctions.getKubernetesCluster(GetKubernetesClusterArgs.builder()\n            .name(\"prod-cluster-01\")\n            .build());\n\n        var exampleSecret = new Secret(\"exampleSecret\", SecretArgs.builder()\n            .metadata(ObjectMetaArgs.builder()\n                .name(\"docker-cfg\")\n                .build())\n            .data(Map.of(\".dockerconfigjson\", exampleContainerRegistryDockerCredentials.dockerCredentials()))\n            .type(\"kubernetes.io/dockerconfigjson\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleContainerRegistryDockerCredentials:\n    type: digitalocean:ContainerRegistryDockerCredentials\n    name: example\n    properties:\n      registryName: example\n  exampleSecret:\n    type: kubernetes:core/v1:Secret\n    name: example\n    properties:\n      metadata:\n        name: docker-cfg\n      data:\n        .dockerconfigjson: ${exampleContainerRegistryDockerCredentials.dockerCredentials}\n      type: kubernetes.io/dockerconfigjson\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getKubernetesCluster\n      Arguments:\n        name: prod-cluster-01\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get Docker credentials for your DigitalOcean container registry.\n\nAn error is triggered if the provided container registry name does not exist.\n\n## Example Usage\n\n### Basic Example\n\nGet the container registry:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = new digitalocean.ContainerRegistryDockerCredentials(\"example\", {registryName: \"example\"});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.ContainerRegistryDockerCredentials(\"example\", registry_name=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new DigitalOcean.ContainerRegistryDockerCredentials(\"example\", new()\n    {\n        RegistryName = \"example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewContainerRegistryDockerCredentials(ctx, \"example\", \u0026digitalocean.ContainerRegistryDockerCredentialsArgs{\n\t\t\tRegistryName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentials;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new ContainerRegistryDockerCredentials(\"example\", ContainerRegistryDockerCredentialsArgs.builder()\n            .registryName(\"example\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:ContainerRegistryDockerCredentials\n    properties:\n      registryName: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Docker Provider Example\n\nUse the `endpoint` and `docker_credentials` with the Docker provider:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getContainerRegistry({\n    name: \"example\",\n});\nconst exampleContainerRegistryDockerCredentials = new digitalocean.ContainerRegistryDockerCredentials(\"example\", {registryName: \"example\"});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_container_registry(name=\"example\")\nexample_container_registry_docker_credentials = digitalocean.ContainerRegistryDockerCredentials(\"example\", registry_name=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetContainerRegistry.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleContainerRegistryDockerCredentials = new DigitalOcean.ContainerRegistryDockerCredentials(\"example\", new()\n    {\n        RegistryName = \"example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupContainerRegistry(ctx, \u0026digitalocean.LookupContainerRegistryArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewContainerRegistryDockerCredentials(ctx, \"example\", \u0026digitalocean.ContainerRegistryDockerCredentialsArgs{\n\t\t\tRegistryName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetContainerRegistryArgs;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentials;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getContainerRegistry(GetContainerRegistryArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleContainerRegistryDockerCredentials = new ContainerRegistryDockerCredentials(\"exampleContainerRegistryDockerCredentials\", ContainerRegistryDockerCredentialsArgs.builder()\n            .registryName(\"example\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleContainerRegistryDockerCredentials:\n    type: digitalocean:ContainerRegistryDockerCredentials\n    name: example\n    properties:\n      registryName: example\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getContainerRegistry\n      arguments:\n        name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Kubernetes Example\n\nCombined with the Kubernetes Provider's `kubernetes_secret` resource, you can\naccess the registry from inside your cluster:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * as kubernetes from \"@pulumi/kubernetes\";\n\nconst exampleContainerRegistryDockerCredentials = new digitalocean.ContainerRegistryDockerCredentials(\"example\", {registryName: \"example\"});\nconst example = digitalocean.getKubernetesCluster({\n    name: \"prod-cluster-01\",\n});\nconst exampleSecret = new kubernetes.core.v1.Secret(\"example\", {\n    metadata: {\n        name: \"docker-cfg\",\n    },\n    data: {\n        \".dockerconfigjson\": exampleContainerRegistryDockerCredentials.dockerCredentials,\n    },\n    type: \"kubernetes.io/dockerconfigjson\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\nimport pulumi_kubernetes as kubernetes\n\nexample_container_registry_docker_credentials = digitalocean.ContainerRegistryDockerCredentials(\"example\", registry_name=\"example\")\nexample = digitalocean.get_kubernetes_cluster(name=\"prod-cluster-01\")\nexample_secret = kubernetes.core.v1.Secret(\"example\",\n    metadata={\n        \"name\": \"docker-cfg\",\n    },\n    data={\n        \".dockerconfigjson\": example_container_registry_docker_credentials.docker_credentials,\n    },\n    type=\"kubernetes.io/dockerconfigjson\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\nusing Kubernetes = Pulumi.Kubernetes;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleContainerRegistryDockerCredentials = new DigitalOcean.ContainerRegistryDockerCredentials(\"example\", new()\n    {\n        RegistryName = \"example\",\n    });\n\n    var example = DigitalOcean.GetKubernetesCluster.Invoke(new()\n    {\n        Name = \"prod-cluster-01\",\n    });\n\n    var exampleSecret = new Kubernetes.Core.V1.Secret(\"example\", new()\n    {\n        Metadata = new Kubernetes.Types.Inputs.Meta.V1.ObjectMetaArgs\n        {\n            Name = \"docker-cfg\",\n        },\n        Data = \n        {\n            { \".dockerconfigjson\", exampleContainerRegistryDockerCredentials.DockerCredentials },\n        },\n        Type = \"kubernetes.io/dockerconfigjson\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\tcorev1 \"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/core/v1\"\n\tmetav1 \"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleContainerRegistryDockerCredentials, err := digitalocean.NewContainerRegistryDockerCredentials(ctx, \"example\", \u0026digitalocean.ContainerRegistryDockerCredentialsArgs{\n\t\t\tRegistryName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.LookupKubernetesCluster(ctx, \u0026digitalocean.LookupKubernetesClusterArgs{\n\t\t\tName: \"prod-cluster-01\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = corev1.NewSecret(ctx, \"example\", \u0026corev1.SecretArgs{\n\t\t\tMetadata: \u0026metav1.ObjectMetaArgs{\n\t\t\t\tName: pulumi.String(\"docker-cfg\"),\n\t\t\t},\n\t\t\tData: pulumi.StringMap{\n\t\t\t\t\".dockerconfigjson\": exampleContainerRegistryDockerCredentials.DockerCredentials,\n\t\t\t},\n\t\t\tType: pulumi.String(\"kubernetes.io/dockerconfigjson\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentials;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentialsArgs;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetKubernetesClusterArgs;\nimport com.pulumi.kubernetes.core_v1.Secret;\nimport com.pulumi.kubernetes.core_v1.SecretArgs;\nimport com.pulumi.kubernetes.meta_v1.inputs.ObjectMetaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleContainerRegistryDockerCredentials = new ContainerRegistryDockerCredentials(\"exampleContainerRegistryDockerCredentials\", ContainerRegistryDockerCredentialsArgs.builder()\n            .registryName(\"example\")\n            .build());\n\n        final var example = DigitaloceanFunctions.getKubernetesCluster(GetKubernetesClusterArgs.builder()\n            .name(\"prod-cluster-01\")\n            .build());\n\n        var exampleSecret = new Secret(\"exampleSecret\", SecretArgs.builder()\n            .metadata(ObjectMetaArgs.builder()\n                .name(\"docker-cfg\")\n                .build())\n            .data(Map.of(\".dockerconfigjson\", exampleContainerRegistryDockerCredentials.dockerCredentials()))\n            .type(\"kubernetes.io/dockerconfigjson\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleContainerRegistryDockerCredentials:\n    type: digitalocean:ContainerRegistryDockerCredentials\n    name: example\n    properties:\n      registryName: example\n  exampleSecret:\n    type: kubernetes:core/v1:Secret\n    name: example\n    properties:\n      metadata:\n        name: docker-cfg\n      data:\n        .dockerconfigjson: ${exampleContainerRegistryDockerCredentials.dockerCredentials}\n      type: kubernetes.io/dockerconfigjson\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getKubernetesCluster\n      arguments:\n        name: prod-cluster-01\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "properties": {
                 "credentialExpirationTime": {
                     "type": "string",
@@ -9307,7 +9307,7 @@
             }
         },
         "digitalocean:index/databaseCluster:DatabaseCluster": {
-            "description": "Provides a DigitalOcean database cluster resource.\n\n## Example Usage\n\n### Create a new PostgreSQL database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst postgres_example = new digitalocean.DatabaseCluster(\"postgres-example\", {\n    name: \"example-postgres-cluster\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\npostgres_example = digitalocean.DatabaseCluster(\"postgres-example\",\n    name=\"example-postgres-cluster\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var postgres_example = new DigitalOcean.DatabaseCluster(\"postgres-example\", new()\n    {\n        Name = \"example-postgres-cluster\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"postgres-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-postgres-cluster\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var postgres_example = new DatabaseCluster(\"postgres-example\", DatabaseClusterArgs.builder()\n            .name(\"example-postgres-cluster\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  postgres-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-postgres-cluster\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new MySQL database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst mysql_example = new digitalocean.DatabaseCluster(\"mysql-example\", {\n    name: \"example-mysql-cluster\",\n    engine: \"mysql\",\n    version: \"8\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmysql_example = digitalocean.DatabaseCluster(\"mysql-example\",\n    name=\"example-mysql-cluster\",\n    engine=\"mysql\",\n    version=\"8\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mysql_example = new DigitalOcean.DatabaseCluster(\"mysql-example\", new()\n    {\n        Name = \"example-mysql-cluster\",\n        Engine = \"mysql\",\n        Version = \"8\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"mysql-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-mysql-cluster\"),\n\t\t\tEngine:    pulumi.String(\"mysql\"),\n\t\t\tVersion:   pulumi.String(\"8\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var mysql_example = new DatabaseCluster(\"mysql-example\", DatabaseClusterArgs.builder()\n            .name(\"example-mysql-cluster\")\n            .engine(\"mysql\")\n            .version(\"8\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mysql-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-mysql-cluster\n      engine: mysql\n      version: '8'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new Redis database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst redis_example = new digitalocean.DatabaseCluster(\"redis-example\", {\n    name: \"example-redis-cluster\",\n    engine: \"redis\",\n    version: \"7\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nredis_example = digitalocean.DatabaseCluster(\"redis-example\",\n    name=\"example-redis-cluster\",\n    engine=\"redis\",\n    version=\"7\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var redis_example = new DigitalOcean.DatabaseCluster(\"redis-example\", new()\n    {\n        Name = \"example-redis-cluster\",\n        Engine = \"redis\",\n        Version = \"7\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"redis-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-redis-cluster\"),\n\t\t\tEngine:    pulumi.String(\"redis\"),\n\t\t\tVersion:   pulumi.String(\"7\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var redis_example = new DatabaseCluster(\"redis-example\", DatabaseClusterArgs.builder()\n            .name(\"example-redis-cluster\")\n            .engine(\"redis\")\n            .version(\"7\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  redis-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-redis-cluster\n      engine: redis\n      version: '7'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new Kafka database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst kafka_example = new digitalocean.DatabaseCluster(\"kafka-example\", {\n    name: \"example-kafka-cluster\",\n    engine: \"kafka\",\n    version: \"3.5\",\n    size: \"db-s-2vcpu-2gb\",\n    region: digitalocean.Region.NYC1,\n    nodeCount: 3,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nkafka_example = digitalocean.DatabaseCluster(\"kafka-example\",\n    name=\"example-kafka-cluster\",\n    engine=\"kafka\",\n    version=\"3.5\",\n    size=\"db-s-2vcpu-2gb\",\n    region=digitalocean.Region.NYC1,\n    node_count=3)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var kafka_example = new DigitalOcean.DatabaseCluster(\"kafka-example\", new()\n    {\n        Name = \"example-kafka-cluster\",\n        Engine = \"kafka\",\n        Version = \"3.5\",\n        Size = \"db-s-2vcpu-2gb\",\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 3,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"kafka-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-kafka-cluster\"),\n\t\t\tEngine:    pulumi.String(\"kafka\"),\n\t\t\tVersion:   pulumi.String(\"3.5\"),\n\t\t\tSize:      pulumi.String(\"db-s-2vcpu-2gb\"),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var kafka_example = new DatabaseCluster(\"kafka-example\", DatabaseClusterArgs.builder()\n            .name(\"example-kafka-cluster\")\n            .engine(\"kafka\")\n            .version(\"3.5\")\n            .size(\"db-s-2vcpu-2gb\")\n            .region(\"nyc1\")\n            .nodeCount(3)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  kafka-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-kafka-cluster\n      engine: kafka\n      version: '3.5'\n      size: db-s-2vcpu-2gb\n      region: nyc1\n      nodeCount: 3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new MongoDB database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst mongodb_example = new digitalocean.DatabaseCluster(\"mongodb-example\", {\n    name: \"example-mongo-cluster\",\n    engine: \"mongodb\",\n    version: \"6\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC3,\n    nodeCount: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmongodb_example = digitalocean.DatabaseCluster(\"mongodb-example\",\n    name=\"example-mongo-cluster\",\n    engine=\"mongodb\",\n    version=\"6\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC3,\n    node_count=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mongodb_example = new DigitalOcean.DatabaseCluster(\"mongodb-example\", new()\n    {\n        Name = \"example-mongo-cluster\",\n        Engine = \"mongodb\",\n        Version = \"6\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC3,\n        NodeCount = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"mongodb-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-mongo-cluster\"),\n\t\t\tEngine:    pulumi.String(\"mongodb\"),\n\t\t\tVersion:   pulumi.String(\"6\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC3),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var mongodb_example = new DatabaseCluster(\"mongodb-example\", DatabaseClusterArgs.builder()\n            .name(\"example-mongo-cluster\")\n            .engine(\"mongodb\")\n            .version(\"6\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc3\")\n            .nodeCount(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mongodb-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-mongo-cluster\n      engine: mongodb\n      version: '6'\n      size: db-s-1vcpu-1gb\n      region: nyc3\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new OpenSearch database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst opensearch_example = new digitalocean.DatabaseCluster(\"opensearch-example\", {\n    name: \"example-opensearch-cluster\",\n    engine: \"opensearch\",\n    version: \"2\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU2GB,\n    region: digitalocean.Region.NYC3,\n    nodeCount: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nopensearch_example = digitalocean.DatabaseCluster(\"opensearch-example\",\n    name=\"example-opensearch-cluster\",\n    engine=\"opensearch\",\n    version=\"2\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU2_GB,\n    region=digitalocean.Region.NYC3,\n    node_count=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var opensearch_example = new DigitalOcean.DatabaseCluster(\"opensearch-example\", new()\n    {\n        Name = \"example-opensearch-cluster\",\n        Engine = \"opensearch\",\n        Version = \"2\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU2GB,\n        Region = DigitalOcean.Region.NYC3,\n        NodeCount = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"opensearch-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-opensearch-cluster\"),\n\t\t\tEngine:    pulumi.String(\"opensearch\"),\n\t\t\tVersion:   pulumi.String(\"2\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU2GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC3),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var opensearch_example = new DatabaseCluster(\"opensearch-example\", DatabaseClusterArgs.builder()\n            .name(\"example-opensearch-cluster\")\n            .engine(\"opensearch\")\n            .version(\"2\")\n            .size(\"db-s-1vcpu-2gb\")\n            .region(\"nyc3\")\n            .nodeCount(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  opensearch-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-opensearch-cluster\n      engine: opensearch\n      version: '2'\n      size: db-s-1vcpu-2gb\n      region: nyc3\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Create a new database cluster based on a backup of an existing cluster.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst doby = new digitalocean.DatabaseCluster(\"doby\", {\n    name: \"dobydb\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU2GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n    tags: [\"production\"],\n});\nconst dobyBackup = new digitalocean.DatabaseCluster(\"doby_backup\", {\n    name: \"dobydupe\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU2GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n    tags: [\"production\"],\n    backupRestore: {\n        databaseName: \"dobydb\",\n    },\n}, {\n    dependsOn: [doby],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ndoby = digitalocean.DatabaseCluster(\"doby\",\n    name=\"dobydb\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU2_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1,\n    tags=[\"production\"])\ndoby_backup = digitalocean.DatabaseCluster(\"doby_backup\",\n    name=\"dobydupe\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU2_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1,\n    tags=[\"production\"],\n    backup_restore={\n        \"database_name\": \"dobydb\",\n    },\n    opts = pulumi.ResourceOptions(depends_on=[doby]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var doby = new DigitalOcean.DatabaseCluster(\"doby\", new()\n    {\n        Name = \"dobydb\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU2GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n        Tags = new[]\n        {\n            \"production\",\n        },\n    });\n\n    var dobyBackup = new DigitalOcean.DatabaseCluster(\"doby_backup\", new()\n    {\n        Name = \"dobydupe\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU2GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n        Tags = new[]\n        {\n            \"production\",\n        },\n        BackupRestore = new DigitalOcean.Inputs.DatabaseClusterBackupRestoreArgs\n        {\n            DatabaseName = \"dobydb\",\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            doby,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdoby, err := digitalocean.NewDatabaseCluster(ctx, \"doby\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"dobydb\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU2GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseCluster(ctx, \"doby_backup\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"dobydupe\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU2GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t},\n\t\t\tBackupRestore: \u0026digitalocean.DatabaseClusterBackupRestoreArgs{\n\t\t\t\tDatabaseName: pulumi.String(\"dobydb\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdoby,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.inputs.DatabaseClusterBackupRestoreArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var doby = new DatabaseCluster(\"doby\", DatabaseClusterArgs.builder()\n            .name(\"dobydb\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-2gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .tags(\"production\")\n            .build());\n\n        var dobyBackup = new DatabaseCluster(\"dobyBackup\", DatabaseClusterArgs.builder()\n            .name(\"dobydupe\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-2gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .tags(\"production\")\n            .backupRestore(DatabaseClusterBackupRestoreArgs.builder()\n                .databaseName(\"dobydb\")\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(doby)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  doby:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: dobydb\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-2gb\n      region: nyc1\n      nodeCount: 1\n      tags:\n        - production\n  dobyBackup:\n    type: digitalocean:DatabaseCluster\n    name: doby_backup\n    properties:\n      name: dobydupe\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-2gb\n      region: nyc1\n      nodeCount: 1\n      tags:\n        - production\n      backupRestore:\n        databaseName: dobydb\n    options:\n      dependson:\n        - ${doby}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase clusters can be imported using the `id` returned from DigitalOcean, e.g.\n\n```sh\n$ pulumi import digitalocean:index/databaseCluster:DatabaseCluster mycluster 245bcfd0-7f31-4ce6-a2bc-475a116cca97\n```\n\n",
+            "description": "Provides a DigitalOcean database cluster resource.\n\n## Example Usage\n\n### Create a new PostgreSQL database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst postgres_example = new digitalocean.DatabaseCluster(\"postgres-example\", {\n    name: \"example-postgres-cluster\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\npostgres_example = digitalocean.DatabaseCluster(\"postgres-example\",\n    name=\"example-postgres-cluster\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var postgres_example = new DigitalOcean.DatabaseCluster(\"postgres-example\", new()\n    {\n        Name = \"example-postgres-cluster\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"postgres-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-postgres-cluster\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var postgres_example = new DatabaseCluster(\"postgres-example\", DatabaseClusterArgs.builder()\n            .name(\"example-postgres-cluster\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  postgres-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-postgres-cluster\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new MySQL database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst mysql_example = new digitalocean.DatabaseCluster(\"mysql-example\", {\n    name: \"example-mysql-cluster\",\n    engine: \"mysql\",\n    version: \"8\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmysql_example = digitalocean.DatabaseCluster(\"mysql-example\",\n    name=\"example-mysql-cluster\",\n    engine=\"mysql\",\n    version=\"8\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mysql_example = new DigitalOcean.DatabaseCluster(\"mysql-example\", new()\n    {\n        Name = \"example-mysql-cluster\",\n        Engine = \"mysql\",\n        Version = \"8\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"mysql-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-mysql-cluster\"),\n\t\t\tEngine:    pulumi.String(\"mysql\"),\n\t\t\tVersion:   pulumi.String(\"8\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var mysql_example = new DatabaseCluster(\"mysql-example\", DatabaseClusterArgs.builder()\n            .name(\"example-mysql-cluster\")\n            .engine(\"mysql\")\n            .version(\"8\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mysql-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-mysql-cluster\n      engine: mysql\n      version: '8'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new Redis database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst redis_example = new digitalocean.DatabaseCluster(\"redis-example\", {\n    name: \"example-redis-cluster\",\n    engine: \"redis\",\n    version: \"7\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nredis_example = digitalocean.DatabaseCluster(\"redis-example\",\n    name=\"example-redis-cluster\",\n    engine=\"redis\",\n    version=\"7\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var redis_example = new DigitalOcean.DatabaseCluster(\"redis-example\", new()\n    {\n        Name = \"example-redis-cluster\",\n        Engine = \"redis\",\n        Version = \"7\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"redis-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-redis-cluster\"),\n\t\t\tEngine:    pulumi.String(\"redis\"),\n\t\t\tVersion:   pulumi.String(\"7\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var redis_example = new DatabaseCluster(\"redis-example\", DatabaseClusterArgs.builder()\n            .name(\"example-redis-cluster\")\n            .engine(\"redis\")\n            .version(\"7\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  redis-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-redis-cluster\n      engine: redis\n      version: '7'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new Kafka database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst kafka_example = new digitalocean.DatabaseCluster(\"kafka-example\", {\n    name: \"example-kafka-cluster\",\n    engine: \"kafka\",\n    version: \"3.5\",\n    size: \"db-s-2vcpu-2gb\",\n    region: digitalocean.Region.NYC1,\n    nodeCount: 3,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nkafka_example = digitalocean.DatabaseCluster(\"kafka-example\",\n    name=\"example-kafka-cluster\",\n    engine=\"kafka\",\n    version=\"3.5\",\n    size=\"db-s-2vcpu-2gb\",\n    region=digitalocean.Region.NYC1,\n    node_count=3)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var kafka_example = new DigitalOcean.DatabaseCluster(\"kafka-example\", new()\n    {\n        Name = \"example-kafka-cluster\",\n        Engine = \"kafka\",\n        Version = \"3.5\",\n        Size = \"db-s-2vcpu-2gb\",\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 3,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"kafka-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-kafka-cluster\"),\n\t\t\tEngine:    pulumi.String(\"kafka\"),\n\t\t\tVersion:   pulumi.String(\"3.5\"),\n\t\t\tSize:      pulumi.String(\"db-s-2vcpu-2gb\"),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var kafka_example = new DatabaseCluster(\"kafka-example\", DatabaseClusterArgs.builder()\n            .name(\"example-kafka-cluster\")\n            .engine(\"kafka\")\n            .version(\"3.5\")\n            .size(\"db-s-2vcpu-2gb\")\n            .region(\"nyc1\")\n            .nodeCount(3)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  kafka-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-kafka-cluster\n      engine: kafka\n      version: '3.5'\n      size: db-s-2vcpu-2gb\n      region: nyc1\n      nodeCount: 3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new MongoDB database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst mongodb_example = new digitalocean.DatabaseCluster(\"mongodb-example\", {\n    name: \"example-mongo-cluster\",\n    engine: \"mongodb\",\n    version: \"6\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC3,\n    nodeCount: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmongodb_example = digitalocean.DatabaseCluster(\"mongodb-example\",\n    name=\"example-mongo-cluster\",\n    engine=\"mongodb\",\n    version=\"6\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC3,\n    node_count=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mongodb_example = new DigitalOcean.DatabaseCluster(\"mongodb-example\", new()\n    {\n        Name = \"example-mongo-cluster\",\n        Engine = \"mongodb\",\n        Version = \"6\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC3,\n        NodeCount = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"mongodb-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-mongo-cluster\"),\n\t\t\tEngine:    pulumi.String(\"mongodb\"),\n\t\t\tVersion:   pulumi.String(\"6\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC3),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var mongodb_example = new DatabaseCluster(\"mongodb-example\", DatabaseClusterArgs.builder()\n            .name(\"example-mongo-cluster\")\n            .engine(\"mongodb\")\n            .version(\"6\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc3\")\n            .nodeCount(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mongodb-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-mongo-cluster\n      engine: mongodb\n      version: '6'\n      size: db-s-1vcpu-1gb\n      region: nyc3\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new OpenSearch database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst opensearch_example = new digitalocean.DatabaseCluster(\"opensearch-example\", {\n    name: \"example-opensearch-cluster\",\n    engine: \"opensearch\",\n    version: \"2\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU2GB,\n    region: digitalocean.Region.NYC3,\n    nodeCount: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nopensearch_example = digitalocean.DatabaseCluster(\"opensearch-example\",\n    name=\"example-opensearch-cluster\",\n    engine=\"opensearch\",\n    version=\"2\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU2_GB,\n    region=digitalocean.Region.NYC3,\n    node_count=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var opensearch_example = new DigitalOcean.DatabaseCluster(\"opensearch-example\", new()\n    {\n        Name = \"example-opensearch-cluster\",\n        Engine = \"opensearch\",\n        Version = \"2\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU2GB,\n        Region = DigitalOcean.Region.NYC3,\n        NodeCount = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"opensearch-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-opensearch-cluster\"),\n\t\t\tEngine:    pulumi.String(\"opensearch\"),\n\t\t\tVersion:   pulumi.String(\"2\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU2GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC3),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var opensearch_example = new DatabaseCluster(\"opensearch-example\", DatabaseClusterArgs.builder()\n            .name(\"example-opensearch-cluster\")\n            .engine(\"opensearch\")\n            .version(\"2\")\n            .size(\"db-s-1vcpu-2gb\")\n            .region(\"nyc3\")\n            .nodeCount(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  opensearch-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-opensearch-cluster\n      engine: opensearch\n      version: '2'\n      size: db-s-1vcpu-2gb\n      region: nyc3\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Create a new database cluster based on a backup of an existing cluster.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst doby = new digitalocean.DatabaseCluster(\"doby\", {\n    name: \"dobydb\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU2GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n    tags: [\"production\"],\n});\nconst dobyBackup = new digitalocean.DatabaseCluster(\"doby_backup\", {\n    name: \"dobydupe\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU2GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n    tags: [\"production\"],\n    backupRestore: {\n        databaseName: \"dobydb\",\n    },\n}, {\n    dependsOn: [doby],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ndoby = digitalocean.DatabaseCluster(\"doby\",\n    name=\"dobydb\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU2_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1,\n    tags=[\"production\"])\ndoby_backup = digitalocean.DatabaseCluster(\"doby_backup\",\n    name=\"dobydupe\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU2_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1,\n    tags=[\"production\"],\n    backup_restore={\n        \"database_name\": \"dobydb\",\n    },\n    opts = pulumi.ResourceOptions(depends_on=[doby]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var doby = new DigitalOcean.DatabaseCluster(\"doby\", new()\n    {\n        Name = \"dobydb\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU2GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n        Tags = new[]\n        {\n            \"production\",\n        },\n    });\n\n    var dobyBackup = new DigitalOcean.DatabaseCluster(\"doby_backup\", new()\n    {\n        Name = \"dobydupe\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU2GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n        Tags = new[]\n        {\n            \"production\",\n        },\n        BackupRestore = new DigitalOcean.Inputs.DatabaseClusterBackupRestoreArgs\n        {\n            DatabaseName = \"dobydb\",\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            doby,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdoby, err := digitalocean.NewDatabaseCluster(ctx, \"doby\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"dobydb\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU2GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseCluster(ctx, \"doby_backup\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"dobydupe\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU2GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t},\n\t\t\tBackupRestore: \u0026digitalocean.DatabaseClusterBackupRestoreArgs{\n\t\t\t\tDatabaseName: pulumi.String(\"dobydb\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdoby,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.inputs.DatabaseClusterBackupRestoreArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var doby = new DatabaseCluster(\"doby\", DatabaseClusterArgs.builder()\n            .name(\"dobydb\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-2gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .tags(\"production\")\n            .build());\n\n        var dobyBackup = new DatabaseCluster(\"dobyBackup\", DatabaseClusterArgs.builder()\n            .name(\"dobydupe\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-2gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .tags(\"production\")\n            .backupRestore(DatabaseClusterBackupRestoreArgs.builder()\n                .databaseName(\"dobydb\")\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(doby)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  doby:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: dobydb\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-2gb\n      region: nyc1\n      nodeCount: 1\n      tags:\n        - production\n  dobyBackup:\n    type: digitalocean:DatabaseCluster\n    name: doby_backup\n    properties:\n      name: dobydupe\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-2gb\n      region: nyc1\n      nodeCount: 1\n      tags:\n        - production\n      backupRestore:\n        databaseName: dobydb\n    options:\n      dependsOn:\n        - ${doby}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase clusters can be imported using the `id` returned from DigitalOcean, e.g.\n\n```sh\n$ pulumi import digitalocean:index/databaseCluster:DatabaseCluster mycluster 245bcfd0-7f31-4ce6-a2bc-475a116cca97\n```\n\n",
             "properties": {
                 "backupRestore": {
                     "$ref": "#/types/digitalocean:index/DatabaseClusterBackupRestore:DatabaseClusterBackupRestore"
@@ -14858,7 +14858,7 @@
             }
         },
         "digitalocean:index/projectResources:ProjectResources": {
-            "description": "Assign resources to a DigitalOcean Project. This is useful if you need to assign resources\nmanaged via this provider to a DigitalOcean Project managed outside of the provider.\n\nThe following resource types can be associated with a project:\n\n* App Platform Apps\n* Database Clusters\n* Domains\n* Droplets\n* Floating IPs\n* Kubernetes Clusters\n* Load Balancers\n* Spaces Buckets\n* Volumes\n\n## Example Usage\n\nThe following example assigns a droplet to a Project managed outside of the provider:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst playground = digitalocean.getProject({\n    name: \"playground\",\n});\nconst foobar = new digitalocean.Droplet(\"foobar\", {\n    name: \"example\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-22-04-x64\",\n    region: digitalocean.Region.NYC3,\n});\nconst barfoo = new digitalocean.ProjectResources(\"barfoo\", {\n    project: playground.then(playground =\u003e playground.id),\n    resources: [foobar.dropletUrn],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nplayground = digitalocean.get_project(name=\"playground\")\nfoobar = digitalocean.Droplet(\"foobar\",\n    name=\"example\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-22-04-x64\",\n    region=digitalocean.Region.NYC3)\nbarfoo = digitalocean.ProjectResources(\"barfoo\",\n    project=playground.id,\n    resources=[foobar.droplet_urn])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var playground = DigitalOcean.GetProject.Invoke(new()\n    {\n        Name = \"playground\",\n    });\n\n    var foobar = new DigitalOcean.Droplet(\"foobar\", new()\n    {\n        Name = \"example\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-22-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n    });\n\n    var barfoo = new DigitalOcean.ProjectResources(\"barfoo\", new()\n    {\n        Project = playground.Apply(getProjectResult =\u003e getProjectResult.Id),\n        Resources = new[]\n        {\n            foobar.DropletUrn,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tplayground, err := digitalocean.LookupProject(ctx, \u0026digitalocean.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"playground\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobar, err := digitalocean.NewDroplet(ctx, \"foobar\", \u0026digitalocean.DropletArgs{\n\t\t\tName:   pulumi.String(\"example\"),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:  pulumi.String(\"ubuntu-22-04-x64\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewProjectResources(ctx, \"barfoo\", \u0026digitalocean.ProjectResourcesArgs{\n\t\t\tProject: pulumi.String(playground.Id),\n\t\t\tResources: pulumi.StringArray{\n\t\t\t\tfoobar.DropletUrn,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetProjectArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.ProjectResources;\nimport com.pulumi.digitalocean.ProjectResourcesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var playground = DigitaloceanFunctions.getProject(GetProjectArgs.builder()\n            .name(\"playground\")\n            .build());\n\n        var foobar = new Droplet(\"foobar\", DropletArgs.builder()\n            .name(\"example\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-22-04-x64\")\n            .region(\"nyc3\")\n            .build());\n\n        var barfoo = new ProjectResources(\"barfoo\", ProjectResourcesArgs.builder()\n            .project(playground.applyValue(getProjectResult -\u003e getProjectResult.id()))\n            .resources(foobar.dropletUrn())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:Droplet\n    properties:\n      name: example\n      size: s-1vcpu-1gb\n      image: ubuntu-22-04-x64\n      region: nyc3\n  barfoo:\n    type: digitalocean:ProjectResources\n    properties:\n      project: ${playground.id}\n      resources:\n        - ${foobar.dropletUrn}\nvariables:\n  playground:\n    fn::invoke:\n      Function: digitalocean:getProject\n      Arguments:\n        name: playground\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nImporting this resource is not supported.\n\n",
+            "description": "Assign resources to a DigitalOcean Project. This is useful if you need to assign resources\nmanaged via this provider to a DigitalOcean Project managed outside of the provider.\n\nThe following resource types can be associated with a project:\n\n* App Platform Apps\n* Database Clusters\n* Domains\n* Droplets\n* Floating IPs\n* Kubernetes Clusters\n* Load Balancers\n* Spaces Buckets\n* Volumes\n\n## Example Usage\n\nThe following example assigns a droplet to a Project managed outside of the provider:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst playground = digitalocean.getProject({\n    name: \"playground\",\n});\nconst foobar = new digitalocean.Droplet(\"foobar\", {\n    name: \"example\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-22-04-x64\",\n    region: digitalocean.Region.NYC3,\n});\nconst barfoo = new digitalocean.ProjectResources(\"barfoo\", {\n    project: playground.then(playground =\u003e playground.id),\n    resources: [foobar.dropletUrn],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nplayground = digitalocean.get_project(name=\"playground\")\nfoobar = digitalocean.Droplet(\"foobar\",\n    name=\"example\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-22-04-x64\",\n    region=digitalocean.Region.NYC3)\nbarfoo = digitalocean.ProjectResources(\"barfoo\",\n    project=playground.id,\n    resources=[foobar.droplet_urn])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var playground = DigitalOcean.GetProject.Invoke(new()\n    {\n        Name = \"playground\",\n    });\n\n    var foobar = new DigitalOcean.Droplet(\"foobar\", new()\n    {\n        Name = \"example\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-22-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n    });\n\n    var barfoo = new DigitalOcean.ProjectResources(\"barfoo\", new()\n    {\n        Project = playground.Apply(getProjectResult =\u003e getProjectResult.Id),\n        Resources = new[]\n        {\n            foobar.DropletUrn,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tplayground, err := digitalocean.LookupProject(ctx, \u0026digitalocean.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"playground\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobar, err := digitalocean.NewDroplet(ctx, \"foobar\", \u0026digitalocean.DropletArgs{\n\t\t\tName:   pulumi.String(\"example\"),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:  pulumi.String(\"ubuntu-22-04-x64\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewProjectResources(ctx, \"barfoo\", \u0026digitalocean.ProjectResourcesArgs{\n\t\t\tProject: pulumi.String(playground.Id),\n\t\t\tResources: pulumi.StringArray{\n\t\t\t\tfoobar.DropletUrn,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetProjectArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.ProjectResources;\nimport com.pulumi.digitalocean.ProjectResourcesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var playground = DigitaloceanFunctions.getProject(GetProjectArgs.builder()\n            .name(\"playground\")\n            .build());\n\n        var foobar = new Droplet(\"foobar\", DropletArgs.builder()\n            .name(\"example\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-22-04-x64\")\n            .region(\"nyc3\")\n            .build());\n\n        var barfoo = new ProjectResources(\"barfoo\", ProjectResourcesArgs.builder()\n            .project(playground.applyValue(getProjectResult -\u003e getProjectResult.id()))\n            .resources(foobar.dropletUrn())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:Droplet\n    properties:\n      name: example\n      size: s-1vcpu-1gb\n      image: ubuntu-22-04-x64\n      region: nyc3\n  barfoo:\n    type: digitalocean:ProjectResources\n    properties:\n      project: ${playground.id}\n      resources:\n        - ${foobar.dropletUrn}\nvariables:\n  playground:\n    fn::invoke:\n      function: digitalocean:getProject\n      arguments:\n        name: playground\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nImporting this resource is not supported.\n\n",
             "properties": {
                 "project": {
                     "type": "string",
@@ -15572,7 +15572,7 @@
             }
         },
         "digitalocean:index/sshKey:SshKey": {
-            "description": "Provides a DigitalOcean SSH key resource to allow you to manage SSH\nkeys for Droplet access. Keys created with this resource\ncan be referenced in your Droplet configuration via their ID or\nfingerprint.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * as std from \"@pulumi/std\";\n\n// Create a new SSH key\nconst _default = new digitalocean.SshKey(\"default\", {\n    name: \"Example\",\n    publicKey: std.file({\n        input: \"/Users/myuser/.ssh/id_rsa.pub\",\n    }).then(invoke =\u003e invoke.result),\n});\n// Create a new Droplet using the SSH key\nconst web = new digitalocean.Droplet(\"web\", {\n    image: \"ubuntu-18-04-x64\",\n    name: \"web-1\",\n    region: digitalocean.Region.NYC3,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    sshKeys: [_default.fingerprint],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\nimport pulumi_std as std\n\n# Create a new SSH key\ndefault = digitalocean.SshKey(\"default\",\n    name=\"Example\",\n    public_key=std.file(input=\"/Users/myuser/.ssh/id_rsa.pub\").result)\n# Create a new Droplet using the SSH key\nweb = digitalocean.Droplet(\"web\",\n    image=\"ubuntu-18-04-x64\",\n    name=\"web-1\",\n    region=digitalocean.Region.NYC3,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    ssh_keys=[default.fingerprint])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create a new SSH key\n    var @default = new DigitalOcean.SshKey(\"default\", new()\n    {\n        Name = \"Example\",\n        PublicKey = Std.File.Invoke(new()\n        {\n            Input = \"/Users/myuser/.ssh/id_rsa.pub\",\n        }).Apply(invoke =\u003e invoke.Result),\n    });\n\n    // Create a new Droplet using the SSH key\n    var web = new DigitalOcean.Droplet(\"web\", new()\n    {\n        Image = \"ubuntu-18-04-x64\",\n        Name = \"web-1\",\n        Region = DigitalOcean.Region.NYC3,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        SshKeys = new[]\n        {\n            @default.Fingerprint,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/Users/myuser/.ssh/id_rsa.pub\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a new SSH key\n\t\t_, err = digitalocean.NewSshKey(ctx, \"default\", \u0026digitalocean.SshKeyArgs{\n\t\t\tName:      pulumi.String(\"Example\"),\n\t\t\tPublicKey: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a new Droplet using the SSH key\n\t\t_, err = digitalocean.NewDroplet(ctx, \"web\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tName:   pulumi.String(\"web-1\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tSshKeys: pulumi.StringArray{\n\t\t\t\t_default.Fingerprint,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SshKey;\nimport com.pulumi.digitalocean.SshKeyArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create a new SSH key\n        var default_ = new SshKey(\"default\", SshKeyArgs.builder()\n            .name(\"Example\")\n            .publicKey(StdFunctions.file(FileArgs.builder()\n                .input(\"/Users/myuser/.ssh/id_rsa.pub\")\n                .build()).result())\n            .build());\n\n        // Create a new Droplet using the SSH key\n        var web = new Droplet(\"web\", DropletArgs.builder()\n            .image(\"ubuntu-18-04-x64\")\n            .name(\"web-1\")\n            .region(\"nyc3\")\n            .size(\"s-1vcpu-1gb\")\n            .sshKeys(default_.fingerprint())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a new SSH key\n  default:\n    type: digitalocean:SshKey\n    properties:\n      name: Example\n      publicKey:\n        fn::invoke:\n          Function: std:file\n          Arguments:\n            input: /Users/myuser/.ssh/id_rsa.pub\n          Return: result\n  # Create a new Droplet using the SSH key\n  web:\n    type: digitalocean:Droplet\n    properties:\n      image: ubuntu-18-04-x64\n      name: web-1\n      region: nyc3\n      size: s-1vcpu-1gb\n      sshKeys:\n        - ${default.fingerprint}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSSH Keys can be imported using the `ssh key id`, e.g.\n\n```sh\n$ pulumi import digitalocean:index/sshKey:SshKey mykey 263654\n```\n\n",
+            "description": "Provides a DigitalOcean SSH key resource to allow you to manage SSH\nkeys for Droplet access. Keys created with this resource\ncan be referenced in your Droplet configuration via their ID or\nfingerprint.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * as std from \"@pulumi/std\";\n\n// Create a new SSH key\nconst _default = new digitalocean.SshKey(\"default\", {\n    name: \"Example\",\n    publicKey: std.file({\n        input: \"/Users/myuser/.ssh/id_rsa.pub\",\n    }).then(invoke =\u003e invoke.result),\n});\n// Create a new Droplet using the SSH key\nconst web = new digitalocean.Droplet(\"web\", {\n    image: \"ubuntu-18-04-x64\",\n    name: \"web-1\",\n    region: digitalocean.Region.NYC3,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    sshKeys: [_default.fingerprint],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\nimport pulumi_std as std\n\n# Create a new SSH key\ndefault = digitalocean.SshKey(\"default\",\n    name=\"Example\",\n    public_key=std.file(input=\"/Users/myuser/.ssh/id_rsa.pub\").result)\n# Create a new Droplet using the SSH key\nweb = digitalocean.Droplet(\"web\",\n    image=\"ubuntu-18-04-x64\",\n    name=\"web-1\",\n    region=digitalocean.Region.NYC3,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    ssh_keys=[default.fingerprint])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create a new SSH key\n    var @default = new DigitalOcean.SshKey(\"default\", new()\n    {\n        Name = \"Example\",\n        PublicKey = Std.File.Invoke(new()\n        {\n            Input = \"/Users/myuser/.ssh/id_rsa.pub\",\n        }).Apply(invoke =\u003e invoke.Result),\n    });\n\n    // Create a new Droplet using the SSH key\n    var web = new DigitalOcean.Droplet(\"web\", new()\n    {\n        Image = \"ubuntu-18-04-x64\",\n        Name = \"web-1\",\n        Region = DigitalOcean.Region.NYC3,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        SshKeys = new[]\n        {\n            @default.Fingerprint,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/Users/myuser/.ssh/id_rsa.pub\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a new SSH key\n\t\t_, err = digitalocean.NewSshKey(ctx, \"default\", \u0026digitalocean.SshKeyArgs{\n\t\t\tName:      pulumi.String(\"Example\"),\n\t\t\tPublicKey: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a new Droplet using the SSH key\n\t\t_, err = digitalocean.NewDroplet(ctx, \"web\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tName:   pulumi.String(\"web-1\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tSshKeys: pulumi.StringArray{\n\t\t\t\t_default.Fingerprint,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SshKey;\nimport com.pulumi.digitalocean.SshKeyArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create a new SSH key\n        var default_ = new SshKey(\"default\", SshKeyArgs.builder()\n            .name(\"Example\")\n            .publicKey(StdFunctions.file(FileArgs.builder()\n                .input(\"/Users/myuser/.ssh/id_rsa.pub\")\n                .build()).result())\n            .build());\n\n        // Create a new Droplet using the SSH key\n        var web = new Droplet(\"web\", DropletArgs.builder()\n            .image(\"ubuntu-18-04-x64\")\n            .name(\"web-1\")\n            .region(\"nyc3\")\n            .size(\"s-1vcpu-1gb\")\n            .sshKeys(default_.fingerprint())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a new SSH key\n  default:\n    type: digitalocean:SshKey\n    properties:\n      name: Example\n      publicKey:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: /Users/myuser/.ssh/id_rsa.pub\n          return: result\n  # Create a new Droplet using the SSH key\n  web:\n    type: digitalocean:Droplet\n    properties:\n      image: ubuntu-18-04-x64\n      name: web-1\n      region: nyc3\n      size: s-1vcpu-1gb\n      sshKeys:\n        - ${default.fingerprint}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSSH Keys can be imported using the `ssh key id`, e.g.\n\n```sh\n$ pulumi import digitalocean:index/sshKey:SshKey mykey 263654\n```\n\n",
             "properties": {
                 "fingerprint": {
                     "type": "string",
@@ -15917,7 +15917,7 @@
             }
         },
         "digitalocean:index/volume:Volume": {
-            "description": "Provides a DigitalOcean Block Storage volume which can be attached to a Droplet in order to provide expanded storage.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.Volume(\"foobar\", {\n    region: digitalocean.Region.NYC1,\n    name: \"baz\",\n    size: 100,\n    initialFilesystemType: digitalocean.FileSystemType.EXT4,\n    description: \"an example volume\",\n});\nconst foobarDroplet = new digitalocean.Droplet(\"foobar\", {\n    name: \"baz\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC1,\n});\nconst foobarVolumeAttachment = new digitalocean.VolumeAttachment(\"foobar\", {\n    dropletId: foobarDroplet.id,\n    volumeId: foobar.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.Volume(\"foobar\",\n    region=digitalocean.Region.NYC1,\n    name=\"baz\",\n    size=100,\n    initial_filesystem_type=digitalocean.FileSystemType.EXT4,\n    description=\"an example volume\")\nfoobar_droplet = digitalocean.Droplet(\"foobar\",\n    name=\"baz\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC1)\nfoobar_volume_attachment = digitalocean.VolumeAttachment(\"foobar\",\n    droplet_id=foobar_droplet.id,\n    volume_id=foobar.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.Volume(\"foobar\", new()\n    {\n        Region = DigitalOcean.Region.NYC1,\n        Name = \"baz\",\n        Size = 100,\n        InitialFilesystemType = DigitalOcean.FileSystemType.EXT4,\n        Description = \"an example volume\",\n    });\n\n    var foobarDroplet = new DigitalOcean.Droplet(\"foobar\", new()\n    {\n        Name = \"baz\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC1,\n    });\n\n    var foobarVolumeAttachment = new DigitalOcean.VolumeAttachment(\"foobar\", new()\n    {\n        DropletId = foobarDroplet.Id,\n        VolumeId = foobar.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.NewVolume(ctx, \"foobar\", \u0026digitalocean.VolumeArgs{\n\t\t\tRegion:                pulumi.String(digitalocean.RegionNYC1),\n\t\t\tName:                  pulumi.String(\"baz\"),\n\t\t\tSize:                  pulumi.Int(100),\n\t\t\tInitialFilesystemType: pulumi.String(digitalocean.FileSystemTypeEXT4),\n\t\t\tDescription:           pulumi.String(\"an example volume\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobarDroplet, err := digitalocean.NewDroplet(ctx, \"foobar\", \u0026digitalocean.DropletArgs{\n\t\t\tName:   pulumi.String(\"baz\"),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewVolumeAttachment(ctx, \"foobar\", \u0026digitalocean.VolumeAttachmentArgs{\n\t\t\tDropletId: foobarDroplet.ID(),\n\t\t\tVolumeId:  foobar.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Volume;\nimport com.pulumi.digitalocean.VolumeArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.VolumeAttachment;\nimport com.pulumi.digitalocean.VolumeAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new Volume(\"foobar\", VolumeArgs.builder()\n            .region(\"nyc1\")\n            .name(\"baz\")\n            .size(100)\n            .initialFilesystemType(\"ext4\")\n            .description(\"an example volume\")\n            .build());\n\n        var foobarDroplet = new Droplet(\"foobarDroplet\", DropletArgs.builder()\n            .name(\"baz\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc1\")\n            .build());\n\n        var foobarVolumeAttachment = new VolumeAttachment(\"foobarVolumeAttachment\", VolumeAttachmentArgs.builder()\n            .dropletId(foobarDroplet.id())\n            .volumeId(foobar.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:Volume\n    properties:\n      region: nyc1\n      name: baz\n      size: 100\n      initialFilesystemType: ext4\n      description: an example volume\n  foobarDroplet:\n    type: digitalocean:Droplet\n    name: foobar\n    properties:\n      name: baz\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc1\n  foobarVolumeAttachment:\n    type: digitalocean:VolumeAttachment\n    name: foobar\n    properties:\n      dropletId: ${foobarDroplet.id}\n      volumeId: ${foobar.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can also create a volume from an existing snapshot.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = digitalocean.getVolumeSnapshot({\n    name: \"baz\",\n});\nconst foobarVolume = new digitalocean.Volume(\"foobar\", {\n    region: digitalocean.Region.LON1,\n    name: \"foo\",\n    size: foobar.then(foobar =\u003e foobar.minDiskSize),\n    snapshotId: foobar.then(foobar =\u003e foobar.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.get_volume_snapshot(name=\"baz\")\nfoobar_volume = digitalocean.Volume(\"foobar\",\n    region=digitalocean.Region.LON1,\n    name=\"foo\",\n    size=foobar.min_disk_size,\n    snapshot_id=foobar.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = DigitalOcean.GetVolumeSnapshot.Invoke(new()\n    {\n        Name = \"baz\",\n    });\n\n    var foobarVolume = new DigitalOcean.Volume(\"foobar\", new()\n    {\n        Region = DigitalOcean.Region.LON1,\n        Name = \"foo\",\n        Size = foobar.Apply(getVolumeSnapshotResult =\u003e getVolumeSnapshotResult.MinDiskSize),\n        SnapshotId = foobar.Apply(getVolumeSnapshotResult =\u003e getVolumeSnapshotResult.Id),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.LookupVolumeSnapshot(ctx, \u0026digitalocean.LookupVolumeSnapshotArgs{\n\t\t\tName: pulumi.StringRef(\"baz\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewVolume(ctx, \"foobar\", \u0026digitalocean.VolumeArgs{\n\t\t\tRegion:     pulumi.String(digitalocean.RegionLON1),\n\t\t\tName:       pulumi.String(\"foo\"),\n\t\t\tSize:       pulumi.Int(foobar.MinDiskSize),\n\t\t\tSnapshotId: pulumi.String(foobar.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVolumeSnapshotArgs;\nimport com.pulumi.digitalocean.Volume;\nimport com.pulumi.digitalocean.VolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var foobar = DigitaloceanFunctions.getVolumeSnapshot(GetVolumeSnapshotArgs.builder()\n            .name(\"baz\")\n            .build());\n\n        var foobarVolume = new Volume(\"foobarVolume\", VolumeArgs.builder()\n            .region(\"lon1\")\n            .name(\"foo\")\n            .size(foobar.applyValue(getVolumeSnapshotResult -\u003e getVolumeSnapshotResult.minDiskSize()))\n            .snapshotId(foobar.applyValue(getVolumeSnapshotResult -\u003e getVolumeSnapshotResult.id()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobarVolume:\n    type: digitalocean:Volume\n    name: foobar\n    properties:\n      region: lon1\n      name: foo\n      size: ${foobar.minDiskSize}\n      snapshotId: ${foobar.id}\nvariables:\n  foobar:\n    fn::invoke:\n      Function: digitalocean:getVolumeSnapshot\n      Arguments:\n        name: baz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVolumes can be imported using the `volume id`, e.g.\n\n```sh\n$ pulumi import digitalocean:index/volume:Volume volume 506f78a4-e098-11e5-ad9f-000f53306ae1\n```\n\n",
+            "description": "Provides a DigitalOcean Block Storage volume which can be attached to a Droplet in order to provide expanded storage.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.Volume(\"foobar\", {\n    region: digitalocean.Region.NYC1,\n    name: \"baz\",\n    size: 100,\n    initialFilesystemType: digitalocean.FileSystemType.EXT4,\n    description: \"an example volume\",\n});\nconst foobarDroplet = new digitalocean.Droplet(\"foobar\", {\n    name: \"baz\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC1,\n});\nconst foobarVolumeAttachment = new digitalocean.VolumeAttachment(\"foobar\", {\n    dropletId: foobarDroplet.id,\n    volumeId: foobar.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.Volume(\"foobar\",\n    region=digitalocean.Region.NYC1,\n    name=\"baz\",\n    size=100,\n    initial_filesystem_type=digitalocean.FileSystemType.EXT4,\n    description=\"an example volume\")\nfoobar_droplet = digitalocean.Droplet(\"foobar\",\n    name=\"baz\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC1)\nfoobar_volume_attachment = digitalocean.VolumeAttachment(\"foobar\",\n    droplet_id=foobar_droplet.id,\n    volume_id=foobar.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.Volume(\"foobar\", new()\n    {\n        Region = DigitalOcean.Region.NYC1,\n        Name = \"baz\",\n        Size = 100,\n        InitialFilesystemType = DigitalOcean.FileSystemType.EXT4,\n        Description = \"an example volume\",\n    });\n\n    var foobarDroplet = new DigitalOcean.Droplet(\"foobar\", new()\n    {\n        Name = \"baz\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC1,\n    });\n\n    var foobarVolumeAttachment = new DigitalOcean.VolumeAttachment(\"foobar\", new()\n    {\n        DropletId = foobarDroplet.Id,\n        VolumeId = foobar.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.NewVolume(ctx, \"foobar\", \u0026digitalocean.VolumeArgs{\n\t\t\tRegion:                pulumi.String(digitalocean.RegionNYC1),\n\t\t\tName:                  pulumi.String(\"baz\"),\n\t\t\tSize:                  pulumi.Int(100),\n\t\t\tInitialFilesystemType: pulumi.String(digitalocean.FileSystemTypeEXT4),\n\t\t\tDescription:           pulumi.String(\"an example volume\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobarDroplet, err := digitalocean.NewDroplet(ctx, \"foobar\", \u0026digitalocean.DropletArgs{\n\t\t\tName:   pulumi.String(\"baz\"),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewVolumeAttachment(ctx, \"foobar\", \u0026digitalocean.VolumeAttachmentArgs{\n\t\t\tDropletId: foobarDroplet.ID(),\n\t\t\tVolumeId:  foobar.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Volume;\nimport com.pulumi.digitalocean.VolumeArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.VolumeAttachment;\nimport com.pulumi.digitalocean.VolumeAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new Volume(\"foobar\", VolumeArgs.builder()\n            .region(\"nyc1\")\n            .name(\"baz\")\n            .size(100)\n            .initialFilesystemType(\"ext4\")\n            .description(\"an example volume\")\n            .build());\n\n        var foobarDroplet = new Droplet(\"foobarDroplet\", DropletArgs.builder()\n            .name(\"baz\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc1\")\n            .build());\n\n        var foobarVolumeAttachment = new VolumeAttachment(\"foobarVolumeAttachment\", VolumeAttachmentArgs.builder()\n            .dropletId(foobarDroplet.id())\n            .volumeId(foobar.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:Volume\n    properties:\n      region: nyc1\n      name: baz\n      size: 100\n      initialFilesystemType: ext4\n      description: an example volume\n  foobarDroplet:\n    type: digitalocean:Droplet\n    name: foobar\n    properties:\n      name: baz\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc1\n  foobarVolumeAttachment:\n    type: digitalocean:VolumeAttachment\n    name: foobar\n    properties:\n      dropletId: ${foobarDroplet.id}\n      volumeId: ${foobar.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can also create a volume from an existing snapshot.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = digitalocean.getVolumeSnapshot({\n    name: \"baz\",\n});\nconst foobarVolume = new digitalocean.Volume(\"foobar\", {\n    region: digitalocean.Region.LON1,\n    name: \"foo\",\n    size: foobar.then(foobar =\u003e foobar.minDiskSize),\n    snapshotId: foobar.then(foobar =\u003e foobar.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.get_volume_snapshot(name=\"baz\")\nfoobar_volume = digitalocean.Volume(\"foobar\",\n    region=digitalocean.Region.LON1,\n    name=\"foo\",\n    size=foobar.min_disk_size,\n    snapshot_id=foobar.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = DigitalOcean.GetVolumeSnapshot.Invoke(new()\n    {\n        Name = \"baz\",\n    });\n\n    var foobarVolume = new DigitalOcean.Volume(\"foobar\", new()\n    {\n        Region = DigitalOcean.Region.LON1,\n        Name = \"foo\",\n        Size = foobar.Apply(getVolumeSnapshotResult =\u003e getVolumeSnapshotResult.MinDiskSize),\n        SnapshotId = foobar.Apply(getVolumeSnapshotResult =\u003e getVolumeSnapshotResult.Id),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.LookupVolumeSnapshot(ctx, \u0026digitalocean.LookupVolumeSnapshotArgs{\n\t\t\tName: pulumi.StringRef(\"baz\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewVolume(ctx, \"foobar\", \u0026digitalocean.VolumeArgs{\n\t\t\tRegion:     pulumi.String(digitalocean.RegionLON1),\n\t\t\tName:       pulumi.String(\"foo\"),\n\t\t\tSize:       pulumi.Int(foobar.MinDiskSize),\n\t\t\tSnapshotId: pulumi.String(foobar.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVolumeSnapshotArgs;\nimport com.pulumi.digitalocean.Volume;\nimport com.pulumi.digitalocean.VolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var foobar = DigitaloceanFunctions.getVolumeSnapshot(GetVolumeSnapshotArgs.builder()\n            .name(\"baz\")\n            .build());\n\n        var foobarVolume = new Volume(\"foobarVolume\", VolumeArgs.builder()\n            .region(\"lon1\")\n            .name(\"foo\")\n            .size(foobar.applyValue(getVolumeSnapshotResult -\u003e getVolumeSnapshotResult.minDiskSize()))\n            .snapshotId(foobar.applyValue(getVolumeSnapshotResult -\u003e getVolumeSnapshotResult.id()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobarVolume:\n    type: digitalocean:Volume\n    name: foobar\n    properties:\n      region: lon1\n      name: foo\n      size: ${foobar.minDiskSize}\n      snapshotId: ${foobar.id}\nvariables:\n  foobar:\n    fn::invoke:\n      function: digitalocean:getVolumeSnapshot\n      arguments:\n        name: baz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVolumes can be imported using the `volume id`, e.g.\n\n```sh\n$ pulumi import digitalocean:index/volume:Volume volume 506f78a4-e098-11e5-ad9f-000f53306ae1\n```\n\n",
             "properties": {
                 "description": {
                     "type": "string",
@@ -16476,7 +16476,7 @@
     },
     "functions": {
         "digitalocean:index/getAccount:getAccount": {
-            "description": "Get information on your DigitalOcean account.\n\n## Example Usage\n\nGet the account:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getAccount({});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_account()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetAccount.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetAccount(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getAccount();\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getAccount\n      Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on your DigitalOcean account.\n\n## Example Usage\n\nGet the account:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getAccount({});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_account()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetAccount.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetAccount(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getAccount();\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getAccount\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "outputs": {
                 "description": "A collection of values returned by getAccount.\n",
                 "properties": {
@@ -16527,7 +16527,7 @@
             }
         },
         "digitalocean:index/getApp:getApp": {
-            "description": "Get information on a DigitalOcean App.\n\n## Example Usage\n\nGet the account:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getApp({\n    appId: \"e665d18d-7b56-44a9-92ce-31979174d544\",\n});\nexport const defaultIngress = example.then(example =\u003e example.defaultIngress);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_app(app_id=\"e665d18d-7b56-44a9-92ce-31979174d544\")\npulumi.export(\"defaultIngress\", example.default_ingress)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetApp.Invoke(new()\n    {\n        AppId = \"e665d18d-7b56-44a9-92ce-31979174d544\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"defaultIngress\"] = example.Apply(getAppResult =\u003e getAppResult.DefaultIngress),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupApp(ctx, \u0026digitalocean.LookupAppArgs{\n\t\t\tAppId: \"e665d18d-7b56-44a9-92ce-31979174d544\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"defaultIngress\", example.DefaultIngress)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetAppArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getApp(GetAppArgs.builder()\n            .appId(\"e665d18d-7b56-44a9-92ce-31979174d544\")\n            .build());\n\n        ctx.export(\"defaultIngress\", example.applyValue(getAppResult -\u003e getAppResult.defaultIngress()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getApp\n      Arguments:\n        appId: e665d18d-7b56-44a9-92ce-31979174d544\noutputs:\n  defaultIngress: ${example.defaultIngress}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on a DigitalOcean App.\n\n## Example Usage\n\nGet the account:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getApp({\n    appId: \"e665d18d-7b56-44a9-92ce-31979174d544\",\n});\nexport const defaultIngress = example.then(example =\u003e example.defaultIngress);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_app(app_id=\"e665d18d-7b56-44a9-92ce-31979174d544\")\npulumi.export(\"defaultIngress\", example.default_ingress)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetApp.Invoke(new()\n    {\n        AppId = \"e665d18d-7b56-44a9-92ce-31979174d544\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"defaultIngress\"] = example.Apply(getAppResult =\u003e getAppResult.DefaultIngress),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupApp(ctx, \u0026digitalocean.LookupAppArgs{\n\t\t\tAppId: \"e665d18d-7b56-44a9-92ce-31979174d544\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"defaultIngress\", example.DefaultIngress)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetAppArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getApp(GetAppArgs.builder()\n            .appId(\"e665d18d-7b56-44a9-92ce-31979174d544\")\n            .build());\n\n        ctx.export(\"defaultIngress\", example.applyValue(getAppResult -\u003e getAppResult.defaultIngress()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getApp\n      arguments:\n        appId: e665d18d-7b56-44a9-92ce-31979174d544\noutputs:\n  defaultIngress: ${example.defaultIngress}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getApp.\n",
                 "properties": {
@@ -16623,7 +16623,7 @@
             }
         },
         "digitalocean:index/getCertificate:getCertificate": {
-            "description": "Get information on a certificate. This data source provides the name, type, state,\ndomains, expiry date, and the sha1 fingerprint as configured on your DigitalOcean account.\nThis is useful if the certificate in question is not managed by this provider or you need to utilize\nany of the certificates data.\n\nAn error is triggered if the provided certificate name does not exist.\n\n## Example Usage\n\nGet the certificate:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getCertificate({\n    name: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_certificate(name=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetCertificate.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupCertificate(ctx, \u0026digitalocean.LookupCertificateArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetCertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getCertificate(GetCertificateArgs.builder()\n            .name(\"example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getCertificate\n      Arguments:\n        name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on a certificate. This data source provides the name, type, state,\ndomains, expiry date, and the sha1 fingerprint as configured on your DigitalOcean account.\nThis is useful if the certificate in question is not managed by this provider or you need to utilize\nany of the certificates data.\n\nAn error is triggered if the provided certificate name does not exist.\n\n## Example Usage\n\nGet the certificate:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getCertificate({\n    name: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_certificate(name=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetCertificate.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupCertificate(ctx, \u0026digitalocean.LookupCertificateArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetCertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getCertificate(GetCertificateArgs.builder()\n            .name(\"example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getCertificate\n      arguments:\n        name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getCertificate.\n",
                 "properties": {
@@ -16689,7 +16689,7 @@
             }
         },
         "digitalocean:index/getContainerRegistry:getContainerRegistry": {
-            "description": "Get information on a container registry. This data source provides the name as\nconfigured on your DigitalOcean account. This is useful if the container\nregistry name in question is not managed by this provider or you need validate if\nthe container registry exists in the account.\n\nAn error is triggered if the provided container registry name does not exist.\n\n## Example Usage\n\n### Basic Example\n\nGet the container registry:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getContainerRegistry({\n    name: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_container_registry(name=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetContainerRegistry.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupContainerRegistry(ctx, \u0026digitalocean.LookupContainerRegistryArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetContainerRegistryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getContainerRegistry(GetContainerRegistryArgs.builder()\n            .name(\"example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getContainerRegistry\n      Arguments:\n        name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on a container registry. This data source provides the name as\nconfigured on your DigitalOcean account. This is useful if the container\nregistry name in question is not managed by this provider or you need validate if\nthe container registry exists in the account.\n\nAn error is triggered if the provided container registry name does not exist.\n\n## Example Usage\n\n### Basic Example\n\nGet the container registry:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getContainerRegistry({\n    name: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_container_registry(name=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetContainerRegistry.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupContainerRegistry(ctx, \u0026digitalocean.LookupContainerRegistryArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetContainerRegistryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getContainerRegistry(GetContainerRegistryArgs.builder()\n            .name(\"example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getContainerRegistry\n      arguments:\n        name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getContainerRegistry.\n",
                 "properties": {
@@ -16753,7 +16753,7 @@
             }
         },
         "digitalocean:index/getDatabaseCa:getDatabaseCa": {
-            "description": "Provides the CA certificate for a DigitalOcean database.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst ca = digitalocean.getDatabaseCa({\n    clusterId: \"aaa-bbb-ccc-ddd\",\n});\nexport const caOutput = ca.then(ca =\u003e ca.certificate);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nca = digitalocean.get_database_ca(cluster_id=\"aaa-bbb-ccc-ddd\")\npulumi.export(\"caOutput\", ca.certificate)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ca = DigitalOcean.GetDatabaseCa.Invoke(new()\n    {\n        ClusterId = \"aaa-bbb-ccc-ddd\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"caOutput\"] = ca.Apply(getDatabaseCaResult =\u003e getDatabaseCaResult.Certificate),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tca, err := digitalocean.GetDatabaseCa(ctx, \u0026digitalocean.GetDatabaseCaArgs{\n\t\t\tClusterId: \"aaa-bbb-ccc-ddd\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"caOutput\", ca.Certificate)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDatabaseCaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var ca = DigitaloceanFunctions.getDatabaseCa(GetDatabaseCaArgs.builder()\n            .clusterId(\"aaa-bbb-ccc-ddd\")\n            .build());\n\n        ctx.export(\"caOutput\", ca.applyValue(getDatabaseCaResult -\u003e getDatabaseCaResult.certificate()));\n    }\n}\n```\n```yaml\nvariables:\n  ca:\n    fn::invoke:\n      Function: digitalocean:getDatabaseCa\n      Arguments:\n        clusterId: aaa-bbb-ccc-ddd\noutputs:\n  caOutput: ${ca.certificate}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Provides the CA certificate for a DigitalOcean database.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst ca = digitalocean.getDatabaseCa({\n    clusterId: \"aaa-bbb-ccc-ddd\",\n});\nexport const caOutput = ca.then(ca =\u003e ca.certificate);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nca = digitalocean.get_database_ca(cluster_id=\"aaa-bbb-ccc-ddd\")\npulumi.export(\"caOutput\", ca.certificate)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ca = DigitalOcean.GetDatabaseCa.Invoke(new()\n    {\n        ClusterId = \"aaa-bbb-ccc-ddd\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"caOutput\"] = ca.Apply(getDatabaseCaResult =\u003e getDatabaseCaResult.Certificate),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tca, err := digitalocean.GetDatabaseCa(ctx, \u0026digitalocean.GetDatabaseCaArgs{\n\t\t\tClusterId: \"aaa-bbb-ccc-ddd\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"caOutput\", ca.Certificate)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDatabaseCaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var ca = DigitaloceanFunctions.getDatabaseCa(GetDatabaseCaArgs.builder()\n            .clusterId(\"aaa-bbb-ccc-ddd\")\n            .build());\n\n        ctx.export(\"caOutput\", ca.applyValue(getDatabaseCaResult -\u003e getDatabaseCaResult.certificate()));\n    }\n}\n```\n```yaml\nvariables:\n  ca:\n    fn::invoke:\n      function: digitalocean:getDatabaseCa\n      arguments:\n        clusterId: aaa-bbb-ccc-ddd\noutputs:\n  caOutput: ${ca.certificate}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getDatabaseCa.\n",
                 "properties": {
@@ -16791,7 +16791,7 @@
             }
         },
         "digitalocean:index/getDatabaseCluster:getDatabaseCluster": {
-            "description": "Provides information on a DigitalOcean database cluster resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDatabaseCluster({\n    name: \"example-cluster\",\n});\nexport const databaseOutput = example.then(example =\u003e example.uri);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_database_cluster(name=\"example-cluster\")\npulumi.export(\"databaseOutput\", example.uri)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDatabaseCluster.Invoke(new()\n    {\n        Name = \"example-cluster\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"databaseOutput\"] = example.Apply(getDatabaseClusterResult =\u003e getDatabaseClusterResult.Uri),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupDatabaseCluster(ctx, \u0026digitalocean.LookupDatabaseClusterArgs{\n\t\t\tName: \"example-cluster\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"databaseOutput\", example.Uri)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDatabaseCluster(GetDatabaseClusterArgs.builder()\n            .name(\"example-cluster\")\n            .build());\n\n        ctx.export(\"databaseOutput\", example.applyValue(getDatabaseClusterResult -\u003e getDatabaseClusterResult.uri()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getDatabaseCluster\n      Arguments:\n        name: example-cluster\noutputs:\n  databaseOutput: ${example.uri}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Provides information on a DigitalOcean database cluster resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDatabaseCluster({\n    name: \"example-cluster\",\n});\nexport const databaseOutput = example.then(example =\u003e example.uri);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_database_cluster(name=\"example-cluster\")\npulumi.export(\"databaseOutput\", example.uri)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDatabaseCluster.Invoke(new()\n    {\n        Name = \"example-cluster\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"databaseOutput\"] = example.Apply(getDatabaseClusterResult =\u003e getDatabaseClusterResult.Uri),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupDatabaseCluster(ctx, \u0026digitalocean.LookupDatabaseClusterArgs{\n\t\t\tName: \"example-cluster\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"databaseOutput\", example.Uri)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDatabaseCluster(GetDatabaseClusterArgs.builder()\n            .name(\"example-cluster\")\n            .build());\n\n        ctx.export(\"databaseOutput\", example.applyValue(getDatabaseClusterResult -\u003e getDatabaseClusterResult.uri()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getDatabaseCluster\n      arguments:\n        name: example-cluster\noutputs:\n  databaseOutput: ${example.uri}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getDatabaseCluster.\n",
                 "properties": {
@@ -16964,7 +16964,7 @@
             }
         },
         "digitalocean:index/getDatabaseConnectionPool:getDatabaseConnectionPool": {
-            "description": "Provides information on a DigitalOcean PostgreSQL database connection pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDatabaseCluster({\n    name: \"example-cluster\",\n});\nconst read-only = example.then(example =\u003e digitalocean.getDatabaseConnectionPool({\n    clusterId: example.id,\n    name: \"pool-01\",\n}));\nexport const connectionPoolUriOutput = read_only.then(read_only =\u003e read_only.uri);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_database_cluster(name=\"example-cluster\")\nread_only = digitalocean.get_database_connection_pool(cluster_id=example.id,\n    name=\"pool-01\")\npulumi.export(\"connectionPoolUriOutput\", read_only.uri)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDatabaseCluster.Invoke(new()\n    {\n        Name = \"example-cluster\",\n    });\n\n    var read_only = DigitalOcean.GetDatabaseConnectionPool.Invoke(new()\n    {\n        ClusterId = example.Apply(getDatabaseClusterResult =\u003e getDatabaseClusterResult.Id),\n        Name = \"pool-01\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"connectionPoolUriOutput\"] = read_only.Apply(read_only =\u003e read_only.Apply(getDatabaseConnectionPoolResult =\u003e getDatabaseConnectionPoolResult.Uri)),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupDatabaseCluster(ctx, \u0026digitalocean.LookupDatabaseClusterArgs{\n\t\t\tName: \"example-cluster\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tread_only, err := digitalocean.LookupDatabaseConnectionPool(ctx, \u0026digitalocean.LookupDatabaseConnectionPoolArgs{\n\t\t\tClusterId: example.Id,\n\t\t\tName:      \"pool-01\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"connectionPoolUriOutput\", read_only.Uri)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDatabaseClusterArgs;\nimport com.pulumi.digitalocean.inputs.GetDatabaseConnectionPoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDatabaseCluster(GetDatabaseClusterArgs.builder()\n            .name(\"example-cluster\")\n            .build());\n\n        final var read-only = DigitaloceanFunctions.getDatabaseConnectionPool(GetDatabaseConnectionPoolArgs.builder()\n            .clusterId(example.applyValue(getDatabaseClusterResult -\u003e getDatabaseClusterResult.id()))\n            .name(\"pool-01\")\n            .build());\n\n        ctx.export(\"connectionPoolUriOutput\", read_only.uri());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getDatabaseCluster\n      Arguments:\n        name: example-cluster\n  read-only:\n    fn::invoke:\n      Function: digitalocean:getDatabaseConnectionPool\n      Arguments:\n        clusterId: ${example.id}\n        name: pool-01\noutputs:\n  connectionPoolUriOutput: ${[\"read-only\"].uri}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Provides information on a DigitalOcean PostgreSQL database connection pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDatabaseCluster({\n    name: \"example-cluster\",\n});\nconst read-only = example.then(example =\u003e digitalocean.getDatabaseConnectionPool({\n    clusterId: example.id,\n    name: \"pool-01\",\n}));\nexport const connectionPoolUriOutput = read_only.then(read_only =\u003e read_only.uri);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_database_cluster(name=\"example-cluster\")\nread_only = digitalocean.get_database_connection_pool(cluster_id=example.id,\n    name=\"pool-01\")\npulumi.export(\"connectionPoolUriOutput\", read_only.uri)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDatabaseCluster.Invoke(new()\n    {\n        Name = \"example-cluster\",\n    });\n\n    var read_only = DigitalOcean.GetDatabaseConnectionPool.Invoke(new()\n    {\n        ClusterId = example.Apply(getDatabaseClusterResult =\u003e getDatabaseClusterResult.Id),\n        Name = \"pool-01\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"connectionPoolUriOutput\"] = read_only.Apply(read_only =\u003e read_only.Apply(getDatabaseConnectionPoolResult =\u003e getDatabaseConnectionPoolResult.Uri)),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupDatabaseCluster(ctx, \u0026digitalocean.LookupDatabaseClusterArgs{\n\t\t\tName: \"example-cluster\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tread_only, err := digitalocean.LookupDatabaseConnectionPool(ctx, \u0026digitalocean.LookupDatabaseConnectionPoolArgs{\n\t\t\tClusterId: example.Id,\n\t\t\tName:      \"pool-01\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"connectionPoolUriOutput\", read_only.Uri)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDatabaseClusterArgs;\nimport com.pulumi.digitalocean.inputs.GetDatabaseConnectionPoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDatabaseCluster(GetDatabaseClusterArgs.builder()\n            .name(\"example-cluster\")\n            .build());\n\n        final var read-only = DigitaloceanFunctions.getDatabaseConnectionPool(GetDatabaseConnectionPoolArgs.builder()\n            .clusterId(example.applyValue(getDatabaseClusterResult -\u003e getDatabaseClusterResult.id()))\n            .name(\"pool-01\")\n            .build());\n\n        ctx.export(\"connectionPoolUriOutput\", read_only.uri());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getDatabaseCluster\n      arguments:\n        name: example-cluster\n  read-only:\n    fn::invoke:\n      function: digitalocean:getDatabaseConnectionPool\n      arguments:\n        clusterId: ${example.id}\n        name: pool-01\noutputs:\n  connectionPoolUriOutput: ${[\"read-only\"].uri}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getDatabaseConnectionPool.\n",
                 "properties": {
@@ -17061,7 +17061,7 @@
             }
         },
         "digitalocean:index/getDatabaseReplica:getDatabaseReplica": {
-            "description": "Provides information on a DigitalOcean database replica.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDatabaseCluster({\n    name: \"example-cluster\",\n});\nconst read-only = example.then(example =\u003e digitalocean.getDatabaseReplica({\n    clusterId: example.id,\n    name: \"terra-test-ro\",\n}));\nexport const replicaOutput = read_only.then(read_only =\u003e read_only.uri);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_database_cluster(name=\"example-cluster\")\nread_only = digitalocean.get_database_replica(cluster_id=example.id,\n    name=\"terra-test-ro\")\npulumi.export(\"replicaOutput\", read_only.uri)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDatabaseCluster.Invoke(new()\n    {\n        Name = \"example-cluster\",\n    });\n\n    var read_only = DigitalOcean.GetDatabaseReplica.Invoke(new()\n    {\n        ClusterId = example.Apply(getDatabaseClusterResult =\u003e getDatabaseClusterResult.Id),\n        Name = \"terra-test-ro\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"replicaOutput\"] = read_only.Apply(read_only =\u003e read_only.Apply(getDatabaseReplicaResult =\u003e getDatabaseReplicaResult.Uri)),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupDatabaseCluster(ctx, \u0026digitalocean.LookupDatabaseClusterArgs{\n\t\t\tName: \"example-cluster\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tread_only, err := digitalocean.LookupDatabaseReplica(ctx, \u0026digitalocean.LookupDatabaseReplicaArgs{\n\t\t\tClusterId: example.Id,\n\t\t\tName:      \"terra-test-ro\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"replicaOutput\", read_only.Uri)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDatabaseClusterArgs;\nimport com.pulumi.digitalocean.inputs.GetDatabaseReplicaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDatabaseCluster(GetDatabaseClusterArgs.builder()\n            .name(\"example-cluster\")\n            .build());\n\n        final var read-only = DigitaloceanFunctions.getDatabaseReplica(GetDatabaseReplicaArgs.builder()\n            .clusterId(example.applyValue(getDatabaseClusterResult -\u003e getDatabaseClusterResult.id()))\n            .name(\"terra-test-ro\")\n            .build());\n\n        ctx.export(\"replicaOutput\", read_only.uri());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getDatabaseCluster\n      Arguments:\n        name: example-cluster\n  read-only:\n    fn::invoke:\n      Function: digitalocean:getDatabaseReplica\n      Arguments:\n        clusterId: ${example.id}\n        name: terra-test-ro\noutputs:\n  replicaOutput: ${[\"read-only\"].uri}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Provides information on a DigitalOcean database replica.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDatabaseCluster({\n    name: \"example-cluster\",\n});\nconst read-only = example.then(example =\u003e digitalocean.getDatabaseReplica({\n    clusterId: example.id,\n    name: \"terra-test-ro\",\n}));\nexport const replicaOutput = read_only.then(read_only =\u003e read_only.uri);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_database_cluster(name=\"example-cluster\")\nread_only = digitalocean.get_database_replica(cluster_id=example.id,\n    name=\"terra-test-ro\")\npulumi.export(\"replicaOutput\", read_only.uri)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDatabaseCluster.Invoke(new()\n    {\n        Name = \"example-cluster\",\n    });\n\n    var read_only = DigitalOcean.GetDatabaseReplica.Invoke(new()\n    {\n        ClusterId = example.Apply(getDatabaseClusterResult =\u003e getDatabaseClusterResult.Id),\n        Name = \"terra-test-ro\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"replicaOutput\"] = read_only.Apply(read_only =\u003e read_only.Apply(getDatabaseReplicaResult =\u003e getDatabaseReplicaResult.Uri)),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupDatabaseCluster(ctx, \u0026digitalocean.LookupDatabaseClusterArgs{\n\t\t\tName: \"example-cluster\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tread_only, err := digitalocean.LookupDatabaseReplica(ctx, \u0026digitalocean.LookupDatabaseReplicaArgs{\n\t\t\tClusterId: example.Id,\n\t\t\tName:      \"terra-test-ro\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"replicaOutput\", read_only.Uri)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDatabaseClusterArgs;\nimport com.pulumi.digitalocean.inputs.GetDatabaseReplicaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDatabaseCluster(GetDatabaseClusterArgs.builder()\n            .name(\"example-cluster\")\n            .build());\n\n        final var read-only = DigitaloceanFunctions.getDatabaseReplica(GetDatabaseReplicaArgs.builder()\n            .clusterId(example.applyValue(getDatabaseClusterResult -\u003e getDatabaseClusterResult.id()))\n            .name(\"terra-test-ro\")\n            .build());\n\n        ctx.export(\"replicaOutput\", read_only.uri());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getDatabaseCluster\n      arguments:\n        name: example-cluster\n  read-only:\n    fn::invoke:\n      function: digitalocean:getDatabaseReplica\n      arguments:\n        clusterId: ${example.id}\n        name: terra-test-ro\noutputs:\n  replicaOutput: ${[\"read-only\"].uri}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getDatabaseReplica.\n",
                 "properties": {
@@ -17177,7 +17177,7 @@
             }
         },
         "digitalocean:index/getDatabaseUser:getDatabaseUser": {
-            "description": "Provides information on a DigitalOcean database user resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst main = digitalocean.getDatabaseCluster({\n    name: \"main-cluster\",\n});\nconst example = main.then(main =\u003e digitalocean.getDatabaseUser({\n    clusterId: main.id,\n    name: \"example-user\",\n}));\nexport const databaseUserPassword = example.then(example =\u003e example.password);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmain = digitalocean.get_database_cluster(name=\"main-cluster\")\nexample = digitalocean.get_database_user(cluster_id=main.id,\n    name=\"example-user\")\npulumi.export(\"databaseUserPassword\", example.password)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = DigitalOcean.GetDatabaseCluster.Invoke(new()\n    {\n        Name = \"main-cluster\",\n    });\n\n    var example = DigitalOcean.GetDatabaseUser.Invoke(new()\n    {\n        ClusterId = main.Apply(getDatabaseClusterResult =\u003e getDatabaseClusterResult.Id),\n        Name = \"example-user\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"databaseUserPassword\"] = example.Apply(getDatabaseUserResult =\u003e getDatabaseUserResult.Password),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := digitalocean.LookupDatabaseCluster(ctx, \u0026digitalocean.LookupDatabaseClusterArgs{\n\t\t\tName: \"main-cluster\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := digitalocean.LookupDatabaseUser(ctx, \u0026digitalocean.LookupDatabaseUserArgs{\n\t\t\tClusterId: main.Id,\n\t\t\tName:      \"example-user\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"databaseUserPassword\", example.Password)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDatabaseClusterArgs;\nimport com.pulumi.digitalocean.inputs.GetDatabaseUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = DigitaloceanFunctions.getDatabaseCluster(GetDatabaseClusterArgs.builder()\n            .name(\"main-cluster\")\n            .build());\n\n        final var example = DigitaloceanFunctions.getDatabaseUser(GetDatabaseUserArgs.builder()\n            .clusterId(main.applyValue(getDatabaseClusterResult -\u003e getDatabaseClusterResult.id()))\n            .name(\"example-user\")\n            .build());\n\n        ctx.export(\"databaseUserPassword\", example.applyValue(getDatabaseUserResult -\u003e getDatabaseUserResult.password()));\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      Function: digitalocean:getDatabaseCluster\n      Arguments:\n        name: main-cluster\n  example:\n    fn::invoke:\n      Function: digitalocean:getDatabaseUser\n      Arguments:\n        clusterId: ${main.id}\n        name: example-user\noutputs:\n  databaseUserPassword: ${example.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Provides information on a DigitalOcean database user resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst main = digitalocean.getDatabaseCluster({\n    name: \"main-cluster\",\n});\nconst example = main.then(main =\u003e digitalocean.getDatabaseUser({\n    clusterId: main.id,\n    name: \"example-user\",\n}));\nexport const databaseUserPassword = example.then(example =\u003e example.password);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmain = digitalocean.get_database_cluster(name=\"main-cluster\")\nexample = digitalocean.get_database_user(cluster_id=main.id,\n    name=\"example-user\")\npulumi.export(\"databaseUserPassword\", example.password)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = DigitalOcean.GetDatabaseCluster.Invoke(new()\n    {\n        Name = \"main-cluster\",\n    });\n\n    var example = DigitalOcean.GetDatabaseUser.Invoke(new()\n    {\n        ClusterId = main.Apply(getDatabaseClusterResult =\u003e getDatabaseClusterResult.Id),\n        Name = \"example-user\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"databaseUserPassword\"] = example.Apply(getDatabaseUserResult =\u003e getDatabaseUserResult.Password),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := digitalocean.LookupDatabaseCluster(ctx, \u0026digitalocean.LookupDatabaseClusterArgs{\n\t\t\tName: \"main-cluster\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := digitalocean.LookupDatabaseUser(ctx, \u0026digitalocean.LookupDatabaseUserArgs{\n\t\t\tClusterId: main.Id,\n\t\t\tName:      \"example-user\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"databaseUserPassword\", example.Password)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDatabaseClusterArgs;\nimport com.pulumi.digitalocean.inputs.GetDatabaseUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = DigitaloceanFunctions.getDatabaseCluster(GetDatabaseClusterArgs.builder()\n            .name(\"main-cluster\")\n            .build());\n\n        final var example = DigitaloceanFunctions.getDatabaseUser(GetDatabaseUserArgs.builder()\n            .clusterId(main.applyValue(getDatabaseClusterResult -\u003e getDatabaseClusterResult.id()))\n            .name(\"example-user\")\n            .build());\n\n        ctx.export(\"databaseUserPassword\", example.applyValue(getDatabaseUserResult -\u003e getDatabaseUserResult.password()));\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: digitalocean:getDatabaseCluster\n      arguments:\n        name: main-cluster\n  example:\n    fn::invoke:\n      function: digitalocean:getDatabaseUser\n      arguments:\n        clusterId: ${main.id}\n        name: example-user\noutputs:\n  databaseUserPassword: ${example.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getDatabaseUser.\n",
                 "properties": {
@@ -17254,7 +17254,7 @@
             }
         },
         "digitalocean:index/getDomain:getDomain": {
-            "description": "Get information on a domain. This data source provides the name, TTL, and zone\nfile as configured on your DigitalOcean account. This is useful if the domain\nname in question is not managed by this provider or you need to utilize TTL or zone\nfile data.\n\nAn error is triggered if the provided domain name is not managed with your\nDigitalOcean account.\n\n## Example Usage\n\nGet the zone file for a domain:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDomain({\n    name: \"example.com\",\n});\nexport const domainOutput = example.then(example =\u003e example.zoneFile);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_domain(name=\"example.com\")\npulumi.export(\"domainOutput\", example.zone_file)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDomain.Invoke(new()\n    {\n        Name = \"example.com\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"domainOutput\"] = example.Apply(getDomainResult =\u003e getDomainResult.ZoneFile),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupDomain(ctx, \u0026digitalocean.LookupDomainArgs{\n\t\t\tName: \"example.com\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"domainOutput\", example.ZoneFile)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDomain(GetDomainArgs.builder()\n            .name(\"example.com\")\n            .build());\n\n        ctx.export(\"domainOutput\", example.applyValue(getDomainResult -\u003e getDomainResult.zoneFile()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getDomain\n      Arguments:\n        name: example.com\noutputs:\n  domainOutput: ${example.zoneFile}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n```\n\ndata.digitalocean_domain.example: Refreshing state...\n\nApply complete! Resources: 0 added, 0 changed, 0 destroyed.\n\nOutputs:\n\ndomain_output = $ORIGIN example.com.\n$TTL 1800\nexample.com. IN SOA ns1.digitalocean.com. hostmaster.example.com. 1516944700 10800 3600 604800 1800\nexample.com. 1800 IN NS ns1.digitalocean.com.\nexample.com. 1800 IN NS ns2.digitalocean.com.\nexample.com. 1800 IN NS ns3.digitalocean.com.\nwww.example.com. 3600 IN A 176.107.155.137\ndb.example.com. 3600 IN A 179.189.166.115\njira.example.com. 3600 IN A 207.189.228.15\n```\n",
+            "description": "Get information on a domain. This data source provides the name, TTL, and zone\nfile as configured on your DigitalOcean account. This is useful if the domain\nname in question is not managed by this provider or you need to utilize TTL or zone\nfile data.\n\nAn error is triggered if the provided domain name is not managed with your\nDigitalOcean account.\n\n## Example Usage\n\nGet the zone file for a domain:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDomain({\n    name: \"example.com\",\n});\nexport const domainOutput = example.then(example =\u003e example.zoneFile);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_domain(name=\"example.com\")\npulumi.export(\"domainOutput\", example.zone_file)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDomain.Invoke(new()\n    {\n        Name = \"example.com\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"domainOutput\"] = example.Apply(getDomainResult =\u003e getDomainResult.ZoneFile),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupDomain(ctx, \u0026digitalocean.LookupDomainArgs{\n\t\t\tName: \"example.com\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"domainOutput\", example.ZoneFile)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDomain(GetDomainArgs.builder()\n            .name(\"example.com\")\n            .build());\n\n        ctx.export(\"domainOutput\", example.applyValue(getDomainResult -\u003e getDomainResult.zoneFile()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getDomain\n      arguments:\n        name: example.com\noutputs:\n  domainOutput: ${example.zoneFile}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n```\n\ndata.digitalocean_domain.example: Refreshing state...\n\nApply complete! Resources: 0 added, 0 changed, 0 destroyed.\n\nOutputs:\n\ndomain_output = $ORIGIN example.com.\n$TTL 1800\nexample.com. IN SOA ns1.digitalocean.com. hostmaster.example.com. 1516944700 10800 3600 604800 1800\nexample.com. 1800 IN NS ns1.digitalocean.com.\nexample.com. 1800 IN NS ns2.digitalocean.com.\nexample.com. 1800 IN NS ns3.digitalocean.com.\nwww.example.com. 3600 IN A 176.107.155.137\ndb.example.com. 3600 IN A 179.189.166.115\njira.example.com. 3600 IN A 207.189.228.15\n```\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getDomain.\n",
                 "properties": {
@@ -17302,7 +17302,7 @@
             }
         },
         "digitalocean:index/getDomains:getDomains": {
-            "description": "Get information on domains for use in other resources, with the ability to filter and sort the results.\nIf no filters are specified, all domains will be returned.\n\nThis data source is useful if the domains in question are not managed by this provider or you need to\nutilize any of the domains' data.\n\nNote: You can use the `digitalocean.Domain` data source to obtain metadata\nabout a single domain if you already know the `name`.\n\n## Example Usage\n\nUse the `filter` block with a `key` string and `values` list to filter domains. (This example\nalso uses the regular expression `match_by` mode in order to match domains by suffix.)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst examples = digitalocean.getDomains({\n    filters: [{\n        key: \"name\",\n        values: [\"example\\\\.com$\"],\n        matchBy: \"re\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexamples = digitalocean.get_domains(filters=[{\n    \"key\": \"name\",\n    \"values\": [\"example\\\\.com$\"],\n    \"match_by\": \"re\",\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var examples = DigitalOcean.GetDomains.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetDomainsFilterInputArgs\n            {\n                Key = \"name\",\n                Values = new[]\n                {\n                    \"example\\\\.com$\",\n                },\n                MatchBy = \"re\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetDomains(ctx, \u0026digitalocean.GetDomainsArgs{\n\t\t\tFilters: []digitalocean.GetDomainsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"name\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"example\\\\.com$\",\n\t\t\t\t\t},\n\t\t\t\t\tMatchBy: pulumi.StringRef(\"re\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDomainsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var examples = DigitaloceanFunctions.getDomains(GetDomainsArgs.builder()\n            .filters(GetDomainsFilterArgs.builder()\n                .key(\"name\")\n                .values(\"example\\\\.com$\")\n                .matchBy(\"re\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  examples:\n    fn::invoke:\n      Function: digitalocean:getDomains\n      Arguments:\n        filters:\n          - key: name\n            values:\n              - example\\.com$\n            matchBy: re\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on domains for use in other resources, with the ability to filter and sort the results.\nIf no filters are specified, all domains will be returned.\n\nThis data source is useful if the domains in question are not managed by this provider or you need to\nutilize any of the domains' data.\n\nNote: You can use the `digitalocean.Domain` data source to obtain metadata\nabout a single domain if you already know the `name`.\n\n## Example Usage\n\nUse the `filter` block with a `key` string and `values` list to filter domains. (This example\nalso uses the regular expression `match_by` mode in order to match domains by suffix.)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst examples = digitalocean.getDomains({\n    filters: [{\n        key: \"name\",\n        values: [\"example\\\\.com$\"],\n        matchBy: \"re\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexamples = digitalocean.get_domains(filters=[{\n    \"key\": \"name\",\n    \"values\": [\"example\\\\.com$\"],\n    \"match_by\": \"re\",\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var examples = DigitalOcean.GetDomains.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetDomainsFilterInputArgs\n            {\n                Key = \"name\",\n                Values = new[]\n                {\n                    \"example\\\\.com$\",\n                },\n                MatchBy = \"re\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetDomains(ctx, \u0026digitalocean.GetDomainsArgs{\n\t\t\tFilters: []digitalocean.GetDomainsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"name\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"example\\\\.com$\",\n\t\t\t\t\t},\n\t\t\t\t\tMatchBy: pulumi.StringRef(\"re\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDomainsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var examples = DigitaloceanFunctions.getDomains(GetDomainsArgs.builder()\n            .filters(GetDomainsFilterArgs.builder()\n                .key(\"name\")\n                .values(\"example\\\\.com$\")\n                .matchBy(\"re\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  examples:\n    fn::invoke:\n      function: digitalocean:getDomains\n      arguments:\n        filters:\n          - key: name\n            values:\n              - example\\.com$\n            matchBy: re\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getDomains.\n",
                 "properties": {
@@ -17358,7 +17358,7 @@
             }
         },
         "digitalocean:index/getDroplet:getDroplet": {
-            "description": "Get information on a Droplet for use in other resources. This data source provides\nall of the Droplet's properties as configured on your DigitalOcean account. This\nis useful if the Droplet in question is not managed by this provider or you need to\nutilize any of the Droplet's data.\n\n**Note:** This data source returns a single Droplet. When specifying a `tag`, an\nerror is triggered if more than one Droplet is found.\n\n## Example Usage\n\nGet the Droplet by name:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDroplet({\n    name: \"web\",\n});\nexport const dropletOutput = example.then(example =\u003e example.ipv4Address);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_droplet(name=\"web\")\npulumi.export(\"dropletOutput\", example.ipv4_address)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDroplet.Invoke(new()\n    {\n        Name = \"web\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dropletOutput\"] = example.Apply(getDropletResult =\u003e getDropletResult.Ipv4Address),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupDroplet(ctx, \u0026digitalocean.LookupDropletArgs{\n\t\t\tName: pulumi.StringRef(\"web\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dropletOutput\", example.Ipv4Address)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDroplet(GetDropletArgs.builder()\n            .name(\"web\")\n            .build());\n\n        ctx.export(\"dropletOutput\", example.applyValue(getDropletResult -\u003e getDropletResult.ipv4Address()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getDroplet\n      Arguments:\n        name: web\noutputs:\n  dropletOutput: ${example.ipv4Address}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nGet the Droplet by tag:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDroplet({\n    tag: \"web\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_droplet(tag=\"web\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDroplet.Invoke(new()\n    {\n        Tag = \"web\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupDroplet(ctx, \u0026digitalocean.LookupDropletArgs{\n\t\t\tTag: pulumi.StringRef(\"web\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDroplet(GetDropletArgs.builder()\n            .tag(\"web\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getDroplet\n      Arguments:\n        tag: web\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nGet the Droplet by ID:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDroplet({\n    id: exampleDigitaloceanKubernetesCluster.nodePool[0].nodes[0].dropletId,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_droplet(id=example_digitalocean_kubernetes_cluster[\"nodePool\"][0][\"nodes\"][0][\"dropletId\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDroplet.Invoke(new()\n    {\n        Id = exampleDigitaloceanKubernetesCluster.NodePool[0].Nodes[0].DropletId,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupDroplet(ctx, \u0026digitalocean.LookupDropletArgs{\n\t\t\tId: pulumi.IntRef(exampleDigitaloceanKubernetesCluster.NodePool[0].Nodes[0].DropletId),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDroplet(GetDropletArgs.builder()\n            .id(exampleDigitaloceanKubernetesCluster.nodePool()[0].nodes()[0].dropletId())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getDroplet\n      Arguments:\n        id: ${exampleDigitaloceanKubernetesCluster.nodePool[0].nodes[0].dropletId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on a Droplet for use in other resources. This data source provides\nall of the Droplet's properties as configured on your DigitalOcean account. This\nis useful if the Droplet in question is not managed by this provider or you need to\nutilize any of the Droplet's data.\n\n**Note:** This data source returns a single Droplet. When specifying a `tag`, an\nerror is triggered if more than one Droplet is found.\n\n## Example Usage\n\nGet the Droplet by name:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDroplet({\n    name: \"web\",\n});\nexport const dropletOutput = example.then(example =\u003e example.ipv4Address);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_droplet(name=\"web\")\npulumi.export(\"dropletOutput\", example.ipv4_address)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDroplet.Invoke(new()\n    {\n        Name = \"web\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dropletOutput\"] = example.Apply(getDropletResult =\u003e getDropletResult.Ipv4Address),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupDroplet(ctx, \u0026digitalocean.LookupDropletArgs{\n\t\t\tName: pulumi.StringRef(\"web\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dropletOutput\", example.Ipv4Address)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDroplet(GetDropletArgs.builder()\n            .name(\"web\")\n            .build());\n\n        ctx.export(\"dropletOutput\", example.applyValue(getDropletResult -\u003e getDropletResult.ipv4Address()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getDroplet\n      arguments:\n        name: web\noutputs:\n  dropletOutput: ${example.ipv4Address}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nGet the Droplet by tag:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDroplet({\n    tag: \"web\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_droplet(tag=\"web\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDroplet.Invoke(new()\n    {\n        Tag = \"web\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupDroplet(ctx, \u0026digitalocean.LookupDropletArgs{\n\t\t\tTag: pulumi.StringRef(\"web\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDroplet(GetDropletArgs.builder()\n            .tag(\"web\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getDroplet\n      arguments:\n        tag: web\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nGet the Droplet by ID:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDroplet({\n    id: exampleDigitaloceanKubernetesCluster.nodePool[0].nodes[0].dropletId,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_droplet(id=example_digitalocean_kubernetes_cluster[\"nodePool\"][0][\"nodes\"][0][\"dropletId\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDroplet.Invoke(new()\n    {\n        Id = exampleDigitaloceanKubernetesCluster.NodePool[0].Nodes[0].DropletId,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupDroplet(ctx, \u0026digitalocean.LookupDropletArgs{\n\t\t\tId: pulumi.IntRef(exampleDigitaloceanKubernetesCluster.NodePool[0].Nodes[0].DropletId),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDroplet(GetDropletArgs.builder()\n            .id(exampleDigitaloceanKubernetesCluster.nodePool()[0].nodes()[0].dropletId())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getDroplet\n      arguments:\n        id: ${exampleDigitaloceanKubernetesCluster.nodePool[0].nodes[0].dropletId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getDroplet.\n",
                 "properties": {
@@ -17526,7 +17526,7 @@
             }
         },
         "digitalocean:index/getDropletSnapshot:getDropletSnapshot": {
-            "description": "Droplet snapshots are saved instances of a Droplet. Use this data\nsource to retrieve the ID of a DigitalOcean Droplet snapshot for use in other\nresources.\n\n## Example Usage\n\nGet the Droplet snapshot:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst web-snapshot = digitalocean.getDropletSnapshot({\n    nameRegex: \"^web\",\n    region: \"nyc3\",\n    mostRecent: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nweb_snapshot = digitalocean.get_droplet_snapshot(name_regex=\"^web\",\n    region=\"nyc3\",\n    most_recent=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var web_snapshot = DigitalOcean.GetDropletSnapshot.Invoke(new()\n    {\n        NameRegex = \"^web\",\n        Region = \"nyc3\",\n        MostRecent = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupDropletSnapshot(ctx, \u0026digitalocean.LookupDropletSnapshotArgs{\n\t\t\tNameRegex:  pulumi.StringRef(\"^web\"),\n\t\t\tRegion:     pulumi.StringRef(\"nyc3\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var web-snapshot = DigitaloceanFunctions.getDropletSnapshot(GetDropletSnapshotArgs.builder()\n            .nameRegex(\"^web\")\n            .region(\"nyc3\")\n            .mostRecent(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  web-snapshot:\n    fn::invoke:\n      Function: digitalocean:getDropletSnapshot\n      Arguments:\n        nameRegex: ^web\n        region: nyc3\n        mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate image from snapshot:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst web-snapshot = digitalocean.getDropletSnapshot({\n    nameRegex: \"^web\",\n    region: \"nyc3\",\n    mostRecent: true,\n});\nconst from_snapshot = new digitalocean.Droplet(\"from-snapshot\", {\n    image: web_snapshot.then(web_snapshot =\u003e web_snapshot.id),\n    name: \"web-02\",\n    region: digitalocean.Region.NYC3,\n    size: digitalocean.DropletSlug.DropletS2VCPU4GB,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nweb_snapshot = digitalocean.get_droplet_snapshot(name_regex=\"^web\",\n    region=\"nyc3\",\n    most_recent=True)\nfrom_snapshot = digitalocean.Droplet(\"from-snapshot\",\n    image=web_snapshot.id,\n    name=\"web-02\",\n    region=digitalocean.Region.NYC3,\n    size=digitalocean.DropletSlug.DROPLET_S2_VCPU4_GB)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var web_snapshot = DigitalOcean.GetDropletSnapshot.Invoke(new()\n    {\n        NameRegex = \"^web\",\n        Region = \"nyc3\",\n        MostRecent = true,\n    });\n\n    var from_snapshot = new DigitalOcean.Droplet(\"from-snapshot\", new()\n    {\n        Image = web_snapshot.Apply(web_snapshot =\u003e web_snapshot.Apply(getDropletSnapshotResult =\u003e getDropletSnapshotResult.Id)),\n        Name = \"web-02\",\n        Region = DigitalOcean.Region.NYC3,\n        Size = DigitalOcean.DropletSlug.DropletS2VCPU4GB,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tweb_snapshot, err := digitalocean.LookupDropletSnapshot(ctx, \u0026digitalocean.LookupDropletSnapshotArgs{\n\t\t\tNameRegex:  pulumi.StringRef(\"^web\"),\n\t\t\tRegion:     pulumi.StringRef(\"nyc3\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"from-snapshot\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  pulumi.String(web_snapshot.Id),\n\t\t\tName:   pulumi.String(\"web-02\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS2VCPU4GB),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletSnapshotArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var web-snapshot = DigitaloceanFunctions.getDropletSnapshot(GetDropletSnapshotArgs.builder()\n            .nameRegex(\"^web\")\n            .region(\"nyc3\")\n            .mostRecent(true)\n            .build());\n\n        var from_snapshot = new Droplet(\"from-snapshot\", DropletArgs.builder()\n            .image(web_snapshot.id())\n            .name(\"web-02\")\n            .region(\"nyc3\")\n            .size(\"s-2vcpu-4gb\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  from-snapshot:\n    type: digitalocean:Droplet\n    properties:\n      image: ${[\"web-snapshot\"].id}\n      name: web-02\n      region: nyc3\n      size: s-2vcpu-4gb\nvariables:\n  web-snapshot:\n    fn::invoke:\n      Function: digitalocean:getDropletSnapshot\n      Arguments:\n        nameRegex: ^web\n        region: nyc3\n        mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Droplet snapshots are saved instances of a Droplet. Use this data\nsource to retrieve the ID of a DigitalOcean Droplet snapshot for use in other\nresources.\n\n## Example Usage\n\nGet the Droplet snapshot:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst web-snapshot = digitalocean.getDropletSnapshot({\n    nameRegex: \"^web\",\n    region: \"nyc3\",\n    mostRecent: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nweb_snapshot = digitalocean.get_droplet_snapshot(name_regex=\"^web\",\n    region=\"nyc3\",\n    most_recent=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var web_snapshot = DigitalOcean.GetDropletSnapshot.Invoke(new()\n    {\n        NameRegex = \"^web\",\n        Region = \"nyc3\",\n        MostRecent = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupDropletSnapshot(ctx, \u0026digitalocean.LookupDropletSnapshotArgs{\n\t\t\tNameRegex:  pulumi.StringRef(\"^web\"),\n\t\t\tRegion:     pulumi.StringRef(\"nyc3\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var web-snapshot = DigitaloceanFunctions.getDropletSnapshot(GetDropletSnapshotArgs.builder()\n            .nameRegex(\"^web\")\n            .region(\"nyc3\")\n            .mostRecent(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  web-snapshot:\n    fn::invoke:\n      function: digitalocean:getDropletSnapshot\n      arguments:\n        nameRegex: ^web\n        region: nyc3\n        mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate image from snapshot:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst web-snapshot = digitalocean.getDropletSnapshot({\n    nameRegex: \"^web\",\n    region: \"nyc3\",\n    mostRecent: true,\n});\nconst from_snapshot = new digitalocean.Droplet(\"from-snapshot\", {\n    image: web_snapshot.then(web_snapshot =\u003e web_snapshot.id),\n    name: \"web-02\",\n    region: digitalocean.Region.NYC3,\n    size: digitalocean.DropletSlug.DropletS2VCPU4GB,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nweb_snapshot = digitalocean.get_droplet_snapshot(name_regex=\"^web\",\n    region=\"nyc3\",\n    most_recent=True)\nfrom_snapshot = digitalocean.Droplet(\"from-snapshot\",\n    image=web_snapshot.id,\n    name=\"web-02\",\n    region=digitalocean.Region.NYC3,\n    size=digitalocean.DropletSlug.DROPLET_S2_VCPU4_GB)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var web_snapshot = DigitalOcean.GetDropletSnapshot.Invoke(new()\n    {\n        NameRegex = \"^web\",\n        Region = \"nyc3\",\n        MostRecent = true,\n    });\n\n    var from_snapshot = new DigitalOcean.Droplet(\"from-snapshot\", new()\n    {\n        Image = web_snapshot.Apply(web_snapshot =\u003e web_snapshot.Apply(getDropletSnapshotResult =\u003e getDropletSnapshotResult.Id)),\n        Name = \"web-02\",\n        Region = DigitalOcean.Region.NYC3,\n        Size = DigitalOcean.DropletSlug.DropletS2VCPU4GB,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tweb_snapshot, err := digitalocean.LookupDropletSnapshot(ctx, \u0026digitalocean.LookupDropletSnapshotArgs{\n\t\t\tNameRegex:  pulumi.StringRef(\"^web\"),\n\t\t\tRegion:     pulumi.StringRef(\"nyc3\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"from-snapshot\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  pulumi.String(web_snapshot.Id),\n\t\t\tName:   pulumi.String(\"web-02\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS2VCPU4GB),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletSnapshotArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var web-snapshot = DigitaloceanFunctions.getDropletSnapshot(GetDropletSnapshotArgs.builder()\n            .nameRegex(\"^web\")\n            .region(\"nyc3\")\n            .mostRecent(true)\n            .build());\n\n        var from_snapshot = new Droplet(\"from-snapshot\", DropletArgs.builder()\n            .image(web_snapshot.id())\n            .name(\"web-02\")\n            .region(\"nyc3\")\n            .size(\"s-2vcpu-4gb\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  from-snapshot:\n    type: digitalocean:Droplet\n    properties:\n      image: ${[\"web-snapshot\"].id}\n      name: web-02\n      region: nyc3\n      size: s-2vcpu-4gb\nvariables:\n  web-snapshot:\n    fn::invoke:\n      function: digitalocean:getDropletSnapshot\n      arguments:\n        nameRegex: ^web\n        region: nyc3\n        mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getDropletSnapshot.\n",
                 "properties": {
@@ -17604,7 +17604,7 @@
             }
         },
         "digitalocean:index/getDroplets:getDroplets": {
-            "description": "Get information on Droplets for use in other resources, with the ability to filter and sort the results.\nIf no filters are specified, all Droplets will be returned.\n\nThis data source is useful if the Droplets in question are not managed by the provider or you need to\nutilize any of the Droplets' data.\n\nBy default, only non-GPU Droplets are returned. To list only GPU Droplets, set\nthe `gpus` attribute to `true`.\n\nNote: You can use the `digitalocean.Droplet` data source to obtain metadata\nabout a single Droplet if you already know the `id`, unique `name`, or unique `tag` to retrieve.\n\n## Example Usage\n\nUse the `filter` block with a `key` string and `values` list to filter images.\n\nFor example to find all Droplets with size `s-1vcpu-1gb`:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst small = digitalocean.getDroplets({\n    filters: [{\n        key: \"size\",\n        values: [\"s-1vcpu-1gb\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsmall = digitalocean.get_droplets(filters=[{\n    \"key\": \"size\",\n    \"values\": [\"s-1vcpu-1gb\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var small = DigitalOcean.GetDroplets.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetDropletsFilterInputArgs\n            {\n                Key = \"size\",\n                Values = new[]\n                {\n                    \"s-1vcpu-1gb\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetDroplets(ctx, \u0026digitalocean.GetDropletsArgs{\n\t\t\tFilters: []digitalocean.GetDropletsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"size\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"s-1vcpu-1gb\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var small = DigitaloceanFunctions.getDroplets(GetDropletsArgs.builder()\n            .filters(GetDropletsFilterArgs.builder()\n                .key(\"size\")\n                .values(\"s-1vcpu-1gb\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  small:\n    fn::invoke:\n      Function: digitalocean:getDroplets\n      Arguments:\n        filters:\n          - key: size\n            values:\n              - s-1vcpu-1gb\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can filter on multiple fields and sort the results as well:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst small-with-backups = digitalocean.getDroplets({\n    filters: [\n        {\n            key: \"size\",\n            values: [\"s-1vcpu-1gb\"],\n        },\n        {\n            key: \"backups\",\n            values: [\"true\"],\n        },\n    ],\n    sorts: [{\n        key: \"created_at\",\n        direction: \"desc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsmall_with_backups = digitalocean.get_droplets(filters=[\n        {\n            \"key\": \"size\",\n            \"values\": [\"s-1vcpu-1gb\"],\n        },\n        {\n            \"key\": \"backups\",\n            \"values\": [\"true\"],\n        },\n    ],\n    sorts=[{\n        \"key\": \"created_at\",\n        \"direction\": \"desc\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var small_with_backups = DigitalOcean.GetDroplets.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetDropletsFilterInputArgs\n            {\n                Key = \"size\",\n                Values = new[]\n                {\n                    \"s-1vcpu-1gb\",\n                },\n            },\n            new DigitalOcean.Inputs.GetDropletsFilterInputArgs\n            {\n                Key = \"backups\",\n                Values = new[]\n                {\n                    \"true\",\n                },\n            },\n        },\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetDropletsSortInputArgs\n            {\n                Key = \"created_at\",\n                Direction = \"desc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetDroplets(ctx, \u0026digitalocean.GetDropletsArgs{\n\t\t\tFilters: []digitalocean.GetDropletsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"size\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"s-1vcpu-1gb\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey: \"backups\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"true\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSorts: []digitalocean.GetDropletsSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"created_at\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"desc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var small-with-backups = DigitaloceanFunctions.getDroplets(GetDropletsArgs.builder()\n            .filters(            \n                GetDropletsFilterArgs.builder()\n                    .key(\"size\")\n                    .values(\"s-1vcpu-1gb\")\n                    .build(),\n                GetDropletsFilterArgs.builder()\n                    .key(\"backups\")\n                    .values(\"true\")\n                    .build())\n            .sorts(GetDropletsSortArgs.builder()\n                .key(\"created_at\")\n                .direction(\"desc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  small-with-backups:\n    fn::invoke:\n      Function: digitalocean:getDroplets\n      Arguments:\n        filters:\n          - key: size\n            values:\n              - s-1vcpu-1gb\n          - key: backups\n            values:\n              - 'true'\n        sorts:\n          - key: created_at\n            direction: desc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on Droplets for use in other resources, with the ability to filter and sort the results.\nIf no filters are specified, all Droplets will be returned.\n\nThis data source is useful if the Droplets in question are not managed by the provider or you need to\nutilize any of the Droplets' data.\n\nBy default, only non-GPU Droplets are returned. To list only GPU Droplets, set\nthe `gpus` attribute to `true`.\n\nNote: You can use the `digitalocean.Droplet` data source to obtain metadata\nabout a single Droplet if you already know the `id`, unique `name`, or unique `tag` to retrieve.\n\n## Example Usage\n\nUse the `filter` block with a `key` string and `values` list to filter images.\n\nFor example to find all Droplets with size `s-1vcpu-1gb`:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst small = digitalocean.getDroplets({\n    filters: [{\n        key: \"size\",\n        values: [\"s-1vcpu-1gb\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsmall = digitalocean.get_droplets(filters=[{\n    \"key\": \"size\",\n    \"values\": [\"s-1vcpu-1gb\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var small = DigitalOcean.GetDroplets.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetDropletsFilterInputArgs\n            {\n                Key = \"size\",\n                Values = new[]\n                {\n                    \"s-1vcpu-1gb\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetDroplets(ctx, \u0026digitalocean.GetDropletsArgs{\n\t\t\tFilters: []digitalocean.GetDropletsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"size\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"s-1vcpu-1gb\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var small = DigitaloceanFunctions.getDroplets(GetDropletsArgs.builder()\n            .filters(GetDropletsFilterArgs.builder()\n                .key(\"size\")\n                .values(\"s-1vcpu-1gb\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  small:\n    fn::invoke:\n      function: digitalocean:getDroplets\n      arguments:\n        filters:\n          - key: size\n            values:\n              - s-1vcpu-1gb\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can filter on multiple fields and sort the results as well:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst small-with-backups = digitalocean.getDroplets({\n    filters: [\n        {\n            key: \"size\",\n            values: [\"s-1vcpu-1gb\"],\n        },\n        {\n            key: \"backups\",\n            values: [\"true\"],\n        },\n    ],\n    sorts: [{\n        key: \"created_at\",\n        direction: \"desc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsmall_with_backups = digitalocean.get_droplets(filters=[\n        {\n            \"key\": \"size\",\n            \"values\": [\"s-1vcpu-1gb\"],\n        },\n        {\n            \"key\": \"backups\",\n            \"values\": [\"true\"],\n        },\n    ],\n    sorts=[{\n        \"key\": \"created_at\",\n        \"direction\": \"desc\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var small_with_backups = DigitalOcean.GetDroplets.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetDropletsFilterInputArgs\n            {\n                Key = \"size\",\n                Values = new[]\n                {\n                    \"s-1vcpu-1gb\",\n                },\n            },\n            new DigitalOcean.Inputs.GetDropletsFilterInputArgs\n            {\n                Key = \"backups\",\n                Values = new[]\n                {\n                    \"true\",\n                },\n            },\n        },\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetDropletsSortInputArgs\n            {\n                Key = \"created_at\",\n                Direction = \"desc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetDroplets(ctx, \u0026digitalocean.GetDropletsArgs{\n\t\t\tFilters: []digitalocean.GetDropletsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"size\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"s-1vcpu-1gb\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey: \"backups\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"true\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSorts: []digitalocean.GetDropletsSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"created_at\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"desc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var small-with-backups = DigitaloceanFunctions.getDroplets(GetDropletsArgs.builder()\n            .filters(            \n                GetDropletsFilterArgs.builder()\n                    .key(\"size\")\n                    .values(\"s-1vcpu-1gb\")\n                    .build(),\n                GetDropletsFilterArgs.builder()\n                    .key(\"backups\")\n                    .values(\"true\")\n                    .build())\n            .sorts(GetDropletsSortArgs.builder()\n                .key(\"created_at\")\n                .direction(\"desc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  small-with-backups:\n    fn::invoke:\n      function: digitalocean:getDroplets\n      arguments:\n        filters:\n          - key: size\n            values:\n              - s-1vcpu-1gb\n          - key: backups\n            values:\n              - 'true'\n        sorts:\n          - key: created_at\n            direction: desc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getDroplets.\n",
                 "properties": {
@@ -17667,7 +17667,7 @@
             }
         },
         "digitalocean:index/getFirewall:getFirewall": {
-            "description": "Get information on a DigitalOcean Firewall.\n\n## Example Usage\n\nGet the firewall:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getFirewall({\n    firewallId: \"1df48973-6eef-4214-854f-fa7726e7e583\",\n});\nexport const exampleFirewallName = example.then(example =\u003e example.name);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_firewall(firewall_id=\"1df48973-6eef-4214-854f-fa7726e7e583\")\npulumi.export(\"exampleFirewallName\", example.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetFirewall.Invoke(new()\n    {\n        FirewallId = \"1df48973-6eef-4214-854f-fa7726e7e583\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleFirewallName\"] = example.Apply(getFirewallResult =\u003e getFirewallResult.Name),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupFirewall(ctx, \u0026digitalocean.LookupFirewallArgs{\n\t\t\tFirewallId: \"1df48973-6eef-4214-854f-fa7726e7e583\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleFirewallName\", example.Name)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetFirewallArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getFirewall(GetFirewallArgs.builder()\n            .firewallId(\"1df48973-6eef-4214-854f-fa7726e7e583\")\n            .build());\n\n        ctx.export(\"exampleFirewallName\", example.applyValue(getFirewallResult -\u003e getFirewallResult.name()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getFirewall\n      Arguments:\n        firewallId: 1df48973-6eef-4214-854f-fa7726e7e583\noutputs:\n  exampleFirewallName: ${example.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on a DigitalOcean Firewall.\n\n## Example Usage\n\nGet the firewall:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getFirewall({\n    firewallId: \"1df48973-6eef-4214-854f-fa7726e7e583\",\n});\nexport const exampleFirewallName = example.then(example =\u003e example.name);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_firewall(firewall_id=\"1df48973-6eef-4214-854f-fa7726e7e583\")\npulumi.export(\"exampleFirewallName\", example.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetFirewall.Invoke(new()\n    {\n        FirewallId = \"1df48973-6eef-4214-854f-fa7726e7e583\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleFirewallName\"] = example.Apply(getFirewallResult =\u003e getFirewallResult.Name),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupFirewall(ctx, \u0026digitalocean.LookupFirewallArgs{\n\t\t\tFirewallId: \"1df48973-6eef-4214-854f-fa7726e7e583\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleFirewallName\", example.Name)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetFirewallArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getFirewall(GetFirewallArgs.builder()\n            .firewallId(\"1df48973-6eef-4214-854f-fa7726e7e583\")\n            .build());\n\n        ctx.export(\"exampleFirewallName\", example.applyValue(getFirewallResult -\u003e getFirewallResult.name()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getFirewall\n      arguments:\n        firewallId: 1df48973-6eef-4214-854f-fa7726e7e583\noutputs:\n  exampleFirewallName: ${example.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getFirewall.\n",
                 "properties": {
@@ -17779,7 +17779,7 @@
             }
         },
         "digitalocean:index/getFloatingIp:getFloatingIp": {
-            "description": "\u003e **Deprecated:** DigitalOcean Floating IPs have been renamed reserved IPs. This data source will be removed in a future release. Please use `digitalocean.ReservedIp` instead.\n\nGet information on a floating ip. This data source provides the region and Droplet id\nas configured on your DigitalOcean account. This is useful if the floating IP\nin question is not managed by the provider or you need to find the Droplet the IP is\nattached to.\n\nAn error is triggered if the provided floating IP does not exist.\n\n## Example Usage\n\nGet the floating IP:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst config = new pulumi.Config();\nconst publicIp = config.requireObject(\"publicIp\");\nconst example = digitalocean.getFloatingIp({\n    ipAddress: publicIp,\n});\nexport const fipOutput = example.then(example =\u003e example.dropletId);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nconfig = pulumi.Config()\npublic_ip = config.require_object(\"publicIp\")\nexample = digitalocean.get_floating_ip(ip_address=public_ip)\npulumi.export(\"fipOutput\", example.droplet_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var publicIp = config.RequireObject\u003cdynamic\u003e(\"publicIp\");\n    var example = DigitalOcean.GetFloatingIp.Invoke(new()\n    {\n        IpAddress = publicIp,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"fipOutput\"] = example.Apply(getFloatingIpResult =\u003e getFloatingIpResult.DropletId),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tpublicIp := cfg.RequireObject(\"publicIp\")\n\t\texample, err := digitalocean.LookupFloatingIp(ctx, \u0026digitalocean.LookupFloatingIpArgs{\n\t\t\tIpAddress: publicIp,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"fipOutput\", example.DropletId)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetFloatingIpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var config = ctx.config();\n        final var publicIp = config.get(\"publicIp\");\n        final var example = DigitaloceanFunctions.getFloatingIp(GetFloatingIpArgs.builder()\n            .ipAddress(publicIp)\n            .build());\n\n        ctx.export(\"fipOutput\", example.applyValue(getFloatingIpResult -\u003e getFloatingIpResult.dropletId()));\n    }\n}\n```\n```yaml\nconfiguration:\n  publicIp:\n    type: dynamic\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getFloatingIp\n      Arguments:\n        ipAddress: ${publicIp}\noutputs:\n  fipOutput: ${example.dropletId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "\u003e **Deprecated:** DigitalOcean Floating IPs have been renamed reserved IPs. This data source will be removed in a future release. Please use `digitalocean.ReservedIp` instead.\n\nGet information on a floating ip. This data source provides the region and Droplet id\nas configured on your DigitalOcean account. This is useful if the floating IP\nin question is not managed by the provider or you need to find the Droplet the IP is\nattached to.\n\nAn error is triggered if the provided floating IP does not exist.\n\n## Example Usage\n\nGet the floating IP:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst config = new pulumi.Config();\nconst publicIp = config.requireObject(\"publicIp\");\nconst example = digitalocean.getFloatingIp({\n    ipAddress: publicIp,\n});\nexport const fipOutput = example.then(example =\u003e example.dropletId);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nconfig = pulumi.Config()\npublic_ip = config.require_object(\"publicIp\")\nexample = digitalocean.get_floating_ip(ip_address=public_ip)\npulumi.export(\"fipOutput\", example.droplet_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var publicIp = config.RequireObject\u003cdynamic\u003e(\"publicIp\");\n    var example = DigitalOcean.GetFloatingIp.Invoke(new()\n    {\n        IpAddress = publicIp,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"fipOutput\"] = example.Apply(getFloatingIpResult =\u003e getFloatingIpResult.DropletId),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tpublicIp := cfg.RequireObject(\"publicIp\")\n\t\texample, err := digitalocean.LookupFloatingIp(ctx, \u0026digitalocean.LookupFloatingIpArgs{\n\t\t\tIpAddress: publicIp,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"fipOutput\", example.DropletId)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetFloatingIpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var config = ctx.config();\n        final var publicIp = config.get(\"publicIp\");\n        final var example = DigitaloceanFunctions.getFloatingIp(GetFloatingIpArgs.builder()\n            .ipAddress(publicIp)\n            .build());\n\n        ctx.export(\"fipOutput\", example.applyValue(getFloatingIpResult -\u003e getFloatingIpResult.dropletId()));\n    }\n}\n```\n```yaml\nconfiguration:\n  publicIp:\n    type: dynamic\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getFloatingIp\n      arguments:\n        ipAddress: ${publicIp}\noutputs:\n  fipOutput: ${example.dropletId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getFloatingIp.\n",
                 "properties": {
@@ -17827,7 +17827,7 @@
             }
         },
         "digitalocean:index/getImage:getImage": {
-            "description": "Get information on an image for use in other resources (e.g. creating a Droplet\nbased on snapshot). This data source provides all of the image properties as\nconfigured on your DigitalOcean account. This is useful if the image in question\nis not managed by the provider or you need to utilize any of the image's data.\n\nAn error is triggered if zero or more than one result is returned by the query.\n\n## Example Usage\n\nGet the data about a snapshot:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example1 = digitalocean.getImage({\n    name: \"example-1.0.0\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample1 = digitalocean.get_image(name=\"example-1.0.0\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example1 = DigitalOcean.GetImage.Invoke(new()\n    {\n        Name = \"example-1.0.0\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetImage(ctx, \u0026digitalocean.GetImageArgs{\n\t\t\tName: pulumi.StringRef(\"example-1.0.0\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetImageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example1 = DigitaloceanFunctions.getImage(GetImageArgs.builder()\n            .name(\"example-1.0.0\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example1:\n    fn::invoke:\n      Function: digitalocean:getImage\n      Arguments:\n        name: example-1.0.0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a snapshot to create a Droplet:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getImage({\n    name: \"example-1.0.0\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    image: example.then(example =\u003e example.id),\n    name: \"example-1\",\n    region: digitalocean.Region.NYC2,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_image(name=\"example-1.0.0\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    image=example.id,\n    name=\"example-1\",\n    region=digitalocean.Region.NYC2,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetImage.Invoke(new()\n    {\n        Name = \"example-1.0.0\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Image = example.Apply(getImageResult =\u003e getImageResult.Id),\n        Name = \"example-1\",\n        Region = DigitalOcean.Region.NYC2,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.GetImage(ctx, \u0026digitalocean.GetImageArgs{\n\t\t\tName: pulumi.StringRef(\"example-1.0.0\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  pulumi.Int(example.Id),\n\t\t\tName:   pulumi.String(\"example-1\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC2),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetImageArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getImage(GetImageArgs.builder()\n            .name(\"example-1.0.0\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .image(example.applyValue(getImageResult -\u003e getImageResult.id()))\n            .name(\"example-1\")\n            .region(\"nyc2\")\n            .size(\"s-1vcpu-1gb\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      image: ${example.id}\n      name: example-1\n      region: nyc2\n      size: s-1vcpu-1gb\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getImage\n      Arguments:\n        name: example-1.0.0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nGet the data about an official image:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example2 = digitalocean.getImage({\n    slug: \"ubuntu-18-04-x64\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample2 = digitalocean.get_image(slug=\"ubuntu-18-04-x64\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example2 = DigitalOcean.GetImage.Invoke(new()\n    {\n        Slug = \"ubuntu-18-04-x64\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetImage(ctx, \u0026digitalocean.GetImageArgs{\n\t\t\tSlug: pulumi.StringRef(\"ubuntu-18-04-x64\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetImageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example2 = DigitaloceanFunctions.getImage(GetImageArgs.builder()\n            .slug(\"ubuntu-18-04-x64\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example2:\n    fn::invoke:\n      Function: digitalocean:getImage\n      Arguments:\n        slug: ubuntu-18-04-x64\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on an image for use in other resources (e.g. creating a Droplet\nbased on snapshot). This data source provides all of the image properties as\nconfigured on your DigitalOcean account. This is useful if the image in question\nis not managed by the provider or you need to utilize any of the image's data.\n\nAn error is triggered if zero or more than one result is returned by the query.\n\n## Example Usage\n\nGet the data about a snapshot:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example1 = digitalocean.getImage({\n    name: \"example-1.0.0\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample1 = digitalocean.get_image(name=\"example-1.0.0\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example1 = DigitalOcean.GetImage.Invoke(new()\n    {\n        Name = \"example-1.0.0\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetImage(ctx, \u0026digitalocean.GetImageArgs{\n\t\t\tName: pulumi.StringRef(\"example-1.0.0\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetImageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example1 = DigitaloceanFunctions.getImage(GetImageArgs.builder()\n            .name(\"example-1.0.0\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example1:\n    fn::invoke:\n      function: digitalocean:getImage\n      arguments:\n        name: example-1.0.0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a snapshot to create a Droplet:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getImage({\n    name: \"example-1.0.0\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    image: example.then(example =\u003e example.id),\n    name: \"example-1\",\n    region: digitalocean.Region.NYC2,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_image(name=\"example-1.0.0\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    image=example.id,\n    name=\"example-1\",\n    region=digitalocean.Region.NYC2,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetImage.Invoke(new()\n    {\n        Name = \"example-1.0.0\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Image = example.Apply(getImageResult =\u003e getImageResult.Id),\n        Name = \"example-1\",\n        Region = DigitalOcean.Region.NYC2,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.GetImage(ctx, \u0026digitalocean.GetImageArgs{\n\t\t\tName: pulumi.StringRef(\"example-1.0.0\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  pulumi.Int(example.Id),\n\t\t\tName:   pulumi.String(\"example-1\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC2),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetImageArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getImage(GetImageArgs.builder()\n            .name(\"example-1.0.0\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .image(example.applyValue(getImageResult -\u003e getImageResult.id()))\n            .name(\"example-1\")\n            .region(\"nyc2\")\n            .size(\"s-1vcpu-1gb\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      image: ${example.id}\n      name: example-1\n      region: nyc2\n      size: s-1vcpu-1gb\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getImage\n      arguments:\n        name: example-1.0.0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nGet the data about an official image:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example2 = digitalocean.getImage({\n    slug: \"ubuntu-18-04-x64\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample2 = digitalocean.get_image(slug=\"ubuntu-18-04-x64\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example2 = DigitalOcean.GetImage.Invoke(new()\n    {\n        Slug = \"ubuntu-18-04-x64\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetImage(ctx, \u0026digitalocean.GetImageArgs{\n\t\t\tSlug: pulumi.StringRef(\"ubuntu-18-04-x64\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetImageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example2 = DigitaloceanFunctions.getImage(GetImageArgs.builder()\n            .slug(\"ubuntu-18-04-x64\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example2:\n    fn::invoke:\n      function: digitalocean:getImage\n      arguments:\n        slug: ubuntu-18-04-x64\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getImage.\n",
                 "properties": {
@@ -17943,7 +17943,7 @@
             }
         },
         "digitalocean:index/getImages:getImages": {
-            "description": "Get information on images for use in other resources (e.g. creating a Droplet\nbased on a snapshot), with the ability to filter and sort the results. If no filters are specified,\nall images will be returned.\n\nThis data source is useful if the image in question is not managed by the provider or you need to utilize any\nof the image's data.\n\nNote: You can use the `digitalocean.getImage` data source to obtain metadata\nabout a single image if you already know the `slug`, unique `name`, or `id` to retrieve.\n\n## Example Usage\n\nUse the `filter` block with a `key` string and `values` list to filter images.\n\nFor example to find all Ubuntu images:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst ubuntu = digitalocean.getImages({\n    filters: [{\n        key: \"distribution\",\n        values: [\"Ubuntu\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nubuntu = digitalocean.get_images(filters=[{\n    \"key\": \"distribution\",\n    \"values\": [\"Ubuntu\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ubuntu = DigitalOcean.GetImages.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetImagesFilterInputArgs\n            {\n                Key = \"distribution\",\n                Values = new[]\n                {\n                    \"Ubuntu\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetImages(ctx, \u0026digitalocean.GetImagesArgs{\n\t\t\tFilters: []digitalocean.GetImagesFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"distribution\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"Ubuntu\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetImagesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var ubuntu = DigitaloceanFunctions.getImages(GetImagesArgs.builder()\n            .filters(GetImagesFilterArgs.builder()\n                .key(\"distribution\")\n                .values(\"Ubuntu\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  ubuntu:\n    fn::invoke:\n      Function: digitalocean:getImages\n      Arguments:\n        filters:\n          - key: distribution\n            values:\n              - Ubuntu\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can filter on multiple fields and sort the results as well:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst available = digitalocean.getImages({\n    filters: [\n        {\n            key: \"distribution\",\n            values: [\"Ubuntu\"],\n        },\n        {\n            key: \"regions\",\n            values: [\"nyc3\"],\n        },\n    ],\n    sorts: [{\n        key: \"created\",\n        direction: \"desc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\navailable = digitalocean.get_images(filters=[\n        {\n            \"key\": \"distribution\",\n            \"values\": [\"Ubuntu\"],\n        },\n        {\n            \"key\": \"regions\",\n            \"values\": [\"nyc3\"],\n        },\n    ],\n    sorts=[{\n        \"key\": \"created\",\n        \"direction\": \"desc\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var available = DigitalOcean.GetImages.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetImagesFilterInputArgs\n            {\n                Key = \"distribution\",\n                Values = new[]\n                {\n                    \"Ubuntu\",\n                },\n            },\n            new DigitalOcean.Inputs.GetImagesFilterInputArgs\n            {\n                Key = \"regions\",\n                Values = new[]\n                {\n                    \"nyc3\",\n                },\n            },\n        },\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetImagesSortInputArgs\n            {\n                Key = \"created\",\n                Direction = \"desc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetImages(ctx, \u0026digitalocean.GetImagesArgs{\n\t\t\tFilters: []digitalocean.GetImagesFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"distribution\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"Ubuntu\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey: \"regions\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"nyc3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSorts: []digitalocean.GetImagesSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"created\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"desc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetImagesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var available = DigitaloceanFunctions.getImages(GetImagesArgs.builder()\n            .filters(            \n                GetImagesFilterArgs.builder()\n                    .key(\"distribution\")\n                    .values(\"Ubuntu\")\n                    .build(),\n                GetImagesFilterArgs.builder()\n                    .key(\"regions\")\n                    .values(\"nyc3\")\n                    .build())\n            .sorts(GetImagesSortArgs.builder()\n                .key(\"created\")\n                .direction(\"desc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  available:\n    fn::invoke:\n      Function: digitalocean:getImages\n      Arguments:\n        filters:\n          - key: distribution\n            values:\n              - Ubuntu\n          - key: regions\n            values:\n              - nyc3\n        sorts:\n          - key: created\n            direction: desc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on images for use in other resources (e.g. creating a Droplet\nbased on a snapshot), with the ability to filter and sort the results. If no filters are specified,\nall images will be returned.\n\nThis data source is useful if the image in question is not managed by the provider or you need to utilize any\nof the image's data.\n\nNote: You can use the `digitalocean.getImage` data source to obtain metadata\nabout a single image if you already know the `slug`, unique `name`, or `id` to retrieve.\n\n## Example Usage\n\nUse the `filter` block with a `key` string and `values` list to filter images.\n\nFor example to find all Ubuntu images:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst ubuntu = digitalocean.getImages({\n    filters: [{\n        key: \"distribution\",\n        values: [\"Ubuntu\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nubuntu = digitalocean.get_images(filters=[{\n    \"key\": \"distribution\",\n    \"values\": [\"Ubuntu\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ubuntu = DigitalOcean.GetImages.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetImagesFilterInputArgs\n            {\n                Key = \"distribution\",\n                Values = new[]\n                {\n                    \"Ubuntu\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetImages(ctx, \u0026digitalocean.GetImagesArgs{\n\t\t\tFilters: []digitalocean.GetImagesFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"distribution\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"Ubuntu\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetImagesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var ubuntu = DigitaloceanFunctions.getImages(GetImagesArgs.builder()\n            .filters(GetImagesFilterArgs.builder()\n                .key(\"distribution\")\n                .values(\"Ubuntu\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  ubuntu:\n    fn::invoke:\n      function: digitalocean:getImages\n      arguments:\n        filters:\n          - key: distribution\n            values:\n              - Ubuntu\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can filter on multiple fields and sort the results as well:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst available = digitalocean.getImages({\n    filters: [\n        {\n            key: \"distribution\",\n            values: [\"Ubuntu\"],\n        },\n        {\n            key: \"regions\",\n            values: [\"nyc3\"],\n        },\n    ],\n    sorts: [{\n        key: \"created\",\n        direction: \"desc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\navailable = digitalocean.get_images(filters=[\n        {\n            \"key\": \"distribution\",\n            \"values\": [\"Ubuntu\"],\n        },\n        {\n            \"key\": \"regions\",\n            \"values\": [\"nyc3\"],\n        },\n    ],\n    sorts=[{\n        \"key\": \"created\",\n        \"direction\": \"desc\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var available = DigitalOcean.GetImages.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetImagesFilterInputArgs\n            {\n                Key = \"distribution\",\n                Values = new[]\n                {\n                    \"Ubuntu\",\n                },\n            },\n            new DigitalOcean.Inputs.GetImagesFilterInputArgs\n            {\n                Key = \"regions\",\n                Values = new[]\n                {\n                    \"nyc3\",\n                },\n            },\n        },\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetImagesSortInputArgs\n            {\n                Key = \"created\",\n                Direction = \"desc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetImages(ctx, \u0026digitalocean.GetImagesArgs{\n\t\t\tFilters: []digitalocean.GetImagesFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"distribution\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"Ubuntu\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey: \"regions\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"nyc3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSorts: []digitalocean.GetImagesSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"created\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"desc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetImagesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var available = DigitaloceanFunctions.getImages(GetImagesArgs.builder()\n            .filters(            \n                GetImagesFilterArgs.builder()\n                    .key(\"distribution\")\n                    .values(\"Ubuntu\")\n                    .build(),\n                GetImagesFilterArgs.builder()\n                    .key(\"regions\")\n                    .values(\"nyc3\")\n                    .build())\n            .sorts(GetImagesSortArgs.builder()\n                .key(\"created\")\n                .direction(\"desc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  available:\n    fn::invoke:\n      function: digitalocean:getImages\n      arguments:\n        filters:\n          - key: distribution\n            values:\n              - Ubuntu\n          - key: regions\n            values:\n              - nyc3\n        sorts:\n          - key: created\n            direction: desc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getImages.\n",
                 "properties": {
@@ -17999,7 +17999,7 @@
             }
         },
         "digitalocean:index/getKubernetesCluster:getKubernetesCluster": {
-            "description": "Retrieves information about a DigitalOcean Kubernetes cluster for use in other resources. This data source provides all of the cluster's properties as configured on your DigitalOcean account. This is useful if the cluster in question is not managed by the provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getKubernetesCluster({\n    name: \"prod-cluster-01\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_kubernetes_cluster(name=\"prod-cluster-01\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetKubernetesCluster.Invoke(new()\n    {\n        Name = \"prod-cluster-01\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupKubernetesCluster(ctx, \u0026digitalocean.LookupKubernetesClusterArgs{\n\t\t\tName: \"prod-cluster-01\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetKubernetesClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getKubernetesCluster(GetKubernetesClusterArgs.builder()\n            .name(\"prod-cluster-01\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getKubernetesCluster\n      Arguments:\n        name: prod-cluster-01\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Retrieves information about a DigitalOcean Kubernetes cluster for use in other resources. This data source provides all of the cluster's properties as configured on your DigitalOcean account. This is useful if the cluster in question is not managed by the provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getKubernetesCluster({\n    name: \"prod-cluster-01\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_kubernetes_cluster(name=\"prod-cluster-01\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetKubernetesCluster.Invoke(new()\n    {\n        Name = \"prod-cluster-01\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupKubernetesCluster(ctx, \u0026digitalocean.LookupKubernetesClusterArgs{\n\t\t\tName: \"prod-cluster-01\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetKubernetesClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getKubernetesCluster(GetKubernetesClusterArgs.builder()\n            .name(\"prod-cluster-01\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getKubernetesCluster\n      arguments:\n        name: prod-cluster-01\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getKubernetesCluster.\n",
                 "properties": {
@@ -18140,7 +18140,7 @@
             }
         },
         "digitalocean:index/getKubernetesVersions:getKubernetesVersions": {
-            "description": "Provides access to the available DigitalOcean Kubernetes Service versions.\n\n## Example Usage\n\n### Output a list of all available versions\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nexport = async () =\u003e {\n    const example = await digitalocean.getKubernetesVersions({});\n    return {\n        \"k8s-versions\": example.validVersions,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_kubernetes_versions()\npulumi.export(\"k8s-versions\", example.valid_versions)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetKubernetesVersions.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"k8s-versions\"] = example.Apply(getKubernetesVersionsResult =\u003e getKubernetesVersionsResult.ValidVersions),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.GetKubernetesVersions(ctx, \u0026digitalocean.GetKubernetesVersionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"k8s-versions\", example.ValidVersions)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetKubernetesVersionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getKubernetesVersions();\n\n        ctx.export(\"k8s-versions\", example.applyValue(getKubernetesVersionsResult -\u003e getKubernetesVersionsResult.validVersions()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getKubernetesVersions\n      Arguments: {}\noutputs:\n  k8s-versions: ${example.validVersions}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a Kubernetes cluster using the most recent version available\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getKubernetesVersions({});\nconst example_cluster = new digitalocean.KubernetesCluster(\"example-cluster\", {\n    name: \"example-cluster\",\n    region: digitalocean.Region.LON1,\n    version: example.then(example =\u003e example.latestVersion),\n    nodePool: {\n        name: \"default\",\n        size: \"s-1vcpu-2gb\",\n        nodeCount: 3,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_kubernetes_versions()\nexample_cluster = digitalocean.KubernetesCluster(\"example-cluster\",\n    name=\"example-cluster\",\n    region=digitalocean.Region.LON1,\n    version=example.latest_version,\n    node_pool={\n        \"name\": \"default\",\n        \"size\": \"s-1vcpu-2gb\",\n        \"node_count\": 3,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetKubernetesVersions.Invoke();\n\n    var example_cluster = new DigitalOcean.KubernetesCluster(\"example-cluster\", new()\n    {\n        Name = \"example-cluster\",\n        Region = DigitalOcean.Region.LON1,\n        Version = example.Apply(getKubernetesVersionsResult =\u003e getKubernetesVersionsResult.LatestVersion),\n        NodePool = new DigitalOcean.Inputs.KubernetesClusterNodePoolArgs\n        {\n            Name = \"default\",\n            Size = \"s-1vcpu-2gb\",\n            NodeCount = 3,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.GetKubernetesVersions(ctx, \u0026digitalocean.GetKubernetesVersionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewKubernetesCluster(ctx, \"example-cluster\", \u0026digitalocean.KubernetesClusterArgs{\n\t\t\tName:    pulumi.String(\"example-cluster\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionLON1),\n\t\t\tVersion: pulumi.String(example.LatestVersion),\n\t\t\tNodePool: \u0026digitalocean.KubernetesClusterNodePoolArgs{\n\t\t\t\tName:      pulumi.String(\"default\"),\n\t\t\t\tSize:      pulumi.String(\"s-1vcpu-2gb\"),\n\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetKubernetesVersionsArgs;\nimport com.pulumi.digitalocean.KubernetesCluster;\nimport com.pulumi.digitalocean.KubernetesClusterArgs;\nimport com.pulumi.digitalocean.inputs.KubernetesClusterNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getKubernetesVersions();\n\n        var example_cluster = new KubernetesCluster(\"example-cluster\", KubernetesClusterArgs.builder()\n            .name(\"example-cluster\")\n            .region(\"lon1\")\n            .version(example.applyValue(getKubernetesVersionsResult -\u003e getKubernetesVersionsResult.latestVersion()))\n            .nodePool(KubernetesClusterNodePoolArgs.builder()\n                .name(\"default\")\n                .size(\"s-1vcpu-2gb\")\n                .nodeCount(3)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example-cluster:\n    type: digitalocean:KubernetesCluster\n    properties:\n      name: example-cluster\n      region: lon1\n      version: ${example.latestVersion}\n      nodePool:\n        name: default\n        size: s-1vcpu-2gb\n        nodeCount: 3\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getKubernetesVersions\n      Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Pin a Kubernetes cluster to a specific minor version\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getKubernetesVersions({\n    versionPrefix: \"1.22.\",\n});\nconst example_cluster = new digitalocean.KubernetesCluster(\"example-cluster\", {\n    name: \"example-cluster\",\n    region: digitalocean.Region.LON1,\n    version: example.then(example =\u003e example.latestVersion),\n    nodePool: {\n        name: \"default\",\n        size: \"s-1vcpu-2gb\",\n        nodeCount: 3,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_kubernetes_versions(version_prefix=\"1.22.\")\nexample_cluster = digitalocean.KubernetesCluster(\"example-cluster\",\n    name=\"example-cluster\",\n    region=digitalocean.Region.LON1,\n    version=example.latest_version,\n    node_pool={\n        \"name\": \"default\",\n        \"size\": \"s-1vcpu-2gb\",\n        \"node_count\": 3,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetKubernetesVersions.Invoke(new()\n    {\n        VersionPrefix = \"1.22.\",\n    });\n\n    var example_cluster = new DigitalOcean.KubernetesCluster(\"example-cluster\", new()\n    {\n        Name = \"example-cluster\",\n        Region = DigitalOcean.Region.LON1,\n        Version = example.Apply(getKubernetesVersionsResult =\u003e getKubernetesVersionsResult.LatestVersion),\n        NodePool = new DigitalOcean.Inputs.KubernetesClusterNodePoolArgs\n        {\n            Name = \"default\",\n            Size = \"s-1vcpu-2gb\",\n            NodeCount = 3,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.GetKubernetesVersions(ctx, \u0026digitalocean.GetKubernetesVersionsArgs{\n\t\t\tVersionPrefix: pulumi.StringRef(\"1.22.\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewKubernetesCluster(ctx, \"example-cluster\", \u0026digitalocean.KubernetesClusterArgs{\n\t\t\tName:    pulumi.String(\"example-cluster\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionLON1),\n\t\t\tVersion: pulumi.String(example.LatestVersion),\n\t\t\tNodePool: \u0026digitalocean.KubernetesClusterNodePoolArgs{\n\t\t\t\tName:      pulumi.String(\"default\"),\n\t\t\t\tSize:      pulumi.String(\"s-1vcpu-2gb\"),\n\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetKubernetesVersionsArgs;\nimport com.pulumi.digitalocean.KubernetesCluster;\nimport com.pulumi.digitalocean.KubernetesClusterArgs;\nimport com.pulumi.digitalocean.inputs.KubernetesClusterNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getKubernetesVersions(GetKubernetesVersionsArgs.builder()\n            .versionPrefix(\"1.22.\")\n            .build());\n\n        var example_cluster = new KubernetesCluster(\"example-cluster\", KubernetesClusterArgs.builder()\n            .name(\"example-cluster\")\n            .region(\"lon1\")\n            .version(example.applyValue(getKubernetesVersionsResult -\u003e getKubernetesVersionsResult.latestVersion()))\n            .nodePool(KubernetesClusterNodePoolArgs.builder()\n                .name(\"default\")\n                .size(\"s-1vcpu-2gb\")\n                .nodeCount(3)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example-cluster:\n    type: digitalocean:KubernetesCluster\n    properties:\n      name: example-cluster\n      region: lon1\n      version: ${example.latestVersion}\n      nodePool:\n        name: default\n        size: s-1vcpu-2gb\n        nodeCount: 3\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getKubernetesVersions\n      Arguments:\n        versionPrefix: 1.22.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Provides access to the available DigitalOcean Kubernetes Service versions.\n\n## Example Usage\n\n### Output a list of all available versions\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nexport = async () =\u003e {\n    const example = await digitalocean.getKubernetesVersions({});\n    return {\n        \"k8s-versions\": example.validVersions,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_kubernetes_versions()\npulumi.export(\"k8s-versions\", example.valid_versions)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetKubernetesVersions.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"k8s-versions\"] = example.Apply(getKubernetesVersionsResult =\u003e getKubernetesVersionsResult.ValidVersions),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.GetKubernetesVersions(ctx, \u0026digitalocean.GetKubernetesVersionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"k8s-versions\", example.ValidVersions)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetKubernetesVersionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getKubernetesVersions();\n\n        ctx.export(\"k8s-versions\", example.applyValue(getKubernetesVersionsResult -\u003e getKubernetesVersionsResult.validVersions()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getKubernetesVersions\n      arguments: {}\noutputs:\n  k8s-versions: ${example.validVersions}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a Kubernetes cluster using the most recent version available\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getKubernetesVersions({});\nconst example_cluster = new digitalocean.KubernetesCluster(\"example-cluster\", {\n    name: \"example-cluster\",\n    region: digitalocean.Region.LON1,\n    version: example.then(example =\u003e example.latestVersion),\n    nodePool: {\n        name: \"default\",\n        size: \"s-1vcpu-2gb\",\n        nodeCount: 3,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_kubernetes_versions()\nexample_cluster = digitalocean.KubernetesCluster(\"example-cluster\",\n    name=\"example-cluster\",\n    region=digitalocean.Region.LON1,\n    version=example.latest_version,\n    node_pool={\n        \"name\": \"default\",\n        \"size\": \"s-1vcpu-2gb\",\n        \"node_count\": 3,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetKubernetesVersions.Invoke();\n\n    var example_cluster = new DigitalOcean.KubernetesCluster(\"example-cluster\", new()\n    {\n        Name = \"example-cluster\",\n        Region = DigitalOcean.Region.LON1,\n        Version = example.Apply(getKubernetesVersionsResult =\u003e getKubernetesVersionsResult.LatestVersion),\n        NodePool = new DigitalOcean.Inputs.KubernetesClusterNodePoolArgs\n        {\n            Name = \"default\",\n            Size = \"s-1vcpu-2gb\",\n            NodeCount = 3,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.GetKubernetesVersions(ctx, \u0026digitalocean.GetKubernetesVersionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewKubernetesCluster(ctx, \"example-cluster\", \u0026digitalocean.KubernetesClusterArgs{\n\t\t\tName:    pulumi.String(\"example-cluster\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionLON1),\n\t\t\tVersion: pulumi.String(example.LatestVersion),\n\t\t\tNodePool: \u0026digitalocean.KubernetesClusterNodePoolArgs{\n\t\t\t\tName:      pulumi.String(\"default\"),\n\t\t\t\tSize:      pulumi.String(\"s-1vcpu-2gb\"),\n\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetKubernetesVersionsArgs;\nimport com.pulumi.digitalocean.KubernetesCluster;\nimport com.pulumi.digitalocean.KubernetesClusterArgs;\nimport com.pulumi.digitalocean.inputs.KubernetesClusterNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getKubernetesVersions();\n\n        var example_cluster = new KubernetesCluster(\"example-cluster\", KubernetesClusterArgs.builder()\n            .name(\"example-cluster\")\n            .region(\"lon1\")\n            .version(example.applyValue(getKubernetesVersionsResult -\u003e getKubernetesVersionsResult.latestVersion()))\n            .nodePool(KubernetesClusterNodePoolArgs.builder()\n                .name(\"default\")\n                .size(\"s-1vcpu-2gb\")\n                .nodeCount(3)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example-cluster:\n    type: digitalocean:KubernetesCluster\n    properties:\n      name: example-cluster\n      region: lon1\n      version: ${example.latestVersion}\n      nodePool:\n        name: default\n        size: s-1vcpu-2gb\n        nodeCount: 3\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getKubernetesVersions\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Pin a Kubernetes cluster to a specific minor version\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getKubernetesVersions({\n    versionPrefix: \"1.22.\",\n});\nconst example_cluster = new digitalocean.KubernetesCluster(\"example-cluster\", {\n    name: \"example-cluster\",\n    region: digitalocean.Region.LON1,\n    version: example.then(example =\u003e example.latestVersion),\n    nodePool: {\n        name: \"default\",\n        size: \"s-1vcpu-2gb\",\n        nodeCount: 3,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_kubernetes_versions(version_prefix=\"1.22.\")\nexample_cluster = digitalocean.KubernetesCluster(\"example-cluster\",\n    name=\"example-cluster\",\n    region=digitalocean.Region.LON1,\n    version=example.latest_version,\n    node_pool={\n        \"name\": \"default\",\n        \"size\": \"s-1vcpu-2gb\",\n        \"node_count\": 3,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetKubernetesVersions.Invoke(new()\n    {\n        VersionPrefix = \"1.22.\",\n    });\n\n    var example_cluster = new DigitalOcean.KubernetesCluster(\"example-cluster\", new()\n    {\n        Name = \"example-cluster\",\n        Region = DigitalOcean.Region.LON1,\n        Version = example.Apply(getKubernetesVersionsResult =\u003e getKubernetesVersionsResult.LatestVersion),\n        NodePool = new DigitalOcean.Inputs.KubernetesClusterNodePoolArgs\n        {\n            Name = \"default\",\n            Size = \"s-1vcpu-2gb\",\n            NodeCount = 3,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.GetKubernetesVersions(ctx, \u0026digitalocean.GetKubernetesVersionsArgs{\n\t\t\tVersionPrefix: pulumi.StringRef(\"1.22.\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewKubernetesCluster(ctx, \"example-cluster\", \u0026digitalocean.KubernetesClusterArgs{\n\t\t\tName:    pulumi.String(\"example-cluster\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionLON1),\n\t\t\tVersion: pulumi.String(example.LatestVersion),\n\t\t\tNodePool: \u0026digitalocean.KubernetesClusterNodePoolArgs{\n\t\t\t\tName:      pulumi.String(\"default\"),\n\t\t\t\tSize:      pulumi.String(\"s-1vcpu-2gb\"),\n\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetKubernetesVersionsArgs;\nimport com.pulumi.digitalocean.KubernetesCluster;\nimport com.pulumi.digitalocean.KubernetesClusterArgs;\nimport com.pulumi.digitalocean.inputs.KubernetesClusterNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getKubernetesVersions(GetKubernetesVersionsArgs.builder()\n            .versionPrefix(\"1.22.\")\n            .build());\n\n        var example_cluster = new KubernetesCluster(\"example-cluster\", KubernetesClusterArgs.builder()\n            .name(\"example-cluster\")\n            .region(\"lon1\")\n            .version(example.applyValue(getKubernetesVersionsResult -\u003e getKubernetesVersionsResult.latestVersion()))\n            .nodePool(KubernetesClusterNodePoolArgs.builder()\n                .name(\"default\")\n                .size(\"s-1vcpu-2gb\")\n                .nodeCount(3)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example-cluster:\n    type: digitalocean:KubernetesCluster\n    properties:\n      name: example-cluster\n      region: lon1\n      version: ${example.latestVersion}\n      nodePool:\n        name: default\n        size: s-1vcpu-2gb\n        nodeCount: 3\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getKubernetesVersions\n      arguments:\n        versionPrefix: 1.22.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getKubernetesVersions.\n",
                 "properties": {
@@ -18182,7 +18182,7 @@
             }
         },
         "digitalocean:index/getLoadBalancer:getLoadBalancer": {
-            "description": "Get information on a load balancer for use in other resources. This data source\nprovides all of the load balancers properties as configured on your DigitalOcean\naccount. This is useful if the load balancer in question is not managed by\nthe provider or you need to utilize any of the load balancers data.\n\nAn error is triggered if the provided load balancer name does not exist.\n\n## Example Usage\n\nGet the load balancer by name:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getLoadBalancer({\n    name: \"app\",\n});\nexport const lbOutput = example.then(example =\u003e example.ip);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_load_balancer(name=\"app\")\npulumi.export(\"lbOutput\", example.ip)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetLoadBalancer.Invoke(new()\n    {\n        Name = \"app\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"lbOutput\"] = example.Apply(getLoadBalancerResult =\u003e getLoadBalancerResult.Ip),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupLoadBalancer(ctx, \u0026digitalocean.LookupLoadBalancerArgs{\n\t\t\tName: pulumi.StringRef(\"app\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"lbOutput\", example.Ip)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetLoadBalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getLoadBalancer(GetLoadBalancerArgs.builder()\n            .name(\"app\")\n            .build());\n\n        ctx.export(\"lbOutput\", example.applyValue(getLoadBalancerResult -\u003e getLoadBalancerResult.ip()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getLoadBalancer\n      Arguments:\n        name: app\noutputs:\n  lbOutput: ${example.ip}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nGet the load balancer by ID:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getLoadBalancer({\n    id: \"loadbalancer_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_load_balancer(id=\"loadbalancer_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetLoadBalancer.Invoke(new()\n    {\n        Id = \"loadbalancer_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupLoadBalancer(ctx, \u0026digitalocean.LookupLoadBalancerArgs{\n\t\t\tId: pulumi.StringRef(\"loadbalancer_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetLoadBalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getLoadBalancer(GetLoadBalancerArgs.builder()\n            .id(\"loadbalancer_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getLoadBalancer\n      Arguments:\n        id: loadbalancer_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on a load balancer for use in other resources. This data source\nprovides all of the load balancers properties as configured on your DigitalOcean\naccount. This is useful if the load balancer in question is not managed by\nthe provider or you need to utilize any of the load balancers data.\n\nAn error is triggered if the provided load balancer name does not exist.\n\n## Example Usage\n\nGet the load balancer by name:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getLoadBalancer({\n    name: \"app\",\n});\nexport const lbOutput = example.then(example =\u003e example.ip);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_load_balancer(name=\"app\")\npulumi.export(\"lbOutput\", example.ip)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetLoadBalancer.Invoke(new()\n    {\n        Name = \"app\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"lbOutput\"] = example.Apply(getLoadBalancerResult =\u003e getLoadBalancerResult.Ip),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupLoadBalancer(ctx, \u0026digitalocean.LookupLoadBalancerArgs{\n\t\t\tName: pulumi.StringRef(\"app\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"lbOutput\", example.Ip)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetLoadBalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getLoadBalancer(GetLoadBalancerArgs.builder()\n            .name(\"app\")\n            .build());\n\n        ctx.export(\"lbOutput\", example.applyValue(getLoadBalancerResult -\u003e getLoadBalancerResult.ip()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getLoadBalancer\n      arguments:\n        name: app\noutputs:\n  lbOutput: ${example.ip}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nGet the load balancer by ID:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getLoadBalancer({\n    id: \"loadbalancer_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_load_balancer(id=\"loadbalancer_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetLoadBalancer.Invoke(new()\n    {\n        Id = \"loadbalancer_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupLoadBalancer(ctx, \u0026digitalocean.LookupLoadBalancerArgs{\n\t\t\tId: pulumi.StringRef(\"loadbalancer_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetLoadBalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getLoadBalancer(GetLoadBalancerArgs.builder()\n            .id(\"loadbalancer_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getLoadBalancer\n      arguments:\n        id: loadbalancer_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getLoadBalancer.\n",
                 "properties": {
@@ -18338,7 +18338,7 @@
             }
         },
         "digitalocean:index/getProject:getProject": {
-            "description": "Get information on a single DigitalOcean project. If neither the `id` nor `name` attributes are provided,\nthen this data source returns the default project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst default = digitalocean.getProject({});\nconst staging = digitalocean.getProject({\n    name: \"My Staging Project\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ndefault = digitalocean.get_project()\nstaging = digitalocean.get_project(name=\"My Staging Project\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @default = DigitalOcean.GetProject.Invoke();\n\n    var staging = DigitalOcean.GetProject.Invoke(new()\n    {\n        Name = \"My Staging Project\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupProject(ctx, \u0026digitalocean.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.LookupProject(ctx, \u0026digitalocean.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"My Staging Project\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var default = DigitaloceanFunctions.getProject();\n\n        final var staging = DigitaloceanFunctions.getProject(GetProjectArgs.builder()\n            .name(\"My Staging Project\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  default:\n    fn::invoke:\n      Function: digitalocean:getProject\n      Arguments: {}\n  staging:\n    fn::invoke:\n      Function: digitalocean:getProject\n      Arguments:\n        name: My Staging Project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on a single DigitalOcean project. If neither the `id` nor `name` attributes are provided,\nthen this data source returns the default project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst default = digitalocean.getProject({});\nconst staging = digitalocean.getProject({\n    name: \"My Staging Project\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ndefault = digitalocean.get_project()\nstaging = digitalocean.get_project(name=\"My Staging Project\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @default = DigitalOcean.GetProject.Invoke();\n\n    var staging = DigitalOcean.GetProject.Invoke(new()\n    {\n        Name = \"My Staging Project\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupProject(ctx, \u0026digitalocean.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.LookupProject(ctx, \u0026digitalocean.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"My Staging Project\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var default = DigitaloceanFunctions.getProject();\n\n        final var staging = DigitaloceanFunctions.getProject(GetProjectArgs.builder()\n            .name(\"My Staging Project\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  default:\n    fn::invoke:\n      function: digitalocean:getProject\n      arguments: {}\n  staging:\n    fn::invoke:\n      function: digitalocean:getProject\n      arguments:\n        name: My Staging Project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getProject.\n",
                 "properties": {
@@ -18418,7 +18418,7 @@
             }
         },
         "digitalocean:index/getProjects:getProjects": {
-            "description": "Retrieve information about all DigitalOcean projects associated with an account, with\nthe ability to filter and sort the results. If no filters are specified, all projects\nwill be returned.\n\nNote: You can use the `digitalocean.Project` data source to\nobtain metadata about a single project if you already know the `id` to retrieve or the unique\n`name` of the project.\n\n## Example Usage\n\nUse the `filter` block with a `key` string and `values` list to filter projects.\n\nFor example to find all staging environment projects:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst staging = digitalocean.getProjects({\n    filters: [{\n        key: \"environment\",\n        values: [\"Staging\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nstaging = digitalocean.get_projects(filters=[{\n    \"key\": \"environment\",\n    \"values\": [\"Staging\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var staging = DigitalOcean.GetProjects.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetProjectsFilterInputArgs\n            {\n                Key = \"environment\",\n                Values = new[]\n                {\n                    \"Staging\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetProjects(ctx, \u0026digitalocean.GetProjectsArgs{\n\t\t\tFilters: []digitalocean.GetProjectsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"environment\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"Staging\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetProjectsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var staging = DigitaloceanFunctions.getProjects(GetProjectsArgs.builder()\n            .filters(GetProjectsFilterArgs.builder()\n                .key(\"environment\")\n                .values(\"Staging\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  staging:\n    fn::invoke:\n      Function: digitalocean:getProjects\n      Arguments:\n        filters:\n          - key: environment\n            values:\n              - Staging\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can filter on multiple fields and sort the results as well:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst non-default-production = digitalocean.getProjects({\n    filters: [\n        {\n            key: \"environment\",\n            values: [\"Production\"],\n        },\n        {\n            key: \"is_default\",\n            values: [\"false\"],\n        },\n    ],\n    sorts: [{\n        key: \"name\",\n        direction: \"asc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nnon_default_production = digitalocean.get_projects(filters=[\n        {\n            \"key\": \"environment\",\n            \"values\": [\"Production\"],\n        },\n        {\n            \"key\": \"is_default\",\n            \"values\": [\"false\"],\n        },\n    ],\n    sorts=[{\n        \"key\": \"name\",\n        \"direction\": \"asc\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var non_default_production = DigitalOcean.GetProjects.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetProjectsFilterInputArgs\n            {\n                Key = \"environment\",\n                Values = new[]\n                {\n                    \"Production\",\n                },\n            },\n            new DigitalOcean.Inputs.GetProjectsFilterInputArgs\n            {\n                Key = \"is_default\",\n                Values = new[]\n                {\n                    \"false\",\n                },\n            },\n        },\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetProjectsSortInputArgs\n            {\n                Key = \"name\",\n                Direction = \"asc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetProjects(ctx, \u0026digitalocean.GetProjectsArgs{\n\t\t\tFilters: []digitalocean.GetProjectsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"environment\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"Production\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey: \"is_default\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"false\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSorts: []digitalocean.GetProjectsSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"name\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"asc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetProjectsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var non-default-production = DigitaloceanFunctions.getProjects(GetProjectsArgs.builder()\n            .filters(            \n                GetProjectsFilterArgs.builder()\n                    .key(\"environment\")\n                    .values(\"Production\")\n                    .build(),\n                GetProjectsFilterArgs.builder()\n                    .key(\"is_default\")\n                    .values(\"false\")\n                    .build())\n            .sorts(GetProjectsSortArgs.builder()\n                .key(\"name\")\n                .direction(\"asc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  non-default-production:\n    fn::invoke:\n      Function: digitalocean:getProjects\n      Arguments:\n        filters:\n          - key: environment\n            values:\n              - Production\n          - key: is_default\n            values:\n              - 'false'\n        sorts:\n          - key: name\n            direction: asc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Retrieve information about all DigitalOcean projects associated with an account, with\nthe ability to filter and sort the results. If no filters are specified, all projects\nwill be returned.\n\nNote: You can use the `digitalocean.Project` data source to\nobtain metadata about a single project if you already know the `id` to retrieve or the unique\n`name` of the project.\n\n## Example Usage\n\nUse the `filter` block with a `key` string and `values` list to filter projects.\n\nFor example to find all staging environment projects:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst staging = digitalocean.getProjects({\n    filters: [{\n        key: \"environment\",\n        values: [\"Staging\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nstaging = digitalocean.get_projects(filters=[{\n    \"key\": \"environment\",\n    \"values\": [\"Staging\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var staging = DigitalOcean.GetProjects.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetProjectsFilterInputArgs\n            {\n                Key = \"environment\",\n                Values = new[]\n                {\n                    \"Staging\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetProjects(ctx, \u0026digitalocean.GetProjectsArgs{\n\t\t\tFilters: []digitalocean.GetProjectsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"environment\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"Staging\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetProjectsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var staging = DigitaloceanFunctions.getProjects(GetProjectsArgs.builder()\n            .filters(GetProjectsFilterArgs.builder()\n                .key(\"environment\")\n                .values(\"Staging\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  staging:\n    fn::invoke:\n      function: digitalocean:getProjects\n      arguments:\n        filters:\n          - key: environment\n            values:\n              - Staging\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can filter on multiple fields and sort the results as well:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst non-default-production = digitalocean.getProjects({\n    filters: [\n        {\n            key: \"environment\",\n            values: [\"Production\"],\n        },\n        {\n            key: \"is_default\",\n            values: [\"false\"],\n        },\n    ],\n    sorts: [{\n        key: \"name\",\n        direction: \"asc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nnon_default_production = digitalocean.get_projects(filters=[\n        {\n            \"key\": \"environment\",\n            \"values\": [\"Production\"],\n        },\n        {\n            \"key\": \"is_default\",\n            \"values\": [\"false\"],\n        },\n    ],\n    sorts=[{\n        \"key\": \"name\",\n        \"direction\": \"asc\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var non_default_production = DigitalOcean.GetProjects.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetProjectsFilterInputArgs\n            {\n                Key = \"environment\",\n                Values = new[]\n                {\n                    \"Production\",\n                },\n            },\n            new DigitalOcean.Inputs.GetProjectsFilterInputArgs\n            {\n                Key = \"is_default\",\n                Values = new[]\n                {\n                    \"false\",\n                },\n            },\n        },\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetProjectsSortInputArgs\n            {\n                Key = \"name\",\n                Direction = \"asc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetProjects(ctx, \u0026digitalocean.GetProjectsArgs{\n\t\t\tFilters: []digitalocean.GetProjectsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"environment\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"Production\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey: \"is_default\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"false\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSorts: []digitalocean.GetProjectsSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"name\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"asc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetProjectsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var non-default-production = DigitaloceanFunctions.getProjects(GetProjectsArgs.builder()\n            .filters(            \n                GetProjectsFilterArgs.builder()\n                    .key(\"environment\")\n                    .values(\"Production\")\n                    .build(),\n                GetProjectsFilterArgs.builder()\n                    .key(\"is_default\")\n                    .values(\"false\")\n                    .build())\n            .sorts(GetProjectsSortArgs.builder()\n                .key(\"name\")\n                .direction(\"asc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  non-default-production:\n    fn::invoke:\n      function: digitalocean:getProjects\n      arguments:\n        filters:\n          - key: environment\n            values:\n              - Production\n          - key: is_default\n            values:\n              - 'false'\n        sorts:\n          - key: name\n            direction: asc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getProjects.\n",
                 "properties": {
@@ -18474,7 +18474,7 @@
             }
         },
         "digitalocean:index/getRecord:getRecord": {
-            "description": "Get information on a DNS record. This data source provides the name, TTL, and zone\nfile as configured on your DigitalOcean account. This is useful if the record\nin question is not managed by the provider.\n\nAn error is triggered if the provided domain name or record are not managed with\nyour DigitalOcean account.\n\n## Example Usage\n\nGet data from a DNS record:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getRecord({\n    domain: \"example.com\",\n    name: \"test\",\n});\nexport const recordType = example.then(example =\u003e example.type);\nexport const recordTtl = example.then(example =\u003e example.ttl);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_record(domain=\"example.com\",\n    name=\"test\")\npulumi.export(\"recordType\", example.type)\npulumi.export(\"recordTtl\", example.ttl)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetRecord.Invoke(new()\n    {\n        Domain = \"example.com\",\n        Name = \"test\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"recordType\"] = example.Apply(getRecordResult =\u003e getRecordResult.Type),\n        [\"recordTtl\"] = example.Apply(getRecordResult =\u003e getRecordResult.Ttl),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.GetRecord(ctx, \u0026digitalocean.GetRecordArgs{\n\t\t\tDomain: \"example.com\",\n\t\t\tName:   \"test\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"recordType\", example.Type)\n\t\tctx.Export(\"recordTtl\", example.Ttl)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetRecordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getRecord(GetRecordArgs.builder()\n            .domain(\"example.com\")\n            .name(\"test\")\n            .build());\n\n        ctx.export(\"recordType\", example.applyValue(getRecordResult -\u003e getRecordResult.type()));\n        ctx.export(\"recordTtl\", example.applyValue(getRecordResult -\u003e getRecordResult.ttl()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getRecord\n      Arguments:\n        domain: example.com\n        name: test\noutputs:\n  recordType: ${example.type}\n  recordTtl: ${example.ttl}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n```\n\ndata.digitalocean_record.example: Refreshing state...\n\nApply complete! Resources: 0 added, 0 changed, 0 destroyed.\n\nOutputs:\n\nrecord_ttl = 3600\nrecord_type = A\n```\n",
+            "description": "Get information on a DNS record. This data source provides the name, TTL, and zone\nfile as configured on your DigitalOcean account. This is useful if the record\nin question is not managed by the provider.\n\nAn error is triggered if the provided domain name or record are not managed with\nyour DigitalOcean account.\n\n## Example Usage\n\nGet data from a DNS record:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getRecord({\n    domain: \"example.com\",\n    name: \"test\",\n});\nexport const recordType = example.then(example =\u003e example.type);\nexport const recordTtl = example.then(example =\u003e example.ttl);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_record(domain=\"example.com\",\n    name=\"test\")\npulumi.export(\"recordType\", example.type)\npulumi.export(\"recordTtl\", example.ttl)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetRecord.Invoke(new()\n    {\n        Domain = \"example.com\",\n        Name = \"test\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"recordType\"] = example.Apply(getRecordResult =\u003e getRecordResult.Type),\n        [\"recordTtl\"] = example.Apply(getRecordResult =\u003e getRecordResult.Ttl),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.GetRecord(ctx, \u0026digitalocean.GetRecordArgs{\n\t\t\tDomain: \"example.com\",\n\t\t\tName:   \"test\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"recordType\", example.Type)\n\t\tctx.Export(\"recordTtl\", example.Ttl)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetRecordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getRecord(GetRecordArgs.builder()\n            .domain(\"example.com\")\n            .name(\"test\")\n            .build());\n\n        ctx.export(\"recordType\", example.applyValue(getRecordResult -\u003e getRecordResult.type()));\n        ctx.export(\"recordTtl\", example.applyValue(getRecordResult -\u003e getRecordResult.ttl()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getRecord\n      arguments:\n        domain: example.com\n        name: test\noutputs:\n  recordType: ${example.type}\n  recordTtl: ${example.ttl}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n```\n\ndata.digitalocean_record.example: Refreshing state...\n\nApply complete! Resources: 0 added, 0 changed, 0 destroyed.\n\nOutputs:\n\nrecord_ttl = 3600\nrecord_type = A\n```\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getRecord.\n",
                 "properties": {
@@ -18623,7 +18623,7 @@
             }
         },
         "digitalocean:index/getRegion:getRegion": {
-            "description": "Get information on a single DigitalOcean region. This is useful to find out \nwhat Droplet sizes and features are supported within a region.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst sfo2 = digitalocean.getRegion({\n    slug: \"sfo2\",\n});\nexport const regionName = sfo2.then(sfo2 =\u003e sfo2.name);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsfo2 = digitalocean.get_region(slug=\"sfo2\")\npulumi.export(\"regionName\", sfo2.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sfo2 = DigitalOcean.GetRegion.Invoke(new()\n    {\n        Slug = \"sfo2\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"regionName\"] = sfo2.Apply(getRegionResult =\u003e getRegionResult.Name),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsfo2, err := digitalocean.GetRegion(ctx, \u0026digitalocean.GetRegionArgs{\n\t\t\tSlug: \"sfo2\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"regionName\", sfo2.Name)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetRegionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sfo2 = DigitaloceanFunctions.getRegion(GetRegionArgs.builder()\n            .slug(\"sfo2\")\n            .build());\n\n        ctx.export(\"regionName\", sfo2.applyValue(getRegionResult -\u003e getRegionResult.name()));\n    }\n}\n```\n```yaml\nvariables:\n  sfo2:\n    fn::invoke:\n      Function: digitalocean:getRegion\n      Arguments:\n        slug: sfo2\noutputs:\n  regionName: ${sfo2.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on a single DigitalOcean region. This is useful to find out \nwhat Droplet sizes and features are supported within a region.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst sfo2 = digitalocean.getRegion({\n    slug: \"sfo2\",\n});\nexport const regionName = sfo2.then(sfo2 =\u003e sfo2.name);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsfo2 = digitalocean.get_region(slug=\"sfo2\")\npulumi.export(\"regionName\", sfo2.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sfo2 = DigitalOcean.GetRegion.Invoke(new()\n    {\n        Slug = \"sfo2\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"regionName\"] = sfo2.Apply(getRegionResult =\u003e getRegionResult.Name),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsfo2, err := digitalocean.GetRegion(ctx, \u0026digitalocean.GetRegionArgs{\n\t\t\tSlug: \"sfo2\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"regionName\", sfo2.Name)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetRegionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sfo2 = DigitaloceanFunctions.getRegion(GetRegionArgs.builder()\n            .slug(\"sfo2\")\n            .build());\n\n        ctx.export(\"regionName\", sfo2.applyValue(getRegionResult -\u003e getRegionResult.name()));\n    }\n}\n```\n```yaml\nvariables:\n  sfo2:\n    fn::invoke:\n      function: digitalocean:getRegion\n      arguments:\n        slug: sfo2\noutputs:\n  regionName: ${sfo2.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getRegion.\n",
                 "properties": {
@@ -18683,7 +18683,7 @@
             }
         },
         "digitalocean:index/getRegions:getRegions": {
-            "description": "Retrieve information about all supported DigitalOcean regions, with the ability to\nfilter and sort the results. If no filters are specified, all regions will be returned.\n\nNote: You can use the `digitalocean.getRegion` data source\nto obtain metadata about a single region if you already know the `slug` to retrieve.\n\n## Example Usage\n\nUse the `filter` block with a `key` string and `values` list to filter regions.\n\nFor example to find all available regions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst available = digitalocean.getRegions({\n    filters: [{\n        key: \"available\",\n        values: [\"true\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\navailable = digitalocean.get_regions(filters=[{\n    \"key\": \"available\",\n    \"values\": [\"true\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var available = DigitalOcean.GetRegions.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetRegionsFilterInputArgs\n            {\n                Key = \"available\",\n                Values = new[]\n                {\n                    \"true\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetRegions(ctx, \u0026digitalocean.GetRegionsArgs{\n\t\t\tFilters: []digitalocean.GetRegionsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"available\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"true\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetRegionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var available = DigitaloceanFunctions.getRegions(GetRegionsArgs.builder()\n            .filters(GetRegionsFilterArgs.builder()\n                .key(\"available\")\n                .values(\"true\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  available:\n    fn::invoke:\n      Function: digitalocean:getRegions\n      Arguments:\n        filters:\n          - key: available\n            values:\n              - 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can filter on multiple fields and sort the results as well:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst available = digitalocean.getRegions({\n    filters: [\n        {\n            key: \"available\",\n            values: [\"true\"],\n        },\n        {\n            key: \"features\",\n            values: [\"private_networking\"],\n        },\n    ],\n    sorts: [{\n        key: \"name\",\n        direction: \"desc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\navailable = digitalocean.get_regions(filters=[\n        {\n            \"key\": \"available\",\n            \"values\": [\"true\"],\n        },\n        {\n            \"key\": \"features\",\n            \"values\": [\"private_networking\"],\n        },\n    ],\n    sorts=[{\n        \"key\": \"name\",\n        \"direction\": \"desc\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var available = DigitalOcean.GetRegions.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetRegionsFilterInputArgs\n            {\n                Key = \"available\",\n                Values = new[]\n                {\n                    \"true\",\n                },\n            },\n            new DigitalOcean.Inputs.GetRegionsFilterInputArgs\n            {\n                Key = \"features\",\n                Values = new[]\n                {\n                    \"private_networking\",\n                },\n            },\n        },\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetRegionsSortInputArgs\n            {\n                Key = \"name\",\n                Direction = \"desc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetRegions(ctx, \u0026digitalocean.GetRegionsArgs{\n\t\t\tFilters: []digitalocean.GetRegionsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"available\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"true\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey: \"features\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"private_networking\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSorts: []digitalocean.GetRegionsSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"name\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"desc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetRegionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var available = DigitaloceanFunctions.getRegions(GetRegionsArgs.builder()\n            .filters(            \n                GetRegionsFilterArgs.builder()\n                    .key(\"available\")\n                    .values(\"true\")\n                    .build(),\n                GetRegionsFilterArgs.builder()\n                    .key(\"features\")\n                    .values(\"private_networking\")\n                    .build())\n            .sorts(GetRegionsSortArgs.builder()\n                .key(\"name\")\n                .direction(\"desc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  available:\n    fn::invoke:\n      Function: digitalocean:getRegions\n      Arguments:\n        filters:\n          - key: available\n            values:\n              - 'true'\n          - key: features\n            values:\n              - private_networking\n        sorts:\n          - key: name\n            direction: desc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Retrieve information about all supported DigitalOcean regions, with the ability to\nfilter and sort the results. If no filters are specified, all regions will be returned.\n\nNote: You can use the `digitalocean.getRegion` data source\nto obtain metadata about a single region if you already know the `slug` to retrieve.\n\n## Example Usage\n\nUse the `filter` block with a `key` string and `values` list to filter regions.\n\nFor example to find all available regions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst available = digitalocean.getRegions({\n    filters: [{\n        key: \"available\",\n        values: [\"true\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\navailable = digitalocean.get_regions(filters=[{\n    \"key\": \"available\",\n    \"values\": [\"true\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var available = DigitalOcean.GetRegions.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetRegionsFilterInputArgs\n            {\n                Key = \"available\",\n                Values = new[]\n                {\n                    \"true\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetRegions(ctx, \u0026digitalocean.GetRegionsArgs{\n\t\t\tFilters: []digitalocean.GetRegionsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"available\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"true\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetRegionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var available = DigitaloceanFunctions.getRegions(GetRegionsArgs.builder()\n            .filters(GetRegionsFilterArgs.builder()\n                .key(\"available\")\n                .values(\"true\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  available:\n    fn::invoke:\n      function: digitalocean:getRegions\n      arguments:\n        filters:\n          - key: available\n            values:\n              - 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can filter on multiple fields and sort the results as well:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst available = digitalocean.getRegions({\n    filters: [\n        {\n            key: \"available\",\n            values: [\"true\"],\n        },\n        {\n            key: \"features\",\n            values: [\"private_networking\"],\n        },\n    ],\n    sorts: [{\n        key: \"name\",\n        direction: \"desc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\navailable = digitalocean.get_regions(filters=[\n        {\n            \"key\": \"available\",\n            \"values\": [\"true\"],\n        },\n        {\n            \"key\": \"features\",\n            \"values\": [\"private_networking\"],\n        },\n    ],\n    sorts=[{\n        \"key\": \"name\",\n        \"direction\": \"desc\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var available = DigitalOcean.GetRegions.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetRegionsFilterInputArgs\n            {\n                Key = \"available\",\n                Values = new[]\n                {\n                    \"true\",\n                },\n            },\n            new DigitalOcean.Inputs.GetRegionsFilterInputArgs\n            {\n                Key = \"features\",\n                Values = new[]\n                {\n                    \"private_networking\",\n                },\n            },\n        },\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetRegionsSortInputArgs\n            {\n                Key = \"name\",\n                Direction = \"desc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetRegions(ctx, \u0026digitalocean.GetRegionsArgs{\n\t\t\tFilters: []digitalocean.GetRegionsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"available\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"true\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey: \"features\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"private_networking\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSorts: []digitalocean.GetRegionsSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"name\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"desc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetRegionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var available = DigitaloceanFunctions.getRegions(GetRegionsArgs.builder()\n            .filters(            \n                GetRegionsFilterArgs.builder()\n                    .key(\"available\")\n                    .values(\"true\")\n                    .build(),\n                GetRegionsFilterArgs.builder()\n                    .key(\"features\")\n                    .values(\"private_networking\")\n                    .build())\n            .sorts(GetRegionsSortArgs.builder()\n                .key(\"name\")\n                .direction(\"desc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  available:\n    fn::invoke:\n      function: digitalocean:getRegions\n      arguments:\n        filters:\n          - key: available\n            values:\n              - 'true'\n          - key: features\n            values:\n              - private_networking\n        sorts:\n          - key: name\n            direction: desc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getRegions.\n",
                 "properties": {
@@ -18739,7 +18739,7 @@
             }
         },
         "digitalocean:index/getReservedIp:getReservedIp": {
-            "description": "## Example Usage\n\nGet the reserved IP:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst config = new pulumi.Config();\nconst publicIp = config.requireObject(\"publicIp\");\nconst example = digitalocean.getReservedIp({\n    ipAddress: publicIp,\n});\nexport const fipOutput = example.then(example =\u003e example.dropletId);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nconfig = pulumi.Config()\npublic_ip = config.require_object(\"publicIp\")\nexample = digitalocean.get_reserved_ip(ip_address=public_ip)\npulumi.export(\"fipOutput\", example.droplet_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var publicIp = config.RequireObject\u003cdynamic\u003e(\"publicIp\");\n    var example = DigitalOcean.GetReservedIp.Invoke(new()\n    {\n        IpAddress = publicIp,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"fipOutput\"] = example.Apply(getReservedIpResult =\u003e getReservedIpResult.DropletId),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tpublicIp := cfg.RequireObject(\"publicIp\")\n\t\texample, err := digitalocean.LookupReservedIp(ctx, \u0026digitalocean.LookupReservedIpArgs{\n\t\t\tIpAddress: publicIp,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"fipOutput\", example.DropletId)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetReservedIpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var config = ctx.config();\n        final var publicIp = config.get(\"publicIp\");\n        final var example = DigitaloceanFunctions.getReservedIp(GetReservedIpArgs.builder()\n            .ipAddress(publicIp)\n            .build());\n\n        ctx.export(\"fipOutput\", example.applyValue(getReservedIpResult -\u003e getReservedIpResult.dropletId()));\n    }\n}\n```\n```yaml\nconfiguration:\n  publicIp:\n    type: dynamic\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getReservedIp\n      Arguments:\n        ipAddress: ${publicIp}\noutputs:\n  fipOutput: ${example.dropletId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "## Example Usage\n\nGet the reserved IP:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst config = new pulumi.Config();\nconst publicIp = config.requireObject(\"publicIp\");\nconst example = digitalocean.getReservedIp({\n    ipAddress: publicIp,\n});\nexport const fipOutput = example.then(example =\u003e example.dropletId);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nconfig = pulumi.Config()\npublic_ip = config.require_object(\"publicIp\")\nexample = digitalocean.get_reserved_ip(ip_address=public_ip)\npulumi.export(\"fipOutput\", example.droplet_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var publicIp = config.RequireObject\u003cdynamic\u003e(\"publicIp\");\n    var example = DigitalOcean.GetReservedIp.Invoke(new()\n    {\n        IpAddress = publicIp,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"fipOutput\"] = example.Apply(getReservedIpResult =\u003e getReservedIpResult.DropletId),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tpublicIp := cfg.RequireObject(\"publicIp\")\n\t\texample, err := digitalocean.LookupReservedIp(ctx, \u0026digitalocean.LookupReservedIpArgs{\n\t\t\tIpAddress: publicIp,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"fipOutput\", example.DropletId)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetReservedIpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var config = ctx.config();\n        final var publicIp = config.get(\"publicIp\");\n        final var example = DigitaloceanFunctions.getReservedIp(GetReservedIpArgs.builder()\n            .ipAddress(publicIp)\n            .build());\n\n        ctx.export(\"fipOutput\", example.applyValue(getReservedIpResult -\u003e getReservedIpResult.dropletId()));\n    }\n}\n```\n```yaml\nconfiguration:\n  publicIp:\n    type: dynamic\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getReservedIp\n      arguments:\n        ipAddress: ${publicIp}\noutputs:\n  fipOutput: ${example.dropletId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getReservedIp.\n",
                 "properties": {
@@ -18842,7 +18842,7 @@
             }
         },
         "digitalocean:index/getSpacesBucket:getSpacesBucket": {
-            "description": "Get information on a Spaces bucket for use in other resources. This is useful if the Spaces bucket in question\nis not managed by the provider or you need to utilize any of the bucket's data.\n\n## Example Usage\n\nGet the bucket by name:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getSpacesBucket({\n    name: \"my-spaces-bucket\",\n    region: \"nyc3\",\n});\nexport const bucketDomainName = example.then(example =\u003e example.bucketDomainName);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_spaces_bucket(name=\"my-spaces-bucket\",\n    region=\"nyc3\")\npulumi.export(\"bucketDomainName\", example.bucket_domain_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetSpacesBucket.Invoke(new()\n    {\n        Name = \"my-spaces-bucket\",\n        Region = \"nyc3\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"bucketDomainName\"] = example.Apply(getSpacesBucketResult =\u003e getSpacesBucketResult.BucketDomainName),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupSpacesBucket(ctx, \u0026digitalocean.LookupSpacesBucketArgs{\n\t\t\tName:   \"my-spaces-bucket\",\n\t\t\tRegion: \"nyc3\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"bucketDomainName\", example.BucketDomainName)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSpacesBucketArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getSpacesBucket(GetSpacesBucketArgs.builder()\n            .name(\"my-spaces-bucket\")\n            .region(\"nyc3\")\n            .build());\n\n        ctx.export(\"bucketDomainName\", example.applyValue(getSpacesBucketResult -\u003e getSpacesBucketResult.bucketDomainName()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getSpacesBucket\n      Arguments:\n        name: my-spaces-bucket\n        region: nyc3\noutputs:\n  bucketDomainName: ${example.bucketDomainName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on a Spaces bucket for use in other resources. This is useful if the Spaces bucket in question\nis not managed by the provider or you need to utilize any of the bucket's data.\n\n## Example Usage\n\nGet the bucket by name:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getSpacesBucket({\n    name: \"my-spaces-bucket\",\n    region: \"nyc3\",\n});\nexport const bucketDomainName = example.then(example =\u003e example.bucketDomainName);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_spaces_bucket(name=\"my-spaces-bucket\",\n    region=\"nyc3\")\npulumi.export(\"bucketDomainName\", example.bucket_domain_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetSpacesBucket.Invoke(new()\n    {\n        Name = \"my-spaces-bucket\",\n        Region = \"nyc3\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"bucketDomainName\"] = example.Apply(getSpacesBucketResult =\u003e getSpacesBucketResult.BucketDomainName),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupSpacesBucket(ctx, \u0026digitalocean.LookupSpacesBucketArgs{\n\t\t\tName:   \"my-spaces-bucket\",\n\t\t\tRegion: \"nyc3\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"bucketDomainName\", example.BucketDomainName)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSpacesBucketArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getSpacesBucket(GetSpacesBucketArgs.builder()\n            .name(\"my-spaces-bucket\")\n            .region(\"nyc3\")\n            .build());\n\n        ctx.export(\"bucketDomainName\", example.applyValue(getSpacesBucketResult -\u003e getSpacesBucketResult.bucketDomainName()));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getSpacesBucket\n      arguments:\n        name: my-spaces-bucket\n        region: nyc3\noutputs:\n  bucketDomainName: ${example.bucketDomainName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getSpacesBucket.\n",
                 "properties": {
@@ -18901,7 +18901,7 @@
             }
         },
         "digitalocean:index/getSpacesBucketObject:getSpacesBucketObject": {
-            "description": "The Spaces object data source allows access to the metadata and\n_optionally_ (see below) content of an object stored inside a Spaces bucket.\n\n\u003e **Note:** The content of an object (`body` field) is available only for objects which have a human-readable\n`Content-Type` (`text/*` and `application/json`). This is to prevent printing unsafe characters and potentially\ndownloading large amount of data which would be thrown away in favor of metadata.\n\n## Example Usage\n\nThe following example retrieves a text object (which must have a `Content-Type`\nvalue starting with `text/`) and uses it as the `user_data` for a Droplet:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst bootstrapScript = digitalocean.getSpacesBucketObject({\n    bucket: \"ourcorp-deploy-config\",\n    region: \"nyc3\",\n    key: \"droplet-bootstrap-script.sh\",\n});\nconst web = new digitalocean.Droplet(\"web\", {\n    image: \"ubuntu-18-04-x64\",\n    name: \"web-1\",\n    region: digitalocean.Region.NYC2,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    userData: bootstrapScript.then(bootstrapScript =\u003e bootstrapScript.body),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nbootstrap_script = digitalocean.get_spaces_bucket_object(bucket=\"ourcorp-deploy-config\",\n    region=\"nyc3\",\n    key=\"droplet-bootstrap-script.sh\")\nweb = digitalocean.Droplet(\"web\",\n    image=\"ubuntu-18-04-x64\",\n    name=\"web-1\",\n    region=digitalocean.Region.NYC2,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    user_data=bootstrap_script.body)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var bootstrapScript = DigitalOcean.GetSpacesBucketObject.Invoke(new()\n    {\n        Bucket = \"ourcorp-deploy-config\",\n        Region = \"nyc3\",\n        Key = \"droplet-bootstrap-script.sh\",\n    });\n\n    var web = new DigitalOcean.Droplet(\"web\", new()\n    {\n        Image = \"ubuntu-18-04-x64\",\n        Name = \"web-1\",\n        Region = DigitalOcean.Region.NYC2,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        UserData = bootstrapScript.Apply(getSpacesBucketObjectResult =\u003e getSpacesBucketObjectResult.Body),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbootstrapScript, err := digitalocean.LookupSpacesBucketObject(ctx, \u0026digitalocean.LookupSpacesBucketObjectArgs{\n\t\t\tBucket: \"ourcorp-deploy-config\",\n\t\t\tRegion: \"nyc3\",\n\t\t\tKey:    \"droplet-bootstrap-script.sh\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"web\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:    pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tName:     pulumi.String(\"web-1\"),\n\t\t\tRegion:   pulumi.String(digitalocean.RegionNYC2),\n\t\t\tSize:     pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tUserData: pulumi.String(bootstrapScript.Body),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSpacesBucketObjectArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var bootstrapScript = DigitaloceanFunctions.getSpacesBucketObject(GetSpacesBucketObjectArgs.builder()\n            .bucket(\"ourcorp-deploy-config\")\n            .region(\"nyc3\")\n            .key(\"droplet-bootstrap-script.sh\")\n            .build());\n\n        var web = new Droplet(\"web\", DropletArgs.builder()\n            .image(\"ubuntu-18-04-x64\")\n            .name(\"web-1\")\n            .region(\"nyc2\")\n            .size(\"s-1vcpu-1gb\")\n            .userData(bootstrapScript.applyValue(getSpacesBucketObjectResult -\u003e getSpacesBucketObjectResult.body()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  web:\n    type: digitalocean:Droplet\n    properties:\n      image: ubuntu-18-04-x64\n      name: web-1\n      region: nyc2\n      size: s-1vcpu-1gb\n      userData: ${bootstrapScript.body}\nvariables:\n  bootstrapScript:\n    fn::invoke:\n      Function: digitalocean:getSpacesBucketObject\n      Arguments:\n        bucket: ourcorp-deploy-config\n        region: nyc3\n        key: droplet-bootstrap-script.sh\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "The Spaces object data source allows access to the metadata and\n_optionally_ (see below) content of an object stored inside a Spaces bucket.\n\n\u003e **Note:** The content of an object (`body` field) is available only for objects which have a human-readable\n`Content-Type` (`text/*` and `application/json`). This is to prevent printing unsafe characters and potentially\ndownloading large amount of data which would be thrown away in favor of metadata.\n\n## Example Usage\n\nThe following example retrieves a text object (which must have a `Content-Type`\nvalue starting with `text/`) and uses it as the `user_data` for a Droplet:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst bootstrapScript = digitalocean.getSpacesBucketObject({\n    bucket: \"ourcorp-deploy-config\",\n    region: \"nyc3\",\n    key: \"droplet-bootstrap-script.sh\",\n});\nconst web = new digitalocean.Droplet(\"web\", {\n    image: \"ubuntu-18-04-x64\",\n    name: \"web-1\",\n    region: digitalocean.Region.NYC2,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    userData: bootstrapScript.then(bootstrapScript =\u003e bootstrapScript.body),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nbootstrap_script = digitalocean.get_spaces_bucket_object(bucket=\"ourcorp-deploy-config\",\n    region=\"nyc3\",\n    key=\"droplet-bootstrap-script.sh\")\nweb = digitalocean.Droplet(\"web\",\n    image=\"ubuntu-18-04-x64\",\n    name=\"web-1\",\n    region=digitalocean.Region.NYC2,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    user_data=bootstrap_script.body)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var bootstrapScript = DigitalOcean.GetSpacesBucketObject.Invoke(new()\n    {\n        Bucket = \"ourcorp-deploy-config\",\n        Region = \"nyc3\",\n        Key = \"droplet-bootstrap-script.sh\",\n    });\n\n    var web = new DigitalOcean.Droplet(\"web\", new()\n    {\n        Image = \"ubuntu-18-04-x64\",\n        Name = \"web-1\",\n        Region = DigitalOcean.Region.NYC2,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        UserData = bootstrapScript.Apply(getSpacesBucketObjectResult =\u003e getSpacesBucketObjectResult.Body),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbootstrapScript, err := digitalocean.LookupSpacesBucketObject(ctx, \u0026digitalocean.LookupSpacesBucketObjectArgs{\n\t\t\tBucket: \"ourcorp-deploy-config\",\n\t\t\tRegion: \"nyc3\",\n\t\t\tKey:    \"droplet-bootstrap-script.sh\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"web\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:    pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tName:     pulumi.String(\"web-1\"),\n\t\t\tRegion:   pulumi.String(digitalocean.RegionNYC2),\n\t\t\tSize:     pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tUserData: pulumi.String(bootstrapScript.Body),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSpacesBucketObjectArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var bootstrapScript = DigitaloceanFunctions.getSpacesBucketObject(GetSpacesBucketObjectArgs.builder()\n            .bucket(\"ourcorp-deploy-config\")\n            .region(\"nyc3\")\n            .key(\"droplet-bootstrap-script.sh\")\n            .build());\n\n        var web = new Droplet(\"web\", DropletArgs.builder()\n            .image(\"ubuntu-18-04-x64\")\n            .name(\"web-1\")\n            .region(\"nyc2\")\n            .size(\"s-1vcpu-1gb\")\n            .userData(bootstrapScript.applyValue(getSpacesBucketObjectResult -\u003e getSpacesBucketObjectResult.body()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  web:\n    type: digitalocean:Droplet\n    properties:\n      image: ubuntu-18-04-x64\n      name: web-1\n      region: nyc2\n      size: s-1vcpu-1gb\n      userData: ${bootstrapScript.body}\nvariables:\n  bootstrapScript:\n    fn::invoke:\n      function: digitalocean:getSpacesBucketObject\n      arguments:\n        bucket: ourcorp-deploy-config\n        region: nyc3\n        key: droplet-bootstrap-script.sh\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getSpacesBucketObject.\n",
                 "properties": {
@@ -19129,7 +19129,7 @@
             }
         },
         "digitalocean:index/getSpacesBuckets:getSpacesBuckets": {
-            "description": "Get information on Spaces buckets for use in other resources, with the ability to filter and sort the results.\nIf no filters are specified, all Spaces buckets will be returned.\n\nNote: You can use the `digitalocean.SpacesBucket` data source to\nobtain metadata about a single bucket if you already know its `name` and `region`.\n\n## Example Usage\n\nUse the `filter` block with a `key` string and `values` list to filter buckets.\n\nGet all buckets in a region:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst nyc3 = digitalocean.getSpacesBuckets({\n    filters: [{\n        key: \"region\",\n        values: [\"nyc3\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nnyc3 = digitalocean.get_spaces_buckets(filters=[{\n    \"key\": \"region\",\n    \"values\": [\"nyc3\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var nyc3 = DigitalOcean.GetSpacesBuckets.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetSpacesBucketsFilterInputArgs\n            {\n                Key = \"region\",\n                Values = new[]\n                {\n                    \"nyc3\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetSpacesBuckets(ctx, \u0026digitalocean.GetSpacesBucketsArgs{\n\t\t\tFilters: []digitalocean.GetSpacesBucketsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"region\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"nyc3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSpacesBucketsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var nyc3 = DigitaloceanFunctions.getSpacesBuckets(GetSpacesBucketsArgs.builder()\n            .filters(GetSpacesBucketsFilterArgs.builder()\n                .key(\"region\")\n                .values(\"nyc3\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  nyc3:\n    fn::invoke:\n      Function: digitalocean:getSpacesBuckets\n      Arguments:\n        filters:\n          - key: region\n            values:\n              - nyc3\n```\n\u003c!--End PulumiCodeChooser --\u003e\nYou can sort the results as well:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst nyc3 = digitalocean.getSpacesBuckets({\n    filters: [{\n        key: \"region\",\n        values: [\"nyc3\"],\n    }],\n    sorts: [{\n        key: \"name\",\n        direction: \"desc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nnyc3 = digitalocean.get_spaces_buckets(filters=[{\n        \"key\": \"region\",\n        \"values\": [\"nyc3\"],\n    }],\n    sorts=[{\n        \"key\": \"name\",\n        \"direction\": \"desc\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var nyc3 = DigitalOcean.GetSpacesBuckets.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetSpacesBucketsFilterInputArgs\n            {\n                Key = \"region\",\n                Values = new[]\n                {\n                    \"nyc3\",\n                },\n            },\n        },\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetSpacesBucketsSortInputArgs\n            {\n                Key = \"name\",\n                Direction = \"desc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetSpacesBuckets(ctx, \u0026digitalocean.GetSpacesBucketsArgs{\n\t\t\tFilters: []digitalocean.GetSpacesBucketsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"region\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"nyc3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSorts: []digitalocean.GetSpacesBucketsSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"name\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"desc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSpacesBucketsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var nyc3 = DigitaloceanFunctions.getSpacesBuckets(GetSpacesBucketsArgs.builder()\n            .filters(GetSpacesBucketsFilterArgs.builder()\n                .key(\"region\")\n                .values(\"nyc3\")\n                .build())\n            .sorts(GetSpacesBucketsSortArgs.builder()\n                .key(\"name\")\n                .direction(\"desc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  nyc3:\n    fn::invoke:\n      Function: digitalocean:getSpacesBuckets\n      Arguments:\n        filters:\n          - key: region\n            values:\n              - nyc3\n        sorts:\n          - key: name\n            direction: desc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on Spaces buckets for use in other resources, with the ability to filter and sort the results.\nIf no filters are specified, all Spaces buckets will be returned.\n\nNote: You can use the `digitalocean.SpacesBucket` data source to\nobtain metadata about a single bucket if you already know its `name` and `region`.\n\n## Example Usage\n\nUse the `filter` block with a `key` string and `values` list to filter buckets.\n\nGet all buckets in a region:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst nyc3 = digitalocean.getSpacesBuckets({\n    filters: [{\n        key: \"region\",\n        values: [\"nyc3\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nnyc3 = digitalocean.get_spaces_buckets(filters=[{\n    \"key\": \"region\",\n    \"values\": [\"nyc3\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var nyc3 = DigitalOcean.GetSpacesBuckets.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetSpacesBucketsFilterInputArgs\n            {\n                Key = \"region\",\n                Values = new[]\n                {\n                    \"nyc3\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetSpacesBuckets(ctx, \u0026digitalocean.GetSpacesBucketsArgs{\n\t\t\tFilters: []digitalocean.GetSpacesBucketsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"region\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"nyc3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSpacesBucketsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var nyc3 = DigitaloceanFunctions.getSpacesBuckets(GetSpacesBucketsArgs.builder()\n            .filters(GetSpacesBucketsFilterArgs.builder()\n                .key(\"region\")\n                .values(\"nyc3\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  nyc3:\n    fn::invoke:\n      function: digitalocean:getSpacesBuckets\n      arguments:\n        filters:\n          - key: region\n            values:\n              - nyc3\n```\n\u003c!--End PulumiCodeChooser --\u003e\nYou can sort the results as well:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst nyc3 = digitalocean.getSpacesBuckets({\n    filters: [{\n        key: \"region\",\n        values: [\"nyc3\"],\n    }],\n    sorts: [{\n        key: \"name\",\n        direction: \"desc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nnyc3 = digitalocean.get_spaces_buckets(filters=[{\n        \"key\": \"region\",\n        \"values\": [\"nyc3\"],\n    }],\n    sorts=[{\n        \"key\": \"name\",\n        \"direction\": \"desc\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var nyc3 = DigitalOcean.GetSpacesBuckets.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetSpacesBucketsFilterInputArgs\n            {\n                Key = \"region\",\n                Values = new[]\n                {\n                    \"nyc3\",\n                },\n            },\n        },\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetSpacesBucketsSortInputArgs\n            {\n                Key = \"name\",\n                Direction = \"desc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetSpacesBuckets(ctx, \u0026digitalocean.GetSpacesBucketsArgs{\n\t\t\tFilters: []digitalocean.GetSpacesBucketsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"region\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"nyc3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSorts: []digitalocean.GetSpacesBucketsSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"name\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"desc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSpacesBucketsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var nyc3 = DigitaloceanFunctions.getSpacesBuckets(GetSpacesBucketsArgs.builder()\n            .filters(GetSpacesBucketsFilterArgs.builder()\n                .key(\"region\")\n                .values(\"nyc3\")\n                .build())\n            .sorts(GetSpacesBucketsSortArgs.builder()\n                .key(\"name\")\n                .direction(\"desc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  nyc3:\n    fn::invoke:\n      function: digitalocean:getSpacesBuckets\n      arguments:\n        filters:\n          - key: region\n            values:\n              - nyc3\n        sorts:\n          - key: name\n            direction: desc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getSpacesBuckets.\n",
                 "properties": {
@@ -19185,7 +19185,7 @@
             }
         },
         "digitalocean:index/getSshKey:getSshKey": {
-            "description": "Get information on a ssh key. This data source provides the name, public key,\nand fingerprint as configured on your DigitalOcean account. This is useful if\nthe ssh key in question is not managed by the provider or you need to utilize any\nof the keys data.\n\nAn error is triggered if the provided ssh key name does not exist.\n\n## Example Usage\n\nGet the ssh key:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getSshKey({\n    name: \"example\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    image: \"ubuntu-18-04-x64\",\n    name: \"example-1\",\n    region: digitalocean.Region.NYC2,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    sshKeys: [example.then(example =\u003e example.id)],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_ssh_key(name=\"example\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    image=\"ubuntu-18-04-x64\",\n    name=\"example-1\",\n    region=digitalocean.Region.NYC2,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    ssh_keys=[example.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetSshKey.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Image = \"ubuntu-18-04-x64\",\n        Name = \"example-1\",\n        Region = DigitalOcean.Region.NYC2,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        SshKeys = new[]\n        {\n            example.Apply(getSshKeyResult =\u003e getSshKeyResult.Id),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupSshKey(ctx, \u0026digitalocean.LookupSshKeyArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tName:   pulumi.String(\"example-1\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC2),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tSshKeys: pulumi.StringArray{\n\t\t\t\tpulumi.Int(example.Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSshKeyArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getSshKey(GetSshKeyArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .image(\"ubuntu-18-04-x64\")\n            .name(\"example-1\")\n            .region(\"nyc2\")\n            .size(\"s-1vcpu-1gb\")\n            .sshKeys(example.applyValue(getSshKeyResult -\u003e getSshKeyResult.id()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      image: ubuntu-18-04-x64\n      name: example-1\n      region: nyc2\n      size: s-1vcpu-1gb\n      sshKeys:\n        - ${example.id}\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getSshKey\n      Arguments:\n        name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on a ssh key. This data source provides the name, public key,\nand fingerprint as configured on your DigitalOcean account. This is useful if\nthe ssh key in question is not managed by the provider or you need to utilize any\nof the keys data.\n\nAn error is triggered if the provided ssh key name does not exist.\n\n## Example Usage\n\nGet the ssh key:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getSshKey({\n    name: \"example\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    image: \"ubuntu-18-04-x64\",\n    name: \"example-1\",\n    region: digitalocean.Region.NYC2,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    sshKeys: [example.then(example =\u003e example.id)],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_ssh_key(name=\"example\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    image=\"ubuntu-18-04-x64\",\n    name=\"example-1\",\n    region=digitalocean.Region.NYC2,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    ssh_keys=[example.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetSshKey.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Image = \"ubuntu-18-04-x64\",\n        Name = \"example-1\",\n        Region = DigitalOcean.Region.NYC2,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        SshKeys = new[]\n        {\n            example.Apply(getSshKeyResult =\u003e getSshKeyResult.Id),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupSshKey(ctx, \u0026digitalocean.LookupSshKeyArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tName:   pulumi.String(\"example-1\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC2),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tSshKeys: pulumi.StringArray{\n\t\t\t\tpulumi.Int(example.Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSshKeyArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getSshKey(GetSshKeyArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .image(\"ubuntu-18-04-x64\")\n            .name(\"example-1\")\n            .region(\"nyc2\")\n            .size(\"s-1vcpu-1gb\")\n            .sshKeys(example.applyValue(getSshKeyResult -\u003e getSshKeyResult.id()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      image: ubuntu-18-04-x64\n      name: example-1\n      region: nyc2\n      size: s-1vcpu-1gb\n      sshKeys:\n        - ${example.id}\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getSshKey\n      arguments:\n        name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getSshKey.\n",
                 "properties": {
@@ -19228,7 +19228,7 @@
             }
         },
         "digitalocean:index/getSshKeys:getSshKeys": {
-            "description": "Get information on SSH Keys for use in other resources.\n\nThis data source is useful if the SSH Keys in question are not managed by the provider or you need to\nutilize any of the SSH Keys' data.\n\nNote: You can use the `digitalocean.SshKey` data source to obtain metadata\nabout a single SSH Key if you already know the unique `name` to retrieve.\n\n## Example Usage\n\nFor example, to find all SSH keys:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst keys = digitalocean.getSshKeys({\n    sorts: [{\n        key: \"name\",\n        direction: \"asc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nkeys = digitalocean.get_ssh_keys(sorts=[{\n    \"key\": \"name\",\n    \"direction\": \"asc\",\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var keys = DigitalOcean.GetSshKeys.Invoke(new()\n    {\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetSshKeysSortInputArgs\n            {\n                Key = \"name\",\n                Direction = \"asc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetSshKeys(ctx, \u0026digitalocean.GetSshKeysArgs{\n\t\t\tSorts: []digitalocean.GetSshKeysSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"name\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"asc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSshKeysArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var keys = DigitaloceanFunctions.getSshKeys(GetSshKeysArgs.builder()\n            .sorts(GetSshKeysSortArgs.builder()\n                .key(\"name\")\n                .direction(\"asc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  keys:\n    fn::invoke:\n      Function: digitalocean:getSshKeys\n      Arguments:\n        sorts:\n          - key: name\n            direction: asc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nOr to find ones matching specific values:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst keys = digitalocean.getSshKeys({\n    filters: [{\n        key: \"name\",\n        values: [\n            \"laptop\",\n            \"desktop\",\n        ],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nkeys = digitalocean.get_ssh_keys(filters=[{\n    \"key\": \"name\",\n    \"values\": [\n        \"laptop\",\n        \"desktop\",\n    ],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var keys = DigitalOcean.GetSshKeys.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetSshKeysFilterInputArgs\n            {\n                Key = \"name\",\n                Values = new[]\n                {\n                    \"laptop\",\n                    \"desktop\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetSshKeys(ctx, \u0026digitalocean.GetSshKeysArgs{\n\t\t\tFilters: []digitalocean.GetSshKeysFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"name\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"laptop\",\n\t\t\t\t\t\t\"desktop\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSshKeysArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var keys = DigitaloceanFunctions.getSshKeys(GetSshKeysArgs.builder()\n            .filters(GetSshKeysFilterArgs.builder()\n                .key(\"name\")\n                .values(                \n                    \"laptop\",\n                    \"desktop\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  keys:\n    fn::invoke:\n      Function: digitalocean:getSshKeys\n      Arguments:\n        filters:\n          - key: name\n            values:\n              - laptop\n              - desktop\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on SSH Keys for use in other resources.\n\nThis data source is useful if the SSH Keys in question are not managed by the provider or you need to\nutilize any of the SSH Keys' data.\n\nNote: You can use the `digitalocean.SshKey` data source to obtain metadata\nabout a single SSH Key if you already know the unique `name` to retrieve.\n\n## Example Usage\n\nFor example, to find all SSH keys:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst keys = digitalocean.getSshKeys({\n    sorts: [{\n        key: \"name\",\n        direction: \"asc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nkeys = digitalocean.get_ssh_keys(sorts=[{\n    \"key\": \"name\",\n    \"direction\": \"asc\",\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var keys = DigitalOcean.GetSshKeys.Invoke(new()\n    {\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetSshKeysSortInputArgs\n            {\n                Key = \"name\",\n                Direction = \"asc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetSshKeys(ctx, \u0026digitalocean.GetSshKeysArgs{\n\t\t\tSorts: []digitalocean.GetSshKeysSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"name\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"asc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSshKeysArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var keys = DigitaloceanFunctions.getSshKeys(GetSshKeysArgs.builder()\n            .sorts(GetSshKeysSortArgs.builder()\n                .key(\"name\")\n                .direction(\"asc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  keys:\n    fn::invoke:\n      function: digitalocean:getSshKeys\n      arguments:\n        sorts:\n          - key: name\n            direction: asc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nOr to find ones matching specific values:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst keys = digitalocean.getSshKeys({\n    filters: [{\n        key: \"name\",\n        values: [\n            \"laptop\",\n            \"desktop\",\n        ],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nkeys = digitalocean.get_ssh_keys(filters=[{\n    \"key\": \"name\",\n    \"values\": [\n        \"laptop\",\n        \"desktop\",\n    ],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var keys = DigitalOcean.GetSshKeys.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetSshKeysFilterInputArgs\n            {\n                Key = \"name\",\n                Values = new[]\n                {\n                    \"laptop\",\n                    \"desktop\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetSshKeys(ctx, \u0026digitalocean.GetSshKeysArgs{\n\t\t\tFilters: []digitalocean.GetSshKeysFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"name\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"laptop\",\n\t\t\t\t\t\t\"desktop\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSshKeysArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var keys = DigitaloceanFunctions.getSshKeys(GetSshKeysArgs.builder()\n            .filters(GetSshKeysFilterArgs.builder()\n                .key(\"name\")\n                .values(                \n                    \"laptop\",\n                    \"desktop\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  keys:\n    fn::invoke:\n      function: digitalocean:getSshKeys\n      arguments:\n        filters:\n          - key: name\n            values:\n              - laptop\n              - desktop\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getSshKeys.\n",
                 "properties": {
@@ -19284,7 +19284,7 @@
             }
         },
         "digitalocean:index/getTag:getTag": {
-            "description": "Get information on a tag. This data source provides the name as configured on\nyour DigitalOcean account. This is useful if the tag name in question is not\nmanaged by the provider or you need validate if the tag exists in the account.\n\nAn error is triggered if the provided tag name does not exist.\n\n## Example Usage\n\nGet the tag:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getTag({\n    name: \"example\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    image: \"ubuntu-18-04-x64\",\n    name: \"example-1\",\n    region: digitalocean.Region.NYC2,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    tags: [example.then(example =\u003e example.name)],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_tag(name=\"example\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    image=\"ubuntu-18-04-x64\",\n    name=\"example-1\",\n    region=digitalocean.Region.NYC2,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    tags=[example.name])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetTag.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Image = \"ubuntu-18-04-x64\",\n        Name = \"example-1\",\n        Region = DigitalOcean.Region.NYC2,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Tags = new[]\n        {\n            example.Apply(getTagResult =\u003e getTagResult.Name),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupTag(ctx, \u0026digitalocean.LookupTagArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tName:   pulumi.String(\"example-1\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC2),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(example.Name),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetTagArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getTag(GetTagArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .image(\"ubuntu-18-04-x64\")\n            .name(\"example-1\")\n            .region(\"nyc2\")\n            .size(\"s-1vcpu-1gb\")\n            .tags(example.applyValue(getTagResult -\u003e getTagResult.name()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      image: ubuntu-18-04-x64\n      name: example-1\n      region: nyc2\n      size: s-1vcpu-1gb\n      tags:\n        - ${example.name}\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getTag\n      Arguments:\n        name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on a tag. This data source provides the name as configured on\nyour DigitalOcean account. This is useful if the tag name in question is not\nmanaged by the provider or you need validate if the tag exists in the account.\n\nAn error is triggered if the provided tag name does not exist.\n\n## Example Usage\n\nGet the tag:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getTag({\n    name: \"example\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    image: \"ubuntu-18-04-x64\",\n    name: \"example-1\",\n    region: digitalocean.Region.NYC2,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    tags: [example.then(example =\u003e example.name)],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_tag(name=\"example\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    image=\"ubuntu-18-04-x64\",\n    name=\"example-1\",\n    region=digitalocean.Region.NYC2,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    tags=[example.name])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetTag.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Image = \"ubuntu-18-04-x64\",\n        Name = \"example-1\",\n        Region = DigitalOcean.Region.NYC2,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Tags = new[]\n        {\n            example.Apply(getTagResult =\u003e getTagResult.Name),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupTag(ctx, \u0026digitalocean.LookupTagArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tName:   pulumi.String(\"example-1\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC2),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(example.Name),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetTagArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getTag(GetTagArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .image(\"ubuntu-18-04-x64\")\n            .name(\"example-1\")\n            .region(\"nyc2\")\n            .size(\"s-1vcpu-1gb\")\n            .tags(example.applyValue(getTagResult -\u003e getTagResult.name()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      image: ubuntu-18-04-x64\n      name: example-1\n      region: nyc2\n      size: s-1vcpu-1gb\n      tags:\n        - ${example.name}\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getTag\n      arguments:\n        name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getTag.\n",
                 "properties": {
@@ -19347,7 +19347,7 @@
             }
         },
         "digitalocean:index/getTags:getTags": {
-            "description": "Returns a list of tags in your DigitalOcean account, with the ability to\nfilter and sort the results. If no filters are specified, all tags will be\nreturned.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst list = digitalocean.getTags({\n    sorts: [{\n        key: \"total_resource_count\",\n        direction: \"asc\",\n    }],\n});\nexport const sortedTags = list.then(list =\u003e list.tags);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nlist = digitalocean.get_tags(sorts=[{\n    \"key\": \"total_resource_count\",\n    \"direction\": \"asc\",\n}])\npulumi.export(\"sortedTags\", list.tags)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var list = DigitalOcean.GetTags.Invoke(new()\n    {\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetTagsSortInputArgs\n            {\n                Key = \"total_resource_count\",\n                Direction = \"asc\",\n            },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"sortedTags\"] = list.Apply(getTagsResult =\u003e getTagsResult.Tags),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tlist, err := digitalocean.GetTags(ctx, \u0026digitalocean.GetTagsArgs{\n\t\t\tSorts: []digitalocean.GetTagsSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"total_resource_count\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"asc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"sortedTags\", list.Tags)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetTagsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var list = DigitaloceanFunctions.getTags(GetTagsArgs.builder()\n            .sorts(GetTagsSortArgs.builder()\n                .key(\"total_resource_count\")\n                .direction(\"asc\")\n                .build())\n            .build());\n\n        ctx.export(\"sortedTags\", list.applyValue(getTagsResult -\u003e getTagsResult.tags()));\n    }\n}\n```\n```yaml\nvariables:\n  list:\n    fn::invoke:\n      Function: digitalocean:getTags\n      Arguments:\n        sorts:\n          - key: total_resource_count\n            direction: asc\noutputs:\n  sortedTags: ${list.tags}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Returns a list of tags in your DigitalOcean account, with the ability to\nfilter and sort the results. If no filters are specified, all tags will be\nreturned.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst list = digitalocean.getTags({\n    sorts: [{\n        key: \"total_resource_count\",\n        direction: \"asc\",\n    }],\n});\nexport const sortedTags = list.then(list =\u003e list.tags);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nlist = digitalocean.get_tags(sorts=[{\n    \"key\": \"total_resource_count\",\n    \"direction\": \"asc\",\n}])\npulumi.export(\"sortedTags\", list.tags)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var list = DigitalOcean.GetTags.Invoke(new()\n    {\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetTagsSortInputArgs\n            {\n                Key = \"total_resource_count\",\n                Direction = \"asc\",\n            },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"sortedTags\"] = list.Apply(getTagsResult =\u003e getTagsResult.Tags),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tlist, err := digitalocean.GetTags(ctx, \u0026digitalocean.GetTagsArgs{\n\t\t\tSorts: []digitalocean.GetTagsSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"total_resource_count\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"asc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"sortedTags\", list.Tags)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetTagsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var list = DigitaloceanFunctions.getTags(GetTagsArgs.builder()\n            .sorts(GetTagsSortArgs.builder()\n                .key(\"total_resource_count\")\n                .direction(\"asc\")\n                .build())\n            .build());\n\n        ctx.export(\"sortedTags\", list.applyValue(getTagsResult -\u003e getTagsResult.tags()));\n    }\n}\n```\n```yaml\nvariables:\n  list:\n    fn::invoke:\n      function: digitalocean:getTags\n      arguments:\n        sorts:\n          - key: total_resource_count\n            direction: asc\noutputs:\n  sortedTags: ${list.tags}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getTags.\n",
                 "properties": {
@@ -19402,7 +19402,7 @@
             }
         },
         "digitalocean:index/getVolume:getVolume": {
-            "description": "Get information on a volume for use in other resources. This data source provides\nall of the volumes properties as configured on your DigitalOcean account. This is\nuseful if the volume in question is not managed by the provider or you need to utilize\nany of the volumes data.\n\nAn error is triggered if the provided volume name does not exist.\n\n## Example Usage\n\nGet the volume:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVolume({\n    name: \"app-data\",\n    region: \"nyc3\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_volume(name=\"app-data\",\n    region=\"nyc3\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVolume.Invoke(new()\n    {\n        Name = \"app-data\",\n        Region = \"nyc3\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupVolume(ctx, \u0026digitalocean.LookupVolumeArgs{\n\t\t\tName:   \"app-data\",\n\t\t\tRegion: pulumi.StringRef(\"nyc3\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVolume(GetVolumeArgs.builder()\n            .name(\"app-data\")\n            .region(\"nyc3\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getVolume\n      Arguments:\n        name: app-data\n        region: nyc3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a volume to attach it to a Droplet:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVolume({\n    name: \"app-data\",\n    region: \"nyc3\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    name: \"foo\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC3,\n});\nconst foobar = new digitalocean.VolumeAttachment(\"foobar\", {\n    dropletId: exampleDroplet.id,\n    volumeId: example.then(example =\u003e example.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_volume(name=\"app-data\",\n    region=\"nyc3\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    name=\"foo\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC3)\nfoobar = digitalocean.VolumeAttachment(\"foobar\",\n    droplet_id=example_droplet.id,\n    volume_id=example.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVolume.Invoke(new()\n    {\n        Name = \"app-data\",\n        Region = \"nyc3\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Name = \"foo\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n    });\n\n    var foobar = new DigitalOcean.VolumeAttachment(\"foobar\", new()\n    {\n        DropletId = exampleDroplet.Id,\n        VolumeId = example.Apply(getVolumeResult =\u003e getVolumeResult.Id),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupVolume(ctx, \u0026digitalocean.LookupVolumeArgs{\n\t\t\tName:   \"app-data\",\n\t\t\tRegion: pulumi.StringRef(\"nyc3\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDroplet, err := digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tName:   pulumi.String(\"foo\"),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewVolumeAttachment(ctx, \"foobar\", \u0026digitalocean.VolumeAttachmentArgs{\n\t\t\tDropletId: exampleDroplet.ID(),\n\t\t\tVolumeId:  pulumi.String(example.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVolumeArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.VolumeAttachment;\nimport com.pulumi.digitalocean.VolumeAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVolume(GetVolumeArgs.builder()\n            .name(\"app-data\")\n            .region(\"nyc3\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .name(\"foo\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc3\")\n            .build());\n\n        var foobar = new VolumeAttachment(\"foobar\", VolumeAttachmentArgs.builder()\n            .dropletId(exampleDroplet.id())\n            .volumeId(example.applyValue(getVolumeResult -\u003e getVolumeResult.id()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      name: foo\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc3\n  foobar:\n    type: digitalocean:VolumeAttachment\n    properties:\n      dropletId: ${exampleDroplet.id}\n      volumeId: ${example.id}\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getVolume\n      Arguments:\n        name: app-data\n        region: nyc3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Get information on a volume for use in other resources. This data source provides\nall of the volumes properties as configured on your DigitalOcean account. This is\nuseful if the volume in question is not managed by the provider or you need to utilize\nany of the volumes data.\n\nAn error is triggered if the provided volume name does not exist.\n\n## Example Usage\n\nGet the volume:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVolume({\n    name: \"app-data\",\n    region: \"nyc3\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_volume(name=\"app-data\",\n    region=\"nyc3\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVolume.Invoke(new()\n    {\n        Name = \"app-data\",\n        Region = \"nyc3\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupVolume(ctx, \u0026digitalocean.LookupVolumeArgs{\n\t\t\tName:   \"app-data\",\n\t\t\tRegion: pulumi.StringRef(\"nyc3\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVolume(GetVolumeArgs.builder()\n            .name(\"app-data\")\n            .region(\"nyc3\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getVolume\n      arguments:\n        name: app-data\n        region: nyc3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a volume to attach it to a Droplet:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVolume({\n    name: \"app-data\",\n    region: \"nyc3\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    name: \"foo\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC3,\n});\nconst foobar = new digitalocean.VolumeAttachment(\"foobar\", {\n    dropletId: exampleDroplet.id,\n    volumeId: example.then(example =\u003e example.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_volume(name=\"app-data\",\n    region=\"nyc3\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    name=\"foo\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC3)\nfoobar = digitalocean.VolumeAttachment(\"foobar\",\n    droplet_id=example_droplet.id,\n    volume_id=example.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVolume.Invoke(new()\n    {\n        Name = \"app-data\",\n        Region = \"nyc3\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Name = \"foo\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n    });\n\n    var foobar = new DigitalOcean.VolumeAttachment(\"foobar\", new()\n    {\n        DropletId = exampleDroplet.Id,\n        VolumeId = example.Apply(getVolumeResult =\u003e getVolumeResult.Id),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupVolume(ctx, \u0026digitalocean.LookupVolumeArgs{\n\t\t\tName:   \"app-data\",\n\t\t\tRegion: pulumi.StringRef(\"nyc3\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDroplet, err := digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tName:   pulumi.String(\"foo\"),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewVolumeAttachment(ctx, \"foobar\", \u0026digitalocean.VolumeAttachmentArgs{\n\t\t\tDropletId: exampleDroplet.ID(),\n\t\t\tVolumeId:  pulumi.String(example.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVolumeArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.VolumeAttachment;\nimport com.pulumi.digitalocean.VolumeAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVolume(GetVolumeArgs.builder()\n            .name(\"app-data\")\n            .region(\"nyc3\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .name(\"foo\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc3\")\n            .build());\n\n        var foobar = new VolumeAttachment(\"foobar\", VolumeAttachmentArgs.builder()\n            .dropletId(exampleDroplet.id())\n            .volumeId(example.applyValue(getVolumeResult -\u003e getVolumeResult.id()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      name: foo\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc3\n  foobar:\n    type: digitalocean:VolumeAttachment\n    properties:\n      dropletId: ${exampleDroplet.id}\n      volumeId: ${example.id}\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getVolume\n      arguments:\n        name: app-data\n        region: nyc3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getVolume.\n",
                 "properties": {
@@ -19486,7 +19486,7 @@
             }
         },
         "digitalocean:index/getVolumeSnapshot:getVolumeSnapshot": {
-            "description": "Volume snapshots are saved instances of a block storage volume. Use this data\nsource to retrieve the ID of a DigitalOcean volume snapshot for use in other\nresources.\n\n## Example Usage\n\nGet the volume snapshot:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst snapshot = digitalocean.getVolumeSnapshot({\n    nameRegex: \"^web\",\n    region: \"nyc3\",\n    mostRecent: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsnapshot = digitalocean.get_volume_snapshot(name_regex=\"^web\",\n    region=\"nyc3\",\n    most_recent=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var snapshot = DigitalOcean.GetVolumeSnapshot.Invoke(new()\n    {\n        NameRegex = \"^web\",\n        Region = \"nyc3\",\n        MostRecent = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupVolumeSnapshot(ctx, \u0026digitalocean.LookupVolumeSnapshotArgs{\n\t\t\tNameRegex:  pulumi.StringRef(\"^web\"),\n\t\t\tRegion:     pulumi.StringRef(\"nyc3\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVolumeSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var snapshot = DigitaloceanFunctions.getVolumeSnapshot(GetVolumeSnapshotArgs.builder()\n            .nameRegex(\"^web\")\n            .region(\"nyc3\")\n            .mostRecent(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  snapshot:\n    fn::invoke:\n      Function: digitalocean:getVolumeSnapshot\n      Arguments:\n        nameRegex: ^web\n        region: nyc3\n        mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a volume snapshot to create a new volume based on it:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst snapshot = digitalocean.getVolumeSnapshot({\n    nameRegex: \"^web\",\n    region: \"nyc3\",\n    mostRecent: true,\n});\nconst foobar = new digitalocean.Volume(\"foobar\", {\n    region: digitalocean.Region.NYC3,\n    name: \"baz\",\n    size: 100,\n    snapshotId: snapshot.then(snapshot =\u003e snapshot.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsnapshot = digitalocean.get_volume_snapshot(name_regex=\"^web\",\n    region=\"nyc3\",\n    most_recent=True)\nfoobar = digitalocean.Volume(\"foobar\",\n    region=digitalocean.Region.NYC3,\n    name=\"baz\",\n    size=100,\n    snapshot_id=snapshot.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var snapshot = DigitalOcean.GetVolumeSnapshot.Invoke(new()\n    {\n        NameRegex = \"^web\",\n        Region = \"nyc3\",\n        MostRecent = true,\n    });\n\n    var foobar = new DigitalOcean.Volume(\"foobar\", new()\n    {\n        Region = DigitalOcean.Region.NYC3,\n        Name = \"baz\",\n        Size = 100,\n        SnapshotId = snapshot.Apply(getVolumeSnapshotResult =\u003e getVolumeSnapshotResult.Id),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsnapshot, err := digitalocean.LookupVolumeSnapshot(ctx, \u0026digitalocean.LookupVolumeSnapshotArgs{\n\t\t\tNameRegex:  pulumi.StringRef(\"^web\"),\n\t\t\tRegion:     pulumi.StringRef(\"nyc3\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewVolume(ctx, \"foobar\", \u0026digitalocean.VolumeArgs{\n\t\t\tRegion:     pulumi.String(digitalocean.RegionNYC3),\n\t\t\tName:       pulumi.String(\"baz\"),\n\t\t\tSize:       pulumi.Int(100),\n\t\t\tSnapshotId: pulumi.String(snapshot.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVolumeSnapshotArgs;\nimport com.pulumi.digitalocean.Volume;\nimport com.pulumi.digitalocean.VolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var snapshot = DigitaloceanFunctions.getVolumeSnapshot(GetVolumeSnapshotArgs.builder()\n            .nameRegex(\"^web\")\n            .region(\"nyc3\")\n            .mostRecent(true)\n            .build());\n\n        var foobar = new Volume(\"foobar\", VolumeArgs.builder()\n            .region(\"nyc3\")\n            .name(\"baz\")\n            .size(100)\n            .snapshotId(snapshot.applyValue(getVolumeSnapshotResult -\u003e getVolumeSnapshotResult.id()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:Volume\n    properties:\n      region: nyc3\n      name: baz\n      size: 100\n      snapshotId: ${snapshot.id}\nvariables:\n  snapshot:\n    fn::invoke:\n      Function: digitalocean:getVolumeSnapshot\n      Arguments:\n        nameRegex: ^web\n        region: nyc3\n        mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Volume snapshots are saved instances of a block storage volume. Use this data\nsource to retrieve the ID of a DigitalOcean volume snapshot for use in other\nresources.\n\n## Example Usage\n\nGet the volume snapshot:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst snapshot = digitalocean.getVolumeSnapshot({\n    nameRegex: \"^web\",\n    region: \"nyc3\",\n    mostRecent: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsnapshot = digitalocean.get_volume_snapshot(name_regex=\"^web\",\n    region=\"nyc3\",\n    most_recent=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var snapshot = DigitalOcean.GetVolumeSnapshot.Invoke(new()\n    {\n        NameRegex = \"^web\",\n        Region = \"nyc3\",\n        MostRecent = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupVolumeSnapshot(ctx, \u0026digitalocean.LookupVolumeSnapshotArgs{\n\t\t\tNameRegex:  pulumi.StringRef(\"^web\"),\n\t\t\tRegion:     pulumi.StringRef(\"nyc3\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVolumeSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var snapshot = DigitaloceanFunctions.getVolumeSnapshot(GetVolumeSnapshotArgs.builder()\n            .nameRegex(\"^web\")\n            .region(\"nyc3\")\n            .mostRecent(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  snapshot:\n    fn::invoke:\n      function: digitalocean:getVolumeSnapshot\n      arguments:\n        nameRegex: ^web\n        region: nyc3\n        mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a volume snapshot to create a new volume based on it:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst snapshot = digitalocean.getVolumeSnapshot({\n    nameRegex: \"^web\",\n    region: \"nyc3\",\n    mostRecent: true,\n});\nconst foobar = new digitalocean.Volume(\"foobar\", {\n    region: digitalocean.Region.NYC3,\n    name: \"baz\",\n    size: 100,\n    snapshotId: snapshot.then(snapshot =\u003e snapshot.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsnapshot = digitalocean.get_volume_snapshot(name_regex=\"^web\",\n    region=\"nyc3\",\n    most_recent=True)\nfoobar = digitalocean.Volume(\"foobar\",\n    region=digitalocean.Region.NYC3,\n    name=\"baz\",\n    size=100,\n    snapshot_id=snapshot.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var snapshot = DigitalOcean.GetVolumeSnapshot.Invoke(new()\n    {\n        NameRegex = \"^web\",\n        Region = \"nyc3\",\n        MostRecent = true,\n    });\n\n    var foobar = new DigitalOcean.Volume(\"foobar\", new()\n    {\n        Region = DigitalOcean.Region.NYC3,\n        Name = \"baz\",\n        Size = 100,\n        SnapshotId = snapshot.Apply(getVolumeSnapshotResult =\u003e getVolumeSnapshotResult.Id),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsnapshot, err := digitalocean.LookupVolumeSnapshot(ctx, \u0026digitalocean.LookupVolumeSnapshotArgs{\n\t\t\tNameRegex:  pulumi.StringRef(\"^web\"),\n\t\t\tRegion:     pulumi.StringRef(\"nyc3\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewVolume(ctx, \"foobar\", \u0026digitalocean.VolumeArgs{\n\t\t\tRegion:     pulumi.String(digitalocean.RegionNYC3),\n\t\t\tName:       pulumi.String(\"baz\"),\n\t\t\tSize:       pulumi.Int(100),\n\t\t\tSnapshotId: pulumi.String(snapshot.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVolumeSnapshotArgs;\nimport com.pulumi.digitalocean.Volume;\nimport com.pulumi.digitalocean.VolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var snapshot = DigitaloceanFunctions.getVolumeSnapshot(GetVolumeSnapshotArgs.builder()\n            .nameRegex(\"^web\")\n            .region(\"nyc3\")\n            .mostRecent(true)\n            .build());\n\n        var foobar = new Volume(\"foobar\", VolumeArgs.builder()\n            .region(\"nyc3\")\n            .name(\"baz\")\n            .size(100)\n            .snapshotId(snapshot.applyValue(getVolumeSnapshotResult -\u003e getVolumeSnapshotResult.id()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:Volume\n    properties:\n      region: nyc3\n      name: baz\n      size: 100\n      snapshotId: ${snapshot.id}\nvariables:\n  snapshot:\n    fn::invoke:\n      function: digitalocean:getVolumeSnapshot\n      arguments:\n        nameRegex: ^web\n        region: nyc3\n        mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getVolumeSnapshot.\n",
                 "properties": {
@@ -19572,7 +19572,7 @@
             }
         },
         "digitalocean:index/getVpc:getVpc": {
-            "description": "Retrieve information about a VPC for use in other resources.\n\nThis data source provides all of the VPC's properties as configured on your\nDigitalOcean account. This is useful if the VPC in question is not managed by\nthe provider or you need to utilize any of the VPC's data.\n\nVPCs may be looked up by `id` or `name`. Specifying a `region` will\nreturn that that region's default VPC.\n\n## Example Usage\n\n### VPC By Name\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpc({\n    name: \"example-network\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc(name=\"example-network\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpc.Invoke(new()\n    {\n        Name = \"example-network\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupVpc(ctx, \u0026digitalocean.LookupVpcArgs{\n\t\t\tName: pulumi.StringRef(\"example-network\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpc(GetVpcArgs.builder()\n            .name(\"example-network\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getVpc\n      Arguments:\n        name: example-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a VPC to assign a Droplet to it:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpc({\n    name: \"example-network\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    name: \"example-01\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC3,\n    vpcUuid: example.then(example =\u003e example.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc(name=\"example-network\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    name=\"example-01\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC3,\n    vpc_uuid=example.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpc.Invoke(new()\n    {\n        Name = \"example-network\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Name = \"example-01\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n        VpcUuid = example.Apply(getVpcResult =\u003e getVpcResult.Id),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupVpc(ctx, \u0026digitalocean.LookupVpcArgs{\n\t\t\tName: pulumi.StringRef(\"example-network\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tName:    pulumi.String(\"example-01\"),\n\t\t\tSize:    pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:   pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionNYC3),\n\t\t\tVpcUuid: pulumi.String(example.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpc(GetVpcArgs.builder()\n            .name(\"example-network\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .name(\"example-01\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc3\")\n            .vpcUuid(example.applyValue(getVpcResult -\u003e getVpcResult.id()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      name: example-01\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc3\n      vpcUuid: ${example.id}\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getVpc\n      Arguments:\n        name: example-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "Retrieve information about a VPC for use in other resources.\n\nThis data source provides all of the VPC's properties as configured on your\nDigitalOcean account. This is useful if the VPC in question is not managed by\nthe provider or you need to utilize any of the VPC's data.\n\nVPCs may be looked up by `id` or `name`. Specifying a `region` will\nreturn that that region's default VPC.\n\n## Example Usage\n\n### VPC By Name\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpc({\n    name: \"example-network\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc(name=\"example-network\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpc.Invoke(new()\n    {\n        Name = \"example-network\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupVpc(ctx, \u0026digitalocean.LookupVpcArgs{\n\t\t\tName: pulumi.StringRef(\"example-network\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpc(GetVpcArgs.builder()\n            .name(\"example-network\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getVpc\n      arguments:\n        name: example-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a VPC to assign a Droplet to it:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpc({\n    name: \"example-network\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    name: \"example-01\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC3,\n    vpcUuid: example.then(example =\u003e example.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc(name=\"example-network\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    name=\"example-01\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC3,\n    vpc_uuid=example.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpc.Invoke(new()\n    {\n        Name = \"example-network\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Name = \"example-01\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n        VpcUuid = example.Apply(getVpcResult =\u003e getVpcResult.Id),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupVpc(ctx, \u0026digitalocean.LookupVpcArgs{\n\t\t\tName: pulumi.StringRef(\"example-network\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tName:    pulumi.String(\"example-01\"),\n\t\t\tSize:    pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:   pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionNYC3),\n\t\t\tVpcUuid: pulumi.String(example.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpc(GetVpcArgs.builder()\n            .name(\"example-network\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .name(\"example-01\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc3\")\n            .vpcUuid(example.applyValue(getVpcResult -\u003e getVpcResult.id()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      name: example-01\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc3\n      vpcUuid: ${example.id}\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getVpc\n      arguments:\n        name: example-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getVpc.\n",
                 "properties": {
@@ -19641,7 +19641,7 @@
             }
         },
         "digitalocean:index/getVpcPeering:getVpcPeering": {
-            "description": "## Example Usage\n\n### VPC Peering By Id\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpcPeering({\n    id: \"example-id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc_peering(id=\"example-id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpcPeering.Invoke(new()\n    {\n        Id = \"example-id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupVpcPeering(ctx, \u0026digitalocean.LookupVpcPeeringArgs{\n\t\t\tId: pulumi.StringRef(\"example-id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpcPeering(GetVpcPeeringArgs.builder()\n            .id(\"example-id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getVpcPeering\n      Arguments:\n        id: example-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a VPC Peering in other resources:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpcPeering({\n    id: \"example-id\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    name: \"example-01\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC3,\n    vpcUuid: example.then(example =\u003e example.vpcIds?.[0]),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc_peering(id=\"example-id\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    name=\"example-01\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC3,\n    vpc_uuid=example.vpc_ids[0])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpcPeering.Invoke(new()\n    {\n        Id = \"example-id\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Name = \"example-01\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n        VpcUuid = example.Apply(getVpcPeeringResult =\u003e getVpcPeeringResult.VpcIds[0]),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupVpcPeering(ctx, \u0026digitalocean.LookupVpcPeeringArgs{\n\t\t\tId: pulumi.StringRef(\"example-id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tName:    pulumi.String(\"example-01\"),\n\t\t\tSize:    pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:   pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionNYC3),\n\t\t\tVpcUuid: pulumi.String(example.VpcIds[0]),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcPeeringArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpcPeering(GetVpcPeeringArgs.builder()\n            .id(\"example-id\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .name(\"example-01\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc3\")\n            .vpcUuid(example.applyValue(getVpcPeeringResult -\u003e getVpcPeeringResult.vpcIds()[0]))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      name: example-01\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc3\n      vpcUuid: ${example.vpcIds[0]}\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getVpcPeering\n      Arguments:\n        id: example-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### VPC Peering By Name\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpcPeering({\n    name: \"example-peering\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc_peering(name=\"example-peering\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpcPeering.Invoke(new()\n    {\n        Name = \"example-peering\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupVpcPeering(ctx, \u0026digitalocean.LookupVpcPeeringArgs{\n\t\t\tName: pulumi.StringRef(\"example-peering\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpcPeering(GetVpcPeeringArgs.builder()\n            .name(\"example-peering\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getVpcPeering\n      Arguments:\n        name: example-peering\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a VPC Peering in other resources:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpcPeering({\n    name: \"example-peering\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    name: \"example-01\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC3,\n    vpcUuid: example.then(example =\u003e example.vpcIds?.[0]),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc_peering(name=\"example-peering\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    name=\"example-01\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC3,\n    vpc_uuid=example.vpc_ids[0])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpcPeering.Invoke(new()\n    {\n        Name = \"example-peering\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Name = \"example-01\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n        VpcUuid = example.Apply(getVpcPeeringResult =\u003e getVpcPeeringResult.VpcIds[0]),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupVpcPeering(ctx, \u0026digitalocean.LookupVpcPeeringArgs{\n\t\t\tName: pulumi.StringRef(\"example-peering\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tName:    pulumi.String(\"example-01\"),\n\t\t\tSize:    pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:   pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionNYC3),\n\t\t\tVpcUuid: pulumi.String(example.VpcIds[0]),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcPeeringArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpcPeering(GetVpcPeeringArgs.builder()\n            .name(\"example-peering\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .name(\"example-01\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc3\")\n            .vpcUuid(example.applyValue(getVpcPeeringResult -\u003e getVpcPeeringResult.vpcIds()[0]))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      name: example-01\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc3\n      vpcUuid: ${example.vpcIds[0]}\nvariables:\n  example:\n    fn::invoke:\n      Function: digitalocean:getVpcPeering\n      Arguments:\n        name: example-peering\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+            "description": "## Example Usage\n\n### VPC Peering By Id\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpcPeering({\n    id: \"example-id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc_peering(id=\"example-id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpcPeering.Invoke(new()\n    {\n        Id = \"example-id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupVpcPeering(ctx, \u0026digitalocean.LookupVpcPeeringArgs{\n\t\t\tId: pulumi.StringRef(\"example-id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpcPeering(GetVpcPeeringArgs.builder()\n            .id(\"example-id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getVpcPeering\n      arguments:\n        id: example-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a VPC Peering in other resources:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpcPeering({\n    id: \"example-id\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    name: \"example-01\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC3,\n    vpcUuid: example.then(example =\u003e example.vpcIds?.[0]),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc_peering(id=\"example-id\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    name=\"example-01\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC3,\n    vpc_uuid=example.vpc_ids[0])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpcPeering.Invoke(new()\n    {\n        Id = \"example-id\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Name = \"example-01\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n        VpcUuid = example.Apply(getVpcPeeringResult =\u003e getVpcPeeringResult.VpcIds[0]),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupVpcPeering(ctx, \u0026digitalocean.LookupVpcPeeringArgs{\n\t\t\tId: pulumi.StringRef(\"example-id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tName:    pulumi.String(\"example-01\"),\n\t\t\tSize:    pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:   pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionNYC3),\n\t\t\tVpcUuid: pulumi.String(example.VpcIds[0]),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcPeeringArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpcPeering(GetVpcPeeringArgs.builder()\n            .id(\"example-id\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .name(\"example-01\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc3\")\n            .vpcUuid(example.applyValue(getVpcPeeringResult -\u003e getVpcPeeringResult.vpcIds()[0]))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      name: example-01\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc3\n      vpcUuid: ${example.vpcIds[0]}\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getVpcPeering\n      arguments:\n        id: example-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### VPC Peering By Name\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpcPeering({\n    name: \"example-peering\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc_peering(name=\"example-peering\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpcPeering.Invoke(new()\n    {\n        Name = \"example-peering\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupVpcPeering(ctx, \u0026digitalocean.LookupVpcPeeringArgs{\n\t\t\tName: pulumi.StringRef(\"example-peering\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpcPeering(GetVpcPeeringArgs.builder()\n            .name(\"example-peering\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getVpcPeering\n      arguments:\n        name: example-peering\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a VPC Peering in other resources:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpcPeering({\n    name: \"example-peering\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    name: \"example-01\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC3,\n    vpcUuid: example.then(example =\u003e example.vpcIds?.[0]),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc_peering(name=\"example-peering\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    name=\"example-01\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC3,\n    vpc_uuid=example.vpc_ids[0])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpcPeering.Invoke(new()\n    {\n        Name = \"example-peering\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Name = \"example-01\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n        VpcUuid = example.Apply(getVpcPeeringResult =\u003e getVpcPeeringResult.VpcIds[0]),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupVpcPeering(ctx, \u0026digitalocean.LookupVpcPeeringArgs{\n\t\t\tName: pulumi.StringRef(\"example-peering\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tName:    pulumi.String(\"example-01\"),\n\t\t\tSize:    pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:   pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionNYC3),\n\t\t\tVpcUuid: pulumi.String(example.VpcIds[0]),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcPeeringArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpcPeering(GetVpcPeeringArgs.builder()\n            .name(\"example-peering\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .name(\"example-01\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc3\")\n            .vpcUuid(example.applyValue(getVpcPeeringResult -\u003e getVpcPeeringResult.vpcIds()[0]))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      name: example-01\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc3\n      vpcUuid: ${example.vpcIds[0]}\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getVpcPeering\n      arguments:\n        name: example-peering\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
             "inputs": {
                 "description": "A collection of arguments for invoking getVpcPeering.\n",
                 "properties": {
diff --git a/provider/go.mod b/provider/go.mod
index 06c74893..869a7755 100644
--- a/provider/go.mod
+++ b/provider/go.mod
@@ -7,9 +7,9 @@ toolchain go1.22.7
 require (
 	github.com/digitalocean/terraform-provider-digitalocean v0.0.0
 	github.com/pulumi/providertest v0.1.3
-	github.com/pulumi/pulumi-terraform-bridge/v3 v3.96.0
-	github.com/pulumi/pulumi/pkg/v3 v3.140.0
-	github.com/pulumi/pulumi/sdk/v3 v3.140.0
+	github.com/pulumi/pulumi-terraform-bridge/v3 v3.96.1-0.20241209164832-5ede56db7a89
+	github.com/pulumi/pulumi/pkg/v3 v3.142.0
+	github.com/pulumi/pulumi/sdk/v3 v3.142.0
 	github.com/stretchr/testify v1.9.0
 )
 
@@ -186,8 +186,8 @@ require (
 	github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect
 	github.com/pulumi/esc v0.10.0 // indirect
 	github.com/pulumi/inflector v0.1.1 // indirect
-	github.com/pulumi/pulumi-java/pkg v0.17.0 // indirect
-	github.com/pulumi/pulumi-yaml v1.11.2 // indirect
+	github.com/pulumi/pulumi-java/pkg v0.18.0 // indirect
+	github.com/pulumi/pulumi-yaml v1.12.0 // indirect
 	github.com/pulumi/schema-tools v0.1.2 // indirect
 	github.com/pulumi/terraform-diff-reader v0.0.2 // indirect
 	github.com/rivo/uniseg v0.4.4 // indirect
diff --git a/provider/go.sum b/provider/go.sum
index 88859bae..0a1e981e 100644
--- a/provider/go.sum
+++ b/provider/go.sum
@@ -1924,16 +1924,16 @@ github.com/pulumi/inflector v0.1.1 h1:dvlxlWtXwOJTUUtcYDvwnl6Mpg33prhK+7mzeF+Sob
 github.com/pulumi/inflector v0.1.1/go.mod h1:HUFCjcPTz96YtTuUlwG3i3EZG4WlniBvR9bd+iJxCUY=
 github.com/pulumi/providertest v0.1.3 h1:GpNKRy/haNjRHiUA9bi4diU4Op2zf3axYXbga5AepHg=
 github.com/pulumi/providertest v0.1.3/go.mod h1:GcsqEGgSngwaNOD+kICJPIUQlnA911fGBU8HDlJvVL0=
-github.com/pulumi/pulumi-java/pkg v0.17.0 h1:KmaVLrVmlkzShOfaJNJDlckorbFm8dM/C7L4hj6LX8U=
-github.com/pulumi/pulumi-java/pkg v0.17.0/go.mod h1:ji4U4H7t81X4aaE88D9+z5CmKH/QoLwQi9N1iGl+2KQ=
-github.com/pulumi/pulumi-terraform-bridge/v3 v3.96.0 h1:uJB3tM1j+9SKeXLCAx3DBVHsYk4ddXNrVoiqpgXal2Q=
-github.com/pulumi/pulumi-terraform-bridge/v3 v3.96.0/go.mod h1:WnOTAfdtm5+kW3rIU0rLhxFSEHtJIMf19FdOU6NFXG0=
-github.com/pulumi/pulumi-yaml v1.11.2 h1:MU7TTNbruGCSgNHhaBygjIbLWm3WSbd1q98GpMIgQzE=
-github.com/pulumi/pulumi-yaml v1.11.2/go.mod h1:RdXRBupRGGAD1kbYNG1V1h6pyFnXisvQsl0AANvVjGI=
-github.com/pulumi/pulumi/pkg/v3 v3.140.0 h1:/bvHa19HY/6qHWvuAOVII8qr72MDGGczBWlPYlPo3j0=
-github.com/pulumi/pulumi/pkg/v3 v3.140.0/go.mod h1:rcTtSyisd7BzZTugNk/s9zlYgX9S0S10+pha3Tko6yM=
-github.com/pulumi/pulumi/sdk/v3 v3.140.0 h1:+Z/RBvdYg7tBNkBwk4p/FzlV7niBT3TbLAICq/Y0LDU=
-github.com/pulumi/pulumi/sdk/v3 v3.140.0/go.mod h1:PvKsX88co8XuwuPdzolMvew5lZV+4JmZfkeSjj7A6dI=
+github.com/pulumi/pulumi-java/pkg v0.18.0 h1:3PApc5YegH69n6oubB63mqI97pF+oQywWr7ii4082Mw=
+github.com/pulumi/pulumi-java/pkg v0.18.0/go.mod h1:YKYYFEb3Jvzf/dDJo0xOeEkIfBAMkkkdhXulauvEjmc=
+github.com/pulumi/pulumi-terraform-bridge/v3 v3.96.1-0.20241209164832-5ede56db7a89 h1:iOSKLsT/Qr5phlJve9cs0OjenIuCQbFxctLQ4aRyqls=
+github.com/pulumi/pulumi-terraform-bridge/v3 v3.96.1-0.20241209164832-5ede56db7a89/go.mod h1:B/Auryr+yVUkLOMzgpFe7HLwKAtXc6YJwpAXfNGyLPk=
+github.com/pulumi/pulumi-yaml v1.12.0 h1:ThJP+EBqeJyCnS6w6/PwcEFOT5o112qv0lObhefmFCk=
+github.com/pulumi/pulumi-yaml v1.12.0/go.mod h1:EhZd1XDfuLa15O51qVVE16U6r8ldK9mLIBclqWCX27Y=
+github.com/pulumi/pulumi/pkg/v3 v3.142.0 h1:UE8TFyXrlxvPrATpd3Kl3En34KrFIFWOxxNAodywPNU=
+github.com/pulumi/pulumi/pkg/v3 v3.142.0/go.mod h1:3k6WwRIT7veiDnk3Yo2NtqEYX+4dgLCrMIFvEOnjQqI=
+github.com/pulumi/pulumi/sdk/v3 v3.142.0 h1:SmcVddGuvwAh3g3XUVQQ5gVRQUKH1yZ6iETpDNHIHlw=
+github.com/pulumi/pulumi/sdk/v3 v3.142.0/go.mod h1:PvKsX88co8XuwuPdzolMvew5lZV+4JmZfkeSjj7A6dI=
 github.com/pulumi/schema-tools v0.1.2 h1:Fd9xvUjgck4NA+7/jSk7InqCUT4Kj940+EcnbQKpfZo=
 github.com/pulumi/schema-tools v0.1.2/go.mod h1:62lgj52Tzq11eqWTIaKd+EVyYAu5dEcDJxMhTjvMO/k=
 github.com/pulumi/terraform-diff-reader v0.0.2 h1:kTE4nEXU3/SYXESvAIem+wyHMI3abqkI3OhJ0G04LLI=
diff --git a/sdk/go.mod b/sdk/go.mod
index 7b3f8a22..4495cdf3 100644
--- a/sdk/go.mod
+++ b/sdk/go.mod
@@ -4,7 +4,7 @@ go 1.21
 
 require (
 	github.com/blang/semver v3.5.1+incompatible
-	github.com/pulumi/pulumi/sdk/v3 v3.140.0
+	github.com/pulumi/pulumi/sdk/v3 v3.142.0
 )
 
 require (
diff --git a/sdk/go.sum b/sdk/go.sum
index 5d5453c0..54cd0acd 100644
--- a/sdk/go.sum
+++ b/sdk/go.sum
@@ -150,8 +150,8 @@ github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435
 github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE=
 github.com/pulumi/esc v0.9.1 h1:HH5eEv8sgyxSpY5a8yePyqFXzA8cvBvapfH8457+mIs=
 github.com/pulumi/esc v0.9.1/go.mod h1:oEJ6bOsjYlQUpjf70GiX+CXn3VBmpwFDxUTlmtUN84c=
-github.com/pulumi/pulumi/sdk/v3 v3.140.0 h1:+Z/RBvdYg7tBNkBwk4p/FzlV7niBT3TbLAICq/Y0LDU=
-github.com/pulumi/pulumi/sdk/v3 v3.140.0/go.mod h1:PvKsX88co8XuwuPdzolMvew5lZV+4JmZfkeSjj7A6dI=
+github.com/pulumi/pulumi/sdk/v3 v3.142.0 h1:SmcVddGuvwAh3g3XUVQQ5gVRQUKH1yZ6iETpDNHIHlw=
+github.com/pulumi/pulumi/sdk/v3 v3.142.0/go.mod h1:PvKsX88co8XuwuPdzolMvew5lZV+4JmZfkeSjj7A6dI=
 github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
 github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
 github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
diff --git a/sdk/nodejs/getAccount.ts b/sdk/nodejs/getAccount.ts
index 26de6acd..a4a2b5b5 100644
--- a/sdk/nodejs/getAccount.ts
+++ b/sdk/nodejs/getAccount.ts
@@ -75,7 +75,7 @@ export interface GetAccountResult {
  * const example = digitalocean.getAccount({});
  * ```
  */
-export function getAccountOutput(opts?: pulumi.InvokeOptions): pulumi.Output<GetAccountResult> {
+export function getAccountOutput(opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetAccountResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getAccount:getAccount", {
     }, opts);
diff --git a/sdk/nodejs/getApp.ts b/sdk/nodejs/getApp.ts
index 729955c8..9240c6e8 100644
--- a/sdk/nodejs/getApp.ts
+++ b/sdk/nodejs/getApp.ts
@@ -113,7 +113,7 @@ export interface GetAppResult {
  * export const defaultIngress = example.then(example => example.defaultIngress);
  * ```
  */
-export function getAppOutput(args: GetAppOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetAppResult> {
+export function getAppOutput(args: GetAppOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetAppResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getApp:getApp", {
         "appId": args.appId,
diff --git a/sdk/nodejs/getCertificate.ts b/sdk/nodejs/getCertificate.ts
index 5f5538eb..e0f7b11e 100644
--- a/sdk/nodejs/getCertificate.ts
+++ b/sdk/nodejs/getCertificate.ts
@@ -97,7 +97,7 @@ export interface GetCertificateResult {
  * });
  * ```
  */
-export function getCertificateOutput(args: GetCertificateOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetCertificateResult> {
+export function getCertificateOutput(args: GetCertificateOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetCertificateResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getCertificate:getCertificate", {
         "name": args.name,
diff --git a/sdk/nodejs/getContainerRegistry.ts b/sdk/nodejs/getContainerRegistry.ts
index 38e7c751..c109ed59 100644
--- a/sdk/nodejs/getContainerRegistry.ts
+++ b/sdk/nodejs/getContainerRegistry.ts
@@ -104,7 +104,7 @@ export interface GetContainerRegistryResult {
  * });
  * ```
  */
-export function getContainerRegistryOutput(args: GetContainerRegistryOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetContainerRegistryResult> {
+export function getContainerRegistryOutput(args: GetContainerRegistryOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetContainerRegistryResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getContainerRegistry:getContainerRegistry", {
         "name": args.name,
diff --git a/sdk/nodejs/getDatabaseCa.ts b/sdk/nodejs/getDatabaseCa.ts
index 26681164..113a3a4e 100644
--- a/sdk/nodejs/getDatabaseCa.ts
+++ b/sdk/nodejs/getDatabaseCa.ts
@@ -65,7 +65,7 @@ export interface GetDatabaseCaResult {
  * export const caOutput = ca.then(ca => ca.certificate);
  * ```
  */
-export function getDatabaseCaOutput(args: GetDatabaseCaOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetDatabaseCaResult> {
+export function getDatabaseCaOutput(args: GetDatabaseCaOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetDatabaseCaResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getDatabaseCa:getDatabaseCa", {
         "clusterId": args.clusterId,
diff --git a/sdk/nodejs/getDatabaseCluster.ts b/sdk/nodejs/getDatabaseCluster.ts
index c452d5b4..cd1ef98c 100644
--- a/sdk/nodejs/getDatabaseCluster.ts
+++ b/sdk/nodejs/getDatabaseCluster.ts
@@ -160,7 +160,7 @@ export interface GetDatabaseClusterResult {
  * export const databaseOutput = example.then(example => example.uri);
  * ```
  */
-export function getDatabaseClusterOutput(args: GetDatabaseClusterOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetDatabaseClusterResult> {
+export function getDatabaseClusterOutput(args: GetDatabaseClusterOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetDatabaseClusterResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getDatabaseCluster:getDatabaseCluster", {
         "name": args.name,
diff --git a/sdk/nodejs/getDatabaseConnectionPool.ts b/sdk/nodejs/getDatabaseConnectionPool.ts
index b9e9a2a9..aafe1301 100644
--- a/sdk/nodejs/getDatabaseConnectionPool.ts
+++ b/sdk/nodejs/getDatabaseConnectionPool.ts
@@ -115,7 +115,7 @@ export interface GetDatabaseConnectionPoolResult {
  * export const connectionPoolUriOutput = read_only.then(read_only => read_only.uri);
  * ```
  */
-export function getDatabaseConnectionPoolOutput(args: GetDatabaseConnectionPoolOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetDatabaseConnectionPoolResult> {
+export function getDatabaseConnectionPoolOutput(args: GetDatabaseConnectionPoolOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetDatabaseConnectionPoolResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getDatabaseConnectionPool:getDatabaseConnectionPool", {
         "clusterId": args.clusterId,
diff --git a/sdk/nodejs/getDatabaseReplica.ts b/sdk/nodejs/getDatabaseReplica.ts
index f8cc06d1..8b839c97 100644
--- a/sdk/nodejs/getDatabaseReplica.ts
+++ b/sdk/nodejs/getDatabaseReplica.ts
@@ -123,7 +123,7 @@ export interface GetDatabaseReplicaResult {
  * export const replicaOutput = read_only.then(read_only => read_only.uri);
  * ```
  */
-export function getDatabaseReplicaOutput(args: GetDatabaseReplicaOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetDatabaseReplicaResult> {
+export function getDatabaseReplicaOutput(args: GetDatabaseReplicaOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetDatabaseReplicaResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getDatabaseReplica:getDatabaseReplica", {
         "clusterId": args.clusterId,
diff --git a/sdk/nodejs/getDatabaseUser.ts b/sdk/nodejs/getDatabaseUser.ts
index 8d92fa3e..2131057a 100644
--- a/sdk/nodejs/getDatabaseUser.ts
+++ b/sdk/nodejs/getDatabaseUser.ts
@@ -99,7 +99,7 @@ export interface GetDatabaseUserResult {
  * export const databaseUserPassword = example.then(example => example.password);
  * ```
  */
-export function getDatabaseUserOutput(args: GetDatabaseUserOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetDatabaseUserResult> {
+export function getDatabaseUserOutput(args: GetDatabaseUserOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetDatabaseUserResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getDatabaseUser:getDatabaseUser", {
         "clusterId": args.clusterId,
diff --git a/sdk/nodejs/getDomain.ts b/sdk/nodejs/getDomain.ts
index 1eccb19e..0fe93fe7 100644
--- a/sdk/nodejs/getDomain.ts
+++ b/sdk/nodejs/getDomain.ts
@@ -89,7 +89,7 @@ export interface GetDomainResult {
  * export const domainOutput = example.then(example => example.zoneFile);
  * ```
  */
-export function getDomainOutput(args: GetDomainOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetDomainResult> {
+export function getDomainOutput(args: GetDomainOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetDomainResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getDomain:getDomain", {
         "name": args.name,
diff --git a/sdk/nodejs/getDomains.ts b/sdk/nodejs/getDomains.ts
index ffee9953..5fe1c44d 100644
--- a/sdk/nodejs/getDomains.ts
+++ b/sdk/nodejs/getDomains.ts
@@ -103,7 +103,7 @@ export interface GetDomainsResult {
  * });
  * ```
  */
-export function getDomainsOutput(args?: GetDomainsOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetDomainsResult> {
+export function getDomainsOutput(args?: GetDomainsOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetDomainsResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getDomains:getDomains", {
diff --git a/sdk/nodejs/getDroplet.ts b/sdk/nodejs/getDroplet.ts
index 110b96c3..2c2b7479 100644
--- a/sdk/nodejs/getDroplet.ts
+++ b/sdk/nodejs/getDroplet.ts
@@ -230,7 +230,7 @@ export interface GetDropletResult {
  * });
  * ```
  */
-export function getDropletOutput(args?: GetDropletOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetDropletResult> {
+export function getDropletOutput(args?: GetDropletOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetDropletResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getDroplet:getDroplet", {
diff --git a/sdk/nodejs/getDropletSnapshot.ts b/sdk/nodejs/getDropletSnapshot.ts
index da75e92a..4a006a65 100644
--- a/sdk/nodejs/getDropletSnapshot.ts
+++ b/sdk/nodejs/getDropletSnapshot.ts
@@ -152,7 +152,7 @@ export interface GetDropletSnapshotResult {
  * });
  * ```
  */
-export function getDropletSnapshotOutput(args?: GetDropletSnapshotOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetDropletSnapshotResult> {
+export function getDropletSnapshotOutput(args?: GetDropletSnapshotOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetDropletSnapshotResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getDropletSnapshot:getDropletSnapshot", {
diff --git a/sdk/nodejs/getDroplets.ts b/sdk/nodejs/getDroplets.ts
index 39e799f7..1ddb65b2 100644
--- a/sdk/nodejs/getDroplets.ts
+++ b/sdk/nodejs/getDroplets.ts
@@ -163,7 +163,7 @@ export interface GetDropletsResult {
  * });
  * ```
  */
-export function getDropletsOutput(args?: GetDropletsOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetDropletsResult> {
+export function getDropletsOutput(args?: GetDropletsOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetDropletsResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getDroplets:getDroplets", {
diff --git a/sdk/nodejs/getFirewall.ts b/sdk/nodejs/getFirewall.ts
index 658d82d3..2e6d7831 100644
--- a/sdk/nodejs/getFirewall.ts
+++ b/sdk/nodejs/getFirewall.ts
@@ -116,7 +116,7 @@ export interface GetFirewallResult {
  * export const exampleFirewallName = example.then(example => example.name);
  * ```
  */
-export function getFirewallOutput(args: GetFirewallOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetFirewallResult> {
+export function getFirewallOutput(args: GetFirewallOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetFirewallResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getFirewall:getFirewall", {
         "dropletIds": args.dropletIds,
diff --git a/sdk/nodejs/getFloatingIp.ts b/sdk/nodejs/getFloatingIp.ts
index 5e91b294..4778cbff 100644
--- a/sdk/nodejs/getFloatingIp.ts
+++ b/sdk/nodejs/getFloatingIp.ts
@@ -95,7 +95,7 @@ export interface GetFloatingIpResult {
  * export const fipOutput = example.then(example => example.dropletId);
  * ```
  */
-export function getFloatingIpOutput(args: GetFloatingIpOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetFloatingIpResult> {
+export function getFloatingIpOutput(args: GetFloatingIpOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetFloatingIpResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getFloatingIp:getFloatingIp", {
         "ipAddress": args.ipAddress,
diff --git a/sdk/nodejs/getImage.ts b/sdk/nodejs/getImage.ts
index 89908f92..cded2c2f 100644
--- a/sdk/nodejs/getImage.ts
+++ b/sdk/nodejs/getImage.ts
@@ -202,7 +202,7 @@ export interface GetImageResult {
  * });
  * ```
  */
-export function getImageOutput(args?: GetImageOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetImageResult> {
+export function getImageOutput(args?: GetImageOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetImageResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getImage:getImage", {
diff --git a/sdk/nodejs/getImages.ts b/sdk/nodejs/getImages.ts
index 37c0645c..e923a0a0 100644
--- a/sdk/nodejs/getImages.ts
+++ b/sdk/nodejs/getImages.ts
@@ -153,7 +153,7 @@ export interface GetImagesResult {
  * });
  * ```
  */
-export function getImagesOutput(args?: GetImagesOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetImagesResult> {
+export function getImagesOutput(args?: GetImagesOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetImagesResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getImages:getImages", {
diff --git a/sdk/nodejs/getKubernetesCluster.ts b/sdk/nodejs/getKubernetesCluster.ts
index 9c05e733..773f0195 100644
--- a/sdk/nodejs/getKubernetesCluster.ts
+++ b/sdk/nodejs/getKubernetesCluster.ts
@@ -136,7 +136,7 @@ export interface GetKubernetesClusterResult {
  * });
  * ```
  */
-export function getKubernetesClusterOutput(args: GetKubernetesClusterOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetKubernetesClusterResult> {
+export function getKubernetesClusterOutput(args: GetKubernetesClusterOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetKubernetesClusterResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getKubernetesCluster:getKubernetesCluster", {
         "name": args.name,
diff --git a/sdk/nodejs/getKubernetesVersions.ts b/sdk/nodejs/getKubernetesVersions.ts
index 5874e913..98c87729 100644
--- a/sdk/nodejs/getKubernetesVersions.ts
+++ b/sdk/nodejs/getKubernetesVersions.ts
@@ -158,7 +158,7 @@ export interface GetKubernetesVersionsResult {
  * });
  * ```
  */
-export function getKubernetesVersionsOutput(args?: GetKubernetesVersionsOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetKubernetesVersionsResult> {
+export function getKubernetesVersionsOutput(args?: GetKubernetesVersionsOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetKubernetesVersionsResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getKubernetesVersions:getKubernetesVersions", {
diff --git a/sdk/nodejs/getLoadBalancer.ts b/sdk/nodejs/getLoadBalancer.ts
index 2fb11009..69a71917 100644
--- a/sdk/nodejs/getLoadBalancer.ts
+++ b/sdk/nodejs/getLoadBalancer.ts
@@ -131,7 +131,7 @@ export interface GetLoadBalancerResult {
  * });
  * ```
  */
-export function getLoadBalancerOutput(args?: GetLoadBalancerOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetLoadBalancerResult> {
+export function getLoadBalancerOutput(args?: GetLoadBalancerOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetLoadBalancerResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getLoadBalancer:getLoadBalancer", {
diff --git a/sdk/nodejs/getProject.ts b/sdk/nodejs/getProject.ts
index c8bdd97e..3b52707e 100644
--- a/sdk/nodejs/getProject.ts
+++ b/sdk/nodejs/getProject.ts
@@ -100,7 +100,7 @@ export interface GetProjectResult {
  * });
  * ```
  */
-export function getProjectOutput(args?: GetProjectOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetProjectResult> {
+export function getProjectOutput(args?: GetProjectOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetProjectResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getProject:getProject", {
diff --git a/sdk/nodejs/getProjects.ts b/sdk/nodejs/getProjects.ts
index 3b6c851d..767beff6 100644
--- a/sdk/nodejs/getProjects.ts
+++ b/sdk/nodejs/getProjects.ts
@@ -150,7 +150,7 @@ export interface GetProjectsResult {
  * });
  * ```
  */
-export function getProjectsOutput(args?: GetProjectsOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetProjectsResult> {
+export function getProjectsOutput(args?: GetProjectsOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetProjectsResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getProjects:getProjects", {
diff --git a/sdk/nodejs/getRecord.ts b/sdk/nodejs/getRecord.ts
index 8e5441f7..5568d731 100644
--- a/sdk/nodejs/getRecord.ts
+++ b/sdk/nodejs/getRecord.ts
@@ -117,7 +117,7 @@ export interface GetRecordResult {
  * export const recordTtl = example.then(example => example.ttl);
  * ```
  */
-export function getRecordOutput(args: GetRecordOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetRecordResult> {
+export function getRecordOutput(args: GetRecordOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetRecordResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getRecord:getRecord", {
         "domain": args.domain,
diff --git a/sdk/nodejs/getRecords.ts b/sdk/nodejs/getRecords.ts
index cc67c437..ad8c283b 100644
--- a/sdk/nodejs/getRecords.ts
+++ b/sdk/nodejs/getRecords.ts
@@ -104,7 +104,7 @@ export interface GetRecordsResult {
  * })).then(invoke => invoke.result);
  * ```
  */
-export function getRecordsOutput(args: GetRecordsOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetRecordsResult> {
+export function getRecordsOutput(args: GetRecordsOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetRecordsResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getRecords:getRecords", {
         "domain": args.domain,
diff --git a/sdk/nodejs/getRegion.ts b/sdk/nodejs/getRegion.ts
index b76851ad..f6f7275c 100644
--- a/sdk/nodejs/getRegion.ts
+++ b/sdk/nodejs/getRegion.ts
@@ -82,7 +82,7 @@ export interface GetRegionResult {
  * export const regionName = sfo2.then(sfo2 => sfo2.name);
  * ```
  */
-export function getRegionOutput(args: GetRegionOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetRegionResult> {
+export function getRegionOutput(args: GetRegionOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetRegionResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getRegion:getRegion", {
         "slug": args.slug,
diff --git a/sdk/nodejs/getRegions.ts b/sdk/nodejs/getRegions.ts
index 822b70b8..cfbecc84 100644
--- a/sdk/nodejs/getRegions.ts
+++ b/sdk/nodejs/getRegions.ts
@@ -145,7 +145,7 @@ export interface GetRegionsResult {
  * });
  * ```
  */
-export function getRegionsOutput(args?: GetRegionsOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetRegionsResult> {
+export function getRegionsOutput(args?: GetRegionsOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetRegionsResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getRegions:getRegions", {
diff --git a/sdk/nodejs/getReservedIp.ts b/sdk/nodejs/getReservedIp.ts
index 94e1660e..f5c9f1cd 100644
--- a/sdk/nodejs/getReservedIp.ts
+++ b/sdk/nodejs/getReservedIp.ts
@@ -77,7 +77,7 @@ export interface GetReservedIpResult {
  * export const fipOutput = example.then(example => example.dropletId);
  * ```
  */
-export function getReservedIpOutput(args: GetReservedIpOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetReservedIpResult> {
+export function getReservedIpOutput(args: GetReservedIpOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetReservedIpResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getReservedIp:getReservedIp", {
         "ipAddress": args.ipAddress,
diff --git a/sdk/nodejs/getSizes.ts b/sdk/nodejs/getSizes.ts
index 0d88d883..3f5d6e57 100644
--- a/sdk/nodejs/getSizes.ts
+++ b/sdk/nodejs/getSizes.ts
@@ -54,7 +54,7 @@ export interface GetSizesResult {
  * the ability to filter and sort the results. If no filters are specified, all sizes
  * will be returned.
  */
-export function getSizesOutput(args?: GetSizesOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetSizesResult> {
+export function getSizesOutput(args?: GetSizesOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetSizesResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getSizes:getSizes", {
diff --git a/sdk/nodejs/getSpacesBucket.ts b/sdk/nodejs/getSpacesBucket.ts
index 8755a683..7f0ae90b 100644
--- a/sdk/nodejs/getSpacesBucket.ts
+++ b/sdk/nodejs/getSpacesBucket.ts
@@ -93,7 +93,7 @@ export interface GetSpacesBucketResult {
  * export const bucketDomainName = example.then(example => example.bucketDomainName);
  * ```
  */
-export function getSpacesBucketOutput(args: GetSpacesBucketOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetSpacesBucketResult> {
+export function getSpacesBucketOutput(args: GetSpacesBucketOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetSpacesBucketResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getSpacesBucket:getSpacesBucket", {
         "name": args.name,
diff --git a/sdk/nodejs/getSpacesBucketObject.ts b/sdk/nodejs/getSpacesBucketObject.ts
index 9830e038..57f322a4 100644
--- a/sdk/nodejs/getSpacesBucketObject.ts
+++ b/sdk/nodejs/getSpacesBucketObject.ts
@@ -169,7 +169,7 @@ export interface GetSpacesBucketObjectResult {
  * });
  * ```
  */
-export function getSpacesBucketObjectOutput(args: GetSpacesBucketObjectOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetSpacesBucketObjectResult> {
+export function getSpacesBucketObjectOutput(args: GetSpacesBucketObjectOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetSpacesBucketObjectResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getSpacesBucketObject:getSpacesBucketObject", {
         "bucket": args.bucket,
diff --git a/sdk/nodejs/getSpacesBucketObjects.ts b/sdk/nodejs/getSpacesBucketObjects.ts
index 03e54f56..c071802e 100644
--- a/sdk/nodejs/getSpacesBucketObjects.ts
+++ b/sdk/nodejs/getSpacesBucketObjects.ts
@@ -83,7 +83,7 @@ export interface GetSpacesBucketObjectsResult {
  *
  * The bucket-objects data source returns keys (i.e., file names) and other metadata about objects in a Spaces bucket.
  */
-export function getSpacesBucketObjectsOutput(args: GetSpacesBucketObjectsOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetSpacesBucketObjectsResult> {
+export function getSpacesBucketObjectsOutput(args: GetSpacesBucketObjectsOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetSpacesBucketObjectsResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getSpacesBucketObjects:getSpacesBucketObjects", {
         "bucket": args.bucket,
diff --git a/sdk/nodejs/getSpacesBuckets.ts b/sdk/nodejs/getSpacesBuckets.ts
index 1c01bd52..f4ac6391 100644
--- a/sdk/nodejs/getSpacesBuckets.ts
+++ b/sdk/nodejs/getSpacesBuckets.ts
@@ -131,7 +131,7 @@ export interface GetSpacesBucketsResult {
  * });
  * ```
  */
-export function getSpacesBucketsOutput(args?: GetSpacesBucketsOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetSpacesBucketsResult> {
+export function getSpacesBucketsOutput(args?: GetSpacesBucketsOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetSpacesBucketsResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getSpacesBuckets:getSpacesBuckets", {
diff --git a/sdk/nodejs/getSshKey.ts b/sdk/nodejs/getSshKey.ts
index db7db56f..fdaa7734 100644
--- a/sdk/nodejs/getSshKey.ts
+++ b/sdk/nodejs/getSshKey.ts
@@ -95,7 +95,7 @@ export interface GetSshKeyResult {
  * });
  * ```
  */
-export function getSshKeyOutput(args: GetSshKeyOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetSshKeyResult> {
+export function getSshKeyOutput(args: GetSshKeyOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetSshKeyResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getSshKey:getSshKey", {
         "name": args.name,
diff --git a/sdk/nodejs/getSshKeys.ts b/sdk/nodejs/getSshKeys.ts
index be5b52b7..6c5d64fc 100644
--- a/sdk/nodejs/getSshKeys.ts
+++ b/sdk/nodejs/getSshKeys.ts
@@ -131,7 +131,7 @@ export interface GetSshKeysResult {
  * });
  * ```
  */
-export function getSshKeysOutput(args?: GetSshKeysOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetSshKeysResult> {
+export function getSshKeysOutput(args?: GetSshKeysOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetSshKeysResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getSshKeys:getSshKeys", {
diff --git a/sdk/nodejs/getTag.ts b/sdk/nodejs/getTag.ts
index e65df2b3..3db6d931 100644
--- a/sdk/nodejs/getTag.ts
+++ b/sdk/nodejs/getTag.ts
@@ -109,7 +109,7 @@ export interface GetTagResult {
  * });
  * ```
  */
-export function getTagOutput(args: GetTagOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetTagResult> {
+export function getTagOutput(args: GetTagOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetTagResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getTag:getTag", {
         "name": args.name,
diff --git a/sdk/nodejs/getTags.ts b/sdk/nodejs/getTags.ts
index e7dc9349..436ac7eb 100644
--- a/sdk/nodejs/getTags.ts
+++ b/sdk/nodejs/getTags.ts
@@ -84,7 +84,7 @@ export interface GetTagsResult {
  * export const sortedTags = list.then(list => list.tags);
  * ```
  */
-export function getTagsOutput(args?: GetTagsOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetTagsResult> {
+export function getTagsOutput(args?: GetTagsOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetTagsResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getTags:getTags", {
diff --git a/sdk/nodejs/getVolume.ts b/sdk/nodejs/getVolume.ts
index a044bdeb..07767cdf 100644
--- a/sdk/nodejs/getVolume.ts
+++ b/sdk/nodejs/getVolume.ts
@@ -158,7 +158,7 @@ export interface GetVolumeResult {
  * });
  * ```
  */
-export function getVolumeOutput(args: GetVolumeOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetVolumeResult> {
+export function getVolumeOutput(args: GetVolumeOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetVolumeResult> {
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getVolume:getVolume", {
         "description": args.description,
diff --git a/sdk/nodejs/getVolumeSnapshot.ts b/sdk/nodejs/getVolumeSnapshot.ts
index 0fb05a27..7798bde6 100644
--- a/sdk/nodejs/getVolumeSnapshot.ts
+++ b/sdk/nodejs/getVolumeSnapshot.ts
@@ -156,7 +156,7 @@ export interface GetVolumeSnapshotResult {
  * });
  * ```
  */
-export function getVolumeSnapshotOutput(args?: GetVolumeSnapshotOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetVolumeSnapshotResult> {
+export function getVolumeSnapshotOutput(args?: GetVolumeSnapshotOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetVolumeSnapshotResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getVolumeSnapshot:getVolumeSnapshot", {
diff --git a/sdk/nodejs/getVpc.ts b/sdk/nodejs/getVpc.ts
index b7f0a916..ecedde8b 100644
--- a/sdk/nodejs/getVpc.ts
+++ b/sdk/nodejs/getVpc.ts
@@ -151,7 +151,7 @@ export interface GetVpcResult {
  * });
  * ```
  */
-export function getVpcOutput(args?: GetVpcOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetVpcResult> {
+export function getVpcOutput(args?: GetVpcOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetVpcResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getVpc:getVpc", {
diff --git a/sdk/nodejs/getVpcPeering.ts b/sdk/nodejs/getVpcPeering.ts
index 0effed4d..76eddc1f 100644
--- a/sdk/nodejs/getVpcPeering.ts
+++ b/sdk/nodejs/getVpcPeering.ts
@@ -179,7 +179,7 @@ export interface GetVpcPeeringResult {
  * });
  * ```
  */
-export function getVpcPeeringOutput(args?: GetVpcPeeringOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetVpcPeeringResult> {
+export function getVpcPeeringOutput(args?: GetVpcPeeringOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetVpcPeeringResult> {
     args = args || {};
     opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
     return pulumi.runtime.invokeOutput("digitalocean:index/getVpcPeering:getVpcPeering", {
diff --git a/sdk/python/pulumi_digitalocean/get_account.py b/sdk/python/pulumi_digitalocean/get_account.py
index 62a5f0a8..1c196d5c 100644
--- a/sdk/python/pulumi_digitalocean/get_account.py
+++ b/sdk/python/pulumi_digitalocean/get_account.py
@@ -161,7 +161,7 @@ def get_account(opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetAcco
         status=pulumi.get(__ret__, 'status'),
         status_message=pulumi.get(__ret__, 'status_message'),
         uuid=pulumi.get(__ret__, 'uuid'))
-def get_account_output(opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetAccountResult]:
+def get_account_output(opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetAccountResult]:
     """
     Get information on your DigitalOcean account.
 
@@ -177,7 +177,7 @@ def get_account_output(opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Ou
     ```
     """
     __args__ = dict()
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getAccount:getAccount', __args__, opts=opts, typ=GetAccountResult)
     return __ret__.apply(lambda __response__: GetAccountResult(
         droplet_limit=pulumi.get(__response__, 'droplet_limit'),
diff --git a/sdk/python/pulumi_digitalocean/get_app.py b/sdk/python/pulumi_digitalocean/get_app.py
index 73c17b82..ee87da13 100644
--- a/sdk/python/pulumi_digitalocean/get_app.py
+++ b/sdk/python/pulumi_digitalocean/get_app.py
@@ -223,7 +223,7 @@ def get_app(app_id: Optional[str] = None,
         urn=pulumi.get(__ret__, 'urn'))
 def get_app_output(app_id: Optional[pulumi.Input[str]] = None,
                    dedicated_ips: Optional[pulumi.Input[Optional[Sequence[Union['GetAppDedicatedIpArgs', 'GetAppDedicatedIpArgsDict']]]]] = None,
-                   opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetAppResult]:
+                   opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetAppResult]:
     """
     Get information on a DigitalOcean App.
 
@@ -246,7 +246,7 @@ def get_app_output(app_id: Optional[pulumi.Input[str]] = None,
     __args__ = dict()
     __args__['appId'] = app_id
     __args__['dedicatedIps'] = dedicated_ips
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getApp:getApp', __args__, opts=opts, typ=GetAppResult)
     return __ret__.apply(lambda __response__: GetAppResult(
         active_deployment_id=pulumi.get(__response__, 'active_deployment_id'),
diff --git a/sdk/python/pulumi_digitalocean/get_certificate.py b/sdk/python/pulumi_digitalocean/get_certificate.py
index d9b9aedb..6ad0f68b 100644
--- a/sdk/python/pulumi_digitalocean/get_certificate.py
+++ b/sdk/python/pulumi_digitalocean/get_certificate.py
@@ -169,7 +169,7 @@ def get_certificate(name: Optional[str] = None,
         type=pulumi.get(__ret__, 'type'),
         uuid=pulumi.get(__ret__, 'uuid'))
 def get_certificate_output(name: Optional[pulumi.Input[str]] = None,
-                           opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetCertificateResult]:
+                           opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetCertificateResult]:
     """
     Get information on a certificate. This data source provides the name, type, state,
     domains, expiry date, and the sha1 fingerprint as configured on your DigitalOcean account.
@@ -194,7 +194,7 @@ def get_certificate_output(name: Optional[pulumi.Input[str]] = None,
     """
     __args__ = dict()
     __args__['name'] = name
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getCertificate:getCertificate', __args__, opts=opts, typ=GetCertificateResult)
     return __ret__.apply(lambda __response__: GetCertificateResult(
         domains=pulumi.get(__response__, 'domains'),
diff --git a/sdk/python/pulumi_digitalocean/get_container_registry.py b/sdk/python/pulumi_digitalocean/get_container_registry.py
index 7fffe635..64909625 100644
--- a/sdk/python/pulumi_digitalocean/get_container_registry.py
+++ b/sdk/python/pulumi_digitalocean/get_container_registry.py
@@ -174,7 +174,7 @@ def get_container_registry(name: Optional[str] = None,
         storage_usage_bytes=pulumi.get(__ret__, 'storage_usage_bytes'),
         subscription_tier_slug=pulumi.get(__ret__, 'subscription_tier_slug'))
 def get_container_registry_output(name: Optional[pulumi.Input[str]] = None,
-                                  opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetContainerRegistryResult]:
+                                  opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetContainerRegistryResult]:
     """
     Get information on a container registry. This data source provides the name as
     configured on your DigitalOcean account. This is useful if the container
@@ -201,7 +201,7 @@ def get_container_registry_output(name: Optional[pulumi.Input[str]] = None,
     """
     __args__ = dict()
     __args__['name'] = name
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getContainerRegistry:getContainerRegistry', __args__, opts=opts, typ=GetContainerRegistryResult)
     return __ret__.apply(lambda __response__: GetContainerRegistryResult(
         created_at=pulumi.get(__response__, 'created_at'),
diff --git a/sdk/python/pulumi_digitalocean/get_database_ca.py b/sdk/python/pulumi_digitalocean/get_database_ca.py
index ed64c1b0..757fad47 100644
--- a/sdk/python/pulumi_digitalocean/get_database_ca.py
+++ b/sdk/python/pulumi_digitalocean/get_database_ca.py
@@ -98,7 +98,7 @@ def get_database_ca(cluster_id: Optional[str] = None,
         cluster_id=pulumi.get(__ret__, 'cluster_id'),
         id=pulumi.get(__ret__, 'id'))
 def get_database_ca_output(cluster_id: Optional[pulumi.Input[str]] = None,
-                           opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDatabaseCaResult]:
+                           opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetDatabaseCaResult]:
     """
     Provides the CA certificate for a DigitalOcean database.
 
@@ -117,7 +117,7 @@ def get_database_ca_output(cluster_id: Optional[pulumi.Input[str]] = None,
     """
     __args__ = dict()
     __args__['clusterId'] = cluster_id
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getDatabaseCa:getDatabaseCa', __args__, opts=opts, typ=GetDatabaseCaResult)
     return __ret__.apply(lambda __response__: GetDatabaseCaResult(
         certificate=pulumi.get(__response__, 'certificate'),
diff --git a/sdk/python/pulumi_digitalocean/get_database_cluster.py b/sdk/python/pulumi_digitalocean/get_database_cluster.py
index e53452fa..5e2a54eb 100644
--- a/sdk/python/pulumi_digitalocean/get_database_cluster.py
+++ b/sdk/python/pulumi_digitalocean/get_database_cluster.py
@@ -408,7 +408,7 @@ def get_database_cluster(name: Optional[str] = None,
         version=pulumi.get(__ret__, 'version'))
 def get_database_cluster_output(name: Optional[pulumi.Input[str]] = None,
                                 tags: Optional[pulumi.Input[Optional[Sequence[str]]]] = None,
-                                opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDatabaseClusterResult]:
+                                opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetDatabaseClusterResult]:
     """
     Provides information on a DigitalOcean database cluster resource.
 
@@ -428,7 +428,7 @@ def get_database_cluster_output(name: Optional[pulumi.Input[str]] = None,
     __args__ = dict()
     __args__['name'] = name
     __args__['tags'] = tags
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getDatabaseCluster:getDatabaseCluster', __args__, opts=opts, typ=GetDatabaseClusterResult)
     return __ret__.apply(lambda __response__: GetDatabaseClusterResult(
         database=pulumi.get(__response__, 'database'),
diff --git a/sdk/python/pulumi_digitalocean/get_database_connection_pool.py b/sdk/python/pulumi_digitalocean/get_database_connection_pool.py
index d33cd613..852dc88d 100644
--- a/sdk/python/pulumi_digitalocean/get_database_connection_pool.py
+++ b/sdk/python/pulumi_digitalocean/get_database_connection_pool.py
@@ -231,7 +231,7 @@ def get_database_connection_pool(cluster_id: Optional[str] = None,
         user=pulumi.get(__ret__, 'user'))
 def get_database_connection_pool_output(cluster_id: Optional[pulumi.Input[str]] = None,
                                         name: Optional[pulumi.Input[str]] = None,
-                                        opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDatabaseConnectionPoolResult]:
+                                        opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetDatabaseConnectionPoolResult]:
     """
     Provides information on a DigitalOcean PostgreSQL database connection pool.
 
@@ -254,7 +254,7 @@ def get_database_connection_pool_output(cluster_id: Optional[pulumi.Input[str]]
     __args__ = dict()
     __args__['clusterId'] = cluster_id
     __args__['name'] = name
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getDatabaseConnectionPool:getDatabaseConnectionPool', __args__, opts=opts, typ=GetDatabaseConnectionPoolResult)
     return __ret__.apply(lambda __response__: GetDatabaseConnectionPoolResult(
         cluster_id=pulumi.get(__response__, 'cluster_id'),
diff --git a/sdk/python/pulumi_digitalocean/get_database_replica.py b/sdk/python/pulumi_digitalocean/get_database_replica.py
index c62e4aec..bca798c8 100644
--- a/sdk/python/pulumi_digitalocean/get_database_replica.py
+++ b/sdk/python/pulumi_digitalocean/get_database_replica.py
@@ -265,7 +265,7 @@ def get_database_replica(cluster_id: Optional[str] = None,
 def get_database_replica_output(cluster_id: Optional[pulumi.Input[str]] = None,
                                 name: Optional[pulumi.Input[str]] = None,
                                 tags: Optional[pulumi.Input[Optional[Sequence[str]]]] = None,
-                                opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDatabaseReplicaResult]:
+                                opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetDatabaseReplicaResult]:
     """
     Provides information on a DigitalOcean database replica.
 
@@ -290,7 +290,7 @@ def get_database_replica_output(cluster_id: Optional[pulumi.Input[str]] = None,
     __args__['clusterId'] = cluster_id
     __args__['name'] = name
     __args__['tags'] = tags
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getDatabaseReplica:getDatabaseReplica', __args__, opts=opts, typ=GetDatabaseReplicaResult)
     return __ret__.apply(lambda __response__: GetDatabaseReplicaResult(
         cluster_id=pulumi.get(__response__, 'cluster_id'),
diff --git a/sdk/python/pulumi_digitalocean/get_database_user.py b/sdk/python/pulumi_digitalocean/get_database_user.py
index a073cc3a..568e7bbb 100644
--- a/sdk/python/pulumi_digitalocean/get_database_user.py
+++ b/sdk/python/pulumi_digitalocean/get_database_user.py
@@ -177,7 +177,7 @@ def get_database_user(cluster_id: Optional[str] = None,
         settings=pulumi.get(__ret__, 'settings'))
 def get_database_user_output(cluster_id: Optional[pulumi.Input[str]] = None,
                              name: Optional[pulumi.Input[str]] = None,
-                             opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDatabaseUserResult]:
+                             opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetDatabaseUserResult]:
     """
     Provides information on a DigitalOcean database user resource.
 
@@ -200,7 +200,7 @@ def get_database_user_output(cluster_id: Optional[pulumi.Input[str]] = None,
     __args__ = dict()
     __args__['clusterId'] = cluster_id
     __args__['name'] = name
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getDatabaseUser:getDatabaseUser', __args__, opts=opts, typ=GetDatabaseUserResult)
     return __ret__.apply(lambda __response__: GetDatabaseUserResult(
         access_cert=pulumi.get(__response__, 'access_cert'),
diff --git a/sdk/python/pulumi_digitalocean/get_domain.py b/sdk/python/pulumi_digitalocean/get_domain.py
index d9f90f31..e653a69c 100644
--- a/sdk/python/pulumi_digitalocean/get_domain.py
+++ b/sdk/python/pulumi_digitalocean/get_domain.py
@@ -132,7 +132,7 @@ def get_domain(name: Optional[str] = None,
         ttl=pulumi.get(__ret__, 'ttl'),
         zone_file=pulumi.get(__ret__, 'zone_file'))
 def get_domain_output(name: Optional[pulumi.Input[str]] = None,
-                      opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDomainResult]:
+                      opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetDomainResult]:
     """
     Get information on a domain. This data source provides the name, TTL, and zone
     file as configured on your DigitalOcean account. This is useful if the domain
@@ -159,7 +159,7 @@ def get_domain_output(name: Optional[pulumi.Input[str]] = None,
     """
     __args__ = dict()
     __args__['name'] = name
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getDomain:getDomain', __args__, opts=opts, typ=GetDomainResult)
     return __ret__.apply(lambda __response__: GetDomainResult(
         domain_urn=pulumi.get(__response__, 'domain_urn'),
diff --git a/sdk/python/pulumi_digitalocean/get_domains.py b/sdk/python/pulumi_digitalocean/get_domains.py
index bc2097ad..97c492d0 100644
--- a/sdk/python/pulumi_digitalocean/get_domains.py
+++ b/sdk/python/pulumi_digitalocean/get_domains.py
@@ -129,7 +129,7 @@ def get_domains(filters: Optional[Sequence[Union['GetDomainsFilterArgs', 'GetDom
         sorts=pulumi.get(__ret__, 'sorts'))
 def get_domains_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['GetDomainsFilterArgs', 'GetDomainsFilterArgsDict']]]]] = None,
                        sorts: Optional[pulumi.Input[Optional[Sequence[Union['GetDomainsSortArgs', 'GetDomainsSortArgsDict']]]]] = None,
-                       opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDomainsResult]:
+                       opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetDomainsResult]:
     """
     Get information on domains for use in other resources, with the ability to filter and sort the results.
     If no filters are specified, all domains will be returned.
@@ -165,7 +165,7 @@ def get_domains_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['G
     __args__ = dict()
     __args__['filters'] = filters
     __args__['sorts'] = sorts
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getDomains:getDomains', __args__, opts=opts, typ=GetDomainsResult)
     return __ret__.apply(lambda __response__: GetDomainsResult(
         domains=pulumi.get(__response__, 'domains'),
diff --git a/sdk/python/pulumi_digitalocean/get_droplet.py b/sdk/python/pulumi_digitalocean/get_droplet.py
index 4cd60490..8241c9ff 100644
--- a/sdk/python/pulumi_digitalocean/get_droplet.py
+++ b/sdk/python/pulumi_digitalocean/get_droplet.py
@@ -441,7 +441,7 @@ def get_droplet_output(gpu: Optional[pulumi.Input[Optional[bool]]] = None,
                        id: Optional[pulumi.Input[Optional[int]]] = None,
                        name: Optional[pulumi.Input[Optional[str]]] = None,
                        tag: Optional[pulumi.Input[Optional[str]]] = None,
-                       opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDropletResult]:
+                       opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetDropletResult]:
     """
     Get information on a Droplet for use in other resources. This data source provides
     all of the Droplet's properties as configured on your DigitalOcean account. This
@@ -494,7 +494,7 @@ def get_droplet_output(gpu: Optional[pulumi.Input[Optional[bool]]] = None,
     __args__['id'] = id
     __args__['name'] = name
     __args__['tag'] = tag
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getDroplet:getDroplet', __args__, opts=opts, typ=GetDropletResult)
     return __ret__.apply(lambda __response__: GetDropletResult(
         backups=pulumi.get(__response__, 'backups'),
diff --git a/sdk/python/pulumi_digitalocean/get_droplet_snapshot.py b/sdk/python/pulumi_digitalocean/get_droplet_snapshot.py
index 1229c873..d8140dad 100644
--- a/sdk/python/pulumi_digitalocean/get_droplet_snapshot.py
+++ b/sdk/python/pulumi_digitalocean/get_droplet_snapshot.py
@@ -217,7 +217,7 @@ def get_droplet_snapshot_output(most_recent: Optional[pulumi.Input[Optional[bool
                                 name: Optional[pulumi.Input[Optional[str]]] = None,
                                 name_regex: Optional[pulumi.Input[Optional[str]]] = None,
                                 region: Optional[pulumi.Input[Optional[str]]] = None,
-                                opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDropletSnapshotResult]:
+                                opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetDropletSnapshotResult]:
     """
     Droplet snapshots are saved instances of a Droplet. Use this data
     source to retrieve the ID of a DigitalOcean Droplet snapshot for use in other
@@ -267,7 +267,7 @@ def get_droplet_snapshot_output(most_recent: Optional[pulumi.Input[Optional[bool
     __args__['name'] = name
     __args__['nameRegex'] = name_regex
     __args__['region'] = region
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getDropletSnapshot:getDropletSnapshot', __args__, opts=opts, typ=GetDropletSnapshotResult)
     return __ret__.apply(lambda __response__: GetDropletSnapshotResult(
         created_at=pulumi.get(__response__, 'created_at'),
diff --git a/sdk/python/pulumi_digitalocean/get_droplets.py b/sdk/python/pulumi_digitalocean/get_droplets.py
index e411a73f..1256bd2e 100644
--- a/sdk/python/pulumi_digitalocean/get_droplets.py
+++ b/sdk/python/pulumi_digitalocean/get_droplets.py
@@ -168,7 +168,7 @@ def get_droplets(filters: Optional[Sequence[Union['GetDropletsFilterArgs', 'GetD
 def get_droplets_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['GetDropletsFilterArgs', 'GetDropletsFilterArgsDict']]]]] = None,
                         gpus: Optional[pulumi.Input[Optional[bool]]] = None,
                         sorts: Optional[pulumi.Input[Optional[Sequence[Union['GetDropletsSortArgs', 'GetDropletsSortArgsDict']]]]] = None,
-                        opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDropletsResult]:
+                        opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetDropletsResult]:
     """
     Get information on Droplets for use in other resources, with the ability to filter and sort the results.
     If no filters are specified, all Droplets will be returned.
@@ -231,7 +231,7 @@ def get_droplets_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['
     __args__['filters'] = filters
     __args__['gpus'] = gpus
     __args__['sorts'] = sorts
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getDroplets:getDroplets', __args__, opts=opts, typ=GetDropletsResult)
     return __ret__.apply(lambda __response__: GetDropletsResult(
         droplets=pulumi.get(__response__, 'droplets'),
diff --git a/sdk/python/pulumi_digitalocean/get_firewall.py b/sdk/python/pulumi_digitalocean/get_firewall.py
index 922ae7d0..a5de6800 100644
--- a/sdk/python/pulumi_digitalocean/get_firewall.py
+++ b/sdk/python/pulumi_digitalocean/get_firewall.py
@@ -209,7 +209,7 @@ def get_firewall_output(droplet_ids: Optional[pulumi.Input[Optional[Sequence[int
                         inbound_rules: Optional[pulumi.Input[Optional[Sequence[Union['GetFirewallInboundRuleArgs', 'GetFirewallInboundRuleArgsDict']]]]] = None,
                         outbound_rules: Optional[pulumi.Input[Optional[Sequence[Union['GetFirewallOutboundRuleArgs', 'GetFirewallOutboundRuleArgsDict']]]]] = None,
                         tags: Optional[pulumi.Input[Optional[Sequence[str]]]] = None,
-                        opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetFirewallResult]:
+                        opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetFirewallResult]:
     """
     Get information on a DigitalOcean Firewall.
 
@@ -238,7 +238,7 @@ def get_firewall_output(droplet_ids: Optional[pulumi.Input[Optional[Sequence[int
     __args__['inboundRules'] = inbound_rules
     __args__['outboundRules'] = outbound_rules
     __args__['tags'] = tags
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getFirewall:getFirewall', __args__, opts=opts, typ=GetFirewallResult)
     return __ret__.apply(lambda __response__: GetFirewallResult(
         created_at=pulumi.get(__response__, 'created_at'),
diff --git a/sdk/python/pulumi_digitalocean/get_floating_ip.py b/sdk/python/pulumi_digitalocean/get_floating_ip.py
index 30a26213..c94129cc 100644
--- a/sdk/python/pulumi_digitalocean/get_floating_ip.py
+++ b/sdk/python/pulumi_digitalocean/get_floating_ip.py
@@ -135,7 +135,7 @@ def get_floating_ip(ip_address: Optional[str] = None,
         ip_address=pulumi.get(__ret__, 'ip_address'),
         region=pulumi.get(__ret__, 'region'))
 def get_floating_ip_output(ip_address: Optional[pulumi.Input[str]] = None,
-                           opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetFloatingIpResult]:
+                           opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetFloatingIpResult]:
     """
     > **Deprecated:** DigitalOcean Floating IPs have been renamed reserved IPs. This data source will be removed in a future release. Please use `ReservedIp` instead.
 
@@ -165,7 +165,7 @@ def get_floating_ip_output(ip_address: Optional[pulumi.Input[str]] = None,
     """
     __args__ = dict()
     __args__['ipAddress'] = ip_address
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getFloatingIp:getFloatingIp', __args__, opts=opts, typ=GetFloatingIpResult)
     return __ret__.apply(lambda __response__: GetFloatingIpResult(
         droplet_id=pulumi.get(__response__, 'droplet_id'),
diff --git a/sdk/python/pulumi_digitalocean/get_image.py b/sdk/python/pulumi_digitalocean/get_image.py
index 6cf7a55f..9ffa7569 100644
--- a/sdk/python/pulumi_digitalocean/get_image.py
+++ b/sdk/python/pulumi_digitalocean/get_image.py
@@ -309,7 +309,7 @@ def get_image_output(id: Optional[pulumi.Input[Optional[int]]] = None,
                      name: Optional[pulumi.Input[Optional[str]]] = None,
                      slug: Optional[pulumi.Input[Optional[str]]] = None,
                      source: Optional[pulumi.Input[Optional[str]]] = None,
-                     opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetImageResult]:
+                     opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetImageResult]:
     """
     Get information on an image for use in other resources (e.g. creating a Droplet
     based on snapshot). This data source provides all of the image properties as
@@ -365,7 +365,7 @@ def get_image_output(id: Optional[pulumi.Input[Optional[int]]] = None,
     __args__['name'] = name
     __args__['slug'] = slug
     __args__['source'] = source
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getImage:getImage', __args__, opts=opts, typ=GetImageResult)
     return __ret__.apply(lambda __response__: GetImageResult(
         created=pulumi.get(__response__, 'created'),
diff --git a/sdk/python/pulumi_digitalocean/get_images.py b/sdk/python/pulumi_digitalocean/get_images.py
index 771481fd..8d812bb8 100644
--- a/sdk/python/pulumi_digitalocean/get_images.py
+++ b/sdk/python/pulumi_digitalocean/get_images.py
@@ -152,7 +152,7 @@ def get_images(filters: Optional[Sequence[Union['GetImagesFilterArgs', 'GetImage
         sorts=pulumi.get(__ret__, 'sorts'))
 def get_images_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['GetImagesFilterArgs', 'GetImagesFilterArgsDict']]]]] = None,
                       sorts: Optional[pulumi.Input[Optional[Sequence[Union['GetImagesSortArgs', 'GetImagesSortArgsDict']]]]] = None,
-                      opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetImagesResult]:
+                      opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetImagesResult]:
     """
     Get information on images for use in other resources (e.g. creating a Droplet
     based on a snapshot), with the ability to filter and sort the results. If no filters are specified,
@@ -211,7 +211,7 @@ def get_images_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['Ge
     __args__ = dict()
     __args__['filters'] = filters
     __args__['sorts'] = sorts
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getImages:getImages', __args__, opts=opts, typ=GetImagesResult)
     return __ret__.apply(lambda __response__: GetImagesResult(
         filters=pulumi.get(__response__, 'filters'),
diff --git a/sdk/python/pulumi_digitalocean/get_kubernetes_cluster.py b/sdk/python/pulumi_digitalocean/get_kubernetes_cluster.py
index ee835ec4..da98f24f 100644
--- a/sdk/python/pulumi_digitalocean/get_kubernetes_cluster.py
+++ b/sdk/python/pulumi_digitalocean/get_kubernetes_cluster.py
@@ -320,7 +320,7 @@ def get_kubernetes_cluster(name: Optional[str] = None,
         vpc_uuid=pulumi.get(__ret__, 'vpc_uuid'))
 def get_kubernetes_cluster_output(name: Optional[pulumi.Input[str]] = None,
                                   tags: Optional[pulumi.Input[Optional[Sequence[str]]]] = None,
-                                  opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetKubernetesClusterResult]:
+                                  opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetKubernetesClusterResult]:
     """
     Retrieves information about a DigitalOcean Kubernetes cluster for use in other resources. This data source provides all of the cluster's properties as configured on your DigitalOcean account. This is useful if the cluster in question is not managed by the provider.
 
@@ -340,7 +340,7 @@ def get_kubernetes_cluster_output(name: Optional[pulumi.Input[str]] = None,
     __args__ = dict()
     __args__['name'] = name
     __args__['tags'] = tags
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getKubernetesCluster:getKubernetesCluster', __args__, opts=opts, typ=GetKubernetesClusterResult)
     return __ret__.apply(lambda __response__: GetKubernetesClusterResult(
         auto_upgrade=pulumi.get(__response__, 'auto_upgrade'),
diff --git a/sdk/python/pulumi_digitalocean/get_kubernetes_versions.py b/sdk/python/pulumi_digitalocean/get_kubernetes_versions.py
index 8bb4ee1d..e88d3a98 100644
--- a/sdk/python/pulumi_digitalocean/get_kubernetes_versions.py
+++ b/sdk/python/pulumi_digitalocean/get_kubernetes_versions.py
@@ -149,7 +149,7 @@ def get_kubernetes_versions(version_prefix: Optional[str] = None,
         valid_versions=pulumi.get(__ret__, 'valid_versions'),
         version_prefix=pulumi.get(__ret__, 'version_prefix'))
 def get_kubernetes_versions_output(version_prefix: Optional[pulumi.Input[Optional[str]]] = None,
-                                   opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetKubernetesVersionsResult]:
+                                   opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetKubernetesVersionsResult]:
     """
     Provides access to the available DigitalOcean Kubernetes Service versions.
 
@@ -206,7 +206,7 @@ def get_kubernetes_versions_output(version_prefix: Optional[pulumi.Input[Optiona
     """
     __args__ = dict()
     __args__['versionPrefix'] = version_prefix
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getKubernetesVersions:getKubernetesVersions', __args__, opts=opts, typ=GetKubernetesVersionsResult)
     return __ret__.apply(lambda __response__: GetKubernetesVersionsResult(
         id=pulumi.get(__response__, 'id'),
diff --git a/sdk/python/pulumi_digitalocean/get_load_balancer.py b/sdk/python/pulumi_digitalocean/get_load_balancer.py
index b973be3a..0d154af3 100644
--- a/sdk/python/pulumi_digitalocean/get_load_balancer.py
+++ b/sdk/python/pulumi_digitalocean/get_load_balancer.py
@@ -354,7 +354,7 @@ def get_load_balancer(id: Optional[str] = None,
         vpc_uuid=pulumi.get(__ret__, 'vpc_uuid'))
 def get_load_balancer_output(id: Optional[pulumi.Input[Optional[str]]] = None,
                              name: Optional[pulumi.Input[Optional[str]]] = None,
-                             opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetLoadBalancerResult]:
+                             opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetLoadBalancerResult]:
     """
     Get information on a load balancer for use in other resources. This data source
     provides all of the load balancers properties as configured on your DigitalOcean
@@ -391,7 +391,7 @@ def get_load_balancer_output(id: Optional[pulumi.Input[Optional[str]]] = None,
     __args__ = dict()
     __args__['id'] = id
     __args__['name'] = name
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getLoadBalancer:getLoadBalancer', __args__, opts=opts, typ=GetLoadBalancerResult)
     return __ret__.apply(lambda __response__: GetLoadBalancerResult(
         algorithm=pulumi.get(__response__, 'algorithm'),
diff --git a/sdk/python/pulumi_digitalocean/get_project.py b/sdk/python/pulumi_digitalocean/get_project.py
index c5f9ade6..fed64433 100644
--- a/sdk/python/pulumi_digitalocean/get_project.py
+++ b/sdk/python/pulumi_digitalocean/get_project.py
@@ -202,7 +202,7 @@ def get_project(id: Optional[str] = None,
         updated_at=pulumi.get(__ret__, 'updated_at'))
 def get_project_output(id: Optional[pulumi.Input[Optional[str]]] = None,
                        name: Optional[pulumi.Input[Optional[str]]] = None,
-                       opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetProjectResult]:
+                       opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetProjectResult]:
     """
     Get information on a single DigitalOcean project. If neither the `id` nor `name` attributes are provided,
     then this data source returns the default project.
@@ -225,7 +225,7 @@ def get_project_output(id: Optional[pulumi.Input[Optional[str]]] = None,
     __args__ = dict()
     __args__['id'] = id
     __args__['name'] = name
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getProject:getProject', __args__, opts=opts, typ=GetProjectResult)
     return __ret__.apply(lambda __response__: GetProjectResult(
         created_at=pulumi.get(__response__, 'created_at'),
diff --git a/sdk/python/pulumi_digitalocean/get_projects.py b/sdk/python/pulumi_digitalocean/get_projects.py
index 14e7533c..64524a0b 100644
--- a/sdk/python/pulumi_digitalocean/get_projects.py
+++ b/sdk/python/pulumi_digitalocean/get_projects.py
@@ -151,7 +151,7 @@ def get_projects(filters: Optional[Sequence[Union['GetProjectsFilterArgs', 'GetP
         sorts=pulumi.get(__ret__, 'sorts'))
 def get_projects_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['GetProjectsFilterArgs', 'GetProjectsFilterArgsDict']]]]] = None,
                         sorts: Optional[pulumi.Input[Optional[Sequence[Union['GetProjectsSortArgs', 'GetProjectsSortArgsDict']]]]] = None,
-                        opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetProjectsResult]:
+                        opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetProjectsResult]:
     """
     Retrieve information about all DigitalOcean projects associated with an account, with
     the ability to filter and sort the results. If no filters are specified, all projects
@@ -208,7 +208,7 @@ def get_projects_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['
     __args__ = dict()
     __args__['filters'] = filters
     __args__['sorts'] = sorts
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getProjects:getProjects', __args__, opts=opts, typ=GetProjectsResult)
     return __ret__.apply(lambda __response__: GetProjectsResult(
         filters=pulumi.get(__response__, 'filters'),
diff --git a/sdk/python/pulumi_digitalocean/get_record.py b/sdk/python/pulumi_digitalocean/get_record.py
index d34eac9f..8c117fab 100644
--- a/sdk/python/pulumi_digitalocean/get_record.py
+++ b/sdk/python/pulumi_digitalocean/get_record.py
@@ -212,7 +212,7 @@ def get_record(domain: Optional[str] = None,
         weight=pulumi.get(__ret__, 'weight'))
 def get_record_output(domain: Optional[pulumi.Input[str]] = None,
                       name: Optional[pulumi.Input[str]] = None,
-                      opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetRecordResult]:
+                      opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetRecordResult]:
     """
     Get information on a DNS record. This data source provides the name, TTL, and zone
     file as configured on your DigitalOcean account. This is useful if the record
@@ -242,7 +242,7 @@ def get_record_output(domain: Optional[pulumi.Input[str]] = None,
     __args__ = dict()
     __args__['domain'] = domain
     __args__['name'] = name
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getRecord:getRecord', __args__, opts=opts, typ=GetRecordResult)
     return __ret__.apply(lambda __response__: GetRecordResult(
         data=pulumi.get(__response__, 'data'),
diff --git a/sdk/python/pulumi_digitalocean/get_records.py b/sdk/python/pulumi_digitalocean/get_records.py
index 45b8b669..eacce3fb 100644
--- a/sdk/python/pulumi_digitalocean/get_records.py
+++ b/sdk/python/pulumi_digitalocean/get_records.py
@@ -139,7 +139,7 @@ def get_records(domain: Optional[str] = None,
 def get_records_output(domain: Optional[pulumi.Input[str]] = None,
                        filters: Optional[pulumi.Input[Optional[Sequence[Union['GetRecordsFilterArgs', 'GetRecordsFilterArgsDict']]]]] = None,
                        sorts: Optional[pulumi.Input[Optional[Sequence[Union['GetRecordsSortArgs', 'GetRecordsSortArgsDict']]]]] = None,
-                       opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetRecordsResult]:
+                       opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetRecordsResult]:
     """
     Retrieve information about all DNS records within a domain, with the ability to filter and sort the results.
     If no filters are specified, all records will be returned.
@@ -173,7 +173,7 @@ def get_records_output(domain: Optional[pulumi.Input[str]] = None,
     __args__['domain'] = domain
     __args__['filters'] = filters
     __args__['sorts'] = sorts
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getRecords:getRecords', __args__, opts=opts, typ=GetRecordsResult)
     return __ret__.apply(lambda __response__: GetRecordsResult(
         domain=pulumi.get(__response__, 'domain'),
diff --git a/sdk/python/pulumi_digitalocean/get_region.py b/sdk/python/pulumi_digitalocean/get_region.py
index b098d6b5..d743775c 100644
--- a/sdk/python/pulumi_digitalocean/get_region.py
+++ b/sdk/python/pulumi_digitalocean/get_region.py
@@ -141,7 +141,7 @@ def get_region(slug: Optional[str] = None,
         sizes=pulumi.get(__ret__, 'sizes'),
         slug=pulumi.get(__ret__, 'slug'))
 def get_region_output(slug: Optional[pulumi.Input[str]] = None,
-                      opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetRegionResult]:
+                      opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetRegionResult]:
     """
     Get information on a single DigitalOcean region. This is useful to find out
     what Droplet sizes and features are supported within a region.
@@ -161,7 +161,7 @@ def get_region_output(slug: Optional[pulumi.Input[str]] = None,
     """
     __args__ = dict()
     __args__['slug'] = slug
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getRegion:getRegion', __args__, opts=opts, typ=GetRegionResult)
     return __ret__.apply(lambda __response__: GetRegionResult(
         available=pulumi.get(__response__, 'available'),
diff --git a/sdk/python/pulumi_digitalocean/get_regions.py b/sdk/python/pulumi_digitalocean/get_regions.py
index 33c7401d..ce6b2e03 100644
--- a/sdk/python/pulumi_digitalocean/get_regions.py
+++ b/sdk/python/pulumi_digitalocean/get_regions.py
@@ -148,7 +148,7 @@ def get_regions(filters: Optional[Sequence[Union['GetRegionsFilterArgs', 'GetReg
         sorts=pulumi.get(__ret__, 'sorts'))
 def get_regions_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['GetRegionsFilterArgs', 'GetRegionsFilterArgsDict']]]]] = None,
                        sorts: Optional[pulumi.Input[Optional[Sequence[Union['GetRegionsSortArgs', 'GetRegionsSortArgsDict']]]]] = None,
-                       opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetRegionsResult]:
+                       opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetRegionsResult]:
     """
     Retrieve information about all supported DigitalOcean regions, with the ability to
     filter and sort the results. If no filters are specified, all regions will be returned.
@@ -203,7 +203,7 @@ def get_regions_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['G
     __args__ = dict()
     __args__['filters'] = filters
     __args__['sorts'] = sorts
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getRegions:getRegions', __args__, opts=opts, typ=GetRegionsResult)
     return __ret__.apply(lambda __response__: GetRegionsResult(
         filters=pulumi.get(__response__, 'filters'),
diff --git a/sdk/python/pulumi_digitalocean/get_reserved_ip.py b/sdk/python/pulumi_digitalocean/get_reserved_ip.py
index 4771f1b9..2e872c53 100644
--- a/sdk/python/pulumi_digitalocean/get_reserved_ip.py
+++ b/sdk/python/pulumi_digitalocean/get_reserved_ip.py
@@ -126,7 +126,7 @@ def get_reserved_ip(ip_address: Optional[str] = None,
         region=pulumi.get(__ret__, 'region'),
         urn=pulumi.get(__ret__, 'urn'))
 def get_reserved_ip_output(ip_address: Optional[pulumi.Input[str]] = None,
-                           opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetReservedIpResult]:
+                           opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetReservedIpResult]:
     """
     ## Example Usage
 
@@ -147,7 +147,7 @@ def get_reserved_ip_output(ip_address: Optional[pulumi.Input[str]] = None,
     """
     __args__ = dict()
     __args__['ipAddress'] = ip_address
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getReservedIp:getReservedIp', __args__, opts=opts, typ=GetReservedIpResult)
     return __ret__.apply(lambda __response__: GetReservedIpResult(
         droplet_id=pulumi.get(__response__, 'droplet_id'),
diff --git a/sdk/python/pulumi_digitalocean/get_sizes.py b/sdk/python/pulumi_digitalocean/get_sizes.py
index 28915469..bea33835 100644
--- a/sdk/python/pulumi_digitalocean/get_sizes.py
+++ b/sdk/python/pulumi_digitalocean/get_sizes.py
@@ -105,7 +105,7 @@ def get_sizes(filters: Optional[Sequence[Union['GetSizesFilterArgs', 'GetSizesFi
         sorts=pulumi.get(__ret__, 'sorts'))
 def get_sizes_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['GetSizesFilterArgs', 'GetSizesFilterArgsDict']]]]] = None,
                      sorts: Optional[pulumi.Input[Optional[Sequence[Union['GetSizesSortArgs', 'GetSizesSortArgsDict']]]]] = None,
-                     opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSizesResult]:
+                     opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetSizesResult]:
     """
     Retrieves information about the Droplet sizes that DigitalOcean supports, with
     the ability to filter and sort the results. If no filters are specified, all sizes
@@ -120,7 +120,7 @@ def get_sizes_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['Get
     __args__ = dict()
     __args__['filters'] = filters
     __args__['sorts'] = sorts
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getSizes:getSizes', __args__, opts=opts, typ=GetSizesResult)
     return __ret__.apply(lambda __response__: GetSizesResult(
         filters=pulumi.get(__response__, 'filters'),
diff --git a/sdk/python/pulumi_digitalocean/get_spaces_bucket.py b/sdk/python/pulumi_digitalocean/get_spaces_bucket.py
index e5c5e1a4..ff2a20e6 100644
--- a/sdk/python/pulumi_digitalocean/get_spaces_bucket.py
+++ b/sdk/python/pulumi_digitalocean/get_spaces_bucket.py
@@ -148,7 +148,7 @@ def get_spaces_bucket(name: Optional[str] = None,
         urn=pulumi.get(__ret__, 'urn'))
 def get_spaces_bucket_output(name: Optional[pulumi.Input[str]] = None,
                              region: Optional[pulumi.Input[str]] = None,
-                             opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSpacesBucketResult]:
+                             opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetSpacesBucketResult]:
     """
     Get information on a Spaces bucket for use in other resources. This is useful if the Spaces bucket in question
     is not managed by the provider or you need to utilize any of the bucket's data.
@@ -173,7 +173,7 @@ def get_spaces_bucket_output(name: Optional[pulumi.Input[str]] = None,
     __args__ = dict()
     __args__['name'] = name
     __args__['region'] = region
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getSpacesBucket:getSpacesBucket', __args__, opts=opts, typ=GetSpacesBucketResult)
     return __ret__.apply(lambda __response__: GetSpacesBucketResult(
         bucket_domain_name=pulumi.get(__response__, 'bucket_domain_name'),
diff --git a/sdk/python/pulumi_digitalocean/get_spaces_bucket_object.py b/sdk/python/pulumi_digitalocean/get_spaces_bucket_object.py
index 38a3099c..84d08f2b 100644
--- a/sdk/python/pulumi_digitalocean/get_spaces_bucket_object.py
+++ b/sdk/python/pulumi_digitalocean/get_spaces_bucket_object.py
@@ -327,7 +327,7 @@ def get_spaces_bucket_object_output(bucket: Optional[pulumi.Input[str]] = None,
                                     range: Optional[pulumi.Input[Optional[str]]] = None,
                                     region: Optional[pulumi.Input[str]] = None,
                                     version_id: Optional[pulumi.Input[Optional[str]]] = None,
-                                    opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSpacesBucketObjectResult]:
+                                    opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetSpacesBucketObjectResult]:
     """
     The Spaces object data source allows access to the metadata and
     _optionally_ (see below) content of an object stored inside a Spaces bucket.
@@ -368,7 +368,7 @@ def get_spaces_bucket_object_output(bucket: Optional[pulumi.Input[str]] = None,
     __args__['range'] = range
     __args__['region'] = region
     __args__['versionId'] = version_id
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getSpacesBucketObject:getSpacesBucketObject', __args__, opts=opts, typ=GetSpacesBucketObjectResult)
     return __ret__.apply(lambda __response__: GetSpacesBucketObjectResult(
         body=pulumi.get(__response__, 'body'),
diff --git a/sdk/python/pulumi_digitalocean/get_spaces_bucket_objects.py b/sdk/python/pulumi_digitalocean/get_spaces_bucket_objects.py
index c55cfd5b..e40e5bf9 100644
--- a/sdk/python/pulumi_digitalocean/get_spaces_bucket_objects.py
+++ b/sdk/python/pulumi_digitalocean/get_spaces_bucket_objects.py
@@ -186,7 +186,7 @@ def get_spaces_bucket_objects_output(bucket: Optional[pulumi.Input[str]] = None,
                                      max_keys: Optional[pulumi.Input[Optional[int]]] = None,
                                      prefix: Optional[pulumi.Input[Optional[str]]] = None,
                                      region: Optional[pulumi.Input[str]] = None,
-                                     opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSpacesBucketObjectsResult]:
+                                     opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetSpacesBucketObjectsResult]:
     """
     > **NOTE on `max_keys`:** Retrieving very large numbers of keys can adversely affect the provider's performance.
 
@@ -207,7 +207,7 @@ def get_spaces_bucket_objects_output(bucket: Optional[pulumi.Input[str]] = None,
     __args__['maxKeys'] = max_keys
     __args__['prefix'] = prefix
     __args__['region'] = region
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getSpacesBucketObjects:getSpacesBucketObjects', __args__, opts=opts, typ=GetSpacesBucketObjectsResult)
     return __ret__.apply(lambda __response__: GetSpacesBucketObjectsResult(
         bucket=pulumi.get(__response__, 'bucket'),
diff --git a/sdk/python/pulumi_digitalocean/get_spaces_buckets.py b/sdk/python/pulumi_digitalocean/get_spaces_buckets.py
index d7d965c8..255ce1ba 100644
--- a/sdk/python/pulumi_digitalocean/get_spaces_buckets.py
+++ b/sdk/python/pulumi_digitalocean/get_spaces_buckets.py
@@ -141,7 +141,7 @@ def get_spaces_buckets(filters: Optional[Sequence[Union['GetSpacesBucketsFilterA
         sorts=pulumi.get(__ret__, 'sorts'))
 def get_spaces_buckets_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['GetSpacesBucketsFilterArgs', 'GetSpacesBucketsFilterArgsDict']]]]] = None,
                               sorts: Optional[pulumi.Input[Optional[Sequence[Union['GetSpacesBucketsSortArgs', 'GetSpacesBucketsSortArgsDict']]]]] = None,
-                              opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSpacesBucketsResult]:
+                              opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetSpacesBucketsResult]:
     """
     Get information on Spaces buckets for use in other resources, with the ability to filter and sort the results.
     If no filters are specified, all Spaces buckets will be returned.
@@ -189,7 +189,7 @@ def get_spaces_buckets_output(filters: Optional[pulumi.Input[Optional[Sequence[U
     __args__ = dict()
     __args__['filters'] = filters
     __args__['sorts'] = sorts
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getSpacesBuckets:getSpacesBuckets', __args__, opts=opts, typ=GetSpacesBucketsResult)
     return __ret__.apply(lambda __response__: GetSpacesBucketsResult(
         buckets=pulumi.get(__response__, 'buckets'),
diff --git a/sdk/python/pulumi_digitalocean/get_ssh_key.py b/sdk/python/pulumi_digitalocean/get_ssh_key.py
index 929d4bd5..1c68cd76 100644
--- a/sdk/python/pulumi_digitalocean/get_ssh_key.py
+++ b/sdk/python/pulumi_digitalocean/get_ssh_key.py
@@ -123,7 +123,7 @@ def get_ssh_key(name: Optional[str] = None,
         name=pulumi.get(__ret__, 'name'),
         public_key=pulumi.get(__ret__, 'public_key'))
 def get_ssh_key_output(name: Optional[pulumi.Input[str]] = None,
-                       opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSshKeyResult]:
+                       opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetSshKeyResult]:
     """
     Get information on a ssh key. This data source provides the name, public key,
     and fingerprint as configured on your DigitalOcean account. This is useful if
@@ -154,7 +154,7 @@ def get_ssh_key_output(name: Optional[pulumi.Input[str]] = None,
     """
     __args__ = dict()
     __args__['name'] = name
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getSshKey:getSshKey', __args__, opts=opts, typ=GetSshKeyResult)
     return __ret__.apply(lambda __response__: GetSshKeyResult(
         fingerprint=pulumi.get(__response__, 'fingerprint'),
diff --git a/sdk/python/pulumi_digitalocean/get_ssh_keys.py b/sdk/python/pulumi_digitalocean/get_ssh_keys.py
index a20050cf..22dace34 100644
--- a/sdk/python/pulumi_digitalocean/get_ssh_keys.py
+++ b/sdk/python/pulumi_digitalocean/get_ssh_keys.py
@@ -141,7 +141,7 @@ def get_ssh_keys(filters: Optional[Sequence[Union['GetSshKeysFilterArgs', 'GetSs
         ssh_keys=pulumi.get(__ret__, 'ssh_keys'))
 def get_ssh_keys_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['GetSshKeysFilterArgs', 'GetSshKeysFilterArgsDict']]]]] = None,
                         sorts: Optional[pulumi.Input[Optional[Sequence[Union['GetSshKeysSortArgs', 'GetSshKeysSortArgsDict']]]]] = None,
-                        opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSshKeysResult]:
+                        opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetSshKeysResult]:
     """
     Get information on SSH Keys for use in other resources.
 
@@ -189,7 +189,7 @@ def get_ssh_keys_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['
     __args__ = dict()
     __args__['filters'] = filters
     __args__['sorts'] = sorts
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getSshKeys:getSshKeys', __args__, opts=opts, typ=GetSshKeysResult)
     return __ret__.apply(lambda __response__: GetSshKeysResult(
         filters=pulumi.get(__response__, 'filters'),
diff --git a/sdk/python/pulumi_digitalocean/get_tag.py b/sdk/python/pulumi_digitalocean/get_tag.py
index d5db7f49..ee24dc1c 100644
--- a/sdk/python/pulumi_digitalocean/get_tag.py
+++ b/sdk/python/pulumi_digitalocean/get_tag.py
@@ -174,7 +174,7 @@ def get_tag(name: Optional[str] = None,
         volume_snapshots_count=pulumi.get(__ret__, 'volume_snapshots_count'),
         volumes_count=pulumi.get(__ret__, 'volumes_count'))
 def get_tag_output(name: Optional[pulumi.Input[str]] = None,
-                   opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetTagResult]:
+                   opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetTagResult]:
     """
     Get information on a tag. This data source provides the name as configured on
     your DigitalOcean account. This is useful if the tag name in question is not
@@ -204,7 +204,7 @@ def get_tag_output(name: Optional[pulumi.Input[str]] = None,
     """
     __args__ = dict()
     __args__['name'] = name
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getTag:getTag', __args__, opts=opts, typ=GetTagResult)
     return __ret__.apply(lambda __response__: GetTagResult(
         databases_count=pulumi.get(__response__, 'databases_count'),
diff --git a/sdk/python/pulumi_digitalocean/get_tags.py b/sdk/python/pulumi_digitalocean/get_tags.py
index adea5270..2f424066 100644
--- a/sdk/python/pulumi_digitalocean/get_tags.py
+++ b/sdk/python/pulumi_digitalocean/get_tags.py
@@ -118,7 +118,7 @@ def get_tags(filters: Optional[Sequence[Union['GetTagsFilterArgs', 'GetTagsFilte
         tags=pulumi.get(__ret__, 'tags'))
 def get_tags_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['GetTagsFilterArgs', 'GetTagsFilterArgsDict']]]]] = None,
                     sorts: Optional[pulumi.Input[Optional[Sequence[Union['GetTagsSortArgs', 'GetTagsSortArgsDict']]]]] = None,
-                    opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetTagsResult]:
+                    opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetTagsResult]:
     """
     Returns a list of tags in your DigitalOcean account, with the ability to
     filter and sort the results. If no filters are specified, all tags will be
@@ -146,7 +146,7 @@ def get_tags_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['GetT
     __args__ = dict()
     __args__['filters'] = filters
     __args__['sorts'] = sorts
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getTags:getTags', __args__, opts=opts, typ=GetTagsResult)
     return __ret__.apply(lambda __response__: GetTagsResult(
         filters=pulumi.get(__response__, 'filters'),
diff --git a/sdk/python/pulumi_digitalocean/get_volume.py b/sdk/python/pulumi_digitalocean/get_volume.py
index 22470390..b599a856 100644
--- a/sdk/python/pulumi_digitalocean/get_volume.py
+++ b/sdk/python/pulumi_digitalocean/get_volume.py
@@ -219,7 +219,7 @@ def get_volume(description: Optional[str] = None,
 def get_volume_output(description: Optional[pulumi.Input[Optional[str]]] = None,
                       name: Optional[pulumi.Input[str]] = None,
                       region: Optional[pulumi.Input[Optional[str]]] = None,
-                      opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetVolumeResult]:
+                      opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetVolumeResult]:
     """
     Get information on a volume for use in other resources. This data source provides
     all of the volumes properties as configured on your DigitalOcean account. This is
@@ -267,7 +267,7 @@ def get_volume_output(description: Optional[pulumi.Input[Optional[str]]] = None,
     __args__['description'] = description
     __args__['name'] = name
     __args__['region'] = region
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getVolume:getVolume', __args__, opts=opts, typ=GetVolumeResult)
     return __ret__.apply(lambda __response__: GetVolumeResult(
         description=pulumi.get(__response__, 'description'),
diff --git a/sdk/python/pulumi_digitalocean/get_volume_snapshot.py b/sdk/python/pulumi_digitalocean/get_volume_snapshot.py
index b28423b3..f88da2fb 100644
--- a/sdk/python/pulumi_digitalocean/get_volume_snapshot.py
+++ b/sdk/python/pulumi_digitalocean/get_volume_snapshot.py
@@ -230,7 +230,7 @@ def get_volume_snapshot_output(most_recent: Optional[pulumi.Input[Optional[bool]
                                name: Optional[pulumi.Input[Optional[str]]] = None,
                                name_regex: Optional[pulumi.Input[Optional[str]]] = None,
                                region: Optional[pulumi.Input[Optional[str]]] = None,
-                               opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetVolumeSnapshotResult]:
+                               opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetVolumeSnapshotResult]:
     """
     Volume snapshots are saved instances of a block storage volume. Use this data
     source to retrieve the ID of a DigitalOcean volume snapshot for use in other
@@ -280,7 +280,7 @@ def get_volume_snapshot_output(most_recent: Optional[pulumi.Input[Optional[bool]
     __args__['name'] = name
     __args__['nameRegex'] = name_regex
     __args__['region'] = region
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getVolumeSnapshot:getVolumeSnapshot', __args__, opts=opts, typ=GetVolumeSnapshotResult)
     return __ret__.apply(lambda __response__: GetVolumeSnapshotResult(
         created_at=pulumi.get(__response__, 'created_at'),
diff --git a/sdk/python/pulumi_digitalocean/get_vpc.py b/sdk/python/pulumi_digitalocean/get_vpc.py
index 32f0c109..d902642e 100644
--- a/sdk/python/pulumi_digitalocean/get_vpc.py
+++ b/sdk/python/pulumi_digitalocean/get_vpc.py
@@ -197,7 +197,7 @@ def get_vpc(id: Optional[str] = None,
 def get_vpc_output(id: Optional[pulumi.Input[Optional[str]]] = None,
                    name: Optional[pulumi.Input[Optional[str]]] = None,
                    region: Optional[pulumi.Input[Optional[str]]] = None,
-                   opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetVpcResult]:
+                   opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetVpcResult]:
     """
     Retrieve information about a VPC for use in other resources.
 
@@ -243,7 +243,7 @@ def get_vpc_output(id: Optional[pulumi.Input[Optional[str]]] = None,
     __args__['id'] = id
     __args__['name'] = name
     __args__['region'] = region
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getVpc:getVpc', __args__, opts=opts, typ=GetVpcResult)
     return __ret__.apply(lambda __response__: GetVpcResult(
         created_at=pulumi.get(__response__, 'created_at'),
diff --git a/sdk/python/pulumi_digitalocean/get_vpc_peering.py b/sdk/python/pulumi_digitalocean/get_vpc_peering.py
index ad66151a..388dffb6 100644
--- a/sdk/python/pulumi_digitalocean/get_vpc_peering.py
+++ b/sdk/python/pulumi_digitalocean/get_vpc_peering.py
@@ -173,7 +173,7 @@ def get_vpc_peering(id: Optional[str] = None,
 def get_vpc_peering_output(id: Optional[pulumi.Input[Optional[str]]] = None,
                            name: Optional[pulumi.Input[Optional[str]]] = None,
                            vpc_ids: Optional[pulumi.Input[Optional[Sequence[str]]]] = None,
-                           opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetVpcPeeringResult]:
+                           opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetVpcPeeringResult]:
     """
     ## Example Usage
 
@@ -234,7 +234,7 @@ def get_vpc_peering_output(id: Optional[pulumi.Input[Optional[str]]] = None,
     __args__['id'] = id
     __args__['name'] = name
     __args__['vpcIds'] = vpc_ids
-    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
+    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
     __ret__ = pulumi.runtime.invoke_output('digitalocean:index/getVpcPeering:getVpcPeering', __args__, opts=opts, typ=GetVpcPeeringResult)
     return __ret__.apply(lambda __response__: GetVpcPeeringResult(
         created_at=pulumi.get(__response__, 'created_at'),