From 6eaf2a1938ac8072d7d46d83639f1cf5d0f67768 Mon Sep 17 00:00:00 2001 From: stack72 Date: Fri, 23 Oct 2020 13:03:56 +0100 Subject: [PATCH] Upgrade to v2.0.0 of the DigitalOcean Terraform Provider --- .goreleaser.prerelease.yml | 2 +- .goreleaser.yml | 2 +- CHANGELOG.md | 4 +- Makefile | 2 +- examples/go.mod | 2 +- .../cmd/pulumi-resource-digitalocean/main.go | 4 +- .../pulumi-resource-digitalocean/schema.json | 392 +++++++++-- .../cmd/pulumi-tfgen-digitalocean/main.go | 4 +- provider/go.mod | 5 +- provider/go.sum | 530 +-------------- provider/resources.go | 8 +- sdk/dotnet/Cdn.cs | 28 +- sdk/dotnet/Certificate.cs | 20 +- sdk/dotnet/GetApp.cs | 6 +- sdk/dotnet/GetCertificate.cs | 39 +- sdk/dotnet/GetContainerRegistry.cs | 34 - sdk/dotnet/GetDomain.cs | 37 - sdk/dotnet/GetDroplet.cs | 75 --- sdk/dotnet/GetDroplets.cs | 92 --- sdk/dotnet/GetFloatingIp.cs | 38 -- sdk/dotnet/GetImage.cs | 81 +-- sdk/dotnet/GetImages.cs | 93 --- sdk/dotnet/GetKubernetesCluster.cs | 3 - sdk/dotnet/GetKubernetesVersions.cs | 3 - sdk/dotnet/GetLoadBalancer.cs | 46 +- sdk/dotnet/GetRecord.cs | 40 -- sdk/dotnet/GetRecords.cs | 94 +++ sdk/dotnet/GetSpacesBucket.cs | 33 - sdk/dotnet/GetSpacesBucketObjects.cs | 5 - sdk/dotnet/GetSshKey.cs | 43 -- sdk/dotnet/GetTag.cs | 42 -- sdk/dotnet/GetVolume.cs | 65 -- sdk/dotnet/GetVpc.cs | 60 -- sdk/dotnet/Inputs/GetRecordsFilterArgs.cs | 55 ++ sdk/dotnet/Inputs/GetRecordsSortArgs.cs | 32 + .../Inputs/LoadBalancerForwardingRuleArgs.cs | 8 +- .../LoadBalancerForwardingRuleGetArgs.cs | 8 +- sdk/dotnet/KubernetesCluster.cs | 97 --- sdk/dotnet/LoadBalancer.cs | 98 +++ sdk/dotnet/Outputs/GetImagesImageResult.cs | 4 + ... => GetLoadBalancerStickySessionResult.cs} | 4 +- sdk/dotnet/Outputs/GetRecordsFilterResult.cs | 55 ++ sdk/dotnet/Outputs/GetRecordsRecordResult.cs | 68 ++ sdk/dotnet/Outputs/GetRecordsSortResult.cs | 36 + .../Outputs/LoadBalancerForwardingRule.cs | 9 +- sdk/dotnet/Project.cs | 73 -- sdk/dotnet/ProjectResources.cs | 49 -- sdk/dotnet/SpacesBucketObject.cs | 76 +-- sdk/dotnet/SshKey.cs | 2 +- sdk/go.mod | 2 +- sdk/go/digitalocean/cdn.go | 38 +- sdk/go/digitalocean/certificate.go | 16 +- sdk/go/digitalocean/getApp.go | 2 +- sdk/go/digitalocean/getCertificate.go | 32 +- sdk/go/digitalocean/getContainerRegistry.go | 32 - sdk/go/digitalocean/getDomain.go | 33 - sdk/go/digitalocean/getDroplet.go | 82 --- sdk/go/digitalocean/getDroplets.go | 84 --- sdk/go/digitalocean/getFloatingIp.go | 35 - sdk/go/digitalocean/getImage.go | 91 +-- sdk/go/digitalocean/getImages.go | 85 --- sdk/go/digitalocean/getKubernetesCluster.go | 1 - sdk/go/digitalocean/getKubernetesVersions.go | 1 - sdk/go/digitalocean/getLoadBalancer.go | 52 +- sdk/go/digitalocean/getRecord.go | 34 - sdk/go/digitalocean/getRecords.go | 41 ++ sdk/go/digitalocean/getSpacesBucket.go | 29 - sdk/go/digitalocean/getSpacesBucketObjects.go | 3 - sdk/go/digitalocean/getSshKey.go | 42 -- sdk/go/digitalocean/getTag.go | 41 -- sdk/go/digitalocean/getVolume.go | 73 -- sdk/go/digitalocean/getVpc.go | 66 -- sdk/go/digitalocean/kubernetesCluster.go | 107 --- sdk/go/digitalocean/project.go | 80 --- sdk/go/digitalocean/projectResources.go | 55 -- sdk/go/digitalocean/pulumiTypes.go | 635 +++++++++++++++++- sdk/go/digitalocean/spacesBucketObject.go | 90 +-- sdk/nodejs/cdn.ts | 30 +- sdk/nodejs/certificate.ts | 18 +- sdk/nodejs/getApp.ts | 2 +- sdk/nodejs/getCertificate.ts | 22 +- sdk/nodejs/getContainerRegistry.ts | 22 - sdk/nodejs/getDomain.ts | 23 - sdk/nodejs/getDroplet.ts | 45 -- sdk/nodejs/getDroplets.ts | 52 -- sdk/nodejs/getFloatingIp.ts | 24 - sdk/nodejs/getImage.ts | 49 +- sdk/nodejs/getImages.ts | 53 -- sdk/nodejs/getKubernetesCluster.ts | 3 - sdk/nodejs/getKubernetesVersions.ts | 3 - sdk/nodejs/getLoadBalancer.ts | 26 +- sdk/nodejs/getRecord.ts | 24 - sdk/nodejs/getRecords.ts | 60 ++ sdk/nodejs/getSpacesBucket.ts | 19 - sdk/nodejs/getSpacesBucketObjects.ts | 25 - sdk/nodejs/getSshKey.ts | 27 - sdk/nodejs/getTag.ts | 26 - sdk/nodejs/getVolume.ts | 43 -- sdk/nodejs/getVpc.ts | 39 -- sdk/nodejs/index.ts | 1 + sdk/nodejs/kubernetesCluster.ts | 70 -- sdk/nodejs/loadBalancer.ts | 63 ++ sdk/nodejs/project.ts | 53 -- sdk/nodejs/projectResources.ts | 36 - sdk/nodejs/spacesBucketObject.ts | 56 +- sdk/nodejs/sshKey.ts | 2 +- sdk/nodejs/tsconfig.json | 1 + sdk/nodejs/types/input.ts | 45 +- sdk/nodejs/types/output.ts | 67 +- sdk/python/pulumi_digitalocean/__init__.py | 1 + sdk/python/pulumi_digitalocean/_inputs.py | 146 +++- sdk/python/pulumi_digitalocean/_tables.py | 2 + sdk/python/pulumi_digitalocean/cdn.py | 27 +- sdk/python/pulumi_digitalocean/certificate.py | 22 +- sdk/python/pulumi_digitalocean/get_app.py | 16 +- .../pulumi_digitalocean/get_certificate.py | 35 +- .../get_container_registry.py | 20 +- sdk/python/pulumi_digitalocean/get_domain.py | 21 +- sdk/python/pulumi_digitalocean/get_droplet.py | 39 +- .../pulumi_digitalocean/get_droplets.py | 48 +- .../pulumi_digitalocean/get_floating_ip.py | 22 +- sdk/python/pulumi_digitalocean/get_image.py | 53 +- sdk/python/pulumi_digitalocean/get_images.py | 49 +- .../get_kubernetes_cluster.py | 3 +- .../get_kubernetes_versions.py | 3 - .../pulumi_digitalocean/get_load_balancer.py | 42 +- sdk/python/pulumi_digitalocean/get_record.py | 22 +- sdk/python/pulumi_digitalocean/get_records.py | 113 ++++ .../pulumi_digitalocean/get_spaces_bucket.py | 17 +- .../get_spaces_bucket_objects.py | 21 +- sdk/python/pulumi_digitalocean/get_ssh_key.py | 24 +- sdk/python/pulumi_digitalocean/get_tag.py | 23 +- sdk/python/pulumi_digitalocean/get_volume.py | 37 +- sdk/python/pulumi_digitalocean/get_vpc.py | 34 +- .../pulumi_digitalocean/kubernetes_cluster.py | 64 +- .../pulumi_digitalocean/load_balancer.py | 58 ++ sdk/python/pulumi_digitalocean/outputs.py | 215 +++++- sdk/python/pulumi_digitalocean/project.py | 50 +- .../pulumi_digitalocean/project_resources.py | 32 +- .../spaces_bucket_object.py | 55 +- sdk/python/pulumi_digitalocean/ssh_key.py | 2 +- 141 files changed, 2554 insertions(+), 4279 deletions(-) create mode 100644 sdk/dotnet/GetRecords.cs create mode 100644 sdk/dotnet/Inputs/GetRecordsFilterArgs.cs create mode 100644 sdk/dotnet/Inputs/GetRecordsSortArgs.cs rename sdk/dotnet/Outputs/{GetLoadBalancerStickySessionsResult.cs => GetLoadBalancerStickySessionResult.cs} (87%) create mode 100644 sdk/dotnet/Outputs/GetRecordsFilterResult.cs create mode 100644 sdk/dotnet/Outputs/GetRecordsRecordResult.cs create mode 100644 sdk/dotnet/Outputs/GetRecordsSortResult.cs create mode 100644 sdk/go/digitalocean/getRecords.go create mode 100644 sdk/nodejs/getRecords.ts create mode 100644 sdk/python/pulumi_digitalocean/get_records.py diff --git a/.goreleaser.prerelease.yml b/.goreleaser.prerelease.yml index a4e4a963..c970a1cf 100644 --- a/.goreleaser.prerelease.yml +++ b/.goreleaser.prerelease.yml @@ -24,7 +24,7 @@ builds: - windows - linux ldflags: - - -X github.com/pulumi/pulumi-digitalocean/provider/v2/pkg/version.Version={{.Tag}} + - -X github.com/pulumi/pulumi-digitalocean/provider/v3/pkg/version.Version={{.Tag}} main: ./cmd/pulumi-resource-digitalocean/ changelog: skip: true diff --git a/.goreleaser.yml b/.goreleaser.yml index 16c8b338..8b5290be 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -24,7 +24,7 @@ builds: - windows - linux ldflags: - - -X github.com/pulumi/pulumi-digitalocean/provider/v2/pkg/version.Version={{.Tag}} + - -X github.com/pulumi/pulumi-digitalocean/provider/v3/pkg/version.Version={{.Tag}} main: ./cmd/pulumi-resource-digitalocean/ changelog: skip: true diff --git a/CHANGELOG.md b/CHANGELOG.md index 7345571c..499c6130 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,8 @@ CHANGELOG ========= ## HEAD (Unreleased) -* Upgrade to pulumi-terraform-bridge v2.11.0 -* Upgrade to Pulumi v2.12.0 +* Upgrade to v2.0.0 of the DigitalOcean Terraform Provider +* Upgrade to Pulumi v2.12.0 and pulumi-terraform-bridge v2.11.0 * Improving the accuracy of previews leading to a more accurate understanding of what will actually change rather than assuming all output properties will change --- diff --git a/Makefile b/Makefile index 6f45d7d3..9ddaf49b 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ ORG := pulumi PROJECT := github.com/${ORG}/pulumi-${PACK} NODE_MODULE_NAME := @pulumi/${PACK} TF_NAME := ${PACK} -PROVIDER_PATH := provider/v2 +PROVIDER_PATH := provider/v3 VERSION_PATH := ${PROVIDER_PATH}/pkg/version.Version TFGEN := pulumi-tfgen-${PACK} diff --git a/examples/go.mod b/examples/go.mod index 74331030..589c7e1a 100644 --- a/examples/go.mod +++ b/examples/go.mod @@ -1,4 +1,4 @@ -module github.com/pulumi/pulumi-digitalocean/examples/v2 +module github.com/pulumi/pulumi-digitalocean/examples/v3 go 1.14 diff --git a/provider/cmd/pulumi-resource-digitalocean/main.go b/provider/cmd/pulumi-resource-digitalocean/main.go index 36149385..fac3036f 100644 --- a/provider/cmd/pulumi-resource-digitalocean/main.go +++ b/provider/cmd/pulumi-resource-digitalocean/main.go @@ -17,8 +17,8 @@ package main import ( - digitalocean "github.com/pulumi/pulumi-digitalocean/provider/v2" - "github.com/pulumi/pulumi-digitalocean/provider/v2/pkg/version" + digitalocean "github.com/pulumi/pulumi-digitalocean/provider/v3" + "github.com/pulumi/pulumi-digitalocean/provider/v3/pkg/version" "github.com/pulumi/pulumi-terraform-bridge/v2/pkg/tfbridge" ) diff --git a/provider/cmd/pulumi-resource-digitalocean/schema.json b/provider/cmd/pulumi-resource-digitalocean/schema.json index 1e416e17..326cb551 100644 --- a/provider/cmd/pulumi-resource-digitalocean/schema.json +++ b/provider/cmd/pulumi-resource-digitalocean/schema.json @@ -1633,7 +1633,17 @@ "properties": { "certificateId": { "type": "string", - "description": "The ID of the TLS certificate to be used for SSL termination.\n", + "description": "**Deprecated** The ID of the TLS certificate to be used for SSL termination.\n", + "deprecationMessage": "Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead.", + "language": { + "python": { + "mapCase": false + } + } + }, + "certificateName": { + "type": "string", + "description": "The unique name of the TLS certificate to be used for SSL termination.\n", "language": { "python": { "mapCase": false @@ -1692,7 +1702,19 @@ "entryProtocol", "targetPort", "targetProtocol" - ] + ], + "language": { + "nodejs": { + "requiredOutputs": [ + "certificateId", + "certificateName", + "entryPort", + "entryProtocol", + "targetPort", + "targetProtocol" + ] + } + } }, "digitalocean:index/LoadBalancerHealthcheck:LoadBalancerHealthcheck": { "properties": { @@ -3479,6 +3501,14 @@ } } }, + "description": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, "distribution": { "type": "string", "description": "The name of the distribution of the OS of the image.\n- `min_disk_size`: The minimum 'disk' required for the image.\n- `size_gigabytes`: The size of the image in GB.\n", @@ -3596,6 +3626,7 @@ "type": "object", "required": [ "created", + "description", "distribution", "errorMessage", "id", @@ -4066,7 +4097,7 @@ } } }, - "digitalocean:index/getLoadBalancerStickySessions:getLoadBalancerStickySessions": { + "digitalocean:index/getLoadBalancerStickySession:getLoadBalancerStickySession": { "properties": { "cookieName": { "type": "string", @@ -4303,6 +4334,192 @@ "key" ] }, + "digitalocean:index/getRecordsFilter:getRecordsFilter": { + "properties": { + "all": { + "type": "boolean", + "description": "Set to `true` to require that a field match all of the `values` instead of just one or more of\nthem. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure\nthat all of the `values` are present in the list or set.\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "key": { + "type": "string", + "description": "Filter the projects by this key. This may be one of `domain`, `flags`, `name`, `port`,\n`priority`, `tag`, `ttl`, `type`, `value`, or `weight`.\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "matchBy": { + "type": "string", + "description": "One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to\nmatch by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as\nsubstrings to find within the string field.\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "values": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of values to match against the `key` field. Only retrieves projects\nwhere the `key` field takes on one or more of the values provided here.\n", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "key", + "values" + ] + }, + "digitalocean:index/getRecordsRecord:getRecordsRecord": { + "properties": { + "domain": { + "type": "string", + "description": "The domain name to search for DNS records\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "flags": { + "type": "integer", + "language": { + "python": { + "mapCase": false + } + } + }, + "id": { + "type": "integer", + "language": { + "python": { + "mapCase": false + } + } + }, + "name": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "port": { + "type": "integer", + "language": { + "python": { + "mapCase": false + } + } + }, + "priority": { + "type": "integer", + "language": { + "python": { + "mapCase": false + } + } + }, + "tag": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "ttl": { + "type": "integer", + "language": { + "python": { + "mapCase": false + } + } + }, + "type": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "value": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "weight": { + "type": "integer", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "domain", + "flags", + "id", + "name", + "port", + "priority", + "tag", + "ttl", + "type", + "value", + "weight" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, + "digitalocean:index/getRecordsSort:getRecordsSort": { + "properties": { + "direction": { + "type": "string", + "description": "The sort direction. This may be either `asc` or `desc`.\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "key": { + "type": "string", + "description": "Sort the projects by this key. This may be one of `domain`, `flags`, `name`, `port`,\n`priority`, `tag`, `ttl`, `type`, `value`, or `weight`.\n", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "key" + ] + }, "digitalocean:index/getRegionsFilter:getRegionsFilter": { "properties": { "all": { @@ -5032,11 +5249,16 @@ } }, "digitalocean:index/cdn:Cdn": { - "description": "Provides a DigitalOcean CDN Endpoint resource for use with Spaces.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Basic Example\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\n// Create a new Spaces Bucket\nconst mybucket = new digitalocean.SpacesBucket(\"mybucket\", {\n region: \"sfo2\",\n acl: \"public-read\",\n});\n// Add a CDN endpoint to the Spaces Bucket\nconst mycdn = new digitalocean.Cdn(\"mycdn\", {origin: mybucket.bucketDomainName});\nexport const fqdn = mycdn.endpoint;\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\n# Create a new Spaces Bucket\nmybucket = digitalocean.SpacesBucket(\"mybucket\",\n region=\"sfo2\",\n acl=\"public-read\")\n# Add a CDN endpoint to the Spaces Bucket\nmycdn = digitalocean.Cdn(\"mycdn\", origin=mybucket.bucket_domain_name)\npulumi.export(\"fqdn\", mycdn.endpoint)\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n // Create a new Spaces Bucket\n var mybucket = new DigitalOcean.SpacesBucket(\"mybucket\", new DigitalOcean.SpacesBucketArgs\n {\n Region = \"sfo2\",\n Acl = \"public-read\",\n });\n // Add a CDN endpoint to the Spaces Bucket\n var mycdn = new DigitalOcean.Cdn(\"mycdn\", new DigitalOcean.CdnArgs\n {\n Origin = mybucket.BucketDomainName,\n });\n this.Fqdn = mycdn.Endpoint;\n }\n\n [Output(\"fqdn\")]\n public Output\u003cstring\u003e Fqdn { get; set; }\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmybucket, err := digitalocean.NewSpacesBucket(ctx, \"mybucket\", \u0026digitalocean.SpacesBucketArgs{\n\t\t\tRegion: pulumi.String(\"sfo2\"),\n\t\t\tAcl: pulumi.String(\"public-read\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmycdn, err := digitalocean.NewCdn(ctx, \"mycdn\", \u0026digitalocean.CdnArgs{\n\t\t\tOrigin: mybucket.BucketDomainName,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"fqdn\", mycdn.Endpoint)\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% example %}}\n### Custom Sub-Domain Example\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\n// Create a new Spaces Bucket\nconst mybucket = new digitalocean.SpacesBucket(\"mybucket\", {\n region: \"sfo2\",\n acl: \"public-read\",\n});\n// Create a DigitalOcean managed Let's Encrypt Certificate\nconst cert = new digitalocean.Certificate(\"cert\", {\n type: \"lets_encrypt\",\n domains: [\"static.example.com\"],\n});\n// Add a CDN endpoint with a custom sub-domain to the Spaces Bucket\nconst mycdn = new digitalocean.Cdn(\"mycdn\", {\n origin: mybucket.bucketDomainName,\n customDomain: \"static.example.com\",\n certificateId: cert.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\n# Create a new Spaces Bucket\nmybucket = digitalocean.SpacesBucket(\"mybucket\",\n region=\"sfo2\",\n acl=\"public-read\")\n# Create a DigitalOcean managed Let's Encrypt Certificate\ncert = digitalocean.Certificate(\"cert\",\n type=\"lets_encrypt\",\n domains=[\"static.example.com\"])\n# Add a CDN endpoint with a custom sub-domain to the Spaces Bucket\nmycdn = digitalocean.Cdn(\"mycdn\",\n origin=mybucket.bucket_domain_name,\n custom_domain=\"static.example.com\",\n certificate_id=cert.id)\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n // Create a new Spaces Bucket\n var mybucket = new DigitalOcean.SpacesBucket(\"mybucket\", new DigitalOcean.SpacesBucketArgs\n {\n Region = \"sfo2\",\n Acl = \"public-read\",\n });\n // Create a DigitalOcean managed Let's Encrypt Certificate\n var cert = new DigitalOcean.Certificate(\"cert\", new DigitalOcean.CertificateArgs\n {\n Type = \"lets_encrypt\",\n Domains = \n {\n \"static.example.com\",\n },\n });\n // Add a CDN endpoint with a custom sub-domain to the Spaces Bucket\n var mycdn = new DigitalOcean.Cdn(\"mycdn\", new DigitalOcean.CdnArgs\n {\n Origin = mybucket.BucketDomainName,\n CustomDomain = \"static.example.com\",\n CertificateId = cert.Id,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmybucket, err := digitalocean.NewSpacesBucket(ctx, \"mybucket\", \u0026digitalocean.SpacesBucketArgs{\n\t\t\tRegion: pulumi.String(\"sfo2\"),\n\t\t\tAcl: pulumi.String(\"public-read\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcert, err := digitalocean.NewCertificate(ctx, \"cert\", \u0026digitalocean.CertificateArgs{\n\t\t\tType: pulumi.String(\"lets_encrypt\"),\n\t\t\tDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"static.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_, err = digitalocean.NewCdn(ctx, \"mycdn\", \u0026digitalocean.CdnArgs{\n\t\t\tOrigin: mybucket.BucketDomainName,\n\t\t\tCustomDomain: pulumi.String(\"static.example.com\"),\n\t\t\tCertificateId: cert.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{{% /example %}}\n{{% /examples %}}", + "description": "Provides a DigitalOcean CDN Endpoint resource for use with Spaces.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Basic Example\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\n// Create a new Spaces Bucket\nconst mybucket = new digitalocean.SpacesBucket(\"mybucket\", {\n region: \"sfo2\",\n acl: \"public-read\",\n});\n// Add a CDN endpoint to the Spaces Bucket\nconst mycdn = new digitalocean.Cdn(\"mycdn\", {origin: mybucket.bucketDomainName});\nexport const fqdn = mycdn.endpoint;\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\n# Create a new Spaces Bucket\nmybucket = digitalocean.SpacesBucket(\"mybucket\",\n region=\"sfo2\",\n acl=\"public-read\")\n# Add a CDN endpoint to the Spaces Bucket\nmycdn = digitalocean.Cdn(\"mycdn\", origin=mybucket.bucket_domain_name)\npulumi.export(\"fqdn\", mycdn.endpoint)\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n // Create a new Spaces Bucket\n var mybucket = new DigitalOcean.SpacesBucket(\"mybucket\", new DigitalOcean.SpacesBucketArgs\n {\n Region = \"sfo2\",\n Acl = \"public-read\",\n });\n // Add a CDN endpoint to the Spaces Bucket\n var mycdn = new DigitalOcean.Cdn(\"mycdn\", new DigitalOcean.CdnArgs\n {\n Origin = mybucket.BucketDomainName,\n });\n this.Fqdn = mycdn.Endpoint;\n }\n\n [Output(\"fqdn\")]\n public Output\u003cstring\u003e Fqdn { get; set; }\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmybucket, err := digitalocean.NewSpacesBucket(ctx, \"mybucket\", \u0026digitalocean.SpacesBucketArgs{\n\t\t\tRegion: pulumi.String(\"sfo2\"),\n\t\t\tAcl: pulumi.String(\"public-read\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmycdn, err := digitalocean.NewCdn(ctx, \"mycdn\", \u0026digitalocean.CdnArgs{\n\t\t\tOrigin: mybucket.BucketDomainName,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"fqdn\", mycdn.Endpoint)\n\t\treturn nil\n\t})\n}\n```\n{{% /example %}}\n{{% example %}}\n### Custom Sub-Domain Example\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\n// Create a new Spaces Bucket\nconst mybucket = new digitalocean.SpacesBucket(\"mybucket\", {\n region: \"sfo2\",\n acl: \"public-read\",\n});\n// Create a DigitalOcean managed Let's Encrypt Certificate\nconst cert = new digitalocean.Certificate(\"cert\", {\n type: \"lets_encrypt\",\n domains: [\"static.example.com\"],\n});\n// Add a CDN endpoint with a custom sub-domain to the Spaces Bucket\nconst mycdn = new digitalocean.Cdn(\"mycdn\", {\n origin: mybucket.bucketDomainName,\n customDomain: \"static.example.com\",\n certificateName: cert.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\n# Create a new Spaces Bucket\nmybucket = digitalocean.SpacesBucket(\"mybucket\",\n region=\"sfo2\",\n acl=\"public-read\")\n# Create a DigitalOcean managed Let's Encrypt Certificate\ncert = digitalocean.Certificate(\"cert\",\n type=\"lets_encrypt\",\n domains=[\"static.example.com\"])\n# Add a CDN endpoint with a custom sub-domain to the Spaces Bucket\nmycdn = digitalocean.Cdn(\"mycdn\",\n origin=mybucket.bucket_domain_name,\n custom_domain=\"static.example.com\",\n certificate_name=cert.name)\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n // Create a new Spaces Bucket\n var mybucket = new DigitalOcean.SpacesBucket(\"mybucket\", new DigitalOcean.SpacesBucketArgs\n {\n Region = \"sfo2\",\n Acl = \"public-read\",\n });\n // Create a DigitalOcean managed Let's Encrypt Certificate\n var cert = new DigitalOcean.Certificate(\"cert\", new DigitalOcean.CertificateArgs\n {\n Type = \"lets_encrypt\",\n Domains = \n {\n \"static.example.com\",\n },\n });\n // Add a CDN endpoint with a custom sub-domain to the Spaces Bucket\n var mycdn = new DigitalOcean.Cdn(\"mycdn\", new DigitalOcean.CdnArgs\n {\n Origin = mybucket.BucketDomainName,\n CustomDomain = \"static.example.com\",\n CertificateName = cert.Name,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmybucket, err := digitalocean.NewSpacesBucket(ctx, \"mybucket\", \u0026digitalocean.SpacesBucketArgs{\n\t\t\tRegion: pulumi.String(\"sfo2\"),\n\t\t\tAcl: pulumi.String(\"public-read\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcert, err := digitalocean.NewCertificate(ctx, \"cert\", \u0026digitalocean.CertificateArgs{\n\t\t\tType: pulumi.String(\"lets_encrypt\"),\n\t\t\tDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"static.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_, err = digitalocean.NewCdn(ctx, \"mycdn\", \u0026digitalocean.CdnArgs{\n\t\t\tOrigin: mybucket.BucketDomainName,\n\t\t\tCustomDomain: pulumi.String(\"static.example.com\"),\n\t\t\tCertificateName: cert.Name,\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{{% /example %}}\n{{% /examples %}}", "properties": { "certificateId": { "type": "string", - "description": "The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.\n" + "description": "**Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.\n", + "deprecationMessage": "Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead." + }, + "certificateName": { + "type": "string", + "description": "The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.\n" }, "createdAt": { "type": "string", @@ -5060,6 +5282,8 @@ } }, "required": [ + "certificateId", + "certificateName", "createdAt", "endpoint", "origin", @@ -5068,7 +5292,12 @@ "inputProperties": { "certificateId": { "type": "string", - "description": "The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.\n" + "description": "**Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.\n", + "deprecationMessage": "Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead." + }, + "certificateName": { + "type": "string", + "description": "The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.\n" }, "customDomain": { "type": "string", @@ -5091,7 +5320,12 @@ "properties": { "certificateId": { "type": "string", - "description": "The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.\n" + "description": "**Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.\n", + "deprecationMessage": "Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead." + }, + "certificateName": { + "type": "string", + "description": "The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.\n" }, "createdAt": { "type": "string", @@ -5118,7 +5352,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{{% examples %}}\n## Example Usage\n{{% example %}}\n### Custom Certificate\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * from \"fs\";\n\nconst cert = new digitalocean.Certificate(\"cert\", {\n type: \"custom\",\n privateKey: fs.readFileSync(\"/Users/myuser/certs/privkey.pem\"),\n leafCertificate: fs.readFileSync(\"/Users/myuser/certs/cert.pem\"),\n certificateChain: fs.readFileSync(\"/Users/myuser/certs/fullchain.pem\"),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ncert = digitalocean.Certificate(\"cert\",\n type=\"custom\",\n private_key=(lambda path: open(path).read())(\"/Users/myuser/certs/privkey.pem\"),\n leaf_certificate=(lambda path: open(path).read())(\"/Users/myuser/certs/cert.pem\"),\n certificate_chain=(lambda path: open(path).read())(\"/Users/myuser/certs/fullchain.pem\"))\n```\n```csharp\nusing System.IO;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var cert = new DigitalOcean.Certificate(\"cert\", new DigitalOcean.CertificateArgs\n {\n Type = \"custom\",\n PrivateKey = File.ReadAllText(\"/Users/myuser/certs/privkey.pem\"),\n LeafCertificate = File.ReadAllText(\"/Users/myuser/certs/cert.pem\"),\n CertificateChain = File.ReadAllText(\"/Users/myuser/certs/fullchain.pem\"),\n });\n }\n\n}\n```\n{{% /example %}}\n{{% example %}}\n### Let's Encrypt Certificate\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst cert = new digitalocean.Certificate(\"cert\", {\n domains: [\"example.com\"],\n type: \"lets_encrypt\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ncert = digitalocean.Certificate(\"cert\",\n domains=[\"example.com\"],\n type=\"lets_encrypt\")\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var cert = new DigitalOcean.Certificate(\"cert\", new DigitalOcean.CertificateArgs\n {\n Domains = \n {\n \"example.com\",\n },\n Type = \"lets_encrypt\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/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\tDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"lets_encrypt\"),\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{{% /example %}}\n{{% example %}}\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```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst cert = new digitalocean.Certificate(\"cert\", {\n type: \"lets_encrypt\",\n domains: [\"example.com\"],\n});\n// Create a new Load Balancer with TLS termination\nconst _public = new digitalocean.LoadBalancer(\"public\", {\n region: \"nyc3\",\n dropletTag: \"backend\",\n forwardingRules: [{\n entryPort: 443,\n entryProtocol: \"https\",\n targetPort: 80,\n targetProtocol: \"http\",\n certificateId: cert.id,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ncert = digitalocean.Certificate(\"cert\",\n type=\"lets_encrypt\",\n domains=[\"example.com\"])\n# Create a new Load Balancer with TLS termination\npublic = digitalocean.LoadBalancer(\"public\",\n region=\"nyc3\",\n droplet_tag=\"backend\",\n forwarding_rules=[digitalocean.LoadBalancerForwardingRuleArgs(\n entry_port=443,\n entry_protocol=\"https\",\n target_port=80,\n target_protocol=\"http\",\n certificate_id=cert.id,\n )])\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var cert = new DigitalOcean.Certificate(\"cert\", new DigitalOcean.CertificateArgs\n {\n Type = \"lets_encrypt\",\n Domains = \n {\n \"example.com\",\n },\n });\n // Create a new Load Balancer with TLS termination\n var @public = new DigitalOcean.LoadBalancer(\"public\", new DigitalOcean.LoadBalancerArgs\n {\n Region = \"nyc3\",\n DropletTag = \"backend\",\n ForwardingRules = \n {\n new DigitalOcean.Inputs.LoadBalancerForwardingRuleArgs\n {\n EntryPort = 443,\n EntryProtocol = \"https\",\n TargetPort = 80,\n TargetProtocol = \"http\",\n CertificateId = cert.Id,\n },\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/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\tType: pulumi.String(\"lets_encrypt\"),\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_, err = digitalocean.NewLoadBalancer(ctx, \"public\", \u0026digitalocean.LoadBalancerArgs{\n\t\t\tRegion: pulumi.String(\"nyc3\"),\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\tCertificateId: cert.ID(),\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{{% /example %}}\n{{% /examples %}}", + "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{{% examples %}}\n## Example Usage\n{{% example %}}\n### Custom Certificate\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * from \"fs\";\n\nconst cert = new digitalocean.Certificate(\"cert\", {\n type: \"custom\",\n privateKey: fs.readFileSync(\"/Users/terraform/certs/privkey.pem\"),\n leafCertificate: fs.readFileSync(\"/Users/terraform/certs/cert.pem\"),\n certificateChain: fs.readFileSync(\"/Users/terraform/certs/fullchain.pem\"),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ncert = digitalocean.Certificate(\"cert\",\n type=\"custom\",\n private_key=(lambda path: open(path).read())(\"/Users/terraform/certs/privkey.pem\"),\n leaf_certificate=(lambda path: open(path).read())(\"/Users/terraform/certs/cert.pem\"),\n certificate_chain=(lambda path: open(path).read())(\"/Users/terraform/certs/fullchain.pem\"))\n```\n```csharp\nusing System.IO;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var cert = new DigitalOcean.Certificate(\"cert\", new DigitalOcean.CertificateArgs\n {\n Type = \"custom\",\n PrivateKey = File.ReadAllText(\"/Users/terraform/certs/privkey.pem\"),\n LeafCertificate = File.ReadAllText(\"/Users/terraform/certs/cert.pem\"),\n CertificateChain = File.ReadAllText(\"/Users/terraform/certs/fullchain.pem\"),\n });\n }\n\n}\n```\n{{% /example %}}\n{{% example %}}\n### Let's Encrypt Certificate\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst cert = new digitalocean.Certificate(\"cert\", {\n domains: [\"example.com\"],\n type: \"lets_encrypt\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ncert = digitalocean.Certificate(\"cert\",\n domains=[\"example.com\"],\n type=\"lets_encrypt\")\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var cert = new DigitalOcean.Certificate(\"cert\", new DigitalOcean.CertificateArgs\n {\n Domains = \n {\n \"example.com\",\n },\n Type = \"lets_encrypt\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/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\tDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"lets_encrypt\"),\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{{% /example %}}\n{{% example %}}\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```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst cert = new digitalocean.Certificate(\"cert\", {\n type: \"lets_encrypt\",\n domains: [\"example.com\"],\n});\n// Create a new Load Balancer with TLS termination\nconst _public = new digitalocean.LoadBalancer(\"public\", {\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});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ncert = digitalocean.Certificate(\"cert\",\n type=\"lets_encrypt\",\n domains=[\"example.com\"])\n# Create a new Load Balancer with TLS termination\npublic = digitalocean.LoadBalancer(\"public\",\n region=\"nyc3\",\n droplet_tag=\"backend\",\n forwarding_rules=[digitalocean.LoadBalancerForwardingRuleArgs(\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 Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var cert = new DigitalOcean.Certificate(\"cert\", new DigitalOcean.CertificateArgs\n {\n Type = \"lets_encrypt\",\n Domains = \n {\n \"example.com\",\n },\n });\n // Create a new Load Balancer with TLS termination\n var @public = new DigitalOcean.LoadBalancer(\"public\", new DigitalOcean.LoadBalancerArgs\n {\n Region = \"nyc3\",\n DropletTag = \"backend\",\n ForwardingRules = \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```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/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\tType: pulumi.String(\"lets_encrypt\"),\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_, err = digitalocean.NewLoadBalancer(ctx, \"public\", \u0026digitalocean.LoadBalancerArgs{\n\t\t\tRegion: pulumi.String(\"nyc3\"),\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{{% /example %}}\n{{% /examples %}}", "properties": { "certificateChain": { "type": "string", @@ -5158,13 +5392,18 @@ "type": "string", "$ref": "#/types/digitalocean:index:CertificateType", "description": "The type of certificate to provision. Can be either\n`custom` or `lets_encrypt`. Defaults to `custom`.\n" + }, + "uuid": { + "type": "string", + "description": "The UUID of the certificate\n" } }, "required": [ "name", "notAfter", "sha1Fingerprint", - "state" + "state", + "uuid" ], "inputProperties": { "certificateChain": { @@ -5237,6 +5476,10 @@ "type": "string", "$ref": "#/types/digitalocean:index:CertificateType", "description": "The type of certificate to provision. Can be either\n`custom` or `lets_encrypt`. Defaults to `custom`.\n" + }, + "uuid": { + "type": "string", + "description": "The UUID of the certificate\n" } }, "type": "object" @@ -6830,7 +7073,6 @@ } }, "digitalocean:index/kubernetesCluster:KubernetesCluster": { - "description": "Provides a DigitalOcean Kubernetes cluster resource. This can be used to create, delete, and modify clusters. For more information see the [official documentation](https://www.digitalocean.com/docs/kubernetes/).\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Basic Example\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foo = new digitalocean.KubernetesCluster(\"foo\", {\n nodePool: {\n name: \"worker-pool\",\n nodeCount: 3,\n size: \"s-2vcpu-2gb\",\n },\n region: \"nyc1\",\n // Grab the latest version slug from `doctl kubernetes options versions`\n version: \"1.15.5-do.1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoo = digitalocean.KubernetesCluster(\"foo\",\n node_pool=digitalocean.KubernetesClusterNodePoolArgs(\n name=\"worker-pool\",\n node_count=3,\n size=\"s-2vcpu-2gb\",\n ),\n region=\"nyc1\",\n version=\"1.15.5-do.1\")\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var foo = new DigitalOcean.KubernetesCluster(\"foo\", new DigitalOcean.KubernetesClusterArgs\n {\n NodePool = new DigitalOcean.Inputs.KubernetesClusterNodePoolArgs\n {\n Name = \"worker-pool\",\n NodeCount = 3,\n Size = \"s-2vcpu-2gb\",\n },\n Region = \"nyc1\",\n Version = \"1.15.5-do.1\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewKubernetesCluster(ctx, \"foo\", \u0026digitalocean.KubernetesClusterArgs{\n\t\t\tNodePool: \u0026digitalocean.KubernetesClusterNodePoolArgs{\n\t\t\t\tName: pulumi.String(\"worker-pool\"),\n\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\tSize: pulumi.String(\"s-2vcpu-2gb\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"nyc1\"),\n\t\t\tVersion: pulumi.String(\"1.15.5-do.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{{% /example %}}\n{{% example %}}\n### Autoscaling Example\n\nNode pools may also be configured to [autoscale](https://www.digitalocean.com/docs/kubernetes/how-to/autoscale/).\nFor example:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foo = new digitalocean.KubernetesCluster(\"foo\", {\n nodePool: {\n autoScale: true,\n maxNodes: 5,\n minNodes: 1,\n name: \"autoscale-worker-pool\",\n size: \"s-2vcpu-2gb\",\n },\n region: \"nyc1\",\n version: \"1.15.5-do.1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoo = digitalocean.KubernetesCluster(\"foo\",\n node_pool=digitalocean.KubernetesClusterNodePoolArgs(\n auto_scale=True,\n max_nodes=5,\n min_nodes=1,\n name=\"autoscale-worker-pool\",\n size=\"s-2vcpu-2gb\",\n ),\n region=\"nyc1\",\n version=\"1.15.5-do.1\")\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var foo = new DigitalOcean.KubernetesCluster(\"foo\", new DigitalOcean.KubernetesClusterArgs\n {\n NodePool = new DigitalOcean.Inputs.KubernetesClusterNodePoolArgs\n {\n AutoScale = true,\n MaxNodes = 5,\n MinNodes = 1,\n Name = \"autoscale-worker-pool\",\n Size = \"s-2vcpu-2gb\",\n },\n Region = \"nyc1\",\n Version = \"1.15.5-do.1\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewKubernetesCluster(ctx, \"foo\", \u0026digitalocean.KubernetesClusterArgs{\n\t\t\tNodePool: \u0026digitalocean.KubernetesClusterNodePoolArgs{\n\t\t\t\tAutoScale: pulumi.Bool(true),\n\t\t\t\tMaxNodes: pulumi.Int(5),\n\t\t\t\tMinNodes: pulumi.Int(1),\n\t\t\t\tName: pulumi.String(\"autoscale-worker-pool\"),\n\t\t\t\tSize: pulumi.String(\"s-2vcpu-2gb\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"nyc1\"),\n\t\t\tVersion: pulumi.String(\"1.15.5-do.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\nNote that, while individual node pools may scale to 0, a cluster must always include at least one node.\n{{% /example %}}\n{{% example %}}\n### Auto Upgrade Example\n\nDigitalOcean Kubernetes clusters may also be configured to [auto upgrade](https://www.digitalocean.com/docs/kubernetes/how-to/upgrade-cluster/#automatically) patch versions.\nFor example:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getKubernetesVersions({\n versionPrefix: \"1.18.\",\n});\nconst foo = new digitalocean.KubernetesCluster(\"foo\", {\n region: \"nyc1\",\n autoUpgrade: true,\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.18.\")\nfoo = digitalocean.KubernetesCluster(\"foo\",\n region=\"nyc1\",\n auto_upgrade=True,\n version=example.latest_version,\n node_pool=digitalocean.KubernetesClusterNodePoolArgs(\n name=\"default\",\n size=\"s-1vcpu-2gb\",\n node_count=3,\n ))\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = Output.Create(DigitalOcean.GetKubernetesVersions.InvokeAsync(new DigitalOcean.GetKubernetesVersionsArgs\n {\n VersionPrefix = \"1.18.\",\n }));\n var foo = new DigitalOcean.KubernetesCluster(\"foo\", new DigitalOcean.KubernetesClusterArgs\n {\n Region = \"nyc1\",\n AutoUpgrade = true,\n Version = example.Apply(example =\u003e example.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```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := \"1.18.\"\n\t\texample, err := digitalocean.GetKubernetesVersions(ctx, \u0026digitalocean.GetKubernetesVersionsArgs{\n\t\t\tVersionPrefix: \u0026opt0,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewKubernetesCluster(ctx, \"foo\", \u0026digitalocean.KubernetesClusterArgs{\n\t\t\tRegion: pulumi.String(\"nyc1\"),\n\t\t\tAutoUpgrade: pulumi.Bool(true),\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\nNote that a data source is used to supply the version. This is needed to prevent configuration diff whenever a cluster is upgraded.\n{{% /example %}}\n{{% /examples %}}", "properties": { "autoUpgrade": { "type": "boolean", @@ -7214,7 +7456,7 @@ } }, "digitalocean:index/loadBalancer:LoadBalancer": { - "description": "Provides a DigitalOcean Load Balancer resource. This can be used to create,\nmodify, and delete Load Balancers.\n", + "description": "Provides a DigitalOcean Load Balancer resource. This can be used to create,\nmodify, and delete Load Balancers.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst web = new digitalocean.Droplet(\"web\", {\n size: \"s-1vcpu-1gb\",\n image: \"ubuntu-18-04-x64\",\n region: \"nyc3\",\n});\nconst _public = new digitalocean.LoadBalancer(\"public\", {\n region: \"nyc3\",\n forwardingRules: [{\n entryPort: 80,\n entryProtocol: \"http\",\n targetPort: 80,\n targetProtocol: \"http\",\n }],\n healthcheck: {\n port: 22,\n protocol: \"tcp\",\n },\n dropletIds: [web.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nweb = digitalocean.Droplet(\"web\",\n size=\"s-1vcpu-1gb\",\n image=\"ubuntu-18-04-x64\",\n region=\"nyc3\")\npublic = digitalocean.LoadBalancer(\"public\",\n region=\"nyc3\",\n forwarding_rules=[digitalocean.LoadBalancerForwardingRuleArgs(\n entry_port=80,\n entry_protocol=\"http\",\n target_port=80,\n target_protocol=\"http\",\n )],\n healthcheck=digitalocean.LoadBalancerHealthcheckArgs(\n port=22,\n protocol=\"tcp\",\n ),\n droplet_ids=[web.id])\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var web = new DigitalOcean.Droplet(\"web\", new DigitalOcean.DropletArgs\n {\n Size = \"s-1vcpu-1gb\",\n Image = \"ubuntu-18-04-x64\",\n Region = \"nyc3\",\n });\n var @public = new DigitalOcean.LoadBalancer(\"public\", new DigitalOcean.LoadBalancerArgs\n {\n Region = \"nyc3\",\n ForwardingRules = \n {\n new DigitalOcean.Inputs.LoadBalancerForwardingRuleArgs\n {\n EntryPort = 80,\n EntryProtocol = \"http\",\n TargetPort = 80,\n TargetProtocol = \"http\",\n },\n },\n Healthcheck = new DigitalOcean.Inputs.LoadBalancerHealthcheckArgs\n {\n Port = 22,\n Protocol = \"tcp\",\n },\n DropletIds = \n {\n web.Id,\n },\n });\n }\n\n}\n```\n\nWhen managing certificates attached to the load balancer, make sure to add the `create_before_destroy`\nlifecycle property in order to ensure the certificate is correctly updated when changed. The order of\noperations will then be: `Create new certificate` \u003e `Update loadbalancer with new certificate` -\u003e\n`Delete old certificate`. When doing so, you must also change the name of the certificate,\nas there cannot be multiple certificates with the same name in an account.\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst cert = new digitalocean.Certificate(\"cert\", {\n privateKey: \"file('key.pem')\",\n leafCertificate: \"file('cert.pem')\",\n});\nconst web = new digitalocean.Droplet(\"web\", {\n size: \"s-1vcpu-1gb\",\n image: \"ubuntu-18-04-x64\",\n region: \"nyc3\",\n});\nconst _public = new digitalocean.LoadBalancer(\"public\", {\n region: \"nyc3\",\n forwardingRules: [{\n entryPort: 443,\n entryProtocol: \"https\",\n targetPort: 80,\n targetProtocol: \"http\",\n certificateName: cert.name,\n }],\n healthcheck: {\n port: 22,\n protocol: \"tcp\",\n },\n dropletIds: [web.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ncert = digitalocean.Certificate(\"cert\",\n private_key=\"file('key.pem')\",\n leaf_certificate=\"file('cert.pem')\")\nweb = digitalocean.Droplet(\"web\",\n size=\"s-1vcpu-1gb\",\n image=\"ubuntu-18-04-x64\",\n region=\"nyc3\")\npublic = digitalocean.LoadBalancer(\"public\",\n region=\"nyc3\",\n forwarding_rules=[digitalocean.LoadBalancerForwardingRuleArgs(\n entry_port=443,\n entry_protocol=\"https\",\n target_port=80,\n target_protocol=\"http\",\n certificate_name=cert.name,\n )],\n healthcheck=digitalocean.LoadBalancerHealthcheckArgs(\n port=22,\n protocol=\"tcp\",\n ),\n droplet_ids=[web.id])\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var cert = new DigitalOcean.Certificate(\"cert\", new DigitalOcean.CertificateArgs\n {\n PrivateKey = \"file('key.pem')\",\n LeafCertificate = \"file('cert.pem')\",\n });\n var web = new DigitalOcean.Droplet(\"web\", new DigitalOcean.DropletArgs\n {\n Size = \"s-1vcpu-1gb\",\n Image = \"ubuntu-18-04-x64\",\n Region = \"nyc3\",\n });\n var @public = new DigitalOcean.LoadBalancer(\"public\", new DigitalOcean.LoadBalancerArgs\n {\n Region = \"nyc3\",\n ForwardingRules = \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 Healthcheck = new DigitalOcean.Inputs.LoadBalancerHealthcheckArgs\n {\n Port = 22,\n Protocol = \"tcp\",\n },\n DropletIds = \n {\n web.Id,\n },\n });\n }\n\n}\n```\n{{% /example %}}\n{{% /examples %}}", "properties": { "algorithm": { "type": "string", @@ -7431,7 +7673,6 @@ } }, "digitalocean:index/project:Project": { - "description": "Provides a DigitalOcean Project resource.\n\nProjects allow you to organize your resources into groups that fit the way you work.\nYou can group resources (like Droplets, Spaces, Load Balancers, domains, and Floating IPs)\nin ways that align with the applications you host on DigitalOcean.\n\nThe following resource types can be associated with a project:\n\n* Database Clusters\n* Domains\n* Droplets\n* Floating IP\n* Load Balancers\n* Spaces Bucket\n* Volume\n\n**Note:** A managed project cannot be set as a default project.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\nThe following example demonstrates the creation of an empty project:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst playground = new digitalocean.Project(\"playground\", {\n description: \"A project to represent development resources.\",\n environment: \"Development\",\n purpose: \"Web Application\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nplayground = digitalocean.Project(\"playground\",\n description=\"A project to represent development resources.\",\n environment=\"Development\",\n purpose=\"Web Application\")\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var playground = new DigitalOcean.Project(\"playground\", new DigitalOcean.ProjectArgs\n {\n Description = \"A project to represent development resources.\",\n Environment = \"Development\",\n Purpose = \"Web Application\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewProject(ctx, \"playground\", \u0026digitalocean.ProjectArgs{\n\t\t\tDescription: pulumi.String(\"A project to represent development resources.\"),\n\t\t\tEnvironment: pulumi.String(\"Development\"),\n\t\t\tPurpose: pulumi.String(\"Web Application\"),\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\nThe following example demonstrates the creation of a project with a Droplet resource:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.Droplet(\"foobar\", {\n size: \"512mb\",\n image: \"centos-7-x64\",\n region: \"nyc3\",\n});\nconst playground = new digitalocean.Project(\"playground\", {\n description: \"A project to represent development resources.\",\n purpose: \"Web Application\",\n environment: \"Development\",\n resources: [foobar.dropletUrn],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.Droplet(\"foobar\",\n size=\"512mb\",\n image=\"centos-7-x64\",\n region=\"nyc3\")\nplayground = digitalocean.Project(\"playground\",\n description=\"A project to represent development resources.\",\n purpose=\"Web Application\",\n environment=\"Development\",\n resources=[foobar.droplet_urn])\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var foobar = new DigitalOcean.Droplet(\"foobar\", new DigitalOcean.DropletArgs\n {\n Size = \"512mb\",\n Image = \"centos-7-x64\",\n Region = \"nyc3\",\n });\n var playground = new DigitalOcean.Project(\"playground\", new DigitalOcean.ProjectArgs\n {\n Description = \"A project to represent development resources.\",\n Purpose = \"Web Application\",\n Environment = \"Development\",\n Resources = \n {\n foobar.DropletUrn,\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.NewDroplet(ctx, \"foobar\", \u0026digitalocean.DropletArgs{\n\t\t\tSize: pulumi.String(\"512mb\"),\n\t\t\tImage: pulumi.String(\"centos-7-x64\"),\n\t\t\tRegion: pulumi.String(\"nyc3\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewProject(ctx, \"playground\", \u0026digitalocean.ProjectArgs{\n\t\t\tDescription: pulumi.String(\"A project to represent development resources.\"),\n\t\t\tPurpose: pulumi.String(\"Web Application\"),\n\t\t\tEnvironment: pulumi.String(\"Development\"),\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{{% /example %}}\n{{% /examples %}}", "properties": { "createdAt": { "type": "string", @@ -7560,7 +7801,6 @@ } }, "digitalocean:index/projectResources:ProjectResources": { - "description": "Assign resources to a DigitalOcean Project. This is useful if you need to assign resources\nmanaged this provider to a DigitalOcean Project that is unmanaged by the provider.\n\nThe following resource types can be associated with a project:\n\n* Database Clusters\n* Domains\n* Droplets\n* Floating IP\n* Load Balancers\n* Spaces Bucket\n* Volume\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\nThe following example assigns a droplet to a Project managed outside of this provider:\n\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 size: \"512mb\",\n image: \"centos-7-x64\",\n region: \"nyc3\",\n});\nconst barfoo = new digitalocean.ProjectResources(\"barfoo\", {\n project: data.digitalocean_project.foo.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 size=\"512mb\",\n image=\"centos-7-x64\",\n region=\"nyc3\")\nbarfoo = digitalocean.ProjectResources(\"barfoo\",\n project=data[\"digitalocean_project\"][\"foo\"][\"id\"],\n resources=[foobar.droplet_urn])\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var playground = Output.Create(DigitalOcean.GetProject.InvokeAsync(new DigitalOcean.GetProjectArgs\n {\n Name = \"playground\",\n }));\n var foobar = new DigitalOcean.Droplet(\"foobar\", new DigitalOcean.DropletArgs\n {\n Size = \"512mb\",\n Image = \"centos-7-x64\",\n Region = \"nyc3\",\n });\n var barfoo = new DigitalOcean.ProjectResources(\"barfoo\", new DigitalOcean.ProjectResourcesArgs\n {\n Project = data.Digitalocean_project.Foo.Id,\n Resources = \n {\n foobar.DropletUrn,\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := \"playground\"\n\t\t_, err := digitalocean.LookupProject(ctx, \u0026digitalocean.LookupProjectArgs{\n\t\t\tName: \u0026opt0,\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\tSize: pulumi.String(\"512mb\"),\n\t\t\tImage: pulumi.String(\"centos-7-x64\"),\n\t\t\tRegion: pulumi.String(\"nyc3\"),\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.Any(data.Digitalocean_project.Foo.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{{% /example %}}\n{{% /examples %}}", "properties": { "project": { "type": "string", @@ -7753,7 +7993,6 @@ } }, "digitalocean:index/spacesBucketObject:SpacesBucketObject": { - "description": "Provides a bucket object resource for Spaces, DigitalOcean's object storage product.\nThe `digitalocean.SpacesBucketObject` resource allows this provider to upload content\nto Spaces.\n\nThe [Spaces API](https://developers.digitalocean.com/documentation/spaces/) was\ndesigned to be interoperable with Amazon's AWS S3 API. This allows users to\ninteract with the service while using the tools they already know. Spaces\nmirrors S3's authentication framework and requests to Spaces require a key pair\nsimilar to Amazon's Access ID and Secret Key.\n\nThe authentication requirement can be met by either setting the\n`SPACES_ACCESS_KEY_ID` and `SPACES_SECRET_ACCESS_KEY` environment variables or\nthe provider's `spaces_access_id` and `spaces_secret_key` arguments to the\naccess ID and secret you generate via the DigitalOcean control panel. For\nexample:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst static_assets = new digitalocean.SpacesBucket(\"static-assets\", {});\n// ...\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nstatic_assets = digitalocean.SpacesBucket(\"static-assets\")\n# ...\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var static_assets = new DigitalOcean.SpacesBucket(\"static-assets\", new DigitalOcean.SpacesBucketArgs\n {\n });\n // ...\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewSpacesBucket(ctx, \"static_assets\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n\nFor more information, See [An Introduction to DigitalOcean Spaces](https://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-spaces)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Create a Key in a Spaces Bucket\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.SpacesBucket(\"foobar\", {region: \"nyc3\"});\nconst index = new digitalocean.SpacesBucketObject(\"index\", {\n region: foobar.region,\n bucket: foobar.name,\n key: \"index.html\",\n content: \"\u003chtml\u003e\u003cbody\u003e\u003cp\u003eThis page is empty.\u003c/p\u003e\u003c/body\u003e\u003c/html\u003e\",\n contentType: \"text/html\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.SpacesBucket(\"foobar\", region=\"nyc3\")\nindex = digitalocean.SpacesBucketObject(\"index\",\n region=foobar.region,\n bucket=foobar.name,\n key=\"index.html\",\n content=\"\u003chtml\u003e\u003cbody\u003e\u003cp\u003eThis page is empty.\u003c/p\u003e\u003c/body\u003e\u003c/html\u003e\",\n content_type=\"text/html\")\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var foobar = new DigitalOcean.SpacesBucket(\"foobar\", new DigitalOcean.SpacesBucketArgs\n {\n Region = \"nyc3\",\n });\n var index = new DigitalOcean.SpacesBucketObject(\"index\", new DigitalOcean.SpacesBucketObjectArgs\n {\n Region = foobar.Region,\n Bucket = foobar.Name,\n Key = \"index.html\",\n Content = \"\u003chtml\u003e\u003cbody\u003e\u003cp\u003eThis page is empty.\u003c/p\u003e\u003c/body\u003e\u003c/html\u003e\",\n ContentType = \"text/html\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.NewSpacesBucket(ctx, \"foobar\", \u0026digitalocean.SpacesBucketArgs{\n\t\t\tRegion: pulumi.String(\"nyc3\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewSpacesBucketObject(ctx, \"index\", \u0026digitalocean.SpacesBucketObjectArgs{\n\t\t\tRegion: foobar.Region,\n\t\t\tBucket: foobar.Name,\n\t\t\tKey: pulumi.String(\"index.html\"),\n\t\t\tContent: pulumi.String(\"\u003chtml\u003e\u003cbody\u003e\u003cp\u003eThis page is empty.\u003c/p\u003e\u003c/body\u003e\u003c/html\u003e\"),\n\t\t\tContentType: pulumi.String(\"text/html\"),\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{{% /example %}}\n{{% /examples %}}", "properties": { "acl": { "type": "string", @@ -7793,7 +8032,7 @@ }, "etag": { "type": "string", - "description": "Used to trigger updates. The only meaningful value is `${filemd5(\"path/to/file\")}`.\n" + "description": "the ETag generated for the object (an MD5 sum of the object content). The hash is an MD5 digest of the\nobject data. For objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5\ndigest. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html).\n" }, "forceDestroy": { "type": "boolean", @@ -7874,7 +8113,7 @@ }, "etag": { "type": "string", - "description": "Used to trigger updates. The only meaningful value is `${filemd5(\"path/to/file\")}`.\n" + "description": "the ETag generated for the object (an MD5 sum of the object content). The hash is an MD5 digest of the\nobject data. For objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5\ndigest. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html).\n" }, "forceDestroy": { "type": "boolean", @@ -7950,7 +8189,7 @@ }, "etag": { "type": "string", - "description": "Used to trigger updates. The only meaningful value is `${filemd5(\"path/to/file\")}`.\n" + "description": "the ETag generated for the object (an MD5 sum of the object content). The hash is an MD5 digest of the\nobject data. For objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5\ndigest. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html).\n" }, "forceDestroy": { "type": "boolean", @@ -7988,7 +8227,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{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * from \"fs\";\n\n// Create a new SSH key\nconst _default = new digitalocean.SshKey(\"default\", {publicKey: fs.readFileSync(\"/Users/myuser/.ssh/id_rsa.pub\")});\n// Create a new Droplet using the SSH key\nconst web = new digitalocean.Droplet(\"web\", {\n image: \"ubuntu-18-04-x64\",\n region: \"nyc3\",\n size: \"s-1vcpu-1gb\",\n sshKeys: [_default.fingerprint],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\n# Create a new SSH key\ndefault = digitalocean.SshKey(\"default\", public_key=(lambda path: open(path).read())(\"/Users/myuser/.ssh/id_rsa.pub\"))\n# Create a new Droplet using the SSH key\nweb = digitalocean.Droplet(\"web\",\n image=\"ubuntu-18-04-x64\",\n region=\"nyc3\",\n size=\"s-1vcpu-1gb\",\n ssh_keys=[default.fingerprint])\n```\n```csharp\nusing System.IO;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n // Create a new SSH key\n var @default = new DigitalOcean.SshKey(\"default\", new DigitalOcean.SshKeyArgs\n {\n PublicKey = File.ReadAllText(\"/Users/myuser/.ssh/id_rsa.pub\"),\n });\n // Create a new Droplet using the SSH key\n var web = new DigitalOcean.Droplet(\"web\", new DigitalOcean.DropletArgs\n {\n Image = \"ubuntu-18-04-x64\",\n Region = \"nyc3\",\n Size = \"s-1vcpu-1gb\",\n SshKeys = \n {\n @default.Fingerprint,\n },\n });\n }\n\n}\n```\n{{% /example %}}\n{{% /examples %}}", + "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{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * from \"fs\";\n\n// Create a new SSH key\nconst _default = new digitalocean.SshKey(\"default\", {publicKey: fs.readFileSync(\"/Users/terraform/.ssh/id_rsa.pub\")});\n// Create a new Droplet using the SSH key\nconst web = new digitalocean.Droplet(\"web\", {\n image: \"ubuntu-18-04-x64\",\n region: \"nyc3\",\n size: \"s-1vcpu-1gb\",\n sshKeys: [_default.fingerprint],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\n# Create a new SSH key\ndefault = digitalocean.SshKey(\"default\", public_key=(lambda path: open(path).read())(\"/Users/terraform/.ssh/id_rsa.pub\"))\n# Create a new Droplet using the SSH key\nweb = digitalocean.Droplet(\"web\",\n image=\"ubuntu-18-04-x64\",\n region=\"nyc3\",\n size=\"s-1vcpu-1gb\",\n ssh_keys=[default.fingerprint])\n```\n```csharp\nusing System.IO;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n // Create a new SSH key\n var @default = new DigitalOcean.SshKey(\"default\", new DigitalOcean.SshKeyArgs\n {\n PublicKey = File.ReadAllText(\"/Users/terraform/.ssh/id_rsa.pub\"),\n });\n // Create a new Droplet using the SSH key\n var web = new DigitalOcean.Droplet(\"web\", new DigitalOcean.DropletArgs\n {\n Image = \"ubuntu-18-04-x64\",\n Region = \"nyc3\",\n Size = \"s-1vcpu-1gb\",\n SshKeys = \n {\n @default.Fingerprint,\n },\n });\n }\n\n}\n```\n{{% /example %}}\n{{% /examples %}}", "properties": { "fingerprint": { "type": "string", @@ -8813,8 +9052,11 @@ "type": "string", "description": "The live URL of the app.\n" }, - "spec": { - "$ref": "#/types/digitalocean:index/getAppSpec:getAppSpec", + "specs": { + "type": "array", + "items": { + "$ref": "#/types/digitalocean:index/getAppSpec:getAppSpec" + }, "description": "A DigitalOcean App spec describing the app.\n" }, "updatedAt": { @@ -8829,14 +9071,13 @@ "createdAt", "defaultIngress", "liveUrl", - "spec", + "specs", "updatedAt", "id" ] } }, "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{{% examples %}}\n## Example Usage\n{{% example %}}\n\nGet the certificate:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = pulumi.output(digitalocean.getCertificate({\n name: \"example\",\n}, { async: true }));\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_certificate(name=\"example\")\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = Output.Create(DigitalOcean.GetCertificate.InvokeAsync(new DigitalOcean.GetCertificateArgs\n {\n Name = \"example\",\n }));\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/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{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getCertificate.\n", "properties": { @@ -8877,6 +9118,9 @@ }, "type": { "type": "string" + }, + "uuid": { + "type": "string" } }, "type": "object", @@ -8887,12 +9131,12 @@ "sha1Fingerprint", "state", "type", + "uuid", "id" ] } }, "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{{% examples %}}\n## Example Usage\n{{% example %}}\n### Basic Example\n\nGet the container registry:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = pulumi.output(digitalocean.getContainerRegistry({\n name: \"example\",\n}, { async: true }));\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_container_registry(name=\"example\")\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = Output.Create(DigitalOcean.GetContainerRegistry.InvokeAsync(new DigitalOcean.GetContainerRegistryArgs\n {\n Name = \"example\",\n }));\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/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{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getContainerRegistry.\n", "properties": { @@ -9062,7 +9306,6 @@ } }, "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{{% examples %}}\n## Example Usage\n{{% example %}}\n\nGet the zone file for a domain:\n\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 Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = Output.Create(DigitalOcean.GetDomain.InvokeAsync(new DigitalOcean.GetDomainArgs\n {\n Name = \"example.com\",\n }));\n this.DomainOutput = example.Apply(example =\u003e example.ZoneFile);\n }\n\n [Output(\"domainOutput\")]\n public Output\u003cstring\u003e DomainOutput { get; set; }\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/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{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getDomain.\n", "properties": { @@ -9163,7 +9406,6 @@ } }, "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{{% examples %}}\n## Example Usage\n{{% example %}}\n\nGet the Droplet by name:\n\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 Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = Output.Create(DigitalOcean.GetDroplet.InvokeAsync(new DigitalOcean.GetDropletArgs\n {\n Name = \"web\",\n }));\n this.DropletOutput = example.Apply(example =\u003e example.Ipv4Address);\n }\n\n [Output(\"dropletOutput\")]\n public Output\u003cstring\u003e DropletOutput { get; set; }\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := \"web\"\n\t\texample, err := digitalocean.LookupDroplet(ctx, \u0026digitalocean.LookupDropletArgs{\n\t\t\tName: \u0026opt0,\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\nGet the Droplet by tag:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = pulumi.output(digitalocean.getDroplet({\n tag: \"web\",\n}, { async: true }));\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_droplet(tag=\"web\")\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = Output.Create(DigitalOcean.GetDroplet.InvokeAsync(new DigitalOcean.GetDropletArgs\n {\n Tag = \"web\",\n }));\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := \"web\"\n\t\t_, err := digitalocean.LookupDroplet(ctx, \u0026digitalocean.LookupDropletArgs{\n\t\t\tTag: \u0026opt0,\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\nGet the Droplet by ID:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDroplet({\n id: digitalocean_kubernetes_cluster.example.node_pool[0].nodes[0].droplet_id,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_droplet(id=digitalocean_kubernetes_cluster[\"example\"][\"node_pool\"][0][\"nodes\"][0][\"droplet_id\"])\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = Output.Create(DigitalOcean.GetDroplet.InvokeAsync(new DigitalOcean.GetDropletArgs\n {\n Id = digitalocean_kubernetes_cluster.Example.Node_pool[0].Nodes[0].Droplet_id,\n }));\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := digitalocean_kubernetes_cluster.Example.Node_pool[0].Nodes[0].Droplet_id\n\t\t_, err := digitalocean.LookupDroplet(ctx, \u0026digitalocean.LookupDropletArgs{\n\t\t\tId: \u0026opt0,\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{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getDroplet.\n", "properties": { @@ -9401,7 +9643,6 @@ } }, "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 this provider or you need to\nutilize any of the Droplets' data.\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{{% examples %}}\n## Example Usage\n{{% example %}}\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```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst small = pulumi.output(digitalocean.getDroplets({\n filters: [{\n key: \"size\",\n values: [\"s-1vcpu-1gb\"],\n }],\n}, { async: true }));\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsmall = digitalocean.get_droplets(filters=[digitalocean.GetDropletsFilterArgs(\n key=\"size\",\n values=[\"s-1vcpu-1gb\"],\n)])\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var small = Output.Create(DigitalOcean.GetDroplets.InvokeAsync(new DigitalOcean.GetDropletsArgs\n {\n Filters = \n {\n new DigitalOcean.Inputs.GetDropletsFilterArgs\n {\n Key = \"size\",\n Values = \n {\n \"s-1vcpu-1gb\",\n },\n },\n },\n }));\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/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\tdigitalocean.GetDropletsFilter{\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\nYou can filter on multiple fields and sort the results as well:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst small_with_backups = pulumi.output(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 direction: \"desc\",\n key: \"created_at\",\n }],\n}, { async: true }));\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsmall_with_backups = digitalocean.get_droplets(filters=[\n digitalocean.GetDropletsFilterArgs(\n key=\"size\",\n values=[\"s-1vcpu-1gb\"],\n ),\n digitalocean.GetDropletsFilterArgs(\n key=\"backups\",\n values=[\"true\"],\n ),\n ],\n sorts=[digitalocean.GetDropletsSortArgs(\n direction=\"desc\",\n key=\"created_at\",\n )])\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var small_with_backups = Output.Create(DigitalOcean.GetDroplets.InvokeAsync(new DigitalOcean.GetDropletsArgs\n {\n Filters = \n {\n new DigitalOcean.Inputs.GetDropletsFilterArgs\n {\n Key = \"size\",\n Values = \n {\n \"s-1vcpu-1gb\",\n },\n },\n new DigitalOcean.Inputs.GetDropletsFilterArgs\n {\n Key = \"backups\",\n Values = \n {\n \"true\",\n },\n },\n },\n Sorts = \n {\n new DigitalOcean.Inputs.GetDropletsSortArgs\n {\n Direction = \"desc\",\n Key = \"created_at\",\n },\n },\n }));\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/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\tdigitalocean.GetDropletsFilter{\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\tdigitalocean.GetDropletsFilter{\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\tdigitalocean.GetDropletsSort{\n\t\t\t\t\tDirection: \"desc\",\n\t\t\t\t\tKey: \"created_at\",\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{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getDroplets.\n", "properties": { @@ -9457,7 +9698,6 @@ } }, "digitalocean:index/getFloatingIp:getFloatingIp": { - "description": "Get 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 this 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{{% examples %}}\n## Example Usage\n{{% example %}}\n\nGet the floating IP:\n\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 Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var config = new Config();\n var publicIp = config.RequireObject\u003cdynamic\u003e(\"publicIp\");\n var example = Output.Create(DigitalOcean.GetFloatingIp.InvokeAsync(new DigitalOcean.GetFloatingIpArgs\n {\n IpAddress = publicIp,\n }));\n this.FipOutput = example.Apply(example =\u003e example.DropletId);\n }\n\n [Output(\"fipOutput\")]\n public Output\u003cstring\u003e FipOutput { get; set; }\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v2/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{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getFloatingIp.\n", "properties": { @@ -9502,7 +9742,6 @@ } }, "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 this 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{{% examples %}}\n## Example Usage\n{{% example %}}\n\nGet the data about a snapshot:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example1 = pulumi.output(digitalocean.getImage({\n name: \"example-1.0.0\",\n}, { async: true }));\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample1 = digitalocean.get_image(name=\"example-1.0.0\")\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example1 = Output.Create(DigitalOcean.GetImage.InvokeAsync(new DigitalOcean.GetImageArgs\n {\n Name = \"example-1.0.0\",\n }));\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := \"example-1.0.0\"\n\t\t_, err := digitalocean.GetImage(ctx, \u0026digitalocean.GetImageArgs{\n\t\t\tName: \u0026opt0,\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\nReuse the data about a snapshot to create a Droplet:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst exampleImage = digitalocean.getImage({\n name: \"example-1.0.0\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"exampleDroplet\", {\n image: exampleImage.then(exampleImage =\u003e exampleImage.id),\n region: \"nyc2\",\n size: \"s-1vcpu-1gb\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample_image = digitalocean.get_image(name=\"example-1.0.0\")\nexample_droplet = digitalocean.Droplet(\"exampleDroplet\",\n image=example_image.id,\n region=\"nyc2\",\n size=\"s-1vcpu-1gb\")\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var exampleImage = Output.Create(DigitalOcean.GetImage.InvokeAsync(new DigitalOcean.GetImageArgs\n {\n Name = \"example-1.0.0\",\n }));\n var exampleDroplet = new DigitalOcean.Droplet(\"exampleDroplet\", new DigitalOcean.DropletArgs\n {\n Image = exampleImage.Apply(exampleImage =\u003e exampleImage.Id),\n Region = \"nyc2\",\n Size = \"s-1vcpu-1gb\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := \"example-1.0.0\"\n\t\texampleImage, err := digitalocean.GetImage(ctx, \u0026digitalocean.GetImageArgs{\n\t\t\tName: \u0026opt0,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"exampleDroplet\", \u0026digitalocean.DropletArgs{\n\t\t\tImage: pulumi.Int(exampleImage.Id),\n\t\t\tRegion: pulumi.String(\"nyc2\"),\n\t\t\tSize: pulumi.String(\"s-1vcpu-1gb\"),\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\nGet the data about an official image:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example2 = pulumi.output(digitalocean.getImage({\n slug: \"ubuntu-18-04-x64\",\n}, { async: true }));\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample2 = digitalocean.get_image(slug=\"ubuntu-18-04-x64\")\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example2 = Output.Create(DigitalOcean.GetImage.InvokeAsync(new DigitalOcean.GetImageArgs\n {\n Slug = \"ubuntu-18-04-x64\",\n }));\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := \"ubuntu-18-04-x64\"\n\t\t_, err := digitalocean.GetImage(ctx, \u0026digitalocean.GetImageArgs{\n\t\t\tSlug: \u0026opt0,\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{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getImage.\n", "properties": { @@ -9531,6 +9770,9 @@ "created": { "type": "string" }, + "description": { + "type": "string" + }, "distribution": { "type": "string", "description": "The name of the distribution of the OS of the image.\n* `min_disk_size`: The minimum 'disk' required for the image.\n* `size_gigabytes`: The size of the image in GB.\n" @@ -9586,6 +9828,7 @@ "type": "object", "required": [ "created", + "description", "distribution", "errorMessage", "id", @@ -9603,7 +9846,6 @@ } }, "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 this 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{{% examples %}}\n## Example Usage\n{{% example %}}\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```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst ubuntu = pulumi.output(digitalocean.getImages({\n filters: [{\n key: \"distribution\",\n values: [\"Ubuntu\"],\n }],\n}, { async: true }));\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nubuntu = digitalocean.get_images(filters=[digitalocean.GetImagesFilterArgs(\n key=\"distribution\",\n values=[\"Ubuntu\"],\n)])\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var ubuntu = Output.Create(DigitalOcean.GetImages.InvokeAsync(new DigitalOcean.GetImagesArgs\n {\n Filters = \n {\n new DigitalOcean.Inputs.GetImagesFilterArgs\n {\n Key = \"distribution\",\n Values = \n {\n \"Ubuntu\",\n },\n },\n },\n }));\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/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\tdigitalocean.GetImagesFilter{\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\nYou can filter on multiple fields and sort the results as well:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst available = pulumi.output(digitalocean.getImages({\n filters: [\n {\n key: \"distribution\",\n values: [\"Ubuntu\"],\n },\n {\n key: \"regions\",\n values: [\"nyc3\"],\n },\n ],\n sorts: [{\n direction: \"desc\",\n key: \"created\",\n }],\n}, { async: true }));\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\navailable = digitalocean.get_images(filters=[\n digitalocean.GetImagesFilterArgs(\n key=\"distribution\",\n values=[\"Ubuntu\"],\n ),\n digitalocean.GetImagesFilterArgs(\n key=\"regions\",\n values=[\"nyc3\"],\n ),\n ],\n sorts=[digitalocean.GetImagesSortArgs(\n direction=\"desc\",\n key=\"created\",\n )])\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var available = Output.Create(DigitalOcean.GetImages.InvokeAsync(new DigitalOcean.GetImagesArgs\n {\n Filters = \n {\n new DigitalOcean.Inputs.GetImagesFilterArgs\n {\n Key = \"distribution\",\n Values = \n {\n \"Ubuntu\",\n },\n },\n new DigitalOcean.Inputs.GetImagesFilterArgs\n {\n Key = \"regions\",\n Values = \n {\n \"nyc3\",\n },\n },\n },\n Sorts = \n {\n new DigitalOcean.Inputs.GetImagesSortArgs\n {\n Direction = \"desc\",\n Key = \"created\",\n },\n },\n }));\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/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\tdigitalocean.GetImagesFilter{\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\tdigitalocean.GetImagesFilter{\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\tdigitalocean.GetImagesSort{\n\t\t\t\t\tDirection: \"desc\",\n\t\t\t\t\tKey: \"created\",\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{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getImages.\n", "properties": { @@ -9659,7 +9901,6 @@ } }, "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 this provider.\n", "inputs": { "description": "A collection of arguments for invoking getKubernetesCluster.\n", "properties": { @@ -9786,8 +10027,7 @@ "description": "A collection of arguments for invoking getKubernetesVersions.\n", "properties": { "versionPrefix": { - "type": "string", - "description": "If provided, this provider will only return versions that match the string prefix. For example, `1.15.` will match all 1.15.x series releases.\n" + "type": "string" } }, "type": "object" @@ -9823,7 +10063,6 @@ } }, "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\nthis 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{{% examples %}}\n## Example Usage\n{{% example %}}\n\nGet the load balancer:\n\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 Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = Output.Create(DigitalOcean.GetLoadBalancer.InvokeAsync(new DigitalOcean.GetLoadBalancerArgs\n {\n Name = \"app\",\n }));\n this.LbOutput = example.Apply(example =\u003e example.Ip);\n }\n\n [Output(\"lbOutput\")]\n public Output\u003cstring\u003e LbOutput { get; set; }\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/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: \"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{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getLoadBalancer.\n", "properties": { @@ -9864,8 +10103,11 @@ "$ref": "#/types/digitalocean:index/getLoadBalancerForwardingRule:getLoadBalancerForwardingRule" } }, - "healthcheck": { - "$ref": "#/types/digitalocean:index/getLoadBalancerHealthcheck:getLoadBalancerHealthcheck" + "healthchecks": { + "type": "array", + "items": { + "$ref": "#/types/digitalocean:index/getLoadBalancerHealthcheck:getLoadBalancerHealthcheck" + } }, "id": { "type": "string", @@ -9890,7 +10132,10 @@ "type": "string" }, "stickySessions": { - "$ref": "#/types/digitalocean:index/getLoadBalancerStickySessions:getLoadBalancerStickySessions" + "type": "array", + "items": { + "$ref": "#/types/digitalocean:index/getLoadBalancerStickySession:getLoadBalancerStickySession" + } }, "vpcUuid": { "type": "string" @@ -9904,7 +10149,7 @@ "enableBackendKeepalive", "enableProxyProtocol", "forwardingRules", - "healthcheck", + "healthchecks", "ip", "name", "redirectHttpToHttps", @@ -10054,7 +10299,6 @@ } }, "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 this provider.\n\nAn error is triggered if the provided domain name or record are not managed with\nyour DigitalOcean account.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\nGet data from a DNS record:\n\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 Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = Output.Create(DigitalOcean.GetRecord.InvokeAsync(new DigitalOcean.GetRecordArgs\n {\n Domain = \"example.com\",\n Name = \"test\",\n }));\n this.RecordType = example.Apply(example =\u003e example.Type);\n this.RecordTtl = example.Apply(example =\u003e example.Ttl);\n }\n\n [Output(\"recordType\")]\n public Output\u003cstring\u003e RecordType { get; set; }\n [Output(\"recordTtl\")]\n public Output\u003cstring\u003e RecordTtl { get; set; }\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/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{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getRecord.\n", "properties": { @@ -10127,6 +10371,72 @@ ] } }, + "digitalocean:index/getRecords:getRecords": { + "description": "Retrieve information about all DNS records within a domain, with the ability to filter and sort the results.\nIf no filters are specified, all records will be returned.\n", + "inputs": { + "description": "A collection of arguments for invoking getRecords.\n", + "properties": { + "domain": { + "type": "string", + "description": "The domain name to search for DNS records\n" + }, + "filters": { + "type": "array", + "items": { + "$ref": "#/types/digitalocean:index/getRecordsFilter:getRecordsFilter" + }, + "description": "Filter the results.\nThe `filter` block is documented below.\n" + }, + "sorts": { + "type": "array", + "items": { + "$ref": "#/types/digitalocean:index/getRecordsSort:getRecordsSort" + }, + "description": "Sort the results.\nThe `sort` block is documented below.\n" + } + }, + "type": "object", + "required": [ + "domain" + ] + }, + "outputs": { + "description": "A collection of values returned by getRecords.\n", + "properties": { + "domain": { + "type": "string" + }, + "filters": { + "type": "array", + "items": { + "$ref": "#/types/digitalocean:index/getRecordsFilter:getRecordsFilter" + } + }, + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "records": { + "type": "array", + "items": { + "$ref": "#/types/digitalocean:index/getRecordsRecord:getRecordsRecord" + } + }, + "sorts": { + "type": "array", + "items": { + "$ref": "#/types/digitalocean:index/getRecordsSort:getRecordsSort" + } + } + }, + "type": "object", + "required": [ + "domain", + "records", + "id" + ] + } + }, "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{{% examples %}}\n## Example Usage\n{{% example %}}\n\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 Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var sfo2 = Output.Create(DigitalOcean.GetRegion.InvokeAsync(new DigitalOcean.GetRegionArgs\n {\n Slug = \"sfo2\",\n }));\n this.RegionName = sfo2.Apply(sfo2 =\u003e sfo2.Name);\n }\n\n [Output(\"regionName\")]\n public Output\u003cstring\u003e RegionName { get; set; }\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/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{{% /example %}}\n{{% /examples %}}", "inputs": { @@ -10299,7 +10609,6 @@ } }, "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 this provider or you need to utilize any of the bucket's data.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\nGet the bucket by name:\n\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 Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = Output.Create(DigitalOcean.GetSpacesBucket.InvokeAsync(new DigitalOcean.GetSpacesBucketArgs\n {\n Name = \"my-spaces-bucket\",\n Region = \"nyc3\",\n }));\n this.BucketDomainName = example.Apply(example =\u003e example.BucketDomainName);\n }\n\n [Output(\"bucketDomainName\")]\n public Output\u003cstring\u003e BucketDomainName { get; set; }\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/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{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getSpacesBucket.\n", "properties": { @@ -10487,7 +10796,6 @@ } }, "digitalocean:index/getSpacesBucketObjects:getSpacesBucketObjects": { - "description": "\u003e **NOTE on `max_keys`:** Retrieving very large numbers of keys can adversely affect this provider's performance.\n\nThe bucket-objects data source returns keys (i.e., file names) and other metadata about objects in a Spaces bucket.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\nThe following example retrieves a list of all object keys in a Spaces bucket and creates corresponding object\ndata sources:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst myObjects = digitalocean.getSpacesBucketObjects({\n bucket: \"ourcorp\",\n region: \"nyc3\",\n});\nconst objectInfo = .map(__index =\u003e digitalocean.getSpacesBucketObject({\n key: _arg0_,\n bucket: _arg1_.bucket,\n region: _arg2_.region,\n}));\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmy_objects = digitalocean.get_spaces_bucket_objects(bucket=\"ourcorp\",\n region=\"nyc3\")\nobject_info = [digitalocean.get_spaces_bucket_object(key=my_objects.keys[__index],\n bucket=my_objects.bucket,\n region=my_objects.region) for __index in range(len(my_objects.keys))]\n```\n{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getSpacesBucketObjects.\n", "properties": { @@ -10637,7 +10945,6 @@ } }, "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 this 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{{% examples %}}\n## Example Usage\n{{% example %}}\n\nGet the ssh key:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst exampleSshKey = digitalocean.getSshKey({\n name: \"example\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"exampleDroplet\", {\n image: \"ubuntu-18-04-x64\",\n region: \"nyc2\",\n size: \"s-1vcpu-1gb\",\n sshKeys: [exampleSshKey.then(exampleSshKey =\u003e exampleSshKey.id)],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample_ssh_key = digitalocean.get_ssh_key(name=\"example\")\nexample_droplet = digitalocean.Droplet(\"exampleDroplet\",\n image=\"ubuntu-18-04-x64\",\n region=\"nyc2\",\n size=\"s-1vcpu-1gb\",\n ssh_keys=[example_ssh_key.id])\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var exampleSshKey = Output.Create(DigitalOcean.GetSshKey.InvokeAsync(new DigitalOcean.GetSshKeyArgs\n {\n Name = \"example\",\n }));\n var exampleDroplet = new DigitalOcean.Droplet(\"exampleDroplet\", new DigitalOcean.DropletArgs\n {\n Image = \"ubuntu-18-04-x64\",\n Region = \"nyc2\",\n Size = \"s-1vcpu-1gb\",\n SshKeys = \n {\n exampleSshKey.Apply(exampleSshKey =\u003e exampleSshKey.Id),\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleSshKey, 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, \"exampleDroplet\", \u0026digitalocean.DropletArgs{\n\t\t\tImage: pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion: pulumi.String(\"nyc2\"),\n\t\t\tSize: pulumi.String(\"s-1vcpu-1gb\"),\n\t\t\tSshKeys: pulumi.StringArray{\n\t\t\t\tpulumi.String(exampleSshKey.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{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getSshKey.\n", "properties": { @@ -10678,7 +10985,6 @@ } }, "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 this 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{{% examples %}}\n## Example Usage\n{{% example %}}\n\nGet the tag:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst exampleTag = digitalocean.getTag({\n name: \"example\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"exampleDroplet\", {\n image: \"ubuntu-18-04-x64\",\n region: \"nyc2\",\n size: \"s-1vcpu-1gb\",\n tags: [exampleTag.then(exampleTag =\u003e exampleTag.name)],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample_tag = digitalocean.get_tag(name=\"example\")\nexample_droplet = digitalocean.Droplet(\"exampleDroplet\",\n image=\"ubuntu-18-04-x64\",\n region=\"nyc2\",\n size=\"s-1vcpu-1gb\",\n tags=[example_tag.name])\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var exampleTag = Output.Create(DigitalOcean.GetTag.InvokeAsync(new DigitalOcean.GetTagArgs\n {\n Name = \"example\",\n }));\n var exampleDroplet = new DigitalOcean.Droplet(\"exampleDroplet\", new DigitalOcean.DropletArgs\n {\n Image = \"ubuntu-18-04-x64\",\n Region = \"nyc2\",\n Size = \"s-1vcpu-1gb\",\n Tags = \n {\n exampleTag.Apply(exampleTag =\u003e exampleTag.Name),\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleTag, 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, \"exampleDroplet\", \u0026digitalocean.DropletArgs{\n\t\t\tImage: pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion: pulumi.String(\"nyc2\"),\n\t\t\tSize: pulumi.String(\"s-1vcpu-1gb\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(exampleTag.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{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getTag.\n", "properties": { @@ -10796,7 +11102,6 @@ } }, "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 this 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{{% examples %}}\n## Example Usage\n{{% example %}}\n\nGet the volume:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = pulumi.output(digitalocean.getVolume({\n name: \"app-data\",\n region: \"nyc3\",\n}, { async: true }));\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 Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = Output.Create(DigitalOcean.GetVolume.InvokeAsync(new DigitalOcean.GetVolumeArgs\n {\n Name = \"app-data\",\n Region = \"nyc3\",\n }));\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := \"nyc3\"\n\t\t_, err := digitalocean.LookupVolume(ctx, \u0026digitalocean.LookupVolumeArgs{\n\t\t\tName: \"app-data\",\n\t\t\tRegion: \u0026opt0,\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\nReuse the data about a volume to attach it to a Droplet:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst exampleVolume = digitalocean.getVolume({\n name: \"app-data\",\n region: \"nyc3\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"exampleDroplet\", {\n size: \"s-1vcpu-1gb\",\n image: \"ubuntu-18-04-x64\",\n region: \"nyc3\",\n});\nconst foobar = new digitalocean.VolumeAttachment(\"foobar\", {\n dropletId: exampleDroplet.id,\n volumeId: exampleVolume.then(exampleVolume =\u003e exampleVolume.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample_volume = digitalocean.get_volume(name=\"app-data\",\n region=\"nyc3\")\nexample_droplet = digitalocean.Droplet(\"exampleDroplet\",\n size=\"s-1vcpu-1gb\",\n image=\"ubuntu-18-04-x64\",\n region=\"nyc3\")\nfoobar = digitalocean.VolumeAttachment(\"foobar\",\n droplet_id=example_droplet.id,\n volume_id=example_volume.id)\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var exampleVolume = Output.Create(DigitalOcean.GetVolume.InvokeAsync(new DigitalOcean.GetVolumeArgs\n {\n Name = \"app-data\",\n Region = \"nyc3\",\n }));\n var exampleDroplet = new DigitalOcean.Droplet(\"exampleDroplet\", new DigitalOcean.DropletArgs\n {\n Size = \"s-1vcpu-1gb\",\n Image = \"ubuntu-18-04-x64\",\n Region = \"nyc3\",\n });\n var foobar = new DigitalOcean.VolumeAttachment(\"foobar\", new DigitalOcean.VolumeAttachmentArgs\n {\n DropletId = exampleDroplet.Id,\n VolumeId = exampleVolume.Apply(exampleVolume =\u003e exampleVolume.Id),\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := \"nyc3\"\n\t\texampleVolume, err := digitalocean.LookupVolume(ctx, \u0026digitalocean.LookupVolumeArgs{\n\t\t\tName: \"app-data\",\n\t\t\tRegion: \u0026opt0,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDroplet, err := digitalocean.NewDroplet(ctx, \"exampleDroplet\", \u0026digitalocean.DropletArgs{\n\t\t\tSize: pulumi.String(\"s-1vcpu-1gb\"),\n\t\t\tImage: pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion: pulumi.String(\"nyc3\"),\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(exampleVolume.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{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getVolume.\n", "properties": { @@ -10965,7 +11270,6 @@ } }, "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\nthis 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{{% examples %}}\n## Example Usage\n{{% example %}}\n### VPC By Name\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = pulumi.output(digitalocean.getVpc({\n name: \"example-network\",\n}, { async: true }));\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc(name=\"example-network\")\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = Output.Create(DigitalOcean.GetVpc.InvokeAsync(new DigitalOcean.GetVpcArgs\n {\n Name = \"example-network\",\n }));\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := \"example-network\"\n\t\t_, err := digitalocean.LookupVpc(ctx, \u0026digitalocean.LookupVpcArgs{\n\t\t\tName: \u0026opt0,\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\nReuse the data about a VPC to assign a Droplet to it:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst exampleVpc = digitalocean.getVpc({\n name: \"example-network\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"exampleDroplet\", {\n size: \"s-1vcpu-1gb\",\n image: \"ubuntu-18-04-x64\",\n region: \"nyc3\",\n vpcUuid: exampleVpc.then(exampleVpc =\u003e exampleVpc.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample_vpc = digitalocean.get_vpc(name=\"example-network\")\nexample_droplet = digitalocean.Droplet(\"exampleDroplet\",\n size=\"s-1vcpu-1gb\",\n image=\"ubuntu-18-04-x64\",\n region=\"nyc3\",\n vpc_uuid=example_vpc.id)\n```\n```csharp\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var exampleVpc = Output.Create(DigitalOcean.GetVpc.InvokeAsync(new DigitalOcean.GetVpcArgs\n {\n Name = \"example-network\",\n }));\n var exampleDroplet = new DigitalOcean.Droplet(\"exampleDroplet\", new DigitalOcean.DropletArgs\n {\n Size = \"s-1vcpu-1gb\",\n Image = \"ubuntu-18-04-x64\",\n Region = \"nyc3\",\n VpcUuid = exampleVpc.Apply(exampleVpc =\u003e exampleVpc.Id),\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\topt0 := \"example-network\"\n\t\texampleVpc, err := digitalocean.LookupVpc(ctx, \u0026digitalocean.LookupVpcArgs{\n\t\t\tName: \u0026opt0,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"exampleDroplet\", \u0026digitalocean.DropletArgs{\n\t\t\tSize: pulumi.String(\"s-1vcpu-1gb\"),\n\t\t\tImage: pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion: pulumi.String(\"nyc3\"),\n\t\t\tVpcUuid: pulumi.String(exampleVpc.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{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getVpc.\n", "properties": { diff --git a/provider/cmd/pulumi-tfgen-digitalocean/main.go b/provider/cmd/pulumi-tfgen-digitalocean/main.go index fc7cd559..78e29f6c 100644 --- a/provider/cmd/pulumi-tfgen-digitalocean/main.go +++ b/provider/cmd/pulumi-tfgen-digitalocean/main.go @@ -15,8 +15,8 @@ package main import ( - digitalocean "github.com/pulumi/pulumi-digitalocean/provider/v2" - "github.com/pulumi/pulumi-digitalocean/provider/v2/pkg/version" + digitalocean "github.com/pulumi/pulumi-digitalocean/provider/v3" + "github.com/pulumi/pulumi-digitalocean/provider/v3/pkg/version" "github.com/pulumi/pulumi-terraform-bridge/v2/pkg/tfgen" ) diff --git a/provider/go.mod b/provider/go.mod index 9d01f69a..19ba77da 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -1,4 +1,4 @@ -module github.com/pulumi/pulumi-digitalocean/provider/v2 +module github.com/pulumi/pulumi-digitalocean/provider/v3 go 1.14 @@ -10,8 +10,9 @@ require ( ) replace ( +github.com/hashicorp/terraform-plugin-sdk/v2 => github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20200910230100-328eb4ff41df github.com/Azure/go-autorest => github.com/Azure/go-autorest v12.4.3+incompatible - github.com/digitalocean/terraform-provider-digitalocean => github.com/pulumi/terraform-provider-digitalocean v1.19.1-0.20201014100851-1c33389dce60 + github.com/digitalocean/terraform-provider-digitalocean => github.com/pulumi/terraform-provider-digitalocean v1.19.1-0.20201023114808-70dd36edc427 github.com/hashicorp/terraform-plugin-test => github.com/hashicorp/terraform-plugin-test v1.3.0 github.com/hashicorp/vault => github.com/hashicorp/vault v1.2.0 github.com/keybase/go-crypto => github.com/keybase/go-crypto v0.0.0-20190416182011-b785b22cc757 diff --git a/provider/go.sum b/provider/go.sum index f7d97fb9..d15bbdd7 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -1,7 +1,6 @@ bazil.org/fuse v0.0.0-20180421153158-65cc252bf669/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.37.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.39.0/go.mod h1:rVLT6fkc8chs9sfPtFc1SBH6em7n+ZoXaG+87tDISts= cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= @@ -29,8 +28,6 @@ cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvf cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigtable v1.0.1-0.20190930151326-312d69ccea6e h1:jVF3KKSKU7ecc3EEqTyEBRrEssm7HzIDYaFTxmItFH8= -cloud.google.com/go/bigtable v1.0.1-0.20190930151326-312d69ccea6e/go.mod h1:B6r9sBSyvkueGS0t2yT0DQK9yhCwbgi3hrvgHp/yqcY= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0 h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= @@ -50,29 +47,21 @@ cloud.google.com/go/storage v1.9.0 h1:oXnZyBjHB6hC8TnSle0AWW6pGJ29EuSo5ww+SFmdNB cloud.google.com/go/storage v1.9.0/go.mod h1:m+/etGaqZbylxaNT876QGXqEHp4PR2Rq5GMqICWb9bU= cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -code.cloudfoundry.org/gofileutils v0.0.0-20170111115228-4d0c80011a0f/go.mod h1:sk5LnIjB/nIEU7yP5sDQExVm62wu0pBh3yrElngUisI= contrib.go.opencensus.io/exporter/aws v0.0.0-20181029163544-2befc13012d0/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= -contrib.go.opencensus.io/exporter/ocagent v0.4.12/go.mod h1:450APlNTSR6FrvC3CTRqYosuDstRB9un7SOx2k/9ckA= -contrib.go.opencensus.io/exporter/ocagent v0.5.0/go.mod h1:ImxhfLRpxoYiSq891pBrLVhN+qmP8BTVvdH2YLs7Gl0= -contrib.go.opencensus.io/exporter/ocagent v0.6.0/go.mod h1:zmKjrJcdo0aYcVS7bmEeSEBLPA9YJp5bjrofdU3pIXs= contrib.go.opencensus.io/exporter/stackdriver v0.12.1/go.mod h1:iwB6wGarfphGGe/e5CWqyUk/cLzKnWsOKPVW3no6OTw= contrib.go.opencensus.io/integrations/ocsql v0.1.4/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= contrib.go.opencensus.io/resource v0.1.1/go.mod h1:F361eGI91LCmW1I/Saf+rX0+OFcigGlFvXwEGEnkRLA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -git.apache.org/thrift.git v0.12.0/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= github.com/AlecAivazis/survey/v2 v2.0.5/go.mod h1:WYBhg6f0y/fNYUuesWQc0PKbJcEliGcYHB9sNT3Bg74= github.com/Azure/azure-amqp-common-go/v3 v3.0.0/go.mod h1:SY08giD/XbhTz07tJdpw1SoxQXHPN30+DI3Z04SYqyg= github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= -github.com/Azure/azure-sdk-for-go v29.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v37.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-service-bus-go v0.10.1/go.mod h1:E/FOceuKAFUfpbIJDKWz/May6guE+eGibfGT6q+n1to= github.com/Azure/azure-storage-blob-go v0.9.0/go.mod h1:8UBPbiOhrMQ4pLPi3gA1tXnpjrS76UYE/fo5A40vf4g= github.com/Azure/go-amqp v0.12.6/go.mod h1:qApuH6OFTSKZFmCOxccvAv5rLizBQf4v8pRmG138DPo= github.com/Azure/go-amqp v0.12.7/go.mod h1:qApuH6OFTSKZFmCOxccvAv5rLizBQf4v8pRmG138DPo= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-autorest v12.4.3+incompatible h1:tCkdkgLZqAk+43nZu3wda9n413Q2g+z7xp1wmjiJTPY= -github.com/Azure/go-autorest v12.4.3+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= github.com/Azure/go-autorest/autorest v0.10.0 h1:mvdtztBqcL8se7MdrUweNieTNi4kfNG6GOJuurQJpuY= @@ -102,27 +91,11 @@ github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbt github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/DataDog/datadog-go v2.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20191009163259-e802c2cb94ae/go.mod h1:mjwGPas4yKduTyubHvD1Atl9r1rUq8DfVy+gkVvZ+oo= -github.com/Jeffail/gabs v1.1.1/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc= -github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Microsoft/go-winio v0.4.12/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/Netflix/go-expect v0.0.0-20180615182759-c93bf25de8e8/go.mod h1:oX5x61PbNXchhh0oikYAH+4Pcfw5LKv21+Jnpr6r6Pc= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OpenPeeDeeP/depguard v1.0.0/go.mod h1:7/4sitnI9YlQgTLLk734QlzXT8DuHVnAyztLplQjk+o= -github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/SAP/go-hdb v0.14.1/go.mod h1:7fdQLVC2lER3urZLjZCm0AuMQfApof92n3aylBPEkMo= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/Sirupsen/logrus v1.0.5/go.mod h1:rmk17hk6i8ZSAJkSDa7nOxamrG+SP4P0mm+DAvExv4U= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE= github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= @@ -131,12 +104,8 @@ github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBb github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190412020505-60e2075261b6/go.mod h1:T9M45xf79ahXVelWoOBmH0y4aC1t5kXO5BxwyakgIGA= -github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190620160927-9418d7b0cd0f/go.mod h1:myCDvQSzCW+wB1WAlocEru4wMGJxy+vlxHdhegi1CDQ= -github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apparentlymart/go-cidr v1.0.1 h1:NmIwLZ/KdsjIUlhf+/Np40atNXm/+lZ5txfTJ/SpF+U= github.com/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= @@ -145,18 +114,13 @@ github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0/go.mod h1:o github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= -github.com/apple/foundationdb/bindings/go v0.0.0-20190411004307-cd5c9d91fad2/go.mod h1:OMVSB21p9+xQUIqlGizHPZfjK+SHws1ht+ZytVDoz9U= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.0.0-20190430140413-ec5e00d3c878/go.mod h1:3AMJUQhVx52RsWOnlkpikZr01T/yAVN2gn0861vByNg= -github.com/armon/go-proxyproto v0.0.0-20190211145416-68259f75880e/go.mod h1:QmP9hvJ91BbJmGVGSbutW19IC0Q9phDCLGaomwTJbgU= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= github.com/aws/aws-sdk-go v1.19.18/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= @@ -165,70 +129,40 @@ github.com/aws/aws-sdk-go v1.25.3/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN github.com/aws/aws-sdk-go v1.25.4/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.31.13 h1:UeWMTRTL0XAKLR7vxDL4/u7KOtz/LtfJr+lXtxN4YEQ= github.com/aws/aws-sdk-go v1.31.13/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= -github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= -github.com/beevik/etree v1.1.0 h1:T0xke/WvNtMoCqgzPhkX2r4rjY3GDZFi+FjpRZY2Jbs= -github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/bflad/tfproviderlint v0.5.0/go.mod h1:rADZLkXIOfWikYWuaz64bMqDzzk91FAYN+3hTgb9FHw= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/bombsimon/wsl v1.2.1/go.mod h1:43lEF/i0kpXbLCeDXL9LMT8c92HyBywXb0AsgMHYngM= -github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8WK8raXaxBx6fRVTlJILwEwQGL1I/ByEI= -github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/briankassouf/jose v0.9.2-0.20180619214549-d2569464773f/go.mod h1:HQhVmdUf7dBNwIIdBTivnCDxcf6IZY3/zrb+uKSJz6Y= github.com/bsm/go-vlq v0.0.0-20150828105119-ec6e8d4f5f4e/go.mod h1:N+BjUcTjSxc2mtRGSCPsat1kze3CUtvJN3/jTXlp29k= -github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/centrify/cloud-golang-sdk v0.0.0-20190214225812-119110094d0f/go.mod h1:C0rtzmGXgN78pYR0tGJFhtHgkbAs0lIbHwkB81VxDQE= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cheggaaa/pb v1.0.18/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/cheggaaa/pb v1.0.27 h1:wIkZHkNfC7R6GI5w7l/PdAdzXzlrbcI3p8OAlnkTsnc= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= -github.com/chrismalek/oktasdk-go v0.0.0-20181212195951-3430665dfaa0/go.mod h1:5d8DqS60xkj9k3aXfL3+mXBH0DPYO0FQjcKosxl+b/Q= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudfoundry-community/go-cfclient v0.0.0-20190201205600-f136f9222381/go.mod h1:e5+USP2j8Le2M0Jo3qKPFnNhuo1wueU4nWHCXBOfQ14= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= -github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= -github.com/containerd/continuity v0.0.0-20181203112020-004b46473808/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-oidc v2.0.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/denisenkom/go-mssqldb v0.0.0-20190412130859-3b1d194e553a/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM= github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= -github.com/dgrijalva/jwt-go v0.0.0-20160705203006-01aeca54ebda/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= @@ -237,32 +171,14 @@ github.com/digitalocean/godo v1.45.0/go.mod h1:p7dOjjtSBqCTUksqtA5Fd3uaKs9kyTq2x github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= github.com/djherbis/times v1.2.0 h1:xANXjsC/iBqbO00vkWlYwPWgBgEVU6m6AFYg0Pic+Mc= github.com/djherbis/times v1.2.0/go.mod h1:CGMZlo255K5r4Yw0b9RRfFQpM2y7uOmxg4jm9HsaVf8= -github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= github.com/docker/docker v0.0.0-20170504205632-89658bed64c2/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -github.com/duosecurity/duo_api_golang v0.0.0-20190308151101-6c680f768e74/go.mod h1:UqXY1lYT/ERa4OEAywUqdok1T4RCRdArkhic1Opuavo= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustinkirkland/golang-petname v0.0.0-20170105215008-242afa0b4f8a/go.mod h1:V+Qd57rJe8gd4eiGzZyg4h54VLHmYVVw54iMnlAMrF8= -github.com/dustinkirkland/golang-petname v0.0.0-20170921220637-d3c2ba80e75e h1:bRcq7ruHMqCVB/ugLbBylx+LrccNACFDEaqAD/aZ80Q= -github.com/dustinkirkland/golang-petname v0.0.0-20170921220637-d3c2ba80e75e/go.mod h1:V+Qd57rJe8gd4eiGzZyg4h54VLHmYVVw54iMnlAMrF8= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= -github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v0.0.0-20190203023257-5858425f7550/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/fatih/color v1.6.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= @@ -270,26 +186,12 @@ github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/frankban/quicktest v1.4.2 h1:eV8n2LQHuA97qKj0t6+7UrHRU0Smz9G+yh87F3Z+3Uk= -github.com/frankban/quicktest v1.4.2/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= -github.com/gammazero/deque v0.0.0-20180920172122-f6adf94963e4/go.mod h1:GeIq9qoE43YdGnDXURnmKTnGg15pQz4mYkXSTChbneI= -github.com/gammazero/deque v0.0.0-20190130191400-2afb3858e9c7 h1:D2LrfOPgGHQprIxmsTpxtzhpmF66HoM6rXSmcqaX7h8= -github.com/gammazero/deque v0.0.0-20190130191400-2afb3858e9c7/go.mod h1:GeIq9qoE43YdGnDXURnmKTnGg15pQz4mYkXSTChbneI= -github.com/gammazero/workerpool v0.0.0-20181230203049-86a96b5d5d92/go.mod h1:w9RqFVO2BM3xwWEcAB8Fwp0OviTBBEiRmSBDfbXnd3w= -github.com/gammazero/workerpool v0.0.0-20190406235159-88d534f22b56 h1:VzbudKn/nvxYKOdzgkEBS6SSreRjAgoJ+ZeS4wPFkgc= -github.com/gammazero/workerpool v0.0.0-20190406235159-88d534f22b56/go.mod h1:w9RqFVO2BM3xwWEcAB8Fwp0OviTBBEiRmSBDfbXnd3w= github.com/gedex/inflector v0.0.0-20170307190818-16278e9db813 h1:Uc+IZ7gYqAf/rSGFplbWBSHaGolEQlNLgMgSE3ccnIQ= github.com/gedex/inflector v0.0.0-20170307190818-16278e9db813/go.mod h1:P+oSoE9yhSRvsmYyZsshflcR6ePWYLql6UU1amW13IM= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/go-critic/go-critic v0.3.5-0.20190526074819-1df300866540/go.mod h1:+sE8vrLDS2M0pZkBk0wy6+nLdKexVDrl/jBqQOTDThA= -github.com/go-critic/go-critic v0.3.5-0.20190904082202-d79a9f0c64db/go.mod h1:+sE8vrLDS2M0pZkBk0wy6+nLdKexVDrl/jBqQOTDThA= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= github.com/go-git/go-billy/v5 v5.0.0 h1:7NQHvd9FVid8VL4qVUMm8XifBK+2xCoZ2lSk0agRrHM= @@ -304,62 +206,26 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2 github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= -github.com/go-lintpack/lintpack v0.5.2/go.mod h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTDqfpXvXAN0sXM= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= -github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4= -github.com/go-toolsmith/astcopy v1.0.0/go.mod h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ= -github.com/go-toolsmith/astequal v0.0.0-20180903214952-dcb477bfacd6/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= -github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= -github.com/go-toolsmith/astfmt v0.0.0-20180903215011-8f8ee99c3086/go.mod h1:mP93XdblcopXwlyN4X4uodxXQhldPGZbcEJIimQHrkg= -github.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw= -github.com/go-toolsmith/astinfo v0.0.0-20180906194353-9809ff7efb21/go.mod h1:dDStQCHtmZpYOmjRP/8gHHnCCch3Zz3oEgCdZVdtweU= -github.com/go-toolsmith/astp v0.0.0-20180903215135-0af7e3c24f30/go.mod h1:SV2ur98SGypH1UjcPpCatrV5hPazG6+IfNHbkDXBRrk= -github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI= -github.com/go-toolsmith/pkgload v0.0.0-20181119091011-e9e65178eee8/go.mod h1:WoMrjiy4zvdS+Bg6z9jZH82QXwkcgCBX6nOfnmdaHks= -github.com/go-toolsmith/pkgload v1.0.0/go.mod h1:5eFArkbO80v7Z0kdngIxsRXRMTaX4Ilcwuh3clNrQJc= -github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= -github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= -github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/gocql/gocql v0.0.0-20190402132108-0e1d5de854df/go.mod h1:4Fw1eo5iaEhDUs8XyuhSVCVy52Jq3L+/3GJgYkwc+/0= github.com/gofrs/flock v0.7.1 h1:DP+LD/t0njgoPBvT5MJLeliUIVQR03hiKR6vezdwHlc= github.com/gofrs/flock v0.7.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gogo/protobuf v0.0.0-20171007142547-342cbe0a0415/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.0 h1:G8O7TerXerS4F6sx9OV7/nRfJdnXgHZu/S/7F2SN+UE= -github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= -github.com/golang/mock v1.0.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -368,7 +234,6 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3 h1:GV+pQPG/EUUbkh47niozDcADz6go/dUwhVzdUQHIVRw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -385,32 +250,8 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= -github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= -github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6/go.mod h1:DbHgvLiFKX1Sh2T1w8Q/h4NAI8MHIpzCdnBUDTXU3I0= -github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613/go.mod h1:SyvUF2NxV+sN8upjjeVYr5W7tyxaT1JVtvhKhOn2ii8= -github.com/golangci/go-tools v0.0.0-20190318055746-e32c54105b7c/go.mod h1:unzUULGw35sjyOYjUt0jMTXqHlZPpPc6e+xfO4cd6mM= -github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3/go.mod h1:JXrF4TWy4tXYn62/9x8Wm/K/dm06p8tCKwFRDPZG/1o= -github.com/golangci/gocyclo v0.0.0-20180528134321-2becd97e67ee/go.mod h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU= -github.com/golangci/gofmt v0.0.0-20181222123516-0b8337e80d98/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= -github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= -github.com/golangci/golangci-lint v1.18.0/go.mod h1:kaqo8l0OZKYPtjNmG4z4HrWLgcYNIJ9B9q3LWri9uLg= -github.com/golangci/golangci-lint v1.20.0/go.mod h1:WhcG5dpuf94TEpqUBk95qBEZ599UcAvuGf02g47CdXU= -github.com/golangci/gosec v0.0.0-20190211064107-66fb7fc33547/go.mod h1:0qUabqiIQgfmlAmulqxyiGkkyF6/tOGSnY2cnPVwrzU= -github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc/go.mod h1:e5tpTHCfVze+7EpLEozzMB3eafxo2KT5veNg1k6byQU= -github.com/golangci/lint-1 v0.0.0-20190420132249-ee948d087217/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= -github.com/golangci/lint-1 v0.0.0-20190930103755-fad67e08aa89/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= -github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= -github.com/golangci/misspell v0.0.0-20180809174111-950f5d19e770/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= -github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21/go.mod h1:tf5+bzsHdTM0bsB7+8mt0GUMvjCgwLpTapNZHU8AajI= -github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4= -github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= -github.com/google/btree v0.0.0-20160524151835-7d79101e329e/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -423,13 +264,10 @@ github.com/google/go-cmp v0.4.1 h1:/exdXoGamhu5ONeUJH0deniYLWYvQwW66yvlfiiKTu0= github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-replayers/grpcreplay v0.1.0/go.mod h1:8Ig2Idjpr6gifRd6pNVggX6TC1Zw6Jx74AKp7QNH2QE= github.com/google/go-replayers/httpreplay v0.1.0/go.mod h1:YKZViNhiGgqdBlUbI2MwGpq4pXxNmhJLPHQ7cv2b5no= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= @@ -447,7 +285,6 @@ github.com/google/pprof v0.0.0-20200507031123-427632fa3b1c/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/wire v0.4.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= @@ -456,40 +293,13 @@ github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.2.0 h1:l6N3VoaVzTncYYW+9yOz2LJJammFZGBO13sqgEhpy9g= -github.com/googleapis/gnostic v0.2.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/gophercloud/gophercloud v0.0.0-20190126172459-c818fa66e4c8/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4= -github.com/gophercloud/gophercloud v0.3.1-0.20190807175045-25a84d593c97 h1:aK7cPPR1f79MwKk6jqkcmRx94sgdGId9sDIzRvd4CZ4= -github.com/gophercloud/gophercloud v0.3.1-0.20190807175045-25a84d593c97/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= -github.com/gopherjs/gopherjs v0.0.0-20180628210949-0892b62f0d9f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75/go.mod h1:g2644b03hfBX9Ov0ZBDgXXens4rxSxmqFBbhvKv2yVA= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= -github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= -github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.4.1/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= -github.com/grpc-ecosystem/grpc-gateway v1.6.2/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= -github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.4/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= -github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= -github.com/hashicorp/aws-sdk-go-base v0.4.0 h1:zH9hNUdsS+2G0zJaU85ul8D59BGnZBaKM+KMNPAHGwk= -github.com/hashicorp/aws-sdk-go-base v0.4.0/go.mod h1:eRhlz3c4nhqxFZJAahJEFL7gh6Jyj5rQmQc7F9eHFyQ= -github.com/hashicorp/consul/api v1.0.1/go.mod h1:LQlewHPiuaRhn1mP2XE4RrjnlRgOeWa/ZM0xWLCen2M= -github.com/hashicorp/consul/sdk v0.1.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v0.0.0-20180715044906-d6c0cd880357/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -500,20 +310,15 @@ github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVo github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI= github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs= -github.com/hashicorp/go-gcp-common v0.5.0/go.mod h1:IDGUI2N/OS3PiU4qZcXJeWKPI6O/9Y8hOrbSiMcqyYw= github.com/hashicorp/go-getter v1.4.0 h1:ENHNi8494porjD0ZhIrjlAHnveSFhY7hvOJrV/fsKkw= github.com/hashicorp/go-getter v1.4.0/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY= github.com/hashicorp/go-getter v1.4.2-0.20200106182914-9813cbd4eb02 h1:l1KB3bHVdvegcIf5upQ5mjcHjs2qsWnKh4Yr9xgIuu8= github.com/hashicorp/go-getter v1.4.2-0.20200106182914-9813cbd4eb02/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY= github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v0.9.1/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.9.2 h1:CG6TE5H9/JXsFWJCfoIVpKFIkFe6ysEuHirp4DxCsHI= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-memdb v1.0.2/go.mod h1:I6dKdmYhZqU0RJSheVEWgTNWdVQH5QvTgIUQ0t/t32M= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v0.0.0-20180717150148-3d5d8f294aa0/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= @@ -524,16 +329,11 @@ github.com/hashicorp/go-plugin v1.2.0 h1:CUfYokW0EJNDcGecVrHZK//Cp1GFlHwoqtcUIEi github.com/hashicorp/go-plugin v1.2.0/go.mod h1:F9eH4LrE/ZsRdbwhfjs9k9HoDUwAHnYtXdgmf1AVNs0= github.com/hashicorp/go-plugin v1.3.0 h1:4d/wJojzvHV1I4i/rrjVaeuyxWrLzDE1mDCyDy8fXS8= github.com/hashicorp/go-plugin v1.3.0/go.mod h1:F9eH4LrE/ZsRdbwhfjs9k9HoDUwAHnYtXdgmf1AVNs0= -github.com/hashicorp/go-raftchunking v0.6.2/go.mod h1:cGlg3JtDy7qy6c/3Bu660Mic1JF+7lWqIwCFSb08fX0= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -542,11 +342,9 @@ github.com/hashicorp/go-version v1.2.0 h1:3vNe/fWF5CBgRIguda1meWhsZHy3m8gCJ5wx+d github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.1 h1:zEfKbn2+PDgroKdiOzqiE8rsmLqU2uwi5PB5pBJ3TkI= github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= -github.com/hashicorp/hcl v0.0.0-20180404174102-ef8a98b0bbce/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.0.0/go.mod h1:oVVDG71tEinNGYCxinCYadcmKU9bglqW9pV3txagJ90= @@ -559,65 +357,38 @@ github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93 h1:T1Q6ag9tCwun16AW+ github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93/go.mod h1:n2TSygSNwsLJ76m8qFXTSc7beTb+auJxYdqrnoqwZWE= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/nomad/api v0.0.0-20190412184103-1c38ced33adf/go.mod h1:BDngVi1f4UA6aJq9WYTgxhfWSE1+42xshvstLU2fRGk= -github.com/hashicorp/raft v1.0.1/go.mod h1:DVSAWItjLjTOkVbSpWQ0j0kUADIvDaCtBxIcbNAQLkI= -github.com/hashicorp/raft v1.1.1/go.mod h1:vPAJM8Asw6u8LxC3eJCUZmRP/E4QmUGE1R7g7k8sG/8= -github.com/hashicorp/raft-boltdb v0.0.0-20171010151810-6e5ba93211ea/go.mod h1:pNv7Wc3ycL6F5oOWn+tPGo2gWD4a5X+yp/ntwdKLjRk= -github.com/hashicorp/raft-snapshot v1.0.1/go.mod h1:5sL9eUn72lH5DzsFIJ9jaysITbHksSSszImWSOTC8Ic= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/terraform-config-inspect v0.0.0-20190821133035-82a99dc22ef4/go.mod h1:JDmizlhaP5P0rYTTZB0reDMefAiJyfWPEtugV4in1oI= github.com/hashicorp/terraform-config-inspect v0.0.0-20191115094559-17f92b0546e8 h1:+RyjwU+Gnd/aTJBPZVDNm903eXVjjqhbaR4Ypx3xYyY= github.com/hashicorp/terraform-config-inspect v0.0.0-20191115094559-17f92b0546e8/go.mod h1:p+ivJws3dpqbp1iP84+npOyAmTTOLMgCzrXd3GSdn/A= github.com/hashicorp/terraform-exec v0.9.0 h1:NmCtcsnmPBU6P3cDeKD26bD72evsMhmuDLvuNRgrTHc= github.com/hashicorp/terraform-exec v0.9.0/go.mod h1:tOT8j1J8rP05bZBGWXfMyU3HkLi1LWyqL3Bzsc3CJjo= +github.com/hashicorp/terraform-exec v0.10.0 h1:3nh/1e3u9gYRUQGOKWp/8wPR7ABlL2F14sZMZBrp+dM= +github.com/hashicorp/terraform-exec v0.10.0/go.mod h1:tOT8j1J8rP05bZBGWXfMyU3HkLi1LWyqL3Bzsc3CJjo= github.com/hashicorp/terraform-json v0.4.0 h1:KNh29iNxozP5adfUFBJ4/fWd0Cu3taGgjHB38JYqOF4= github.com/hashicorp/terraform-json v0.4.0/go.mod h1:eAbqb4w0pSlRmdvl8fOyHAi/+8jnkVYN28gJkSJrLhU= github.com/hashicorp/terraform-json v0.5.0 h1:7TV3/F3y7QVSuN4r9BEXqnWqrAyeOtON8f0wvREtyzs= github.com/hashicorp/terraform-json v0.5.0/go.mod h1:eAbqb4w0pSlRmdvl8fOyHAi/+8jnkVYN28gJkSJrLhU= github.com/hashicorp/terraform-plugin-sdk v1.0.0/go.mod h1:NuwtLpEpPsFaKJPJNGtMcn9vlhe6Ofe+Y6NqXhJgV2M= -github.com/hashicorp/terraform-plugin-sdk v1.1.1/go.mod h1:NuwtLpEpPsFaKJPJNGtMcn9vlhe6Ofe+Y6NqXhJgV2M= github.com/hashicorp/terraform-plugin-sdk v1.7.0 h1:B//oq0ZORG+EkVrIJy0uPGSonvmXqxSzXe8+GhknoW0= github.com/hashicorp/terraform-plugin-sdk v1.7.0/go.mod h1:OjgQmey5VxnPej/buEhe+YqKm0KNvV3QqU4hkqHqPCY= github.com/hashicorp/terraform-plugin-sdk v1.15.0 h1:bmYnTT7MqNXlUHDc7pT8E6uKT2g/upjlRLypJFK1OQU= github.com/hashicorp/terraform-plugin-sdk v1.15.0/go.mod h1:PuFTln8urDmRM6mV0II6apOTsyG/iHkxp+5W11eJE58= github.com/hashicorp/terraform-plugin-sdk/v2 v2.0.2 h1:gNLt9kE9YZnYHB1VCDQI0AvNVcvlRPHMeOHtMAoHwLk= github.com/hashicorp/terraform-plugin-sdk/v2 v2.0.2/go.mod h1:pVZLnLuSe/yv0XqTHFPb8xRGWPwgANT77jHeHqjXS5o= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.0.3 h1:X7VmKpcIxq+rIbuqe5TPN27KLzbO9aXQcjG4c5iC3tk= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.0.3/go.mod h1:oz4kkpfTJ/hA2VMD0WpITTd3yPDGpT4uN7CiKdre/YI= github.com/hashicorp/terraform-plugin-test v1.3.0 h1:hU5LoxrOn9qvOo+LTKN6mSav2J+dAMprbdxJPEQvp4U= github.com/hashicorp/terraform-plugin-test v1.3.0/go.mod h1:QIJHYz8j+xJtdtLrFTlzQVC0ocr3rf/OjIpgZLK56Hs= github.com/hashicorp/terraform-plugin-test/v2 v2.1.1 h1:aATRyyPlEKkFYUweD2Hld9eep77qzJVu8wg0mgyUE50= github.com/hashicorp/terraform-plugin-test/v2 v2.1.1/go.mod h1:HaW2G5cDTVyiEKt7PHC85YSM5BwvYl/rIko1g8Lg7qE= +github.com/hashicorp/terraform-plugin-test/v2 v2.1.2 h1:p96IIn+XpvVjw7AtN8y9MKxn0x69S7wtbGf7JgDJoIk= +github.com/hashicorp/terraform-plugin-test/v2 v2.1.2/go.mod h1:jerO5mrd+jVNALy8aiq+VZOg/CR8T2T1QR3jd6JKGOI= github.com/hashicorp/terraform-svchost v0.0.0-20191011084731-65d371908596 h1:hjyO2JsNZUKT1ym+FAdlBEkGPevazYsmVgIMw7dVELg= github.com/hashicorp/terraform-svchost v0.0.0-20191011084731-65d371908596/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg= github.com/hashicorp/terraform-svchost v0.0.0-20191119180714-d2e4933b9136 h1:81Dg7SK6Q5vzqFItO8e1iIF2Nj8bLXV23NXjEgbev/s= github.com/hashicorp/terraform-svchost v0.0.0-20191119180714-d2e4933b9136/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg= -github.com/hashicorp/vault v1.2.0 h1:Daa0PtdqucVNuQ9KbvOk0XjbsGvPoFKv9X9fdKHQTrk= -github.com/hashicorp/vault v1.2.0/go.mod h1:HIOD/sbdZJ+KKX2/d/a4m/KDsBRjns8YDVnFUdcJjFc= -github.com/hashicorp/vault-plugin-auth-alicloud v0.5.2-0.20190730042457-c395df6cf9ad/go.mod h1:gGDuTBheAxJNRSuMP9GXYaZG6fcmJwZmeCDnkeGh1dY= -github.com/hashicorp/vault-plugin-auth-azure v0.5.2-0.20190730042506-ea9c527dad54/go.mod h1:8ohKOZvLdPcgxcGG2Y0xt3a8T4xQzxRPIgyGj9Y9pnE= -github.com/hashicorp/vault-plugin-auth-centrify v0.5.2-0.20190730042513-cbbe5ae0021d/go.mod h1:1AEVetqwm/CpGJLS3kbmesG2DXlcodD1q9md3InmIwE= -github.com/hashicorp/vault-plugin-auth-gcp v0.5.1/go.mod h1:eLj92eX8MPI4vY1jaazVLF2sVbSAJ3LRHLRhF/pUmlI= -github.com/hashicorp/vault-plugin-auth-gcp v0.5.2-0.20190730042519-f5a47667d35c/go.mod h1:RQabTr6JNn3J4K4CGY9CohFO0shpAK6QCx2LrntPehg= -github.com/hashicorp/vault-plugin-auth-jwt v0.5.2-0.20190730042527-3d85d12ec6b6/go.mod h1:vtUJ+05r7coC4TyKEdZ8Fw/wzRKikDkoBuHFS/9JJgo= -github.com/hashicorp/vault-plugin-auth-kubernetes v0.5.2-0.20190730042533-e4b69df916b8/go.mod h1:vbsD/KqeeknPR31viJ/Ch3pii1NHFxsBrdBSxIV7HSs= -github.com/hashicorp/vault-plugin-auth-pcf v0.0.0-20190730042539-6f948c02ea2d/go.mod h1:+Zk2sV+Ga2KPH5QTmDU3v7qBJDD9GljESoNdU/Ea/0A= -github.com/hashicorp/vault-plugin-database-elasticsearch v0.0.0-20190730042544-81772df4467d/go.mod h1:KD56g+aeTNH2AM1l8iOBf5KxX+DSNKleEswJxXE8nI8= -github.com/hashicorp/vault-plugin-secrets-ad v0.5.3-0.20190730042549-a191a183a1f3/go.mod h1:bOd6HVuGZgcKR+QUUhGvQ+BU8d8KqRNAXvQ8ihBmtfo= -github.com/hashicorp/vault-plugin-secrets-alicloud v0.5.2-0.20190730042556-6c462a37ae43/go.mod h1:ndDvbwS9SkZrxzlnjsNtmYc2Qz1WNFtQEvlYuljE+NM= -github.com/hashicorp/vault-plugin-secrets-azure v0.5.2-0.20190730042604-fc8e75528aa0/go.mod h1:R/PeTA9E4NfMd8NGy9gmOFJNyB+JcQDsckD0HXv7wZw= -github.com/hashicorp/vault-plugin-secrets-gcp v0.5.3-0.20190730042611-bdbdbdf0ecec/go.mod h1:GJjJ2oa9CenWs35tZwParXQzhGgwQxAtlZ+CelUBtSE= -github.com/hashicorp/vault-plugin-secrets-gcpkms v0.5.2-0.20190730042620-21e481a323c7/go.mod h1:He7TWjrGUzez4tDq/cEzQWmqr/puNAnUdrn+t6uNoxw= -github.com/hashicorp/vault-plugin-secrets-kv v0.5.2-0.20190730042626-1ef9e711c818/go.mod h1:NVTIsqXgIu1CW+Dsnkn8AE4+QVrivR8sAzlGT7+aO58= -github.com/hashicorp/vault/api v1.0.1/go.mod h1:AV/+M5VPDpB90arloVX0rVDUIHkONiwz5Uza9HRtpUE= github.com/hashicorp/vault/api v1.0.2/go.mod h1:AV/+M5VPDpB90arloVX0rVDUIHkONiwz5Uza9HRtpUE= -github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q= -github.com/hashicorp/vault/api v1.0.5-0.20190730042357-746c0b111519/go.mod h1:i9PKqwFko/s/aihU1uuHGh/FaQS+Xcgvd9dvnfAvQb0= github.com/hashicorp/vault/sdk v0.1.8/go.mod h1:tHZfc6St71twLizWNHvnnbiGFo1aq0eD2jGPLtP8kAU= -github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= -github.com/hashicorp/vault/sdk v0.1.14-0.20190729200543-e88721c7db1e/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= -github.com/hashicorp/vault/sdk v0.1.14-0.20190730042320-0dc007d98cc8 h1:fLUoZ8cI/pqlVCk09r88cVoY7ggKEl1A4e6Mujr3RvU= -github.com/hashicorp/vault/sdk v0.1.14-0.20190730042320-0dc007d98cc8/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= @@ -625,23 +396,12 @@ github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174/go.mod h1:DqJ97dSdRW github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84= -github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.7 h1:Y+UAYTZ7gDEuOfhxKWy+dvb5dRQ6rJjFSdX2HZY1/gI= -github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.9 h1:UauaLniWCFHWd+Jp9oCEkTBj8VO/9DKg3PV3VCNMDIg= github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb v0.0.0-20190411212539-d24b7ba8c4c4/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= -github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= -github.com/jackc/pgx v3.3.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jeffchao/backoff v0.0.0-20140404060208-9d7fd7aa17f2/go.mod h1:xkfESuHriIekR+4RoV+fu91j/CfnYM29Zi2tMFw5iD4= -github.com/jefferai/isbadcipher v0.0.0-20190226160619-51d2077c035f/go.mod h1:3J2qVK16Lq8V+wfiL2lPeDZ7UWMxk5LemerHa1p6N00= -github.com/jefferai/jsonx v1.0.0/go.mod h1:OGmqmi2tTeI/PS+qQfBDToLHHJIy/RMp24fPo8vFvoQ= -github.com/jen20/awspolicyequivalence v1.0.0 h1:jLRh4GRf0IfIpMm9/m+krLnjAda4NpI9+2o5Kb/Q+G4= -github.com/jen20/awspolicyequivalence v1.0.0/go.mod h1:PV1fS2xyHhCLp83vbgSMFr2drM4GzG61wkz+k4pOG3E= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE= github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= @@ -652,20 +412,11 @@ github.com/jmespath/go-jmespath v0.3.0 h1:OS12ieG61fsCg5+qLJ+SsW9NicxNkg3b25OyT2 github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/joyent/triton-go v0.0.0-20190112182421-51ffac552869/go.mod h1:U+RSyWxWd04xTqnuOQxnai7XGS2PrPY2cfGoDKtMHjA= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46Ok= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY= @@ -674,12 +425,7 @@ github.com/keybase/go-crypto v0.0.0-20190416182011-b785b22cc757 h1:rHXu79NFmin5A github.com/keybase/go-crypto v0.0.0-20190416182011-b785b22cc757/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/gotool v0.0.0-20161130080628-0de1eaf82fa3/go.mod h1:jxZFDH7ILpTPQTk+E2s+z4CUas9lVNjIuKR4c5/zKgM= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= @@ -688,7 +434,6 @@ github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.0.0/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.4/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= @@ -696,19 +441,11 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kubernetes-sigs/aws-iam-authenticator v0.3.1-0.20181019024009-82544ec86140 h1:AtXWrgewhHlLux0IAfHINCbkxkf47euklyallWlximw= -github.com/kubernetes-sigs/aws-iam-authenticator v0.3.1-0.20181019024009-82544ec86140/go.mod h1:ItxiN33Ho7Di8wiC4S4XqbH1NLF0DNdDWOd/5MI9gJU= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= -github.com/magiconair/properties v1.7.6/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/martini-contrib/render v0.0.0-20150707142108-ec18f8345a11/go.mod h1:Ah2dBMoxZEqk118as2T4u4fjfXarE0pPnMJaArZQZsI= -github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= @@ -725,16 +462,11 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.8 h1:3tS41NlGYSmhhe/8fhGRzc+z3AYCw1Fe1WAyLuujKs0= github.com/mattn/go-runewidth v0.0.8/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= -github.com/matttproud/golang_protobuf_extensions v1.0.0/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= -github.com/michaelklishin/rabbit-hole v1.5.0/go.mod h1:vvI1uOitYZi0O5HEGXhaWC1XT80Gy+HvFheJ+5Krlhk= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/cli v1.1.1 h1:J64v/xD7Clql+JVKSvkYojLOXu1ibnY9ZjGLwSt/89w= @@ -746,8 +478,6 @@ github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFW github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-ps v0.0.0-20170309133038-4fdf99ab2936/go.mod h1:r1VsdOzOPt1ZSrGZWFoNhsAedKnEd6r9Np1+5blZCWk= -github.com/mitchellh/go-ps v0.0.0-20190716172923-621e5597135b/go.mod h1:r1VsdOzOPt1ZSrGZWFoNhsAedKnEd6r9Np1+5blZCWk= github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc= github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg= github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= @@ -758,107 +488,55 @@ github.com/mitchellh/go-testing-interface v1.0.4/go.mod h1:kRemZodwjscx+RGhAo8eI github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y= github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.0.0/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/pointerstructure v0.0.0-20190430161007-f252a8fd71c8/go.mod h1:k4XwG94++jLVsSiTxo7qdIfXA9pj9EAeo0QsNNJOLZ8= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mozilla/tls-observatory v0.0.0-20180409132520-8791a200eb40/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= -github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/mxschmitt/golang-combinations v1.0.0/go.mod h1:RbMhWvfCelHR6WROvT2bVfxJvZHoEvBj71SKe+H0MYU= -github.com/nbutton23/zxcvbn-go v0.0.0-20160627004424-a22cb81b2ecd/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= -github.com/nbutton23/zxcvbn-go v0.0.0-20171102151520-eafdab6b0663/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= -github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v0.0.0-20190113212917-5533ce8a0da3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opentracing/basictracer-go v1.0.0 h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7lZWlQw5UXuoo= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin/zipkin-go v0.1.3/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/ory/dockertest v3.3.4+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= -github.com/oxtoacart/bpool v0.0.0-20150712133111-4e1c5567d7c2/go.mod h1:L3UMQOThbttwfYRNFOWLLVXMhk5Lkio4GGOtw5UrxS0= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= -github.com/pelletier/go-toml v1.1.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386 h1:LoCV5cscNVWyK5ChN/uCoIFJz8jZD63VQiGJIRgr6uo= github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386/go.mod h1:MRxHTJrf9FhdfNQ8Hdeh9gmHevC9RJE/fu8M3JIGjoE= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4 v2.3.0+incompatible h1:CZzRn4Ut9GbUkHlQ7jqBXeZQV41ZSKWFc302ZU6lUTk= -github.com/pierrec/lz4 v2.3.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.1 h1:LrvDIY//XNo65Lq84G/akBuMGlawHvGBABv8f/ZN6DI= github.com/posener/complete v1.2.1/go.mod h1:6gapUrK/U1TAN7ciCoNRIdVC5sbdBTUh1DKN0g6uH7E= -github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/pquerna/otp v1.1.0/go.mod h1:Zad1CMQfSQZI5KLpahDiSUX4tMMREnXw98IvL1nhgMk= -github.com/pquerna/otp v1.2.0 h1:/A3+Jn+cagqayeR3iHs/L62m5ue7710D35zl1zJ1kok= -github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= -github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_model v0.0.0-20170216185247-6f3806018612/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20180518154759-7600349dcfe1/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/procfs v0.0.0-20180612222113-7d6f385de8be/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/pulumi/pulumi-terraform-bridge/v2 v2.11.1-0.20201020163502-64cff1e50894 h1:yUnJDty8PgO26E8T0xX5CwslQ5CZTVqdTzfv0PnSN20= @@ -869,85 +547,48 @@ github.com/pulumi/pulumi/sdk/v2 v2.2.1/go.mod h1:QNbWpL4gvf3X0lUFT7TXA2Jo1ff/Ti2 github.com/pulumi/pulumi/sdk/v2 v2.11.3-0.20201009201355-249140242ebb/go.mod h1:WQ4WaHMA7mduVHAJi87iIqbWvqsuBUYccBiKK+FrayI= github.com/pulumi/pulumi/sdk/v2 v2.12.0 h1:d2BQnOvRWCbxDG5DO0bz5FkhFbymABmOxlsx0h2Yhm8= github.com/pulumi/pulumi/sdk/v2 v2.12.0/go.mod h1:WQ4WaHMA7mduVHAJi87iIqbWvqsuBUYccBiKK+FrayI= -github.com/pulumi/terraform-provider-digitalocean v1.19.1-0.20201014100851-1c33389dce60 h1:8OSovtzPtkFhWd/JhxFPpvUUhZFrXzKZcWbGN7xu1A4= -github.com/pulumi/terraform-provider-digitalocean v1.19.1-0.20201014100851-1c33389dce60/go.mod h1:FJUtRnAyupiErAIZyImS9eh1esriby6yMSz5GYmbDPA= -github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20200910230100-328eb4ff41df h1:kXSvfAz43o0D0gfxUqVCOP3NrfnGbptJBshVsqZlBqA= +github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20200910230100-328eb4ff41df/go.mod h1:pVZLnLuSe/yv0XqTHFPb8xRGWPwgANT77jHeHqjXS5o= +github.com/pulumi/terraform-provider-digitalocean v1.19.1-0.20201023114808-70dd36edc427 h1:0EY1V82j9ldETCXrgg/WQbrI5LUkFUQW4jv1ET7UqT0= +github.com/pulumi/terraform-provider-digitalocean v1.19.1-0.20201023114808-70dd36edc427/go.mod h1:TngTWcxsDkcO236zgW1BfPy42zuyJwMJgKcw0h55VlE= github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa4QEjJeqM= -github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ= -github.com/robfig/cron v1.2.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/ryanuber/go-glob v0.0.0-20170128012129-256dc444b735/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/sabhiram/go-gitignore v0.0.0-20180611051255-d3107576ba94 h1:G04eS0JkAIVZfaJLjla9dNxkJCPiKIGZlw9AfOhzOD0= github.com/sabhiram/go-gitignore v0.0.0-20180611051255-d3107576ba94/go.mod h1:b18R55ulyQ/h3RaWyloPyER7fWQVZvimKKhnI5OfrJQ= -github.com/samuel/go-zookeeper v0.0.0-20180130194729-c4fab1ac1bec/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/securego/gosec v0.0.0-20191002120514-e680875ea14d/go.mod h1:w5+eXa0mYznDkHaMCXA4XYffjlH+cy1oyKbfzJXa2Do= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shirou/gopsutil v0.0.0-20180427012116-c95755e4bcd7/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada/go.mod h1:WWnYX4lzhCH5h/3YBfyVA3VbLYjlMZZAQcW9ojMexNc= -github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= -github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= -github.com/sirupsen/logrus v1.0.5/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= -github.com/smartystreets/assertions v0.0.0-20180725160413-e900ae048470/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= -github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sourcegraph/go-diff v0.5.1/go.mod h1:j2dHj3m8aZgQO8lMTcTnBcXkRRRqi34cd2MNlA9u1mE= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.0/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.2/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/jwalterweatherman v0.0.0-20180109140146-7c0cea34c8ec/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.0.2/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/src-d/gcfg v1.4.0 h1:xXbNR5AlLSA315x2UO+fTSSAXCDf+Ar38/6oyGbDKQ4= github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= -github.com/stoewer/go-strcase v1.0.2 h1:l3iQ2FPu8+36ars/7syO1dQAkjwMCb1IE3J+Th0ohfE= -github.com/stoewer/go-strcase v1.0.2/go.mod h1:eLfe5bL3qbL7ep/KafHzthxejrOF5J3xmt03uL5tzek= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -958,49 +599,21 @@ github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/terraform-providers/terraform-provider-archive v1.3.0 h1:8WzDXMwTdTd4Z7KAUjnYwopk1DgGJ/DLH0xowJ8h+/8= github.com/terraform-providers/terraform-provider-archive v1.3.0/go.mod h1:7oAwNW55F65KauS++/XmAnrXhLfQRTYt549eYs4zU0w= -github.com/terraform-providers/terraform-provider-aws v1.60.1-0.20191010190908-1261a98537f2 h1:FcaZW1YFs3K5PKvPY8EJvqYDHx6JojcjnEDQ+h/VK48= -github.com/terraform-providers/terraform-provider-aws v1.60.1-0.20191010190908-1261a98537f2/go.mod h1:zIXqcyUvJSpWRGXf+x6knh3NIZLjVqjH954yShO3YPE= -github.com/terraform-providers/terraform-provider-google v1.20.1-0.20191008212436-363f2d283518 h1:IGwWsLdt9TtiafPwVMv9ePxbZYdVHTBfdVtXUr8+PEU= -github.com/terraform-providers/terraform-provider-google v1.20.1-0.20191008212436-363f2d283518/go.mod h1:cdfYuxcAyBAISVCiSYei5GIjhXbB3wth/feTmx8iD8A= github.com/terraform-providers/terraform-provider-http v1.2.0 h1:pOP/SNlLjB18CydtTJJwzkZGkHYX3LWzIoQpYQuBdyw= github.com/terraform-providers/terraform-provider-http v1.2.0/go.mod h1:2Iot921OkLVSZr8FbIkvRN84ZV3w+oFKb7RlmPTQQAQ= -github.com/terraform-providers/terraform-provider-kubernetes v1.9.1-0.20191018170806-2c80accb5635 h1:NY8xVhh8DXoU3kfgo4J9UwzRULgKP+gByCZW/T2qK+g= -github.com/terraform-providers/terraform-provider-kubernetes v1.9.1-0.20191018170806-2c80accb5635/go.mod h1:lFCVWzD5Og9uVHwGwB35fHBsje+y2OJxt0G2v1Gz1Zs= -github.com/terraform-providers/terraform-provider-random v0.0.0-20190925200408-30dac3233094/go.mod h1:F4KE9YftuJyMiBth4W1kCrsyOHndtTjAmZ+ZzjqWY+4= -github.com/terraform-providers/terraform-provider-random v0.0.0-20190925210718-83518d96ae4f h1:xgfipfA/az653hFUDvRKPt4Gw882+rXxj1dT0Lm2lNo= -github.com/terraform-providers/terraform-provider-random v0.0.0-20190925210718-83518d96ae4f/go.mod h1:F4KE9YftuJyMiBth4W1kCrsyOHndtTjAmZ+ZzjqWY+4= github.com/texttheater/golang-levenshtein v0.0.0-20191208221605-eb6844b05fc6 h1:9VTskZOIRf2vKF3UL8TuWElry5pgUpV1tFSe/e/0m/E= github.com/texttheater/golang-levenshtein v0.0.0-20191208221605-eb6844b05fc6/go.mod h1:XDKHRm5ThF8YJjx001LtgelzsoaEcvnA7lVWz9EeX3g= -github.com/timakin/bodyclose v0.0.0-20190721030226-87058b9bfcec/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= -github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7 h1:X9dsIWPuuEJlPX//UmRKophhOKCGXc46RVIGuttks68= github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7/go.mod h1:UxoP3EypF8JfGEjAII8jx1q8rQyDnX8qdTCs/UQBVIE= github.com/uber/jaeger-client-go v2.22.1+incompatible h1:NHcubEkVbahf9t3p75TOCR83gdUHXjRJvjoBh1yACsM= github.com/uber/jaeger-client-go v2.22.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v2.2.0+incompatible h1:MxZXOiR2JuoANZ3J6DE/U0kSFv/eJ/GfSYVCjK7dyaw= github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= -github.com/ugorji/go v1.1.2/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v0.0.0-20190204201341-e444a5086c43/go.mod h1:iT03XoTwV7xq/+UGwKO3UbC1nNNlopQiY61beSdrtOA= github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= -github.com/ulikunitz/xz v0.5.6 h1:jGHAfXawEGZQ3blwU5wnWKQJvAraT7Ftq9EXjnXYgt8= -github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= github.com/ulikunitz/xz v0.5.7 h1:YvTNdFzX6+W5m9msiYg/zpkSURPPtOlzbqYjrFn7Yt4= github.com/ulikunitz/xz v0.5.7/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/ultraware/funlen v0.0.1/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= -github.com/ultraware/funlen v0.0.2/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= -github.com/ultraware/whitespace v0.0.4/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/uudashr/gocognit v0.0.0-20190926065955-1655d0de0517/go.mod h1:j44Ayx2KW4+oB6SWMv8KsmHzZrOInQav7D3cQMJ5JUM= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s= -github.com/valyala/quicktemplate v1.1.1/go.mod h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOVRUAfrukLPuGJ4= -github.com/valyala/quicktemplate v1.2.0/go.mod h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOVRUAfrukLPuGJ4= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack v4.0.1+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= @@ -1024,12 +637,7 @@ github.com/zclconf/go-cty v1.3.1/go.mod h1:YO23e2L18AG+ZYQfSobnY4G65nvwvprPCxBHk github.com/zclconf/go-cty-yaml v1.0.1 h1:up11wlgAaDvlAGENcFDnZgkn0qUJurso7k6EpURKNF8= github.com/zclconf/go-cty-yaml v1.0.1/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd v0.0.0-20190412021913-f29b1ada1971/go.mod h1:KSGwdbiFchh5KIC9My2+ZVl5/3ANcwohw50dpPwa2cw= go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= -go.opencensus.io v0.19.1/go.mod h1:gug0GbSHa8Pafr0d2urOSgoXHZ6x/RUlaiT0d9pqb4A= -go.opencensus.io v0.19.2/go.mod h1:NO/8qkisMZLZ1FCsKNqtJPwc8/TaclWyY0B6wcYNg9M= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -1037,13 +645,11 @@ go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4 h1:LYy1Hy3MJdrCdMwwzxA/dRok4ejH+RwNGbuoD9fCjto= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= gocloud.dev v0.20.0/go.mod h1:+Y/RpSXrJthIOM8uFNzWp6MRu9pFPNFEEZrQMxpkfIc= gocloud.dev/secrets/hashivault v0.20.0/go.mod h1:2nNlZ76i4JlT9qrPVKbINB01L8BGgv4wmq2Cqyz22dA= @@ -1053,7 +659,6 @@ golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20190912063710-ac5d2bfcbfe0/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= @@ -1063,9 +668,7 @@ golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6 h1:QE6XYQK6naiK1EPAe1g/ILLxN golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20181217174547-8f45f776aaf1/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -1087,22 +690,14 @@ golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20170915142106-8351a756f30f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -1115,10 +710,7 @@ golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191009170851-d66e71096ffb/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1140,10 +732,7 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190130055435-99b60b757ec1/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190319182350-c85d3e98c914/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1158,41 +747,28 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a h1:WXEvlFVvvGxCJLG6REjsT03iWnKLEWinaScsxF2Vm2o= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20171026204733-164713f0dfce/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181218192612-074acd46bca6/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190410170021-cc4d4f50624c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190523142557-0e01d883c5c5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190530182044-ad28b68e88f1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1216,9 +792,7 @@ golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980 h1:OjiUf46hAmXblsZdnoSXsEUSKU8r1UEzcL5RVZ4gO9Y= golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.0.0-20170915090833-1cbadb444a80/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -1226,48 +800,28 @@ golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20161028155119-f51c12702a4d/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20170915040203-e531a2a1c15f/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181117154741-2ddaf7f79a09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181219222714-6e267b5cc78e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190121143147-24cd39ecf745/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190521203540-521d6ed310dd/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190719005602-e377ae9d6386/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190823093517-aa644d2adf2a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190909030654-5b82db07426d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190917162342-3b4f30a44f3b/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190930201159-7c411dea38b0/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1304,11 +858,6 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.0.0-20181220000619-583d854617af/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.2.0/go.mod h1:IfRCZScioGtypHNTlz3gFk67J8uePVW7uDTBzXuIkhU= -google.golang.org/api v0.3.0/go.mod h1:IuvZyQh8jgscv8qWfQ4ABd8m7hEudgBFM/EdhA3BnXw= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= -google.golang.org/api v0.3.2/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.5.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -1330,26 +879,21 @@ google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.29.0 h1:BaiDisFir8O4IJxvAabCGGkQ6yCJegNQqSVoYUNAnbk= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180608181217-32ee49c4dd80/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181219182458-5a97ab628bfb/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190508193815-b515fa19cec8/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190513181449-d00d292a067c/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190708153700-3bdd9d9f5532/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= @@ -1384,14 +928,11 @@ google.golang.org/genproto v0.0.0-20200711021454-869866162049 h1:YFTFpQhgvrLrmxt google.golang.org/genproto v0.0.0-20200711021454-869866162049/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -1416,7 +957,6 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= gopkg.in/AlecAivazis/survey.v1 v1.8.9-0.20200217094205-6773bdf39b7f/go.mod h1:CaHjv79TCgAvXMSFJSVgonHXYWxnhzI3eoHtnX5UgUo= -gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1425,21 +965,12 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogR gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= -gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/ory-am/dockertest.v3 v3.3.4/go.mod h1:s9mmoLkaGeAh97qygnNj4xWkiN7e1SKekYC6CovU+ek= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/square/go-jose.v2 v2.3.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/src-d/go-billy.v4 v4.3.2 h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg= gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= @@ -1458,9 +989,6 @@ gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20180920025451-e3ad64cb4ed3/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1470,42 +998,10 @@ honnef.co/go/tools v0.0.1-2020.1.3 h1:sXmLre5bzIR6ypkjXCDI3jHPssRhc8KD/Ome589sc3 honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= -k8s.io/api v0.0.0-20191121015604-11707872ac1c h1:Z87my3sF4WhG0OMxzARkWY/IKBtOr+MhXZAb4ts6qFc= -k8s.io/api v0.0.0-20191121015604-11707872ac1c/go.mod h1:R/s4gKT0V/cWEnbQa9taNRJNbWUK57/Dx6cPj6MD3A0= -k8s.io/apimachinery v0.0.0-20190204010555-a98ff070d70e/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= -k8s.io/apimachinery v0.0.0-20190221213512-86fb29eff628/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= -k8s.io/apimachinery v0.0.0-20190409092423-760d1845f48b/go.mod h1:FW86P8YXVLsbuplGMZeb20J3jYHscrDqw4jELaFJvRU= -k8s.io/apimachinery v0.0.0-20191004115701-31ade1b30762/go.mod h1:Xc10RHc1U+F/e9GCloJ8QAeCGevSVP5xhOhqlE+e1kM= -k8s.io/apimachinery v0.0.0-20191121015412-41065c7a8c2a h1:9V03T5lHv/iF4fSgvMCd+iB86AgEgmzLpheMqIJy7hs= -k8s.io/apimachinery v0.0.0-20191121015412-41065c7a8c2a/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= -k8s.io/client-go v0.0.0-20191029021442-5f2132fc4383 h1:fP0RKBvaF/ze6fZ+DmkPGUrFg7G2qTCm9ck2Az9SGyc= -k8s.io/client-go v0.0.0-20191029021442-5f2132fc4383/go.mod h1:ksVkYlACXo9hR9AV+cYyCkuWL1xnWcGtAFxsfqMcozg= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.0.0-20190306015804-8e90cee79f82/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.1.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/kube-aggregator v0.0.0-20190508191239-c5c2b08eec9f h1:FE1Ei626tuZJNS5U94U5JBlQFDOyUMNDnf+e1ukluTo= -k8s.io/kube-aggregator v0.0.0-20190508191239-c5c2b08eec9f/go.mod h1:8sbzT4QQKDEmSCIbfqjV0sd97GpUT7A4W626sBiYJmU= -k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= -k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= -k8s.io/utils v0.0.0-20190221042446-c2654d5206da h1:ElyM7RPonbKnQqOcw7dG2IK5uvQQn3b/WPHqD5mBvP4= -k8s.io/utils v0.0.0-20190221042446-c2654d5206da/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0= -layeh.com/radius v0.0.0-20190322222518-890bc1058917/go.mod h1:fywZKyu//X7iRzaxLgPWsvc0L26IUpVvE/aeIL2JtIQ= -mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= -mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= -mvdan.cc/unparam v0.0.0-20190209190245-fbb59629db34/go.mod h1:H6SUd1XjIs+qQCyskXg5OFSrilMRUkD8ePJpHKDPaeY= -mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw= rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= sourcegraph.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67/go.mod h1:L5q+DGLGOQFpo1snNEkLOJT2d1YTW66rWNzatr3He1k= -sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/provider/resources.go b/provider/resources.go index fbcf3bc7..55010683 100644 --- a/provider/resources.go +++ b/provider/resources.go @@ -18,9 +18,8 @@ import ( "unicode" "github.com/digitalocean/terraform-provider-digitalocean/digitalocean" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "github.com/pulumi/pulumi-terraform-bridge/v2/pkg/tfbridge" - shimv1 "github.com/pulumi/pulumi-terraform-bridge/v2/pkg/tfshim/sdk-v1" + shimv2 "github.com/pulumi/pulumi-terraform-bridge/v2/pkg/tfshim/sdk-v2" "github.com/pulumi/pulumi/sdk/v2/go/common/tokens" ) @@ -60,12 +59,12 @@ func makeResource(mod string, res string) tokens.Type { // Provider returns additional overlaid schema and metadata associated with the Digital Ocean package. func Provider() tfbridge.ProviderInfo { - p := shimv1.NewProvider(digitalocean.Provider().(*schema.Provider)) + p := shimv2.NewProvider(digitalocean.Provider()) prov := tfbridge.ProviderInfo{ P: p, Name: "digitalocean", Description: "A Pulumi package for creating and managing Digital Ocean cloud resources.", - Keywords: []string{"pulumi", "digital ocean"}, + Keywords: []string{"pulumi", "digitalocean"}, License: "Apache-2.0", Homepage: "https://pulumi.io", Repository: "https://github.com/pulumi/pulumi-digitalocean", @@ -327,6 +326,7 @@ func Provider() tfbridge.ProviderInfo { "digitalocean_tags": {Tok: makeDataSource(digitalOceanMod, "getTags")}, "digitalocean_app": {Tok: makeDataSource(digitalOceanMod, "getApp")}, "digitalocean_domains": {Tok: makeDataSource(digitalOceanMod, "getDomains")}, + "digitalocean_records": {Tok: makeDataSource(digitalOceanMod, "getRecords")}, }, JavaScript: &tfbridge.JavaScriptInfo{ Dependencies: map[string]string{ diff --git a/sdk/dotnet/Cdn.cs b/sdk/dotnet/Cdn.cs index 0ec4c87e..2f5b0698 100644 --- a/sdk/dotnet/Cdn.cs +++ b/sdk/dotnet/Cdn.cs @@ -71,7 +71,7 @@ namespace Pulumi.DigitalOcean /// { /// Origin = mybucket.BucketDomainName, /// CustomDomain = "static.example.com", - /// CertificateId = cert.Id, + /// CertificateName = cert.Name, /// }); /// } /// @@ -81,10 +81,16 @@ namespace Pulumi.DigitalOcean public partial class Cdn : Pulumi.CustomResource { /// - /// The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + /// **Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. /// [Output("certificateId")] - public Output CertificateId { get; private set; } = null!; + public Output CertificateId { get; private set; } = null!; + + /// + /// The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + /// + [Output("certificateName")] + public Output CertificateName { get; private set; } = null!; /// /// The date and time when the CDN Endpoint was created. @@ -163,11 +169,17 @@ public static Cdn Get(string name, Input id, CdnState? state = null, Cus public sealed class CdnArgs : Pulumi.ResourceArgs { /// - /// The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + /// **Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. /// [Input("certificateId")] public Input? CertificateId { get; set; } + /// + /// The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + /// + [Input("certificateName")] + public Input? CertificateName { get; set; } + /// /// The fully qualified domain name (FQDN) of the custom subdomain used with the CDN Endpoint. /// @@ -194,11 +206,17 @@ public CdnArgs() public sealed class CdnState : Pulumi.ResourceArgs { /// - /// The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + /// **Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. /// [Input("certificateId")] public Input? CertificateId { get; set; } + /// + /// The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + /// + [Input("certificateName")] + public Input? CertificateName { get; set; } + /// /// The date and time when the CDN Endpoint was created. /// diff --git a/sdk/dotnet/Certificate.cs b/sdk/dotnet/Certificate.cs index e4b38653..e653a34d 100644 --- a/sdk/dotnet/Certificate.cs +++ b/sdk/dotnet/Certificate.cs @@ -32,9 +32,9 @@ namespace Pulumi.DigitalOcean /// var cert = new DigitalOcean.Certificate("cert", new DigitalOcean.CertificateArgs /// { /// Type = "custom", - /// PrivateKey = File.ReadAllText("/Users/myuser/certs/privkey.pem"), - /// LeafCertificate = File.ReadAllText("/Users/myuser/certs/cert.pem"), - /// CertificateChain = File.ReadAllText("/Users/myuser/certs/fullchain.pem"), + /// PrivateKey = File.ReadAllText("/Users/terraform/certs/privkey.pem"), + /// LeafCertificate = File.ReadAllText("/Users/terraform/certs/cert.pem"), + /// CertificateChain = File.ReadAllText("/Users/terraform/certs/fullchain.pem"), /// }); /// } /// @@ -96,7 +96,7 @@ namespace Pulumi.DigitalOcean /// EntryProtocol = "https", /// TargetPort = 80, /// TargetProtocol = "http", - /// CertificateId = cert.Id, + /// CertificateName = cert.Name, /// }, /// }, /// }); @@ -165,6 +165,12 @@ public partial class Certificate : Pulumi.CustomResource [Output("type")] public Output Type { get; private set; } = null!; + /// + /// The UUID of the certificate + /// + [Output("uuid")] + public Output Uuid { get; private set; } = null!; + /// /// Create a Certificate resource with the given unique name, arguments, and options. @@ -331,6 +337,12 @@ public InputList Domains [Input("type")] public Input? Type { get; set; } + /// + /// The UUID of the certificate + /// + [Input("uuid")] + public Input? Uuid { get; set; } + public CertificateState() { } diff --git a/sdk/dotnet/GetApp.cs b/sdk/dotnet/GetApp.cs index 036a6d69..731c04b3 100644 --- a/sdk/dotnet/GetApp.cs +++ b/sdk/dotnet/GetApp.cs @@ -88,7 +88,7 @@ public sealed class GetAppResult /// /// A DigitalOcean App spec describing the app. /// - public readonly Outputs.GetAppSpecResult Spec; + public readonly ImmutableArray Specs; /// /// The date and time of when the app was last updated. /// @@ -108,7 +108,7 @@ private GetAppResult( string liveUrl, - Outputs.GetAppSpecResult spec, + ImmutableArray specs, string updatedAt) { @@ -118,7 +118,7 @@ private GetAppResult( DefaultIngress = defaultIngress; Id = id; LiveUrl = liveUrl; - Spec = spec; + Specs = specs; UpdatedAt = updatedAt; } } diff --git a/sdk/dotnet/GetCertificate.cs b/sdk/dotnet/GetCertificate.cs index 53524304..4775e615 100644 --- a/sdk/dotnet/GetCertificate.cs +++ b/sdk/dotnet/GetCertificate.cs @@ -11,39 +11,6 @@ namespace Pulumi.DigitalOcean { public static class GetCertificate { - /// - /// 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. - /// This is useful if the certificate in question is not managed by this provider or you need to utilize - /// any of the certificates data. - /// - /// An error is triggered if the provided certificate name does not exist. - /// - /// {{% examples %}} - /// ## Example Usage - /// {{% example %}} - /// - /// Get the certificate: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var example = Output.Create(DigitalOcean.GetCertificate.InvokeAsync(new DigitalOcean.GetCertificateArgs - /// { - /// Name = "example", - /// })); - /// } - /// - /// } - /// ``` - /// {{% /example %}} - /// {{% /examples %}} - /// public static Task InvokeAsync(GetCertificateArgs args, InvokeOptions? options = null) => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getCertificate:getCertificate", args ?? new GetCertificateArgs(), options.WithVersion()); } @@ -76,6 +43,7 @@ public sealed class GetCertificateResult public readonly string Sha1Fingerprint; public readonly string State; public readonly string Type; + public readonly string Uuid; [OutputConstructor] private GetCertificateResult( @@ -91,7 +59,9 @@ private GetCertificateResult( string state, - string type) + string type, + + string uuid) { Domains = domains; Id = id; @@ -100,6 +70,7 @@ private GetCertificateResult( Sha1Fingerprint = sha1Fingerprint; State = state; Type = type; + Uuid = uuid; } } } diff --git a/sdk/dotnet/GetContainerRegistry.cs b/sdk/dotnet/GetContainerRegistry.cs index e6d03fde..a71f3675 100644 --- a/sdk/dotnet/GetContainerRegistry.cs +++ b/sdk/dotnet/GetContainerRegistry.cs @@ -11,40 +11,6 @@ namespace Pulumi.DigitalOcean { public static class GetContainerRegistry { - /// - /// Get information on a container registry. This data source provides the name as - /// configured on your DigitalOcean account. This is useful if the container - /// registry name in question is not managed by this provider or you need validate if - /// the container registry exists in the account. - /// - /// An error is triggered if the provided container registry name does not exist. - /// - /// {{% examples %}} - /// ## Example Usage - /// {{% example %}} - /// ### Basic Example - /// - /// Get the container registry: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var example = Output.Create(DigitalOcean.GetContainerRegistry.InvokeAsync(new DigitalOcean.GetContainerRegistryArgs - /// { - /// Name = "example", - /// })); - /// } - /// - /// } - /// ``` - /// {{% /example %}} - /// {{% /examples %}} - /// public static Task InvokeAsync(GetContainerRegistryArgs args, InvokeOptions? options = null) => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getContainerRegistry:getContainerRegistry", args ?? new GetContainerRegistryArgs(), options.WithVersion()); } diff --git a/sdk/dotnet/GetDomain.cs b/sdk/dotnet/GetDomain.cs index 483dc449..38c98762 100644 --- a/sdk/dotnet/GetDomain.cs +++ b/sdk/dotnet/GetDomain.cs @@ -11,43 +11,6 @@ namespace Pulumi.DigitalOcean { public static class GetDomain { - /// - /// 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 - /// name in question is not managed by this provider or you need to utilize TTL or zone - /// file data. - /// - /// An error is triggered if the provided domain name is not managed with your - /// DigitalOcean account. - /// - /// {{% examples %}} - /// ## Example Usage - /// {{% example %}} - /// - /// Get the zone file for a domain: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var example = Output.Create(DigitalOcean.GetDomain.InvokeAsync(new DigitalOcean.GetDomainArgs - /// { - /// Name = "example.com", - /// })); - /// this.DomainOutput = example.Apply(example => example.ZoneFile); - /// } - /// - /// [Output("domainOutput")] - /// public Output<string> DomainOutput { get; set; } - /// } - /// ``` - /// {{% /example %}} - /// {{% /examples %}} - /// public static Task InvokeAsync(GetDomainArgs args, InvokeOptions? options = null) => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getDomain:getDomain", args ?? new GetDomainArgs(), options.WithVersion()); } diff --git a/sdk/dotnet/GetDroplet.cs b/sdk/dotnet/GetDroplet.cs index 3340c9b2..3bf7e65d 100644 --- a/sdk/dotnet/GetDroplet.cs +++ b/sdk/dotnet/GetDroplet.cs @@ -11,81 +11,6 @@ namespace Pulumi.DigitalOcean { public static class GetDroplet { - /// - /// 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 - /// is useful if the Droplet in question is not managed by this provider or you need to - /// utilize any of the Droplet's data. - /// - /// **Note:** This data source returns a single Droplet. When specifying a `tag`, an - /// error is triggered if more than one Droplet is found. - /// - /// {{% examples %}} - /// ## Example Usage - /// {{% example %}} - /// - /// Get the Droplet by name: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var example = Output.Create(DigitalOcean.GetDroplet.InvokeAsync(new DigitalOcean.GetDropletArgs - /// { - /// Name = "web", - /// })); - /// this.DropletOutput = example.Apply(example => example.Ipv4Address); - /// } - /// - /// [Output("dropletOutput")] - /// public Output<string> DropletOutput { get; set; } - /// } - /// ``` - /// - /// Get the Droplet by tag: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var example = Output.Create(DigitalOcean.GetDroplet.InvokeAsync(new DigitalOcean.GetDropletArgs - /// { - /// Tag = "web", - /// })); - /// } - /// - /// } - /// ``` - /// - /// Get the Droplet by ID: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var example = Output.Create(DigitalOcean.GetDroplet.InvokeAsync(new DigitalOcean.GetDropletArgs - /// { - /// Id = digitalocean_kubernetes_cluster.Example.Node_pool[0].Nodes[0].Droplet_id, - /// })); - /// } - /// - /// } - /// ``` - /// {{% /example %}} - /// {{% /examples %}} - /// public static Task InvokeAsync(GetDropletArgs? args = null, InvokeOptions? options = null) => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getDroplet:getDroplet", args ?? new GetDropletArgs(), options.WithVersion()); } diff --git a/sdk/dotnet/GetDroplets.cs b/sdk/dotnet/GetDroplets.cs index 7df4c41a..18c91073 100644 --- a/sdk/dotnet/GetDroplets.cs +++ b/sdk/dotnet/GetDroplets.cs @@ -11,98 +11,6 @@ namespace Pulumi.DigitalOcean { public static class GetDroplets { - /// - /// 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. - /// - /// This data source is useful if the Droplets in question are not managed by this provider or you need to - /// utilize any of the Droplets' data. - /// - /// Note: You can use the `digitalocean.Droplet` data source to obtain metadata - /// about a single Droplet if you already know the `id`, unique `name`, or unique `tag` to retrieve. - /// - /// {{% examples %}} - /// ## Example Usage - /// {{% example %}} - /// - /// Use the `filter` block with a `key` string and `values` list to filter images. - /// - /// For example to find all Droplets with size `s-1vcpu-1gb`: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var small = Output.Create(DigitalOcean.GetDroplets.InvokeAsync(new DigitalOcean.GetDropletsArgs - /// { - /// Filters = - /// { - /// new DigitalOcean.Inputs.GetDropletsFilterArgs - /// { - /// Key = "size", - /// Values = - /// { - /// "s-1vcpu-1gb", - /// }, - /// }, - /// }, - /// })); - /// } - /// - /// } - /// ``` - /// - /// You can filter on multiple fields and sort the results as well: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var small_with_backups = Output.Create(DigitalOcean.GetDroplets.InvokeAsync(new DigitalOcean.GetDropletsArgs - /// { - /// Filters = - /// { - /// new DigitalOcean.Inputs.GetDropletsFilterArgs - /// { - /// Key = "size", - /// Values = - /// { - /// "s-1vcpu-1gb", - /// }, - /// }, - /// new DigitalOcean.Inputs.GetDropletsFilterArgs - /// { - /// Key = "backups", - /// Values = - /// { - /// "true", - /// }, - /// }, - /// }, - /// Sorts = - /// { - /// new DigitalOcean.Inputs.GetDropletsSortArgs - /// { - /// Direction = "desc", - /// Key = "created_at", - /// }, - /// }, - /// })); - /// } - /// - /// } - /// ``` - /// {{% /example %}} - /// {{% /examples %}} - /// public static Task InvokeAsync(GetDropletsArgs? args = null, InvokeOptions? options = null) => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getDroplets:getDroplets", args ?? new GetDropletsArgs(), options.WithVersion()); } diff --git a/sdk/dotnet/GetFloatingIp.cs b/sdk/dotnet/GetFloatingIp.cs index 6b824821..871707b9 100644 --- a/sdk/dotnet/GetFloatingIp.cs +++ b/sdk/dotnet/GetFloatingIp.cs @@ -11,44 +11,6 @@ namespace Pulumi.DigitalOcean { public static class GetFloatingIp { - /// - /// Get information on a floating ip. This data source provides the region and Droplet id - /// as configured on your DigitalOcean account. This is useful if the floating IP - /// in question is not managed by this provider or you need to find the Droplet the IP is - /// attached to. - /// - /// An error is triggered if the provided floating IP does not exist. - /// - /// {{% examples %}} - /// ## Example Usage - /// {{% example %}} - /// - /// Get the floating IP: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var config = new Config(); - /// var publicIp = config.RequireObject<dynamic>("publicIp"); - /// var example = Output.Create(DigitalOcean.GetFloatingIp.InvokeAsync(new DigitalOcean.GetFloatingIpArgs - /// { - /// IpAddress = publicIp, - /// })); - /// this.FipOutput = example.Apply(example => example.DropletId); - /// } - /// - /// [Output("fipOutput")] - /// public Output<string> FipOutput { get; set; } - /// } - /// ``` - /// {{% /example %}} - /// {{% /examples %}} - /// public static Task InvokeAsync(GetFloatingIpArgs args, InvokeOptions? options = null) => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getFloatingIp:getFloatingIp", args ?? new GetFloatingIpArgs(), options.WithVersion()); } diff --git a/sdk/dotnet/GetImage.cs b/sdk/dotnet/GetImage.cs index 649944df..cc6dfeb3 100644 --- a/sdk/dotnet/GetImage.cs +++ b/sdk/dotnet/GetImage.cs @@ -11,83 +11,6 @@ namespace Pulumi.DigitalOcean { public static class GetImage { - /// - /// 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 - /// configured on your DigitalOcean account. This is useful if the image in question - /// is not managed by this provider or you need to utilize any of the image's data. - /// - /// An error is triggered if zero or more than one result is returned by the query. - /// - /// {{% examples %}} - /// ## Example Usage - /// {{% example %}} - /// - /// Get the data about a snapshot: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var example1 = Output.Create(DigitalOcean.GetImage.InvokeAsync(new DigitalOcean.GetImageArgs - /// { - /// Name = "example-1.0.0", - /// })); - /// } - /// - /// } - /// ``` - /// - /// Reuse the data about a snapshot to create a Droplet: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var exampleImage = Output.Create(DigitalOcean.GetImage.InvokeAsync(new DigitalOcean.GetImageArgs - /// { - /// Name = "example-1.0.0", - /// })); - /// var exampleDroplet = new DigitalOcean.Droplet("exampleDroplet", new DigitalOcean.DropletArgs - /// { - /// Image = exampleImage.Apply(exampleImage => exampleImage.Id), - /// Region = "nyc2", - /// Size = "s-1vcpu-1gb", - /// }); - /// } - /// - /// } - /// ``` - /// - /// Get the data about an official image: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var example2 = Output.Create(DigitalOcean.GetImage.InvokeAsync(new DigitalOcean.GetImageArgs - /// { - /// Slug = "ubuntu-18-04-x64", - /// })); - /// } - /// - /// } - /// ``` - /// {{% /example %}} - /// {{% /examples %}} - /// public static Task InvokeAsync(GetImageArgs? args = null, InvokeOptions? options = null) => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getImage:getImage", args ?? new GetImageArgs(), options.WithVersion()); } @@ -129,6 +52,7 @@ public GetImageArgs() public sealed class GetImageResult { public readonly string Created; + public readonly string Description; /// /// The name of the distribution of the OS of the image. /// * `min_disk_size`: The minimum 'disk' required for the image. @@ -166,6 +90,8 @@ public sealed class GetImageResult private GetImageResult( string created, + string description, + string distribution, string errorMessage, @@ -195,6 +121,7 @@ private GetImageResult( string type) { Created = created; + Description = description; Distribution = distribution; ErrorMessage = errorMessage; Id = id; diff --git a/sdk/dotnet/GetImages.cs b/sdk/dotnet/GetImages.cs index 324c7059..38390b5e 100644 --- a/sdk/dotnet/GetImages.cs +++ b/sdk/dotnet/GetImages.cs @@ -11,99 +11,6 @@ namespace Pulumi.DigitalOcean { public static class GetImages { - /// - /// 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, - /// all images will be returned. - /// - /// This data source is useful if the image in question is not managed by this provider or you need to utilize any - /// of the image's data. - /// - /// Note: You can use the `digitalocean.getImage` data source to obtain metadata - /// about a single image if you already know the `slug`, unique `name`, or `id` to retrieve. - /// - /// {{% examples %}} - /// ## Example Usage - /// {{% example %}} - /// - /// Use the `filter` block with a `key` string and `values` list to filter images. - /// - /// For example to find all Ubuntu images: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var ubuntu = Output.Create(DigitalOcean.GetImages.InvokeAsync(new DigitalOcean.GetImagesArgs - /// { - /// Filters = - /// { - /// new DigitalOcean.Inputs.GetImagesFilterArgs - /// { - /// Key = "distribution", - /// Values = - /// { - /// "Ubuntu", - /// }, - /// }, - /// }, - /// })); - /// } - /// - /// } - /// ``` - /// - /// You can filter on multiple fields and sort the results as well: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var available = Output.Create(DigitalOcean.GetImages.InvokeAsync(new DigitalOcean.GetImagesArgs - /// { - /// Filters = - /// { - /// new DigitalOcean.Inputs.GetImagesFilterArgs - /// { - /// Key = "distribution", - /// Values = - /// { - /// "Ubuntu", - /// }, - /// }, - /// new DigitalOcean.Inputs.GetImagesFilterArgs - /// { - /// Key = "regions", - /// Values = - /// { - /// "nyc3", - /// }, - /// }, - /// }, - /// Sorts = - /// { - /// new DigitalOcean.Inputs.GetImagesSortArgs - /// { - /// Direction = "desc", - /// Key = "created", - /// }, - /// }, - /// })); - /// } - /// - /// } - /// ``` - /// {{% /example %}} - /// {{% /examples %}} - /// public static Task InvokeAsync(GetImagesArgs? args = null, InvokeOptions? options = null) => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getImages:getImages", args ?? new GetImagesArgs(), options.WithVersion()); } diff --git a/sdk/dotnet/GetKubernetesCluster.cs b/sdk/dotnet/GetKubernetesCluster.cs index c357ed08..e3436917 100644 --- a/sdk/dotnet/GetKubernetesCluster.cs +++ b/sdk/dotnet/GetKubernetesCluster.cs @@ -11,9 +11,6 @@ namespace Pulumi.DigitalOcean { public static class GetKubernetesCluster { - /// - /// 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 this provider. - /// public static Task InvokeAsync(GetKubernetesClusterArgs args, InvokeOptions? options = null) => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getKubernetesCluster:getKubernetesCluster", args ?? new GetKubernetesClusterArgs(), options.WithVersion()); } diff --git a/sdk/dotnet/GetKubernetesVersions.cs b/sdk/dotnet/GetKubernetesVersions.cs index 451caa2f..265a2b8a 100644 --- a/sdk/dotnet/GetKubernetesVersions.cs +++ b/sdk/dotnet/GetKubernetesVersions.cs @@ -104,9 +104,6 @@ public static Task InvokeAsync(GetKubernetesVersion public sealed class GetKubernetesVersionsArgs : Pulumi.InvokeArgs { - /// - /// If provided, this provider will only return versions that match the string prefix. For example, `1.15.` will match all 1.15.x series releases. - /// [Input("versionPrefix")] public string? VersionPrefix { get; set; } diff --git a/sdk/dotnet/GetLoadBalancer.cs b/sdk/dotnet/GetLoadBalancer.cs index 7c3f4a44..cc03b069 100644 --- a/sdk/dotnet/GetLoadBalancer.cs +++ b/sdk/dotnet/GetLoadBalancer.cs @@ -11,42 +11,6 @@ namespace Pulumi.DigitalOcean { public static class GetLoadBalancer { - /// - /// 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 - /// account. This is useful if the load balancer in question is not managed by - /// this provider or you need to utilize any of the load balancers data. - /// - /// An error is triggered if the provided load balancer name does not exist. - /// - /// {{% examples %}} - /// ## Example Usage - /// {{% example %}} - /// - /// Get the load balancer: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var example = Output.Create(DigitalOcean.GetLoadBalancer.InvokeAsync(new DigitalOcean.GetLoadBalancerArgs - /// { - /// Name = "app", - /// })); - /// this.LbOutput = example.Apply(example => example.Ip); - /// } - /// - /// [Output("lbOutput")] - /// public Output<string> LbOutput { get; set; } - /// } - /// ``` - /// {{% /example %}} - /// {{% /examples %}} - /// public static Task InvokeAsync(GetLoadBalancerArgs args, InvokeOptions? options = null) => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getLoadBalancer:getLoadBalancer", args ?? new GetLoadBalancerArgs(), options.WithVersion()); } @@ -75,7 +39,7 @@ public sealed class GetLoadBalancerResult public readonly bool EnableBackendKeepalive; public readonly bool EnableProxyProtocol; public readonly ImmutableArray ForwardingRules; - public readonly Outputs.GetLoadBalancerHealthcheckResult Healthcheck; + public readonly ImmutableArray Healthchecks; /// /// The provider-assigned unique ID for this managed resource. /// @@ -86,7 +50,7 @@ public sealed class GetLoadBalancerResult public readonly bool RedirectHttpToHttps; public readonly string Region; public readonly string Status; - public readonly Outputs.GetLoadBalancerStickySessionsResult StickySessions; + public readonly ImmutableArray StickySessions; public readonly string VpcUuid; [OutputConstructor] @@ -103,7 +67,7 @@ private GetLoadBalancerResult( ImmutableArray forwardingRules, - Outputs.GetLoadBalancerHealthcheckResult healthcheck, + ImmutableArray healthchecks, string id, @@ -119,7 +83,7 @@ private GetLoadBalancerResult( string status, - Outputs.GetLoadBalancerStickySessionsResult stickySessions, + ImmutableArray stickySessions, string vpcUuid) { @@ -129,7 +93,7 @@ private GetLoadBalancerResult( EnableBackendKeepalive = enableBackendKeepalive; EnableProxyProtocol = enableProxyProtocol; ForwardingRules = forwardingRules; - Healthcheck = healthcheck; + Healthchecks = healthchecks; Id = id; Ip = ip; LoadBalancerUrn = loadBalancerUrn; diff --git a/sdk/dotnet/GetRecord.cs b/sdk/dotnet/GetRecord.cs index 09fbcc3c..765a1a0d 100644 --- a/sdk/dotnet/GetRecord.cs +++ b/sdk/dotnet/GetRecord.cs @@ -11,46 +11,6 @@ namespace Pulumi.DigitalOcean { public static class GetRecord { - /// - /// 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 - /// in question is not managed by this provider. - /// - /// An error is triggered if the provided domain name or record are not managed with - /// your DigitalOcean account. - /// - /// {{% examples %}} - /// ## Example Usage - /// {{% example %}} - /// - /// Get data from a DNS record: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var example = Output.Create(DigitalOcean.GetRecord.InvokeAsync(new DigitalOcean.GetRecordArgs - /// { - /// Domain = "example.com", - /// Name = "test", - /// })); - /// this.RecordType = example.Apply(example => example.Type); - /// this.RecordTtl = example.Apply(example => example.Ttl); - /// } - /// - /// [Output("recordType")] - /// public Output<string> RecordType { get; set; } - /// [Output("recordTtl")] - /// public Output<string> RecordTtl { get; set; } - /// } - /// ``` - /// {{% /example %}} - /// {{% /examples %}} - /// public static Task InvokeAsync(GetRecordArgs args, InvokeOptions? options = null) => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getRecord:getRecord", args ?? new GetRecordArgs(), options.WithVersion()); } diff --git a/sdk/dotnet/GetRecords.cs b/sdk/dotnet/GetRecords.cs new file mode 100644 index 00000000..79de86ff --- /dev/null +++ b/sdk/dotnet/GetRecords.cs @@ -0,0 +1,94 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.DigitalOcean +{ + public static class GetRecords + { + /// + /// 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. + /// + public static Task InvokeAsync(GetRecordsArgs args, InvokeOptions? options = null) + => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getRecords:getRecords", args ?? new GetRecordsArgs(), options.WithVersion()); + } + + + public sealed class GetRecordsArgs : Pulumi.InvokeArgs + { + /// + /// The domain name to search for DNS records + /// + [Input("domain", required: true)] + public string Domain { get; set; } = null!; + + [Input("filters")] + private List? _filters; + + /// + /// Filter the results. + /// The `filter` block is documented below. + /// + public List Filters + { + get => _filters ?? (_filters = new List()); + set => _filters = value; + } + + [Input("sorts")] + private List? _sorts; + + /// + /// Sort the results. + /// The `sort` block is documented below. + /// + public List Sorts + { + get => _sorts ?? (_sorts = new List()); + set => _sorts = value; + } + + public GetRecordsArgs() + { + } + } + + + [OutputType] + public sealed class GetRecordsResult + { + public readonly string Domain; + public readonly ImmutableArray Filters; + /// + /// The provider-assigned unique ID for this managed resource. + /// + public readonly string Id; + public readonly ImmutableArray Records; + public readonly ImmutableArray Sorts; + + [OutputConstructor] + private GetRecordsResult( + string domain, + + ImmutableArray filters, + + string id, + + ImmutableArray records, + + ImmutableArray sorts) + { + Domain = domain; + Filters = filters; + Id = id; + Records = records; + Sorts = sorts; + } + } +} diff --git a/sdk/dotnet/GetSpacesBucket.cs b/sdk/dotnet/GetSpacesBucket.cs index 64512300..1f923a54 100644 --- a/sdk/dotnet/GetSpacesBucket.cs +++ b/sdk/dotnet/GetSpacesBucket.cs @@ -11,39 +11,6 @@ namespace Pulumi.DigitalOcean { public static class GetSpacesBucket { - /// - /// Get information on a Spaces bucket for use in other resources. This is useful if the Spaces bucket in question - /// is not managed by this provider or you need to utilize any of the bucket's data. - /// - /// {{% examples %}} - /// ## Example Usage - /// {{% example %}} - /// - /// Get the bucket by name: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var example = Output.Create(DigitalOcean.GetSpacesBucket.InvokeAsync(new DigitalOcean.GetSpacesBucketArgs - /// { - /// Name = "my-spaces-bucket", - /// Region = "nyc3", - /// })); - /// this.BucketDomainName = example.Apply(example => example.BucketDomainName); - /// } - /// - /// [Output("bucketDomainName")] - /// public Output<string> BucketDomainName { get; set; } - /// } - /// ``` - /// {{% /example %}} - /// {{% /examples %}} - /// public static Task InvokeAsync(GetSpacesBucketArgs args, InvokeOptions? options = null) => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getSpacesBucket:getSpacesBucket", args ?? new GetSpacesBucketArgs(), options.WithVersion()); } diff --git a/sdk/dotnet/GetSpacesBucketObjects.cs b/sdk/dotnet/GetSpacesBucketObjects.cs index 88c52cdc..9f787ede 100644 --- a/sdk/dotnet/GetSpacesBucketObjects.cs +++ b/sdk/dotnet/GetSpacesBucketObjects.cs @@ -11,11 +11,6 @@ namespace Pulumi.DigitalOcean { public static class GetSpacesBucketObjects { - /// - /// > **NOTE on `max_keys`:** Retrieving very large numbers of keys can adversely affect this provider's performance. - /// - /// The bucket-objects data source returns keys (i.e., file names) and other metadata about objects in a Spaces bucket. - /// public static Task InvokeAsync(GetSpacesBucketObjectsArgs args, InvokeOptions? options = null) => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getSpacesBucketObjects:getSpacesBucketObjects", args ?? new GetSpacesBucketObjectsArgs(), options.WithVersion()); } diff --git a/sdk/dotnet/GetSshKey.cs b/sdk/dotnet/GetSshKey.cs index 9b93301b..8a552e8e 100644 --- a/sdk/dotnet/GetSshKey.cs +++ b/sdk/dotnet/GetSshKey.cs @@ -11,49 +11,6 @@ namespace Pulumi.DigitalOcean { public static class GetSshKey { - /// - /// 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 - /// the ssh key in question is not managed by this provider or you need to utilize any - /// of the keys data. - /// - /// An error is triggered if the provided ssh key name does not exist. - /// - /// {{% examples %}} - /// ## Example Usage - /// {{% example %}} - /// - /// Get the ssh key: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var exampleSshKey = Output.Create(DigitalOcean.GetSshKey.InvokeAsync(new DigitalOcean.GetSshKeyArgs - /// { - /// Name = "example", - /// })); - /// var exampleDroplet = new DigitalOcean.Droplet("exampleDroplet", new DigitalOcean.DropletArgs - /// { - /// Image = "ubuntu-18-04-x64", - /// Region = "nyc2", - /// Size = "s-1vcpu-1gb", - /// SshKeys = - /// { - /// exampleSshKey.Apply(exampleSshKey => exampleSshKey.Id), - /// }, - /// }); - /// } - /// - /// } - /// ``` - /// {{% /example %}} - /// {{% /examples %}} - /// public static Task InvokeAsync(GetSshKeyArgs args, InvokeOptions? options = null) => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getSshKey:getSshKey", args ?? new GetSshKeyArgs(), options.WithVersion()); } diff --git a/sdk/dotnet/GetTag.cs b/sdk/dotnet/GetTag.cs index 3b6c3726..18d595d8 100644 --- a/sdk/dotnet/GetTag.cs +++ b/sdk/dotnet/GetTag.cs @@ -11,48 +11,6 @@ namespace Pulumi.DigitalOcean { public static class GetTag { - /// - /// 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 - /// managed by this provider or you need validate if the tag exists in the account. - /// - /// An error is triggered if the provided tag name does not exist. - /// - /// {{% examples %}} - /// ## Example Usage - /// {{% example %}} - /// - /// Get the tag: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var exampleTag = Output.Create(DigitalOcean.GetTag.InvokeAsync(new DigitalOcean.GetTagArgs - /// { - /// Name = "example", - /// })); - /// var exampleDroplet = new DigitalOcean.Droplet("exampleDroplet", new DigitalOcean.DropletArgs - /// { - /// Image = "ubuntu-18-04-x64", - /// Region = "nyc2", - /// Size = "s-1vcpu-1gb", - /// Tags = - /// { - /// exampleTag.Apply(exampleTag => exampleTag.Name), - /// }, - /// }); - /// } - /// - /// } - /// ``` - /// {{% /example %}} - /// {{% /examples %}} - /// public static Task InvokeAsync(GetTagArgs args, InvokeOptions? options = null) => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getTag:getTag", args ?? new GetTagArgs(), options.WithVersion()); } diff --git a/sdk/dotnet/GetVolume.cs b/sdk/dotnet/GetVolume.cs index 11fa0795..7e1bc35f 100644 --- a/sdk/dotnet/GetVolume.cs +++ b/sdk/dotnet/GetVolume.cs @@ -11,71 +11,6 @@ namespace Pulumi.DigitalOcean { public static class GetVolume { - /// - /// 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 - /// useful if the volume in question is not managed by this provider or you need to utilize - /// any of the volumes data. - /// - /// An error is triggered if the provided volume name does not exist. - /// - /// {{% examples %}} - /// ## Example Usage - /// {{% example %}} - /// - /// Get the volume: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var example = Output.Create(DigitalOcean.GetVolume.InvokeAsync(new DigitalOcean.GetVolumeArgs - /// { - /// Name = "app-data", - /// Region = "nyc3", - /// })); - /// } - /// - /// } - /// ``` - /// - /// Reuse the data about a volume to attach it to a Droplet: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var exampleVolume = Output.Create(DigitalOcean.GetVolume.InvokeAsync(new DigitalOcean.GetVolumeArgs - /// { - /// Name = "app-data", - /// Region = "nyc3", - /// })); - /// var exampleDroplet = new DigitalOcean.Droplet("exampleDroplet", new DigitalOcean.DropletArgs - /// { - /// Size = "s-1vcpu-1gb", - /// Image = "ubuntu-18-04-x64", - /// Region = "nyc3", - /// }); - /// var foobar = new DigitalOcean.VolumeAttachment("foobar", new DigitalOcean.VolumeAttachmentArgs - /// { - /// DropletId = exampleDroplet.Id, - /// VolumeId = exampleVolume.Apply(exampleVolume => exampleVolume.Id), - /// }); - /// } - /// - /// } - /// ``` - /// {{% /example %}} - /// {{% /examples %}} - /// public static Task InvokeAsync(GetVolumeArgs args, InvokeOptions? options = null) => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getVolume:getVolume", args ?? new GetVolumeArgs(), options.WithVersion()); } diff --git a/sdk/dotnet/GetVpc.cs b/sdk/dotnet/GetVpc.cs index d5c3b362..ff83c82b 100644 --- a/sdk/dotnet/GetVpc.cs +++ b/sdk/dotnet/GetVpc.cs @@ -11,66 +11,6 @@ namespace Pulumi.DigitalOcean { public static class GetVpc { - /// - /// Retrieve information about a VPC for use in other resources. - /// - /// This data source provides all of the VPC's properties as configured on your - /// DigitalOcean account. This is useful if the VPC in question is not managed by - /// this provider or you need to utilize any of the VPC's data. - /// - /// VPCs may be looked up by `id` or `name`. Specifying a `region` will - /// return that that region's default VPC. - /// - /// {{% examples %}} - /// ## Example Usage - /// {{% example %}} - /// ### VPC By Name - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var example = Output.Create(DigitalOcean.GetVpc.InvokeAsync(new DigitalOcean.GetVpcArgs - /// { - /// Name = "example-network", - /// })); - /// } - /// - /// } - /// ``` - /// - /// Reuse the data about a VPC to assign a Droplet to it: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var exampleVpc = Output.Create(DigitalOcean.GetVpc.InvokeAsync(new DigitalOcean.GetVpcArgs - /// { - /// Name = "example-network", - /// })); - /// var exampleDroplet = new DigitalOcean.Droplet("exampleDroplet", new DigitalOcean.DropletArgs - /// { - /// Size = "s-1vcpu-1gb", - /// Image = "ubuntu-18-04-x64", - /// Region = "nyc3", - /// VpcUuid = exampleVpc.Apply(exampleVpc => exampleVpc.Id), - /// }); - /// } - /// - /// } - /// ``` - /// {{% /example %}} - /// {{% /examples %}} - /// public static Task InvokeAsync(GetVpcArgs? args = null, InvokeOptions? options = null) => Pulumi.Deployment.Instance.InvokeAsync("digitalocean:index/getVpc:getVpc", args ?? new GetVpcArgs(), options.WithVersion()); } diff --git a/sdk/dotnet/Inputs/GetRecordsFilterArgs.cs b/sdk/dotnet/Inputs/GetRecordsFilterArgs.cs new file mode 100644 index 00000000..9f4f1d35 --- /dev/null +++ b/sdk/dotnet/Inputs/GetRecordsFilterArgs.cs @@ -0,0 +1,55 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.DigitalOcean.Inputs +{ + + public sealed class GetRecordsFilterArgs : Pulumi.InvokeArgs + { + /// + /// Set to `true` to require that a field match all of the `values` instead of just one or more of + /// them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure + /// that all of the `values` are present in the list or set. + /// + [Input("all")] + public bool? All { get; set; } + + /// + /// Filter the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + /// `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + /// + [Input("key", required: true)] + public string Key { get; set; } = null!; + + /// + /// One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to + /// match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as + /// substrings to find within the string field. + /// + [Input("matchBy")] + public string? MatchBy { get; set; } + + [Input("values", required: true)] + private List? _values; + + /// + /// A list of values to match against the `key` field. Only retrieves projects + /// where the `key` field takes on one or more of the values provided here. + /// + public List Values + { + get => _values ?? (_values = new List()); + set => _values = value; + } + + public GetRecordsFilterArgs() + { + } + } +} diff --git a/sdk/dotnet/Inputs/GetRecordsSortArgs.cs b/sdk/dotnet/Inputs/GetRecordsSortArgs.cs new file mode 100644 index 00000000..dea9afc0 --- /dev/null +++ b/sdk/dotnet/Inputs/GetRecordsSortArgs.cs @@ -0,0 +1,32 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.DigitalOcean.Inputs +{ + + public sealed class GetRecordsSortArgs : Pulumi.InvokeArgs + { + /// + /// The sort direction. This may be either `asc` or `desc`. + /// + [Input("direction")] + public string? Direction { get; set; } + + /// + /// Sort the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + /// `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + /// + [Input("key", required: true)] + public string Key { get; set; } = null!; + + public GetRecordsSortArgs() + { + } + } +} diff --git a/sdk/dotnet/Inputs/LoadBalancerForwardingRuleArgs.cs b/sdk/dotnet/Inputs/LoadBalancerForwardingRuleArgs.cs index 9fba886e..c9975fa2 100644 --- a/sdk/dotnet/Inputs/LoadBalancerForwardingRuleArgs.cs +++ b/sdk/dotnet/Inputs/LoadBalancerForwardingRuleArgs.cs @@ -13,11 +13,17 @@ namespace Pulumi.DigitalOcean.Inputs public sealed class LoadBalancerForwardingRuleArgs : Pulumi.ResourceArgs { /// - /// The ID of the TLS certificate to be used for SSL termination. + /// **Deprecated** The ID of the TLS certificate to be used for SSL termination. /// [Input("certificateId")] public Input? CertificateId { get; set; } + /// + /// The unique name of the TLS certificate to be used for SSL termination. + /// + [Input("certificateName")] + public Input? CertificateName { get; set; } + /// /// An integer representing the port on which the Load Balancer instance will listen. /// diff --git a/sdk/dotnet/Inputs/LoadBalancerForwardingRuleGetArgs.cs b/sdk/dotnet/Inputs/LoadBalancerForwardingRuleGetArgs.cs index 88064e80..7be4bbd8 100644 --- a/sdk/dotnet/Inputs/LoadBalancerForwardingRuleGetArgs.cs +++ b/sdk/dotnet/Inputs/LoadBalancerForwardingRuleGetArgs.cs @@ -13,11 +13,17 @@ namespace Pulumi.DigitalOcean.Inputs public sealed class LoadBalancerForwardingRuleGetArgs : Pulumi.ResourceArgs { /// - /// The ID of the TLS certificate to be used for SSL termination. + /// **Deprecated** The ID of the TLS certificate to be used for SSL termination. /// [Input("certificateId")] public Input? CertificateId { get; set; } + /// + /// The unique name of the TLS certificate to be used for SSL termination. + /// + [Input("certificateName")] + public Input? CertificateName { get; set; } + /// /// An integer representing the port on which the Load Balancer instance will listen. /// diff --git a/sdk/dotnet/KubernetesCluster.cs b/sdk/dotnet/KubernetesCluster.cs index db0c1223..e5702660 100644 --- a/sdk/dotnet/KubernetesCluster.cs +++ b/sdk/dotnet/KubernetesCluster.cs @@ -9,103 +9,6 @@ namespace Pulumi.DigitalOcean { - /// - /// Provides a DigitalOcean Kubernetes cluster resource. This can be used to create, delete, and modify clusters. For more information see the [official documentation](https://www.digitalocean.com/docs/kubernetes/). - /// - /// ## Example Usage - /// ### Basic Example - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var foo = new DigitalOcean.KubernetesCluster("foo", new DigitalOcean.KubernetesClusterArgs - /// { - /// NodePool = new DigitalOcean.Inputs.KubernetesClusterNodePoolArgs - /// { - /// Name = "worker-pool", - /// NodeCount = 3, - /// Size = "s-2vcpu-2gb", - /// }, - /// Region = "nyc1", - /// Version = "1.15.5-do.1", - /// }); - /// } - /// - /// } - /// ``` - /// ### Autoscaling Example - /// - /// Node pools may also be configured to [autoscale](https://www.digitalocean.com/docs/kubernetes/how-to/autoscale/). - /// For example: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var foo = new DigitalOcean.KubernetesCluster("foo", new DigitalOcean.KubernetesClusterArgs - /// { - /// NodePool = new DigitalOcean.Inputs.KubernetesClusterNodePoolArgs - /// { - /// AutoScale = true, - /// MaxNodes = 5, - /// MinNodes = 1, - /// Name = "autoscale-worker-pool", - /// Size = "s-2vcpu-2gb", - /// }, - /// Region = "nyc1", - /// Version = "1.15.5-do.1", - /// }); - /// } - /// - /// } - /// ``` - /// - /// Note that, while individual node pools may scale to 0, a cluster must always include at least one node. - /// ### Auto Upgrade Example - /// - /// DigitalOcean Kubernetes clusters may also be configured to [auto upgrade](https://www.digitalocean.com/docs/kubernetes/how-to/upgrade-cluster/#automatically) patch versions. - /// For example: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var example = Output.Create(DigitalOcean.GetKubernetesVersions.InvokeAsync(new DigitalOcean.GetKubernetesVersionsArgs - /// { - /// VersionPrefix = "1.18.", - /// })); - /// var foo = new DigitalOcean.KubernetesCluster("foo", new DigitalOcean.KubernetesClusterArgs - /// { - /// Region = "nyc1", - /// AutoUpgrade = true, - /// Version = example.Apply(example => example.LatestVersion), - /// NodePool = new DigitalOcean.Inputs.KubernetesClusterNodePoolArgs - /// { - /// Name = "default", - /// Size = "s-1vcpu-2gb", - /// NodeCount = 3, - /// }, - /// }); - /// } - /// - /// } - /// ``` - /// - /// Note that a data source is used to supply the version. This is needed to prevent configuration diff whenever a cluster is upgraded. - /// public partial class KubernetesCluster : Pulumi.CustomResource { /// diff --git a/sdk/dotnet/LoadBalancer.cs b/sdk/dotnet/LoadBalancer.cs index be6e7e0d..51ad495a 100644 --- a/sdk/dotnet/LoadBalancer.cs +++ b/sdk/dotnet/LoadBalancer.cs @@ -12,6 +12,104 @@ namespace Pulumi.DigitalOcean /// /// Provides a DigitalOcean Load Balancer resource. This can be used to create, /// modify, and delete Load Balancers. + /// + /// ## Example Usage + /// + /// ```csharp + /// using Pulumi; + /// using DigitalOcean = Pulumi.DigitalOcean; + /// + /// class MyStack : Stack + /// { + /// public MyStack() + /// { + /// var web = new DigitalOcean.Droplet("web", new DigitalOcean.DropletArgs + /// { + /// Size = "s-1vcpu-1gb", + /// Image = "ubuntu-18-04-x64", + /// Region = "nyc3", + /// }); + /// var @public = new DigitalOcean.LoadBalancer("public", new DigitalOcean.LoadBalancerArgs + /// { + /// Region = "nyc3", + /// ForwardingRules = + /// { + /// new DigitalOcean.Inputs.LoadBalancerForwardingRuleArgs + /// { + /// EntryPort = 80, + /// EntryProtocol = "http", + /// TargetPort = 80, + /// TargetProtocol = "http", + /// }, + /// }, + /// Healthcheck = new DigitalOcean.Inputs.LoadBalancerHealthcheckArgs + /// { + /// Port = 22, + /// Protocol = "tcp", + /// }, + /// DropletIds = + /// { + /// web.Id, + /// }, + /// }); + /// } + /// + /// } + /// ``` + /// + /// When managing certificates attached to the load balancer, make sure to add the `create_before_destroy` + /// lifecycle property in order to ensure the certificate is correctly updated when changed. The order of + /// operations will then be: `Create new certificate` > `Update loadbalancer with new certificate` -> + /// `Delete old certificate`. When doing so, you must also change the name of the certificate, + /// as there cannot be multiple certificates with the same name in an account. + /// + /// ```csharp + /// using Pulumi; + /// using DigitalOcean = Pulumi.DigitalOcean; + /// + /// class MyStack : Stack + /// { + /// public MyStack() + /// { + /// var cert = new DigitalOcean.Certificate("cert", new DigitalOcean.CertificateArgs + /// { + /// PrivateKey = "file('key.pem')", + /// LeafCertificate = "file('cert.pem')", + /// }); + /// var web = new DigitalOcean.Droplet("web", new DigitalOcean.DropletArgs + /// { + /// Size = "s-1vcpu-1gb", + /// Image = "ubuntu-18-04-x64", + /// Region = "nyc3", + /// }); + /// var @public = new DigitalOcean.LoadBalancer("public", new DigitalOcean.LoadBalancerArgs + /// { + /// Region = "nyc3", + /// ForwardingRules = + /// { + /// new DigitalOcean.Inputs.LoadBalancerForwardingRuleArgs + /// { + /// EntryPort = 443, + /// EntryProtocol = "https", + /// TargetPort = 80, + /// TargetProtocol = "http", + /// CertificateName = cert.Name, + /// }, + /// }, + /// Healthcheck = new DigitalOcean.Inputs.LoadBalancerHealthcheckArgs + /// { + /// Port = 22, + /// Protocol = "tcp", + /// }, + /// DropletIds = + /// { + /// web.Id, + /// }, + /// }); + /// } + /// + /// } + /// ``` /// public partial class LoadBalancer : Pulumi.CustomResource { diff --git a/sdk/dotnet/Outputs/GetImagesImageResult.cs b/sdk/dotnet/Outputs/GetImagesImageResult.cs index 32809355..676c0edc 100644 --- a/sdk/dotnet/Outputs/GetImagesImageResult.cs +++ b/sdk/dotnet/Outputs/GetImagesImageResult.cs @@ -14,6 +14,7 @@ namespace Pulumi.DigitalOcean.Outputs public sealed class GetImagesImageResult { public readonly string Created; + public readonly string Description; /// /// The name of the distribution of the OS of the image. /// - `min_disk_size`: The minimum 'disk' required for the image. @@ -50,6 +51,8 @@ public sealed class GetImagesImageResult private GetImagesImageResult( string created, + string description, + string distribution, string errorMessage, @@ -77,6 +80,7 @@ private GetImagesImageResult( string type) { Created = created; + Description = description; Distribution = distribution; ErrorMessage = errorMessage; Id = id; diff --git a/sdk/dotnet/Outputs/GetLoadBalancerStickySessionsResult.cs b/sdk/dotnet/Outputs/GetLoadBalancerStickySessionResult.cs similarity index 87% rename from sdk/dotnet/Outputs/GetLoadBalancerStickySessionsResult.cs rename to sdk/dotnet/Outputs/GetLoadBalancerStickySessionResult.cs index 194fff40..419a895c 100644 --- a/sdk/dotnet/Outputs/GetLoadBalancerStickySessionsResult.cs +++ b/sdk/dotnet/Outputs/GetLoadBalancerStickySessionResult.cs @@ -11,14 +11,14 @@ namespace Pulumi.DigitalOcean.Outputs { [OutputType] - public sealed class GetLoadBalancerStickySessionsResult + public sealed class GetLoadBalancerStickySessionResult { public readonly string CookieName; public readonly int CookieTtlSeconds; public readonly string Type; [OutputConstructor] - private GetLoadBalancerStickySessionsResult( + private GetLoadBalancerStickySessionResult( string cookieName, int cookieTtlSeconds, diff --git a/sdk/dotnet/Outputs/GetRecordsFilterResult.cs b/sdk/dotnet/Outputs/GetRecordsFilterResult.cs new file mode 100644 index 00000000..5741447c --- /dev/null +++ b/sdk/dotnet/Outputs/GetRecordsFilterResult.cs @@ -0,0 +1,55 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.DigitalOcean.Outputs +{ + + [OutputType] + public sealed class GetRecordsFilterResult + { + /// + /// Set to `true` to require that a field match all of the `values` instead of just one or more of + /// them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure + /// that all of the `values` are present in the list or set. + /// + public readonly bool? All; + /// + /// Filter the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + /// `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + /// + public readonly string Key; + /// + /// One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to + /// match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as + /// substrings to find within the string field. + /// + public readonly string? MatchBy; + /// + /// A list of values to match against the `key` field. Only retrieves projects + /// where the `key` field takes on one or more of the values provided here. + /// + public readonly ImmutableArray Values; + + [OutputConstructor] + private GetRecordsFilterResult( + bool? all, + + string key, + + string? matchBy, + + ImmutableArray values) + { + All = all; + Key = key; + MatchBy = matchBy; + Values = values; + } + } +} diff --git a/sdk/dotnet/Outputs/GetRecordsRecordResult.cs b/sdk/dotnet/Outputs/GetRecordsRecordResult.cs new file mode 100644 index 00000000..85b57c49 --- /dev/null +++ b/sdk/dotnet/Outputs/GetRecordsRecordResult.cs @@ -0,0 +1,68 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.DigitalOcean.Outputs +{ + + [OutputType] + public sealed class GetRecordsRecordResult + { + /// + /// The domain name to search for DNS records + /// + public readonly string Domain; + public readonly int Flags; + public readonly int Id; + public readonly string Name; + public readonly int Port; + public readonly int Priority; + public readonly string Tag; + public readonly int Ttl; + public readonly string Type; + public readonly string Value; + public readonly int Weight; + + [OutputConstructor] + private GetRecordsRecordResult( + string domain, + + int flags, + + int id, + + string name, + + int port, + + int priority, + + string tag, + + int ttl, + + string type, + + string value, + + int weight) + { + Domain = domain; + Flags = flags; + Id = id; + Name = name; + Port = port; + Priority = priority; + Tag = tag; + Ttl = ttl; + Type = type; + Value = value; + Weight = weight; + } + } +} diff --git a/sdk/dotnet/Outputs/GetRecordsSortResult.cs b/sdk/dotnet/Outputs/GetRecordsSortResult.cs new file mode 100644 index 00000000..8cc0e669 --- /dev/null +++ b/sdk/dotnet/Outputs/GetRecordsSortResult.cs @@ -0,0 +1,36 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.DigitalOcean.Outputs +{ + + [OutputType] + public sealed class GetRecordsSortResult + { + /// + /// The sort direction. This may be either `asc` or `desc`. + /// + public readonly string? Direction; + /// + /// Sort the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + /// `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + /// + public readonly string Key; + + [OutputConstructor] + private GetRecordsSortResult( + string? direction, + + string key) + { + Direction = direction; + Key = key; + } + } +} diff --git a/sdk/dotnet/Outputs/LoadBalancerForwardingRule.cs b/sdk/dotnet/Outputs/LoadBalancerForwardingRule.cs index bd22b343..d89ce77e 100644 --- a/sdk/dotnet/Outputs/LoadBalancerForwardingRule.cs +++ b/sdk/dotnet/Outputs/LoadBalancerForwardingRule.cs @@ -14,10 +14,14 @@ namespace Pulumi.DigitalOcean.Outputs public sealed class LoadBalancerForwardingRule { /// - /// The ID of the TLS certificate to be used for SSL termination. + /// **Deprecated** The ID of the TLS certificate to be used for SSL termination. /// public readonly string? CertificateId; /// + /// The unique name of the TLS certificate to be used for SSL termination. + /// + public readonly string? CertificateName; + /// /// An integer representing the port on which the Load Balancer instance will listen. /// public readonly int EntryPort; @@ -42,6 +46,8 @@ public sealed class LoadBalancerForwardingRule private LoadBalancerForwardingRule( string? certificateId, + string? certificateName, + int entryPort, string entryProtocol, @@ -53,6 +59,7 @@ private LoadBalancerForwardingRule( bool? tlsPassthrough) { CertificateId = certificateId; + CertificateName = certificateName; EntryPort = entryPort; EntryProtocol = entryProtocol; TargetPort = targetPort; diff --git a/sdk/dotnet/Project.cs b/sdk/dotnet/Project.cs index f884c45d..aacc5111 100644 --- a/sdk/dotnet/Project.cs +++ b/sdk/dotnet/Project.cs @@ -9,79 +9,6 @@ namespace Pulumi.DigitalOcean { - /// - /// Provides a DigitalOcean Project resource. - /// - /// Projects allow you to organize your resources into groups that fit the way you work. - /// You can group resources (like Droplets, Spaces, Load Balancers, domains, and Floating IPs) - /// in ways that align with the applications you host on DigitalOcean. - /// - /// The following resource types can be associated with a project: - /// - /// * Database Clusters - /// * Domains - /// * Droplets - /// * Floating IP - /// * Load Balancers - /// * Spaces Bucket - /// * Volume - /// - /// **Note:** A managed project cannot be set as a default project. - /// - /// ## Example Usage - /// - /// The following example demonstrates the creation of an empty project: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var playground = new DigitalOcean.Project("playground", new DigitalOcean.ProjectArgs - /// { - /// Description = "A project to represent development resources.", - /// Environment = "Development", - /// Purpose = "Web Application", - /// }); - /// } - /// - /// } - /// ``` - /// - /// The following example demonstrates the creation of a project with a Droplet resource: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var foobar = new DigitalOcean.Droplet("foobar", new DigitalOcean.DropletArgs - /// { - /// Size = "512mb", - /// Image = "centos-7-x64", - /// Region = "nyc3", - /// }); - /// var playground = new DigitalOcean.Project("playground", new DigitalOcean.ProjectArgs - /// { - /// Description = "A project to represent development resources.", - /// Purpose = "Web Application", - /// Environment = "Development", - /// Resources = - /// { - /// foobar.DropletUrn, - /// }, - /// }); - /// } - /// - /// } - /// ``` - /// public partial class Project : Pulumi.CustomResource { /// diff --git a/sdk/dotnet/ProjectResources.cs b/sdk/dotnet/ProjectResources.cs index 56962f34..55bd1c2b 100644 --- a/sdk/dotnet/ProjectResources.cs +++ b/sdk/dotnet/ProjectResources.cs @@ -9,55 +9,6 @@ namespace Pulumi.DigitalOcean { - /// - /// Assign resources to a DigitalOcean Project. This is useful if you need to assign resources - /// managed this provider to a DigitalOcean Project that is unmanaged by the provider. - /// - /// The following resource types can be associated with a project: - /// - /// * Database Clusters - /// * Domains - /// * Droplets - /// * Floating IP - /// * Load Balancers - /// * Spaces Bucket - /// * Volume - /// - /// ## Example Usage - /// - /// The following example assigns a droplet to a Project managed outside of this provider: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var playground = Output.Create(DigitalOcean.GetProject.InvokeAsync(new DigitalOcean.GetProjectArgs - /// { - /// Name = "playground", - /// })); - /// var foobar = new DigitalOcean.Droplet("foobar", new DigitalOcean.DropletArgs - /// { - /// Size = "512mb", - /// Image = "centos-7-x64", - /// Region = "nyc3", - /// }); - /// var barfoo = new DigitalOcean.ProjectResources("barfoo", new DigitalOcean.ProjectResourcesArgs - /// { - /// Project = data.Digitalocean_project.Foo.Id, - /// Resources = - /// { - /// foobar.DropletUrn, - /// }, - /// }); - /// } - /// - /// } - /// ``` - /// public partial class ProjectResources : Pulumi.CustomResource { /// diff --git a/sdk/dotnet/SpacesBucketObject.cs b/sdk/dotnet/SpacesBucketObject.cs index b1075e41..7a2942d2 100644 --- a/sdk/dotnet/SpacesBucketObject.cs +++ b/sdk/dotnet/SpacesBucketObject.cs @@ -9,70 +9,6 @@ namespace Pulumi.DigitalOcean { - /// - /// Provides a bucket object resource for Spaces, DigitalOcean's object storage product. - /// The `digitalocean.SpacesBucketObject` resource allows this provider to upload content - /// to Spaces. - /// - /// The [Spaces API](https://developers.digitalocean.com/documentation/spaces/) was - /// designed to be interoperable with Amazon's AWS S3 API. This allows users to - /// interact with the service while using the tools they already know. Spaces - /// mirrors S3's authentication framework and requests to Spaces require a key pair - /// similar to Amazon's Access ID and Secret Key. - /// - /// The authentication requirement can be met by either setting the - /// `SPACES_ACCESS_KEY_ID` and `SPACES_SECRET_ACCESS_KEY` environment variables or - /// the provider's `spaces_access_id` and `spaces_secret_key` arguments to the - /// access ID and secret you generate via the DigitalOcean control panel. For - /// example: - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var static_assets = new DigitalOcean.SpacesBucket("static-assets", new DigitalOcean.SpacesBucketArgs - /// { - /// }); - /// // ... - /// } - /// - /// } - /// ``` - /// - /// For more information, See [An Introduction to DigitalOcean Spaces](https://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-spaces) - /// - /// ## Example Usage - /// ### Create a Key in a Spaces Bucket - /// - /// ```csharp - /// using Pulumi; - /// using DigitalOcean = Pulumi.DigitalOcean; - /// - /// class MyStack : Stack - /// { - /// public MyStack() - /// { - /// var foobar = new DigitalOcean.SpacesBucket("foobar", new DigitalOcean.SpacesBucketArgs - /// { - /// Region = "nyc3", - /// }); - /// var index = new DigitalOcean.SpacesBucketObject("index", new DigitalOcean.SpacesBucketObjectArgs - /// { - /// Region = foobar.Region, - /// Bucket = foobar.Name, - /// Key = "index.html", - /// Content = "<html><body><p>This page is empty.</p></body></html>", - /// ContentType = "text/html", - /// }); - /// } - /// - /// } - /// ``` - /// public partial class SpacesBucketObject : Pulumi.CustomResource { /// @@ -130,7 +66,9 @@ public partial class SpacesBucketObject : Pulumi.CustomResource public Output ContentType { get; private set; } = null!; /// - /// Used to trigger updates. The only meaningful value is `${filemd5("path/to/file")}`. + /// the ETag generated for the object (an MD5 sum of the object content). The hash is an MD5 digest of the + /// object data. For objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 + /// digest. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). /// [Output("etag")] public Output Etag { get; private set; } = null!; @@ -279,7 +217,9 @@ public sealed class SpacesBucketObjectArgs : Pulumi.ResourceArgs public Input? ContentType { get; set; } /// - /// Used to trigger updates. The only meaningful value is `${filemd5("path/to/file")}`. + /// the ETag generated for the object (an MD5 sum of the object content). The hash is an MD5 digest of the + /// object data. For objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 + /// digest. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). /// [Input("etag")] public Input? Etag { get; set; } @@ -389,7 +329,9 @@ public sealed class SpacesBucketObjectState : Pulumi.ResourceArgs public Input? ContentType { get; set; } /// - /// Used to trigger updates. The only meaningful value is `${filemd5("path/to/file")}`. + /// the ETag generated for the object (an MD5 sum of the object content). The hash is an MD5 digest of the + /// object data. For objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 + /// digest. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). /// [Input("etag")] public Input? Etag { get; set; } diff --git a/sdk/dotnet/SshKey.cs b/sdk/dotnet/SshKey.cs index 55405210..e3c77b63 100644 --- a/sdk/dotnet/SshKey.cs +++ b/sdk/dotnet/SshKey.cs @@ -29,7 +29,7 @@ namespace Pulumi.DigitalOcean /// // Create a new SSH key /// var @default = new DigitalOcean.SshKey("default", new DigitalOcean.SshKeyArgs /// { - /// PublicKey = File.ReadAllText("/Users/myuser/.ssh/id_rsa.pub"), + /// PublicKey = File.ReadAllText("/Users/terraform/.ssh/id_rsa.pub"), /// }); /// // Create a new Droplet using the SSH key /// var web = new DigitalOcean.Droplet("web", new DigitalOcean.DropletArgs diff --git a/sdk/go.mod b/sdk/go.mod index 09b16b86..2b4a866c 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -1,4 +1,4 @@ -module github.com/pulumi/pulumi-digitalocean/sdk/v2 +module github.com/pulumi/pulumi-digitalocean/sdk/v3 go 1.14 diff --git a/sdk/go/digitalocean/cdn.go b/sdk/go/digitalocean/cdn.go index 844a07f1..94ed9c95 100644 --- a/sdk/go/digitalocean/cdn.go +++ b/sdk/go/digitalocean/cdn.go @@ -72,9 +72,9 @@ import ( // return err // } // _, err = digitalocean.NewCdn(ctx, "mycdn", &digitalocean.CdnArgs{ -// Origin: mybucket.BucketDomainName, -// CustomDomain: pulumi.String("static.example.com"), -// CertificateId: cert.ID(), +// Origin: mybucket.BucketDomainName, +// CustomDomain: pulumi.String("static.example.com"), +// CertificateName: cert.Name, // }) // if err != nil { // return err @@ -86,8 +86,12 @@ import ( type Cdn struct { pulumi.CustomResourceState - // The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. - CertificateId pulumi.StringPtrOutput `pulumi:"certificateId"` + // **Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + // + // Deprecated: Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead. + CertificateId pulumi.StringOutput `pulumi:"certificateId"` + // The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + CertificateName pulumi.StringOutput `pulumi:"certificateName"` // The date and time when the CDN Endpoint was created. CreatedAt pulumi.StringOutput `pulumi:"createdAt"` // The fully qualified domain name (FQDN) of the custom subdomain used with the CDN Endpoint. @@ -131,8 +135,12 @@ func GetCdn(ctx *pulumi.Context, // Input properties used for looking up and filtering Cdn resources. type cdnState struct { - // The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + // **Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + // + // Deprecated: Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead. CertificateId *string `pulumi:"certificateId"` + // The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + CertificateName *string `pulumi:"certificateName"` // The date and time when the CDN Endpoint was created. CreatedAt *string `pulumi:"createdAt"` // The fully qualified domain name (FQDN) of the custom subdomain used with the CDN Endpoint. @@ -146,8 +154,12 @@ type cdnState struct { } type CdnState struct { - // The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + // **Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + // + // Deprecated: Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead. CertificateId pulumi.StringPtrInput + // The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + CertificateName pulumi.StringPtrInput // The date and time when the CDN Endpoint was created. CreatedAt pulumi.StringPtrInput // The fully qualified domain name (FQDN) of the custom subdomain used with the CDN Endpoint. @@ -165,8 +177,12 @@ func (CdnState) ElementType() reflect.Type { } type cdnArgs struct { - // The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + // **Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + // + // Deprecated: Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead. CertificateId *string `pulumi:"certificateId"` + // The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + CertificateName *string `pulumi:"certificateName"` // The fully qualified domain name (FQDN) of the custom subdomain used with the CDN Endpoint. CustomDomain *string `pulumi:"customDomain"` // The fully qualified domain name, (FQDN) for a Space. @@ -177,8 +193,12 @@ type cdnArgs struct { // The set of arguments for constructing a Cdn resource. type CdnArgs struct { - // The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + // **Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + // + // Deprecated: Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead. CertificateId pulumi.StringPtrInput + // The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + CertificateName pulumi.StringPtrInput // The fully qualified domain name (FQDN) of the custom subdomain used with the CDN Endpoint. CustomDomain pulumi.StringPtrInput // The fully qualified domain name, (FQDN) for a Space. diff --git a/sdk/go/digitalocean/certificate.go b/sdk/go/digitalocean/certificate.go index cc793a98..3cbf0e47 100644 --- a/sdk/go/digitalocean/certificate.go +++ b/sdk/go/digitalocean/certificate.go @@ -71,11 +71,11 @@ import ( // DropletTag: pulumi.String("backend"), // ForwardingRules: digitalocean.LoadBalancerForwardingRuleArray{ // &digitalocean.LoadBalancerForwardingRuleArgs{ -// EntryPort: pulumi.Int(443), -// EntryProtocol: pulumi.String("https"), -// TargetPort: pulumi.Int(80), -// TargetProtocol: pulumi.String("http"), -// CertificateId: cert.ID(), +// EntryPort: pulumi.Int(443), +// EntryProtocol: pulumi.String("https"), +// TargetPort: pulumi.Int(80), +// TargetProtocol: pulumi.String("http"), +// CertificateName: cert.Name, // }, // }, // }) @@ -113,6 +113,8 @@ type Certificate struct { // The type of certificate to provision. Can be either // `custom` or `letsEncrypt`. Defaults to `custom`. Type pulumi.StringPtrOutput `pulumi:"type"` + // The UUID of the certificate + Uuid pulumi.StringOutput `pulumi:"uuid"` } // NewCertificate registers a new resource with the given unique name, arguments, and options. @@ -167,6 +169,8 @@ type certificateState struct { // The type of certificate to provision. Can be either // `custom` or `letsEncrypt`. Defaults to `custom`. Type *string `pulumi:"type"` + // The UUID of the certificate + Uuid *string `pulumi:"uuid"` } type CertificateState struct { @@ -194,6 +198,8 @@ type CertificateState struct { // The type of certificate to provision. Can be either // `custom` or `letsEncrypt`. Defaults to `custom`. Type pulumi.StringPtrInput + // The UUID of the certificate + Uuid pulumi.StringPtrInput } func (CertificateState) ElementType() reflect.Type { diff --git a/sdk/go/digitalocean/getApp.go b/sdk/go/digitalocean/getApp.go index 89016a85..0c39c710 100644 --- a/sdk/go/digitalocean/getApp.go +++ b/sdk/go/digitalocean/getApp.go @@ -63,7 +63,7 @@ type LookupAppResult struct { // The live URL of the app. LiveUrl string `pulumi:"liveUrl"` // A DigitalOcean App spec describing the app. - Spec GetAppSpec `pulumi:"spec"` + Specs []GetAppSpec `pulumi:"specs"` // The date and time of when the app was last updated. UpdatedAt string `pulumi:"updatedAt"` } diff --git a/sdk/go/digitalocean/getCertificate.go b/sdk/go/digitalocean/getCertificate.go index a61f84f7..6926f068 100644 --- a/sdk/go/digitalocean/getCertificate.go +++ b/sdk/go/digitalocean/getCertificate.go @@ -7,37 +7,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// 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. -// This is useful if the certificate in question is not managed by this provider or you need to utilize -// any of the certificates data. -// -// An error is triggered if the provided certificate name does not exist. -// -// ## Example Usage -// -// Get the certificate: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := digitalocean.LookupCertificate(ctx, &digitalocean.LookupCertificateArgs{ -// Name: "example", -// }, nil) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` func LookupCertificate(ctx *pulumi.Context, args *LookupCertificateArgs, opts ...pulumi.InvokeOption) (*LookupCertificateResult, error) { var rv LookupCertificateResult err := ctx.Invoke("digitalocean:index/getCertificate:getCertificate", args, &rv, opts...) @@ -63,4 +32,5 @@ type LookupCertificateResult struct { Sha1Fingerprint string `pulumi:"sha1Fingerprint"` State string `pulumi:"state"` Type string `pulumi:"type"` + Uuid string `pulumi:"uuid"` } diff --git a/sdk/go/digitalocean/getContainerRegistry.go b/sdk/go/digitalocean/getContainerRegistry.go index ca278948..b839317e 100644 --- a/sdk/go/digitalocean/getContainerRegistry.go +++ b/sdk/go/digitalocean/getContainerRegistry.go @@ -7,38 +7,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// Get information on a container registry. This data source provides the name as -// configured on your DigitalOcean account. This is useful if the container -// registry name in question is not managed by this provider or you need validate if -// the container registry exists in the account. -// -// An error is triggered if the provided container registry name does not exist. -// -// ## Example Usage -// ### Basic Example -// -// Get the container registry: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := digitalocean.LookupContainerRegistry(ctx, &digitalocean.LookupContainerRegistryArgs{ -// Name: "example", -// }, nil) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` func LookupContainerRegistry(ctx *pulumi.Context, args *LookupContainerRegistryArgs, opts ...pulumi.InvokeOption) (*LookupContainerRegistryResult, error) { var rv LookupContainerRegistryResult err := ctx.Invoke("digitalocean:index/getContainerRegistry:getContainerRegistry", args, &rv, opts...) diff --git a/sdk/go/digitalocean/getDomain.go b/sdk/go/digitalocean/getDomain.go index 69467c23..c4ef1c65 100644 --- a/sdk/go/digitalocean/getDomain.go +++ b/sdk/go/digitalocean/getDomain.go @@ -7,39 +7,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// 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 -// name in question is not managed by this provider or you need to utilize TTL or zone -// file data. -// -// An error is triggered if the provided domain name is not managed with your -// DigitalOcean account. -// -// ## Example Usage -// -// Get the zone file for a domain: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// example, err := digitalocean.LookupDomain(ctx, &digitalocean.LookupDomainArgs{ -// Name: "example.com", -// }, nil) -// if err != nil { -// return err -// } -// ctx.Export("domainOutput", example.ZoneFile) -// return nil -// }) -// } -// ``` func LookupDomain(ctx *pulumi.Context, args *LookupDomainArgs, opts ...pulumi.InvokeOption) (*LookupDomainResult, error) { var rv LookupDomainResult err := ctx.Invoke("digitalocean:index/getDomain:getDomain", args, &rv, opts...) diff --git a/sdk/go/digitalocean/getDroplet.go b/sdk/go/digitalocean/getDroplet.go index 40e32b26..7b880d13 100644 --- a/sdk/go/digitalocean/getDroplet.go +++ b/sdk/go/digitalocean/getDroplet.go @@ -7,88 +7,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// 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 -// is useful if the Droplet in question is not managed by this provider or you need to -// utilize any of the Droplet's data. -// -// **Note:** This data source returns a single Droplet. When specifying a `tag`, an -// error is triggered if more than one Droplet is found. -// -// ## Example Usage -// -// Get the Droplet by name: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// opt0 := "web" -// example, err := digitalocean.LookupDroplet(ctx, &digitalocean.LookupDropletArgs{ -// Name: &opt0, -// }, nil) -// if err != nil { -// return err -// } -// ctx.Export("dropletOutput", example.Ipv4Address) -// return nil -// }) -// } -// ``` -// -// Get the Droplet by tag: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// opt0 := "web" -// _, err := digitalocean.LookupDroplet(ctx, &digitalocean.LookupDropletArgs{ -// Tag: &opt0, -// }, nil) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` -// -// Get the Droplet by ID: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// opt0 := digitalocean_kubernetes_cluster.Example.Node_pool[0].Nodes[0].Droplet_id -// _, err := digitalocean.LookupDroplet(ctx, &digitalocean.LookupDropletArgs{ -// Id: &opt0, -// }, nil) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` func LookupDroplet(ctx *pulumi.Context, args *LookupDropletArgs, opts ...pulumi.InvokeOption) (*LookupDropletResult, error) { var rv LookupDropletResult err := ctx.Invoke("digitalocean:index/getDroplet:getDroplet", args, &rv, opts...) diff --git a/sdk/go/digitalocean/getDroplets.go b/sdk/go/digitalocean/getDroplets.go index 7afb89d8..cd73119f 100644 --- a/sdk/go/digitalocean/getDroplets.go +++ b/sdk/go/digitalocean/getDroplets.go @@ -7,90 +7,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// 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. -// -// This data source is useful if the Droplets in question are not managed by this provider or you need to -// utilize any of the Droplets' data. -// -// Note: You can use the `Droplet` data source to obtain metadata -// about a single Droplet if you already know the `id`, unique `name`, or unique `tag` to retrieve. -// -// ## Example Usage -// -// Use the `filter` block with a `key` string and `values` list to filter images. -// -// For example to find all Droplets with size `s-1vcpu-1gb`: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := digitalocean.GetDroplets(ctx, &digitalocean.GetDropletsArgs{ -// Filters: []digitalocean.GetDropletsFilter{ -// digitalocean.GetDropletsFilter{ -// Key: "size", -// Values: []string{ -// "s-1vcpu-1gb", -// }, -// }, -// }, -// }, nil) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` -// -// You can filter on multiple fields and sort the results as well: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := digitalocean.GetDroplets(ctx, &digitalocean.GetDropletsArgs{ -// Filters: []digitalocean.GetDropletsFilter{ -// digitalocean.GetDropletsFilter{ -// Key: "size", -// Values: []string{ -// "s-1vcpu-1gb", -// }, -// }, -// digitalocean.GetDropletsFilter{ -// Key: "backups", -// Values: []string{ -// "true", -// }, -// }, -// }, -// Sorts: []digitalocean.GetDropletsSort{ -// digitalocean.GetDropletsSort{ -// Direction: "desc", -// Key: "created_at", -// }, -// }, -// }, nil) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` func GetDroplets(ctx *pulumi.Context, args *GetDropletsArgs, opts ...pulumi.InvokeOption) (*GetDropletsResult, error) { var rv GetDropletsResult err := ctx.Invoke("digitalocean:index/getDroplets:getDroplets", args, &rv, opts...) diff --git a/sdk/go/digitalocean/getFloatingIp.go b/sdk/go/digitalocean/getFloatingIp.go index 37f6aa4a..115308c4 100644 --- a/sdk/go/digitalocean/getFloatingIp.go +++ b/sdk/go/digitalocean/getFloatingIp.go @@ -7,41 +7,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// Get information on a floating ip. This data source provides the region and Droplet id -// as configured on your DigitalOcean account. This is useful if the floating IP -// in question is not managed by this provider or you need to find the Droplet the IP is -// attached to. -// -// An error is triggered if the provided floating IP does not exist. -// -// ## Example Usage -// -// Get the floating IP: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi/config" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// cfg := config.New(ctx, "") -// publicIp := cfg.RequireObject("publicIp") -// example, err := digitalocean.LookupFloatingIp(ctx, &digitalocean.LookupFloatingIpArgs{ -// IpAddress: publicIp, -// }, nil) -// if err != nil { -// return err -// } -// ctx.Export("fipOutput", example.DropletId) -// return nil -// }) -// } -// ``` func LookupFloatingIp(ctx *pulumi.Context, args *LookupFloatingIpArgs, opts ...pulumi.InvokeOption) (*LookupFloatingIpResult, error) { var rv LookupFloatingIpResult err := ctx.Invoke("digitalocean:index/getFloatingIp:getFloatingIp", args, &rv, opts...) diff --git a/sdk/go/digitalocean/getImage.go b/sdk/go/digitalocean/getImage.go index 5d53ef56..fe110eee 100644 --- a/sdk/go/digitalocean/getImage.go +++ b/sdk/go/digitalocean/getImage.go @@ -7,94 +7,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// 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 -// configured on your DigitalOcean account. This is useful if the image in question -// is not managed by this provider or you need to utilize any of the image's data. -// -// An error is triggered if zero or more than one result is returned by the query. -// -// ## Example Usage -// -// Get the data about a snapshot: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// opt0 := "example-1.0.0" -// _, err := digitalocean.GetImage(ctx, &digitalocean.GetImageArgs{ -// Name: &opt0, -// }, nil) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` -// -// Reuse the data about a snapshot to create a Droplet: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// opt0 := "example-1.0.0" -// exampleImage, err := digitalocean.GetImage(ctx, &digitalocean.GetImageArgs{ -// Name: &opt0, -// }, nil) -// if err != nil { -// return err -// } -// _, err = digitalocean.NewDroplet(ctx, "exampleDroplet", &digitalocean.DropletArgs{ -// Image: pulumi.Int(exampleImage.Id), -// Region: pulumi.String("nyc2"), -// Size: pulumi.String("s-1vcpu-1gb"), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` -// -// Get the data about an official image: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// opt0 := "ubuntu-18-04-x64" -// _, err := digitalocean.GetImage(ctx, &digitalocean.GetImageArgs{ -// Slug: &opt0, -// }, nil) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` func GetImage(ctx *pulumi.Context, args *GetImageArgs, opts ...pulumi.InvokeOption) (*GetImageResult, error) { var rv GetImageResult err := ctx.Invoke("digitalocean:index/getImage:getImage", args, &rv, opts...) @@ -118,7 +30,8 @@ type GetImageArgs struct { // A collection of values returned by getImage. type GetImageResult struct { - Created string `pulumi:"created"` + Created string `pulumi:"created"` + Description string `pulumi:"description"` // The name of the distribution of the OS of the image. // * `minDiskSize`: The minimum 'disk' required for the image. // * `sizeGigabytes`: The size of the image in GB. diff --git a/sdk/go/digitalocean/getImages.go b/sdk/go/digitalocean/getImages.go index 2c7c52e5..8bbb4921 100644 --- a/sdk/go/digitalocean/getImages.go +++ b/sdk/go/digitalocean/getImages.go @@ -7,91 +7,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// 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, -// all images will be returned. -// -// This data source is useful if the image in question is not managed by this provider or you need to utilize any -// of the image's data. -// -// Note: You can use the `getImage` data source to obtain metadata -// about a single image if you already know the `slug`, unique `name`, or `id` to retrieve. -// -// ## Example Usage -// -// Use the `filter` block with a `key` string and `values` list to filter images. -// -// For example to find all Ubuntu images: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := digitalocean.GetImages(ctx, &digitalocean.GetImagesArgs{ -// Filters: []digitalocean.GetImagesFilter{ -// digitalocean.GetImagesFilter{ -// Key: "distribution", -// Values: []string{ -// "Ubuntu", -// }, -// }, -// }, -// }, nil) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` -// -// You can filter on multiple fields and sort the results as well: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := digitalocean.GetImages(ctx, &digitalocean.GetImagesArgs{ -// Filters: []digitalocean.GetImagesFilter{ -// digitalocean.GetImagesFilter{ -// Key: "distribution", -// Values: []string{ -// "Ubuntu", -// }, -// }, -// digitalocean.GetImagesFilter{ -// Key: "regions", -// Values: []string{ -// "nyc3", -// }, -// }, -// }, -// Sorts: []digitalocean.GetImagesSort{ -// digitalocean.GetImagesSort{ -// Direction: "desc", -// Key: "created", -// }, -// }, -// }, nil) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` func GetImages(ctx *pulumi.Context, args *GetImagesArgs, opts ...pulumi.InvokeOption) (*GetImagesResult, error) { var rv GetImagesResult err := ctx.Invoke("digitalocean:index/getImages:getImages", args, &rv, opts...) diff --git a/sdk/go/digitalocean/getKubernetesCluster.go b/sdk/go/digitalocean/getKubernetesCluster.go index 0d65d596..93297e64 100644 --- a/sdk/go/digitalocean/getKubernetesCluster.go +++ b/sdk/go/digitalocean/getKubernetesCluster.go @@ -7,7 +7,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// 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 this provider. func LookupKubernetesCluster(ctx *pulumi.Context, args *LookupKubernetesClusterArgs, opts ...pulumi.InvokeOption) (*LookupKubernetesClusterResult, error) { var rv LookupKubernetesClusterResult err := ctx.Invoke("digitalocean:index/getKubernetesCluster:getKubernetesCluster", args, &rv, opts...) diff --git a/sdk/go/digitalocean/getKubernetesVersions.go b/sdk/go/digitalocean/getKubernetesVersions.go index 385f4e20..5395e385 100644 --- a/sdk/go/digitalocean/getKubernetesVersions.go +++ b/sdk/go/digitalocean/getKubernetesVersions.go @@ -109,7 +109,6 @@ func GetKubernetesVersions(ctx *pulumi.Context, args *GetKubernetesVersionsArgs, // A collection of arguments for invoking getKubernetesVersions. type GetKubernetesVersionsArgs struct { - // If provided, this provider will only return versions that match the string prefix. For example, `1.15.` will match all 1.15.x series releases. VersionPrefix *string `pulumi:"versionPrefix"` } diff --git a/sdk/go/digitalocean/getLoadBalancer.go b/sdk/go/digitalocean/getLoadBalancer.go index 9ecd7ca8..6dde195e 100644 --- a/sdk/go/digitalocean/getLoadBalancer.go +++ b/sdk/go/digitalocean/getLoadBalancer.go @@ -7,38 +7,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// 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 -// account. This is useful if the load balancer in question is not managed by -// this provider or you need to utilize any of the load balancers data. -// -// An error is triggered if the provided load balancer name does not exist. -// -// ## Example Usage -// -// Get the load balancer: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// example, err := digitalocean.LookupLoadBalancer(ctx, &digitalocean.LookupLoadBalancerArgs{ -// Name: "app", -// }, nil) -// if err != nil { -// return err -// } -// ctx.Export("lbOutput", example.Ip) -// return nil -// }) -// } -// ``` func LookupLoadBalancer(ctx *pulumi.Context, args *LookupLoadBalancerArgs, opts ...pulumi.InvokeOption) (*LookupLoadBalancerResult, error) { var rv LookupLoadBalancerResult err := ctx.Invoke("digitalocean:index/getLoadBalancer:getLoadBalancer", args, &rv, opts...) @@ -62,15 +30,15 @@ type LookupLoadBalancerResult struct { EnableBackendKeepalive bool `pulumi:"enableBackendKeepalive"` EnableProxyProtocol bool `pulumi:"enableProxyProtocol"` ForwardingRules []GetLoadBalancerForwardingRule `pulumi:"forwardingRules"` - Healthcheck GetLoadBalancerHealthcheck `pulumi:"healthcheck"` + Healthchecks []GetLoadBalancerHealthcheck `pulumi:"healthchecks"` // The provider-assigned unique ID for this managed resource. - Id string `pulumi:"id"` - Ip string `pulumi:"ip"` - LoadBalancerUrn string `pulumi:"loadBalancerUrn"` - Name string `pulumi:"name"` - RedirectHttpToHttps bool `pulumi:"redirectHttpToHttps"` - Region string `pulumi:"region"` - Status string `pulumi:"status"` - StickySessions GetLoadBalancerStickySessions `pulumi:"stickySessions"` - VpcUuid string `pulumi:"vpcUuid"` + Id string `pulumi:"id"` + Ip string `pulumi:"ip"` + LoadBalancerUrn string `pulumi:"loadBalancerUrn"` + Name string `pulumi:"name"` + RedirectHttpToHttps bool `pulumi:"redirectHttpToHttps"` + Region string `pulumi:"region"` + Status string `pulumi:"status"` + StickySessions []GetLoadBalancerStickySession `pulumi:"stickySessions"` + VpcUuid string `pulumi:"vpcUuid"` } diff --git a/sdk/go/digitalocean/getRecord.go b/sdk/go/digitalocean/getRecord.go index cd5db3a2..c731eacc 100644 --- a/sdk/go/digitalocean/getRecord.go +++ b/sdk/go/digitalocean/getRecord.go @@ -7,40 +7,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// 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 -// in question is not managed by this provider. -// -// An error is triggered if the provided domain name or record are not managed with -// your DigitalOcean account. -// -// ## Example Usage -// -// Get data from a DNS record: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// example, err := digitalocean.GetRecord(ctx, &digitalocean.GetRecordArgs{ -// Domain: "example.com", -// Name: "test", -// }, nil) -// if err != nil { -// return err -// } -// ctx.Export("recordType", example.Type) -// ctx.Export("recordTtl", example.Ttl) -// return nil -// }) -// } -// ``` func GetRecord(ctx *pulumi.Context, args *GetRecordArgs, opts ...pulumi.InvokeOption) (*GetRecordResult, error) { var rv GetRecordResult err := ctx.Invoke("digitalocean:index/getRecord:getRecord", args, &rv, opts...) diff --git a/sdk/go/digitalocean/getRecords.go b/sdk/go/digitalocean/getRecords.go new file mode 100644 index 00000000..315d498f --- /dev/null +++ b/sdk/go/digitalocean/getRecords.go @@ -0,0 +1,41 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package digitalocean + +import ( + "github.com/pulumi/pulumi/sdk/v2/go/pulumi" +) + +// 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. +func GetRecords(ctx *pulumi.Context, args *GetRecordsArgs, opts ...pulumi.InvokeOption) (*GetRecordsResult, error) { + var rv GetRecordsResult + err := ctx.Invoke("digitalocean:index/getRecords:getRecords", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getRecords. +type GetRecordsArgs struct { + // The domain name to search for DNS records + Domain string `pulumi:"domain"` + // Filter the results. + // The `filter` block is documented below. + Filters []GetRecordsFilter `pulumi:"filters"` + // Sort the results. + // The `sort` block is documented below. + Sorts []GetRecordsSort `pulumi:"sorts"` +} + +// A collection of values returned by getRecords. +type GetRecordsResult struct { + Domain string `pulumi:"domain"` + Filters []GetRecordsFilter `pulumi:"filters"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + Records []GetRecordsRecord `pulumi:"records"` + Sorts []GetRecordsSort `pulumi:"sorts"` +} diff --git a/sdk/go/digitalocean/getSpacesBucket.go b/sdk/go/digitalocean/getSpacesBucket.go index 09b1c861..dea70bcf 100644 --- a/sdk/go/digitalocean/getSpacesBucket.go +++ b/sdk/go/digitalocean/getSpacesBucket.go @@ -7,35 +7,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// Get information on a Spaces bucket for use in other resources. This is useful if the Spaces bucket in question -// is not managed by this provider or you need to utilize any of the bucket's data. -// -// ## Example Usage -// -// Get the bucket by name: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// example, err := digitalocean.LookupSpacesBucket(ctx, &digitalocean.LookupSpacesBucketArgs{ -// Name: "my-spaces-bucket", -// Region: "nyc3", -// }, nil) -// if err != nil { -// return err -// } -// ctx.Export("bucketDomainName", example.BucketDomainName) -// return nil -// }) -// } -// ``` func LookupSpacesBucket(ctx *pulumi.Context, args *LookupSpacesBucketArgs, opts ...pulumi.InvokeOption) (*LookupSpacesBucketResult, error) { var rv LookupSpacesBucketResult err := ctx.Invoke("digitalocean:index/getSpacesBucket:getSpacesBucket", args, &rv, opts...) diff --git a/sdk/go/digitalocean/getSpacesBucketObjects.go b/sdk/go/digitalocean/getSpacesBucketObjects.go index 501b91d1..0d844381 100644 --- a/sdk/go/digitalocean/getSpacesBucketObjects.go +++ b/sdk/go/digitalocean/getSpacesBucketObjects.go @@ -7,9 +7,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// > **NOTE on `maxKeys`:** Retrieving very large numbers of keys can adversely affect this provider's performance. -// -// The bucket-objects data source returns keys (i.e., file names) and other metadata about objects in a Spaces bucket. func GetSpacesBucketObjects(ctx *pulumi.Context, args *GetSpacesBucketObjectsArgs, opts ...pulumi.InvokeOption) (*GetSpacesBucketObjectsResult, error) { var rv GetSpacesBucketObjectsResult err := ctx.Invoke("digitalocean:index/getSpacesBucketObjects:getSpacesBucketObjects", args, &rv, opts...) diff --git a/sdk/go/digitalocean/getSshKey.go b/sdk/go/digitalocean/getSshKey.go index e598fadc..d79b6f1b 100644 --- a/sdk/go/digitalocean/getSshKey.go +++ b/sdk/go/digitalocean/getSshKey.go @@ -7,48 +7,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// 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 -// the ssh key in question is not managed by this provider or you need to utilize any -// of the keys data. -// -// An error is triggered if the provided ssh key name does not exist. -// -// ## Example Usage -// -// Get the ssh key: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// exampleSshKey, err := digitalocean.LookupSshKey(ctx, &digitalocean.LookupSshKeyArgs{ -// Name: "example", -// }, nil) -// if err != nil { -// return err -// } -// _, err = digitalocean.NewDroplet(ctx, "exampleDroplet", &digitalocean.DropletArgs{ -// Image: pulumi.String("ubuntu-18-04-x64"), -// Region: pulumi.String("nyc2"), -// Size: pulumi.String("s-1vcpu-1gb"), -// SshKeys: pulumi.StringArray{ -// pulumi.String(exampleSshKey.Id), -// }, -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` func LookupSshKey(ctx *pulumi.Context, args *LookupSshKeyArgs, opts ...pulumi.InvokeOption) (*LookupSshKeyResult, error) { var rv LookupSshKeyResult err := ctx.Invoke("digitalocean:index/getSshKey:getSshKey", args, &rv, opts...) diff --git a/sdk/go/digitalocean/getTag.go b/sdk/go/digitalocean/getTag.go index 2d8c019c..05503748 100644 --- a/sdk/go/digitalocean/getTag.go +++ b/sdk/go/digitalocean/getTag.go @@ -7,47 +7,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// 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 -// managed by this provider or you need validate if the tag exists in the account. -// -// An error is triggered if the provided tag name does not exist. -// -// ## Example Usage -// -// Get the tag: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// exampleTag, err := digitalocean.LookupTag(ctx, &digitalocean.LookupTagArgs{ -// Name: "example", -// }, nil) -// if err != nil { -// return err -// } -// _, err = digitalocean.NewDroplet(ctx, "exampleDroplet", &digitalocean.DropletArgs{ -// Image: pulumi.String("ubuntu-18-04-x64"), -// Region: pulumi.String("nyc2"), -// Size: pulumi.String("s-1vcpu-1gb"), -// Tags: pulumi.StringArray{ -// pulumi.String(exampleTag.Name), -// }, -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` func LookupTag(ctx *pulumi.Context, args *LookupTagArgs, opts ...pulumi.InvokeOption) (*LookupTagResult, error) { var rv LookupTagResult err := ctx.Invoke("digitalocean:index/getTag:getTag", args, &rv, opts...) diff --git a/sdk/go/digitalocean/getVolume.go b/sdk/go/digitalocean/getVolume.go index 5fdd9221..034c87ea 100644 --- a/sdk/go/digitalocean/getVolume.go +++ b/sdk/go/digitalocean/getVolume.go @@ -7,79 +7,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// 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 -// useful if the volume in question is not managed by this provider or you need to utilize -// any of the volumes data. -// -// An error is triggered if the provided volume name does not exist. -// -// ## Example Usage -// -// Get the volume: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// opt0 := "nyc3" -// _, err := digitalocean.LookupVolume(ctx, &digitalocean.LookupVolumeArgs{ -// Name: "app-data", -// Region: &opt0, -// }, nil) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` -// -// Reuse the data about a volume to attach it to a Droplet: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// opt0 := "nyc3" -// exampleVolume, err := digitalocean.LookupVolume(ctx, &digitalocean.LookupVolumeArgs{ -// Name: "app-data", -// Region: &opt0, -// }, nil) -// if err != nil { -// return err -// } -// exampleDroplet, err := digitalocean.NewDroplet(ctx, "exampleDroplet", &digitalocean.DropletArgs{ -// Size: pulumi.String("s-1vcpu-1gb"), -// Image: pulumi.String("ubuntu-18-04-x64"), -// Region: pulumi.String("nyc3"), -// }) -// if err != nil { -// return err -// } -// _, err = digitalocean.NewVolumeAttachment(ctx, "foobar", &digitalocean.VolumeAttachmentArgs{ -// DropletId: exampleDroplet.ID(), -// VolumeId: pulumi.String(exampleVolume.Id), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` func LookupVolume(ctx *pulumi.Context, args *LookupVolumeArgs, opts ...pulumi.InvokeOption) (*LookupVolumeResult, error) { var rv LookupVolumeResult err := ctx.Invoke("digitalocean:index/getVolume:getVolume", args, &rv, opts...) diff --git a/sdk/go/digitalocean/getVpc.go b/sdk/go/digitalocean/getVpc.go index e2ded30a..3bda440b 100644 --- a/sdk/go/digitalocean/getVpc.go +++ b/sdk/go/digitalocean/getVpc.go @@ -7,72 +7,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// Retrieve information about a VPC for use in other resources. -// -// This data source provides all of the VPC's properties as configured on your -// DigitalOcean account. This is useful if the VPC in question is not managed by -// this provider or you need to utilize any of the VPC's data. -// -// VPCs may be looked up by `id` or `name`. Specifying a `region` will -// return that that region's default VPC. -// -// ## Example Usage -// ### VPC By Name -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// opt0 := "example-network" -// _, err := digitalocean.LookupVpc(ctx, &digitalocean.LookupVpcArgs{ -// Name: &opt0, -// }, nil) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` -// -// Reuse the data about a VPC to assign a Droplet to it: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// opt0 := "example-network" -// exampleVpc, err := digitalocean.LookupVpc(ctx, &digitalocean.LookupVpcArgs{ -// Name: &opt0, -// }, nil) -// if err != nil { -// return err -// } -// _, err = digitalocean.NewDroplet(ctx, "exampleDroplet", &digitalocean.DropletArgs{ -// Size: pulumi.String("s-1vcpu-1gb"), -// Image: pulumi.String("ubuntu-18-04-x64"), -// Region: pulumi.String("nyc3"), -// VpcUuid: pulumi.String(exampleVpc.Id), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` func LookupVpc(ctx *pulumi.Context, args *LookupVpcArgs, opts ...pulumi.InvokeOption) (*LookupVpcResult, error) { var rv LookupVpcResult err := ctx.Invoke("digitalocean:index/getVpc:getVpc", args, &rv, opts...) diff --git a/sdk/go/digitalocean/kubernetesCluster.go b/sdk/go/digitalocean/kubernetesCluster.go index d62d5e8c..0d6e09b4 100644 --- a/sdk/go/digitalocean/kubernetesCluster.go +++ b/sdk/go/digitalocean/kubernetesCluster.go @@ -10,113 +10,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// Provides a DigitalOcean Kubernetes cluster resource. This can be used to create, delete, and modify clusters. For more information see the [official documentation](https://www.digitalocean.com/docs/kubernetes/). -// -// ## Example Usage -// ### Basic Example -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := digitalocean.NewKubernetesCluster(ctx, "foo", &digitalocean.KubernetesClusterArgs{ -// NodePool: &digitalocean.KubernetesClusterNodePoolArgs{ -// Name: pulumi.String("worker-pool"), -// NodeCount: pulumi.Int(3), -// Size: pulumi.String("s-2vcpu-2gb"), -// }, -// Region: pulumi.String("nyc1"), -// Version: pulumi.String("1.15.5-do.1"), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` -// ### Autoscaling Example -// -// Node pools may also be configured to [autoscale](https://www.digitalocean.com/docs/kubernetes/how-to/autoscale/). -// For example: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := digitalocean.NewKubernetesCluster(ctx, "foo", &digitalocean.KubernetesClusterArgs{ -// NodePool: &digitalocean.KubernetesClusterNodePoolArgs{ -// AutoScale: pulumi.Bool(true), -// MaxNodes: pulumi.Int(5), -// MinNodes: pulumi.Int(1), -// Name: pulumi.String("autoscale-worker-pool"), -// Size: pulumi.String("s-2vcpu-2gb"), -// }, -// Region: pulumi.String("nyc1"), -// Version: pulumi.String("1.15.5-do.1"), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` -// -// Note that, while individual node pools may scale to 0, a cluster must always include at least one node. -// ### Auto Upgrade Example -// -// DigitalOcean Kubernetes clusters may also be configured to [auto upgrade](https://www.digitalocean.com/docs/kubernetes/how-to/upgrade-cluster/#automatically) patch versions. -// For example: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// opt0 := "1.18." -// example, err := digitalocean.GetKubernetesVersions(ctx, &digitalocean.GetKubernetesVersionsArgs{ -// VersionPrefix: &opt0, -// }, nil) -// if err != nil { -// return err -// } -// _, err = digitalocean.NewKubernetesCluster(ctx, "foo", &digitalocean.KubernetesClusterArgs{ -// Region: pulumi.String("nyc1"), -// AutoUpgrade: pulumi.Bool(true), -// Version: pulumi.String(example.LatestVersion), -// NodePool: &digitalocean.KubernetesClusterNodePoolArgs{ -// Name: pulumi.String("default"), -// Size: pulumi.String("s-1vcpu-2gb"), -// NodeCount: pulumi.Int(3), -// }, -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` -// -// Note that a data source is used to supply the version. This is needed to prevent configuration diff whenever a cluster is upgraded. type KubernetesCluster struct { pulumi.CustomResourceState diff --git a/sdk/go/digitalocean/project.go b/sdk/go/digitalocean/project.go index 6ac418c9..7cb2ff7e 100644 --- a/sdk/go/digitalocean/project.go +++ b/sdk/go/digitalocean/project.go @@ -9,86 +9,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// Provides a DigitalOcean Project resource. -// -// Projects allow you to organize your resources into groups that fit the way you work. -// You can group resources (like Droplets, Spaces, Load Balancers, domains, and Floating IPs) -// in ways that align with the applications you host on DigitalOcean. -// -// The following resource types can be associated with a project: -// -// * Database Clusters -// * Domains -// * Droplets -// * Floating IP -// * Load Balancers -// * Spaces Bucket -// * Volume -// -// **Note:** A managed project cannot be set as a default project. -// -// ## Example Usage -// -// The following example demonstrates the creation of an empty project: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := digitalocean.NewProject(ctx, "playground", &digitalocean.ProjectArgs{ -// Description: pulumi.String("A project to represent development resources."), -// Environment: pulumi.String("Development"), -// Purpose: pulumi.String("Web Application"), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` -// -// The following example demonstrates the creation of a project with a Droplet resource: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// foobar, err := digitalocean.NewDroplet(ctx, "foobar", &digitalocean.DropletArgs{ -// Size: pulumi.String("512mb"), -// Image: pulumi.String("centos-7-x64"), -// Region: pulumi.String("nyc3"), -// }) -// if err != nil { -// return err -// } -// _, err = digitalocean.NewProject(ctx, "playground", &digitalocean.ProjectArgs{ -// Description: pulumi.String("A project to represent development resources."), -// Purpose: pulumi.String("Web Application"), -// Environment: pulumi.String("Development"), -// Resources: pulumi.StringArray{ -// foobar.DropletUrn, -// }, -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` type Project struct { pulumi.CustomResourceState diff --git a/sdk/go/digitalocean/projectResources.go b/sdk/go/digitalocean/projectResources.go index e2c7d062..5827cb65 100644 --- a/sdk/go/digitalocean/projectResources.go +++ b/sdk/go/digitalocean/projectResources.go @@ -10,61 +10,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// Assign resources to a DigitalOcean Project. This is useful if you need to assign resources -// managed this provider to a DigitalOcean Project that is unmanaged by the provider. -// -// The following resource types can be associated with a project: -// -// * Database Clusters -// * Domains -// * Droplets -// * Floating IP -// * Load Balancers -// * Spaces Bucket -// * Volume -// -// ## Example Usage -// -// The following example assigns a droplet to a Project managed outside of this provider: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// opt0 := "playground" -// _, err := digitalocean.LookupProject(ctx, &digitalocean.LookupProjectArgs{ -// Name: &opt0, -// }, nil) -// if err != nil { -// return err -// } -// foobar, err := digitalocean.NewDroplet(ctx, "foobar", &digitalocean.DropletArgs{ -// Size: pulumi.String("512mb"), -// Image: pulumi.String("centos-7-x64"), -// Region: pulumi.String("nyc3"), -// }) -// if err != nil { -// return err -// } -// _, err = digitalocean.NewProjectResources(ctx, "barfoo", &digitalocean.ProjectResourcesArgs{ -// Project: pulumi.Any(data.Digitalocean_project.Foo.Id), -// Resources: pulumi.StringArray{ -// foobar.DropletUrn, -// }, -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` type ProjectResources struct { pulumi.CustomResourceState diff --git a/sdk/go/digitalocean/pulumiTypes.go b/sdk/go/digitalocean/pulumiTypes.go index 90c5604a..8f73bbdb 100644 --- a/sdk/go/digitalocean/pulumiTypes.go +++ b/sdk/go/digitalocean/pulumiTypes.go @@ -4362,8 +4362,12 @@ func (o KubernetesNodePoolNodeArrayOutput) Index(i pulumi.IntInput) KubernetesNo } type LoadBalancerForwardingRule struct { - // The ID of the TLS certificate to be used for SSL termination. + // **Deprecated** The ID of the TLS certificate to be used for SSL termination. + // + // Deprecated: Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead. CertificateId *string `pulumi:"certificateId"` + // The unique name of the TLS certificate to be used for SSL termination. + CertificateName *string `pulumi:"certificateName"` // An integer representing the port on which the Load Balancer instance will listen. EntryPort int `pulumi:"entryPort"` // The protocol used for traffic to the Load Balancer. The possible values are: `http`, `https`, `http2` or `tcp`. @@ -4388,8 +4392,12 @@ type LoadBalancerForwardingRuleInput interface { } type LoadBalancerForwardingRuleArgs struct { - // The ID of the TLS certificate to be used for SSL termination. + // **Deprecated** The ID of the TLS certificate to be used for SSL termination. + // + // Deprecated: Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead. CertificateId pulumi.StringPtrInput `pulumi:"certificateId"` + // The unique name of the TLS certificate to be used for SSL termination. + CertificateName pulumi.StringPtrInput `pulumi:"certificateName"` // An integer representing the port on which the Load Balancer instance will listen. EntryPort pulumi.IntInput `pulumi:"entryPort"` // The protocol used for traffic to the Load Balancer. The possible values are: `http`, `https`, `http2` or `tcp`. @@ -4453,11 +4461,18 @@ func (o LoadBalancerForwardingRuleOutput) ToLoadBalancerForwardingRuleOutputWith return o } -// The ID of the TLS certificate to be used for SSL termination. +// **Deprecated** The ID of the TLS certificate to be used for SSL termination. +// +// Deprecated: Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead. func (o LoadBalancerForwardingRuleOutput) CertificateId() pulumi.StringPtrOutput { return o.ApplyT(func(v LoadBalancerForwardingRule) *string { return v.CertificateId }).(pulumi.StringPtrOutput) } +// The unique name of the TLS certificate to be used for SSL termination. +func (o LoadBalancerForwardingRuleOutput) CertificateName() pulumi.StringPtrOutput { + return o.ApplyT(func(v LoadBalancerForwardingRule) *string { return v.CertificateName }).(pulumi.StringPtrOutput) +} + // An integer representing the port on which the Load Balancer instance will listen. func (o LoadBalancerForwardingRuleOutput) EntryPort() pulumi.IntOutput { return o.ApplyT(func(v LoadBalancerForwardingRule) int { return v.EntryPort }).(pulumi.IntOutput) @@ -5678,6 +5693,31 @@ func (i GetAppSpecArgs) ToGetAppSpecOutputWithContext(ctx context.Context) GetAp return pulumi.ToOutputWithContext(ctx, i).(GetAppSpecOutput) } +// GetAppSpecArrayInput is an input type that accepts GetAppSpecArray and GetAppSpecArrayOutput values. +// You can construct a concrete instance of `GetAppSpecArrayInput` via: +// +// GetAppSpecArray{ GetAppSpecArgs{...} } +type GetAppSpecArrayInput interface { + pulumi.Input + + ToGetAppSpecArrayOutput() GetAppSpecArrayOutput + ToGetAppSpecArrayOutputWithContext(context.Context) GetAppSpecArrayOutput +} + +type GetAppSpecArray []GetAppSpecInput + +func (GetAppSpecArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetAppSpec)(nil)).Elem() +} + +func (i GetAppSpecArray) ToGetAppSpecArrayOutput() GetAppSpecArrayOutput { + return i.ToGetAppSpecArrayOutputWithContext(context.Background()) +} + +func (i GetAppSpecArray) ToGetAppSpecArrayOutputWithContext(ctx context.Context) GetAppSpecArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetAppSpecArrayOutput) +} + type GetAppSpecOutput struct{ *pulumi.OutputState } func (GetAppSpecOutput) ElementType() reflect.Type { @@ -5721,6 +5761,26 @@ func (o GetAppSpecOutput) Workers() GetAppSpecWorkerArrayOutput { return o.ApplyT(func(v GetAppSpec) []GetAppSpecWorker { return v.Workers }).(GetAppSpecWorkerArrayOutput) } +type GetAppSpecArrayOutput struct{ *pulumi.OutputState } + +func (GetAppSpecArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetAppSpec)(nil)).Elem() +} + +func (o GetAppSpecArrayOutput) ToGetAppSpecArrayOutput() GetAppSpecArrayOutput { + return o +} + +func (o GetAppSpecArrayOutput) ToGetAppSpecArrayOutputWithContext(ctx context.Context) GetAppSpecArrayOutput { + return o +} + +func (o GetAppSpecArrayOutput) Index(i pulumi.IntInput) GetAppSpecOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetAppSpec { + return vs[0].([]GetAppSpec)[vs[1].(int)] + }).(GetAppSpecOutput) +} + type GetAppSpecDatabase struct { ClusterName *string `pulumi:"clusterName"` DbName *string `pulumi:"dbName"` @@ -9344,7 +9404,8 @@ func (o GetImagesFilterArrayOutput) Index(i pulumi.IntInput) GetImagesFilterOutp } type GetImagesImage struct { - Created string `pulumi:"created"` + Created string `pulumi:"created"` + Description string `pulumi:"description"` // The name of the distribution of the OS of the image. // - `minDiskSize`: The minimum 'disk' required for the image. // - `sizeGigabytes`: The size of the image in GB. @@ -9384,7 +9445,8 @@ type GetImagesImageInput interface { } type GetImagesImageArgs struct { - Created pulumi.StringInput `pulumi:"created"` + Created pulumi.StringInput `pulumi:"created"` + Description pulumi.StringInput `pulumi:"description"` // The name of the distribution of the OS of the image. // - `minDiskSize`: The minimum 'disk' required for the image. // - `sizeGigabytes`: The size of the image in GB. @@ -9467,6 +9529,10 @@ func (o GetImagesImageOutput) Created() pulumi.StringOutput { return o.ApplyT(func(v GetImagesImage) string { return v.Created }).(pulumi.StringOutput) } +func (o GetImagesImageOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v GetImagesImage) string { return v.Description }).(pulumi.StringOutput) +} + // The name of the distribution of the OS of the image. // - `minDiskSize`: The minimum 'disk' required for the image. // - `sizeGigabytes`: The size of the image in GB. @@ -10304,6 +10370,31 @@ func (i GetLoadBalancerHealthcheckArgs) ToGetLoadBalancerHealthcheckOutputWithCo return pulumi.ToOutputWithContext(ctx, i).(GetLoadBalancerHealthcheckOutput) } +// GetLoadBalancerHealthcheckArrayInput is an input type that accepts GetLoadBalancerHealthcheckArray and GetLoadBalancerHealthcheckArrayOutput values. +// You can construct a concrete instance of `GetLoadBalancerHealthcheckArrayInput` via: +// +// GetLoadBalancerHealthcheckArray{ GetLoadBalancerHealthcheckArgs{...} } +type GetLoadBalancerHealthcheckArrayInput interface { + pulumi.Input + + ToGetLoadBalancerHealthcheckArrayOutput() GetLoadBalancerHealthcheckArrayOutput + ToGetLoadBalancerHealthcheckArrayOutputWithContext(context.Context) GetLoadBalancerHealthcheckArrayOutput +} + +type GetLoadBalancerHealthcheckArray []GetLoadBalancerHealthcheckInput + +func (GetLoadBalancerHealthcheckArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetLoadBalancerHealthcheck)(nil)).Elem() +} + +func (i GetLoadBalancerHealthcheckArray) ToGetLoadBalancerHealthcheckArrayOutput() GetLoadBalancerHealthcheckArrayOutput { + return i.ToGetLoadBalancerHealthcheckArrayOutputWithContext(context.Background()) +} + +func (i GetLoadBalancerHealthcheckArray) ToGetLoadBalancerHealthcheckArrayOutputWithContext(ctx context.Context) GetLoadBalancerHealthcheckArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLoadBalancerHealthcheckArrayOutput) +} + type GetLoadBalancerHealthcheckOutput struct{ *pulumi.OutputState } func (GetLoadBalancerHealthcheckOutput) ElementType() reflect.Type { @@ -10346,65 +10437,130 @@ func (o GetLoadBalancerHealthcheckOutput) UnhealthyThreshold() pulumi.IntOutput return o.ApplyT(func(v GetLoadBalancerHealthcheck) int { return v.UnhealthyThreshold }).(pulumi.IntOutput) } -type GetLoadBalancerStickySessions struct { +type GetLoadBalancerHealthcheckArrayOutput struct{ *pulumi.OutputState } + +func (GetLoadBalancerHealthcheckArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetLoadBalancerHealthcheck)(nil)).Elem() +} + +func (o GetLoadBalancerHealthcheckArrayOutput) ToGetLoadBalancerHealthcheckArrayOutput() GetLoadBalancerHealthcheckArrayOutput { + return o +} + +func (o GetLoadBalancerHealthcheckArrayOutput) ToGetLoadBalancerHealthcheckArrayOutputWithContext(ctx context.Context) GetLoadBalancerHealthcheckArrayOutput { + return o +} + +func (o GetLoadBalancerHealthcheckArrayOutput) Index(i pulumi.IntInput) GetLoadBalancerHealthcheckOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetLoadBalancerHealthcheck { + return vs[0].([]GetLoadBalancerHealthcheck)[vs[1].(int)] + }).(GetLoadBalancerHealthcheckOutput) +} + +type GetLoadBalancerStickySession struct { CookieName string `pulumi:"cookieName"` CookieTtlSeconds int `pulumi:"cookieTtlSeconds"` Type string `pulumi:"type"` } -// GetLoadBalancerStickySessionsInput is an input type that accepts GetLoadBalancerStickySessionsArgs and GetLoadBalancerStickySessionsOutput values. -// You can construct a concrete instance of `GetLoadBalancerStickySessionsInput` via: +// GetLoadBalancerStickySessionInput is an input type that accepts GetLoadBalancerStickySessionArgs and GetLoadBalancerStickySessionOutput values. +// You can construct a concrete instance of `GetLoadBalancerStickySessionInput` via: // -// GetLoadBalancerStickySessionsArgs{...} -type GetLoadBalancerStickySessionsInput interface { +// GetLoadBalancerStickySessionArgs{...} +type GetLoadBalancerStickySessionInput interface { pulumi.Input - ToGetLoadBalancerStickySessionsOutput() GetLoadBalancerStickySessionsOutput - ToGetLoadBalancerStickySessionsOutputWithContext(context.Context) GetLoadBalancerStickySessionsOutput + ToGetLoadBalancerStickySessionOutput() GetLoadBalancerStickySessionOutput + ToGetLoadBalancerStickySessionOutputWithContext(context.Context) GetLoadBalancerStickySessionOutput } -type GetLoadBalancerStickySessionsArgs struct { +type GetLoadBalancerStickySessionArgs struct { CookieName pulumi.StringInput `pulumi:"cookieName"` CookieTtlSeconds pulumi.IntInput `pulumi:"cookieTtlSeconds"` Type pulumi.StringInput `pulumi:"type"` } -func (GetLoadBalancerStickySessionsArgs) ElementType() reflect.Type { - return reflect.TypeOf((*GetLoadBalancerStickySessions)(nil)).Elem() +func (GetLoadBalancerStickySessionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetLoadBalancerStickySession)(nil)).Elem() +} + +func (i GetLoadBalancerStickySessionArgs) ToGetLoadBalancerStickySessionOutput() GetLoadBalancerStickySessionOutput { + return i.ToGetLoadBalancerStickySessionOutputWithContext(context.Background()) } -func (i GetLoadBalancerStickySessionsArgs) ToGetLoadBalancerStickySessionsOutput() GetLoadBalancerStickySessionsOutput { - return i.ToGetLoadBalancerStickySessionsOutputWithContext(context.Background()) +func (i GetLoadBalancerStickySessionArgs) ToGetLoadBalancerStickySessionOutputWithContext(ctx context.Context) GetLoadBalancerStickySessionOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLoadBalancerStickySessionOutput) } -func (i GetLoadBalancerStickySessionsArgs) ToGetLoadBalancerStickySessionsOutputWithContext(ctx context.Context) GetLoadBalancerStickySessionsOutput { - return pulumi.ToOutputWithContext(ctx, i).(GetLoadBalancerStickySessionsOutput) +// GetLoadBalancerStickySessionArrayInput is an input type that accepts GetLoadBalancerStickySessionArray and GetLoadBalancerStickySessionArrayOutput values. +// You can construct a concrete instance of `GetLoadBalancerStickySessionArrayInput` via: +// +// GetLoadBalancerStickySessionArray{ GetLoadBalancerStickySessionArgs{...} } +type GetLoadBalancerStickySessionArrayInput interface { + pulumi.Input + + ToGetLoadBalancerStickySessionArrayOutput() GetLoadBalancerStickySessionArrayOutput + ToGetLoadBalancerStickySessionArrayOutputWithContext(context.Context) GetLoadBalancerStickySessionArrayOutput +} + +type GetLoadBalancerStickySessionArray []GetLoadBalancerStickySessionInput + +func (GetLoadBalancerStickySessionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetLoadBalancerStickySession)(nil)).Elem() +} + +func (i GetLoadBalancerStickySessionArray) ToGetLoadBalancerStickySessionArrayOutput() GetLoadBalancerStickySessionArrayOutput { + return i.ToGetLoadBalancerStickySessionArrayOutputWithContext(context.Background()) +} + +func (i GetLoadBalancerStickySessionArray) ToGetLoadBalancerStickySessionArrayOutputWithContext(ctx context.Context) GetLoadBalancerStickySessionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLoadBalancerStickySessionArrayOutput) } -type GetLoadBalancerStickySessionsOutput struct{ *pulumi.OutputState } +type GetLoadBalancerStickySessionOutput struct{ *pulumi.OutputState } -func (GetLoadBalancerStickySessionsOutput) ElementType() reflect.Type { - return reflect.TypeOf((*GetLoadBalancerStickySessions)(nil)).Elem() +func (GetLoadBalancerStickySessionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetLoadBalancerStickySession)(nil)).Elem() } -func (o GetLoadBalancerStickySessionsOutput) ToGetLoadBalancerStickySessionsOutput() GetLoadBalancerStickySessionsOutput { +func (o GetLoadBalancerStickySessionOutput) ToGetLoadBalancerStickySessionOutput() GetLoadBalancerStickySessionOutput { return o } -func (o GetLoadBalancerStickySessionsOutput) ToGetLoadBalancerStickySessionsOutputWithContext(ctx context.Context) GetLoadBalancerStickySessionsOutput { +func (o GetLoadBalancerStickySessionOutput) ToGetLoadBalancerStickySessionOutputWithContext(ctx context.Context) GetLoadBalancerStickySessionOutput { return o } -func (o GetLoadBalancerStickySessionsOutput) CookieName() pulumi.StringOutput { - return o.ApplyT(func(v GetLoadBalancerStickySessions) string { return v.CookieName }).(pulumi.StringOutput) +func (o GetLoadBalancerStickySessionOutput) CookieName() pulumi.StringOutput { + return o.ApplyT(func(v GetLoadBalancerStickySession) string { return v.CookieName }).(pulumi.StringOutput) } -func (o GetLoadBalancerStickySessionsOutput) CookieTtlSeconds() pulumi.IntOutput { - return o.ApplyT(func(v GetLoadBalancerStickySessions) int { return v.CookieTtlSeconds }).(pulumi.IntOutput) +func (o GetLoadBalancerStickySessionOutput) CookieTtlSeconds() pulumi.IntOutput { + return o.ApplyT(func(v GetLoadBalancerStickySession) int { return v.CookieTtlSeconds }).(pulumi.IntOutput) } -func (o GetLoadBalancerStickySessionsOutput) Type() pulumi.StringOutput { - return o.ApplyT(func(v GetLoadBalancerStickySessions) string { return v.Type }).(pulumi.StringOutput) +func (o GetLoadBalancerStickySessionOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v GetLoadBalancerStickySession) string { return v.Type }).(pulumi.StringOutput) +} + +type GetLoadBalancerStickySessionArrayOutput struct{ *pulumi.OutputState } + +func (GetLoadBalancerStickySessionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetLoadBalancerStickySession)(nil)).Elem() +} + +func (o GetLoadBalancerStickySessionArrayOutput) ToGetLoadBalancerStickySessionArrayOutput() GetLoadBalancerStickySessionArrayOutput { + return o +} + +func (o GetLoadBalancerStickySessionArrayOutput) ToGetLoadBalancerStickySessionArrayOutputWithContext(ctx context.Context) GetLoadBalancerStickySessionArrayOutput { + return o +} + +func (o GetLoadBalancerStickySessionArrayOutput) Index(i pulumi.IntInput) GetLoadBalancerStickySessionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetLoadBalancerStickySession { + return vs[0].([]GetLoadBalancerStickySession)[vs[1].(int)] + }).(GetLoadBalancerStickySessionOutput) } type GetProjectsFilter struct { @@ -10842,6 +10998,414 @@ func (o GetProjectsSortArrayOutput) Index(i pulumi.IntInput) GetProjectsSortOutp }).(GetProjectsSortOutput) } +type GetRecordsFilter struct { + // Set to `true` to require that a field match all of the `values` instead of just one or more of + // them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure + // that all of the `values` are present in the list or set. + All *bool `pulumi:"all"` + // Filter the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + // `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + Key string `pulumi:"key"` + // One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to + // match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as + // substrings to find within the string field. + MatchBy *string `pulumi:"matchBy"` + // A list of values to match against the `key` field. Only retrieves projects + // where the `key` field takes on one or more of the values provided here. + Values []string `pulumi:"values"` +} + +// GetRecordsFilterInput is an input type that accepts GetRecordsFilterArgs and GetRecordsFilterOutput values. +// You can construct a concrete instance of `GetRecordsFilterInput` via: +// +// GetRecordsFilterArgs{...} +type GetRecordsFilterInput interface { + pulumi.Input + + ToGetRecordsFilterOutput() GetRecordsFilterOutput + ToGetRecordsFilterOutputWithContext(context.Context) GetRecordsFilterOutput +} + +type GetRecordsFilterArgs struct { + // Set to `true` to require that a field match all of the `values` instead of just one or more of + // them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure + // that all of the `values` are present in the list or set. + All pulumi.BoolPtrInput `pulumi:"all"` + // Filter the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + // `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + Key pulumi.StringInput `pulumi:"key"` + // One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to + // match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as + // substrings to find within the string field. + MatchBy pulumi.StringPtrInput `pulumi:"matchBy"` + // A list of values to match against the `key` field. Only retrieves projects + // where the `key` field takes on one or more of the values provided here. + Values pulumi.StringArrayInput `pulumi:"values"` +} + +func (GetRecordsFilterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetRecordsFilter)(nil)).Elem() +} + +func (i GetRecordsFilterArgs) ToGetRecordsFilterOutput() GetRecordsFilterOutput { + return i.ToGetRecordsFilterOutputWithContext(context.Background()) +} + +func (i GetRecordsFilterArgs) ToGetRecordsFilterOutputWithContext(ctx context.Context) GetRecordsFilterOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRecordsFilterOutput) +} + +// GetRecordsFilterArrayInput is an input type that accepts GetRecordsFilterArray and GetRecordsFilterArrayOutput values. +// You can construct a concrete instance of `GetRecordsFilterArrayInput` via: +// +// GetRecordsFilterArray{ GetRecordsFilterArgs{...} } +type GetRecordsFilterArrayInput interface { + pulumi.Input + + ToGetRecordsFilterArrayOutput() GetRecordsFilterArrayOutput + ToGetRecordsFilterArrayOutputWithContext(context.Context) GetRecordsFilterArrayOutput +} + +type GetRecordsFilterArray []GetRecordsFilterInput + +func (GetRecordsFilterArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRecordsFilter)(nil)).Elem() +} + +func (i GetRecordsFilterArray) ToGetRecordsFilterArrayOutput() GetRecordsFilterArrayOutput { + return i.ToGetRecordsFilterArrayOutputWithContext(context.Background()) +} + +func (i GetRecordsFilterArray) ToGetRecordsFilterArrayOutputWithContext(ctx context.Context) GetRecordsFilterArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRecordsFilterArrayOutput) +} + +type GetRecordsFilterOutput struct{ *pulumi.OutputState } + +func (GetRecordsFilterOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetRecordsFilter)(nil)).Elem() +} + +func (o GetRecordsFilterOutput) ToGetRecordsFilterOutput() GetRecordsFilterOutput { + return o +} + +func (o GetRecordsFilterOutput) ToGetRecordsFilterOutputWithContext(ctx context.Context) GetRecordsFilterOutput { + return o +} + +// Set to `true` to require that a field match all of the `values` instead of just one or more of +// them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure +// that all of the `values` are present in the list or set. +func (o GetRecordsFilterOutput) All() pulumi.BoolPtrOutput { + return o.ApplyT(func(v GetRecordsFilter) *bool { return v.All }).(pulumi.BoolPtrOutput) +} + +// Filter the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, +// `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. +func (o GetRecordsFilterOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v GetRecordsFilter) string { return v.Key }).(pulumi.StringOutput) +} + +// One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to +// match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as +// substrings to find within the string field. +func (o GetRecordsFilterOutput) MatchBy() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetRecordsFilter) *string { return v.MatchBy }).(pulumi.StringPtrOutput) +} + +// A list of values to match against the `key` field. Only retrieves projects +// where the `key` field takes on one or more of the values provided here. +func (o GetRecordsFilterOutput) Values() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetRecordsFilter) []string { return v.Values }).(pulumi.StringArrayOutput) +} + +type GetRecordsFilterArrayOutput struct{ *pulumi.OutputState } + +func (GetRecordsFilterArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRecordsFilter)(nil)).Elem() +} + +func (o GetRecordsFilterArrayOutput) ToGetRecordsFilterArrayOutput() GetRecordsFilterArrayOutput { + return o +} + +func (o GetRecordsFilterArrayOutput) ToGetRecordsFilterArrayOutputWithContext(ctx context.Context) GetRecordsFilterArrayOutput { + return o +} + +func (o GetRecordsFilterArrayOutput) Index(i pulumi.IntInput) GetRecordsFilterOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetRecordsFilter { + return vs[0].([]GetRecordsFilter)[vs[1].(int)] + }).(GetRecordsFilterOutput) +} + +type GetRecordsRecord struct { + // The domain name to search for DNS records + Domain string `pulumi:"domain"` + Flags int `pulumi:"flags"` + Id int `pulumi:"id"` + Name string `pulumi:"name"` + Port int `pulumi:"port"` + Priority int `pulumi:"priority"` + Tag string `pulumi:"tag"` + Ttl int `pulumi:"ttl"` + Type string `pulumi:"type"` + Value string `pulumi:"value"` + Weight int `pulumi:"weight"` +} + +// GetRecordsRecordInput is an input type that accepts GetRecordsRecordArgs and GetRecordsRecordOutput values. +// You can construct a concrete instance of `GetRecordsRecordInput` via: +// +// GetRecordsRecordArgs{...} +type GetRecordsRecordInput interface { + pulumi.Input + + ToGetRecordsRecordOutput() GetRecordsRecordOutput + ToGetRecordsRecordOutputWithContext(context.Context) GetRecordsRecordOutput +} + +type GetRecordsRecordArgs struct { + // The domain name to search for DNS records + Domain pulumi.StringInput `pulumi:"domain"` + Flags pulumi.IntInput `pulumi:"flags"` + Id pulumi.IntInput `pulumi:"id"` + Name pulumi.StringInput `pulumi:"name"` + Port pulumi.IntInput `pulumi:"port"` + Priority pulumi.IntInput `pulumi:"priority"` + Tag pulumi.StringInput `pulumi:"tag"` + Ttl pulumi.IntInput `pulumi:"ttl"` + Type pulumi.StringInput `pulumi:"type"` + Value pulumi.StringInput `pulumi:"value"` + Weight pulumi.IntInput `pulumi:"weight"` +} + +func (GetRecordsRecordArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetRecordsRecord)(nil)).Elem() +} + +func (i GetRecordsRecordArgs) ToGetRecordsRecordOutput() GetRecordsRecordOutput { + return i.ToGetRecordsRecordOutputWithContext(context.Background()) +} + +func (i GetRecordsRecordArgs) ToGetRecordsRecordOutputWithContext(ctx context.Context) GetRecordsRecordOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRecordsRecordOutput) +} + +// GetRecordsRecordArrayInput is an input type that accepts GetRecordsRecordArray and GetRecordsRecordArrayOutput values. +// You can construct a concrete instance of `GetRecordsRecordArrayInput` via: +// +// GetRecordsRecordArray{ GetRecordsRecordArgs{...} } +type GetRecordsRecordArrayInput interface { + pulumi.Input + + ToGetRecordsRecordArrayOutput() GetRecordsRecordArrayOutput + ToGetRecordsRecordArrayOutputWithContext(context.Context) GetRecordsRecordArrayOutput +} + +type GetRecordsRecordArray []GetRecordsRecordInput + +func (GetRecordsRecordArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRecordsRecord)(nil)).Elem() +} + +func (i GetRecordsRecordArray) ToGetRecordsRecordArrayOutput() GetRecordsRecordArrayOutput { + return i.ToGetRecordsRecordArrayOutputWithContext(context.Background()) +} + +func (i GetRecordsRecordArray) ToGetRecordsRecordArrayOutputWithContext(ctx context.Context) GetRecordsRecordArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRecordsRecordArrayOutput) +} + +type GetRecordsRecordOutput struct{ *pulumi.OutputState } + +func (GetRecordsRecordOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetRecordsRecord)(nil)).Elem() +} + +func (o GetRecordsRecordOutput) ToGetRecordsRecordOutput() GetRecordsRecordOutput { + return o +} + +func (o GetRecordsRecordOutput) ToGetRecordsRecordOutputWithContext(ctx context.Context) GetRecordsRecordOutput { + return o +} + +// The domain name to search for DNS records +func (o GetRecordsRecordOutput) Domain() pulumi.StringOutput { + return o.ApplyT(func(v GetRecordsRecord) string { return v.Domain }).(pulumi.StringOutput) +} + +func (o GetRecordsRecordOutput) Flags() pulumi.IntOutput { + return o.ApplyT(func(v GetRecordsRecord) int { return v.Flags }).(pulumi.IntOutput) +} + +func (o GetRecordsRecordOutput) Id() pulumi.IntOutput { + return o.ApplyT(func(v GetRecordsRecord) int { return v.Id }).(pulumi.IntOutput) +} + +func (o GetRecordsRecordOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v GetRecordsRecord) string { return v.Name }).(pulumi.StringOutput) +} + +func (o GetRecordsRecordOutput) Port() pulumi.IntOutput { + return o.ApplyT(func(v GetRecordsRecord) int { return v.Port }).(pulumi.IntOutput) +} + +func (o GetRecordsRecordOutput) Priority() pulumi.IntOutput { + return o.ApplyT(func(v GetRecordsRecord) int { return v.Priority }).(pulumi.IntOutput) +} + +func (o GetRecordsRecordOutput) Tag() pulumi.StringOutput { + return o.ApplyT(func(v GetRecordsRecord) string { return v.Tag }).(pulumi.StringOutput) +} + +func (o GetRecordsRecordOutput) Ttl() pulumi.IntOutput { + return o.ApplyT(func(v GetRecordsRecord) int { return v.Ttl }).(pulumi.IntOutput) +} + +func (o GetRecordsRecordOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v GetRecordsRecord) string { return v.Type }).(pulumi.StringOutput) +} + +func (o GetRecordsRecordOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v GetRecordsRecord) string { return v.Value }).(pulumi.StringOutput) +} + +func (o GetRecordsRecordOutput) Weight() pulumi.IntOutput { + return o.ApplyT(func(v GetRecordsRecord) int { return v.Weight }).(pulumi.IntOutput) +} + +type GetRecordsRecordArrayOutput struct{ *pulumi.OutputState } + +func (GetRecordsRecordArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRecordsRecord)(nil)).Elem() +} + +func (o GetRecordsRecordArrayOutput) ToGetRecordsRecordArrayOutput() GetRecordsRecordArrayOutput { + return o +} + +func (o GetRecordsRecordArrayOutput) ToGetRecordsRecordArrayOutputWithContext(ctx context.Context) GetRecordsRecordArrayOutput { + return o +} + +func (o GetRecordsRecordArrayOutput) Index(i pulumi.IntInput) GetRecordsRecordOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetRecordsRecord { + return vs[0].([]GetRecordsRecord)[vs[1].(int)] + }).(GetRecordsRecordOutput) +} + +type GetRecordsSort struct { + // The sort direction. This may be either `asc` or `desc`. + Direction *string `pulumi:"direction"` + // Sort the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + // `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + Key string `pulumi:"key"` +} + +// GetRecordsSortInput is an input type that accepts GetRecordsSortArgs and GetRecordsSortOutput values. +// You can construct a concrete instance of `GetRecordsSortInput` via: +// +// GetRecordsSortArgs{...} +type GetRecordsSortInput interface { + pulumi.Input + + ToGetRecordsSortOutput() GetRecordsSortOutput + ToGetRecordsSortOutputWithContext(context.Context) GetRecordsSortOutput +} + +type GetRecordsSortArgs struct { + // The sort direction. This may be either `asc` or `desc`. + Direction pulumi.StringPtrInput `pulumi:"direction"` + // Sort the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + // `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + Key pulumi.StringInput `pulumi:"key"` +} + +func (GetRecordsSortArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetRecordsSort)(nil)).Elem() +} + +func (i GetRecordsSortArgs) ToGetRecordsSortOutput() GetRecordsSortOutput { + return i.ToGetRecordsSortOutputWithContext(context.Background()) +} + +func (i GetRecordsSortArgs) ToGetRecordsSortOutputWithContext(ctx context.Context) GetRecordsSortOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRecordsSortOutput) +} + +// GetRecordsSortArrayInput is an input type that accepts GetRecordsSortArray and GetRecordsSortArrayOutput values. +// You can construct a concrete instance of `GetRecordsSortArrayInput` via: +// +// GetRecordsSortArray{ GetRecordsSortArgs{...} } +type GetRecordsSortArrayInput interface { + pulumi.Input + + ToGetRecordsSortArrayOutput() GetRecordsSortArrayOutput + ToGetRecordsSortArrayOutputWithContext(context.Context) GetRecordsSortArrayOutput +} + +type GetRecordsSortArray []GetRecordsSortInput + +func (GetRecordsSortArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRecordsSort)(nil)).Elem() +} + +func (i GetRecordsSortArray) ToGetRecordsSortArrayOutput() GetRecordsSortArrayOutput { + return i.ToGetRecordsSortArrayOutputWithContext(context.Background()) +} + +func (i GetRecordsSortArray) ToGetRecordsSortArrayOutputWithContext(ctx context.Context) GetRecordsSortArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRecordsSortArrayOutput) +} + +type GetRecordsSortOutput struct{ *pulumi.OutputState } + +func (GetRecordsSortOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetRecordsSort)(nil)).Elem() +} + +func (o GetRecordsSortOutput) ToGetRecordsSortOutput() GetRecordsSortOutput { + return o +} + +func (o GetRecordsSortOutput) ToGetRecordsSortOutputWithContext(ctx context.Context) GetRecordsSortOutput { + return o +} + +// The sort direction. This may be either `asc` or `desc`. +func (o GetRecordsSortOutput) Direction() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetRecordsSort) *string { return v.Direction }).(pulumi.StringPtrOutput) +} + +// Sort the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, +// `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. +func (o GetRecordsSortOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v GetRecordsSort) string { return v.Key }).(pulumi.StringOutput) +} + +type GetRecordsSortArrayOutput struct{ *pulumi.OutputState } + +func (GetRecordsSortArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRecordsSort)(nil)).Elem() +} + +func (o GetRecordsSortArrayOutput) ToGetRecordsSortArrayOutput() GetRecordsSortArrayOutput { + return o +} + +func (o GetRecordsSortArrayOutput) ToGetRecordsSortArrayOutputWithContext(ctx context.Context) GetRecordsSortArrayOutput { + return o +} + +func (o GetRecordsSortArrayOutput) Index(i pulumi.IntInput) GetRecordsSortOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetRecordsSort { + return vs[0].([]GetRecordsSort)[vs[1].(int)] + }).(GetRecordsSortOutput) +} + type GetRegionsFilter struct { // Set to `true` to require that a field match all of the `values` instead of just one or more of // them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure @@ -12486,6 +13050,7 @@ func init() { pulumi.RegisterOutputType(SpacesBucketVersioningOutput{}) pulumi.RegisterOutputType(SpacesBucketVersioningPtrOutput{}) pulumi.RegisterOutputType(GetAppSpecOutput{}) + pulumi.RegisterOutputType(GetAppSpecArrayOutput{}) pulumi.RegisterOutputType(GetAppSpecDatabaseOutput{}) pulumi.RegisterOutputType(GetAppSpecDatabaseArrayOutput{}) pulumi.RegisterOutputType(GetAppSpecServiceOutput{}) @@ -12546,13 +13111,21 @@ func init() { pulumi.RegisterOutputType(GetLoadBalancerForwardingRuleOutput{}) pulumi.RegisterOutputType(GetLoadBalancerForwardingRuleArrayOutput{}) pulumi.RegisterOutputType(GetLoadBalancerHealthcheckOutput{}) - pulumi.RegisterOutputType(GetLoadBalancerStickySessionsOutput{}) + pulumi.RegisterOutputType(GetLoadBalancerHealthcheckArrayOutput{}) + pulumi.RegisterOutputType(GetLoadBalancerStickySessionOutput{}) + pulumi.RegisterOutputType(GetLoadBalancerStickySessionArrayOutput{}) pulumi.RegisterOutputType(GetProjectsFilterOutput{}) pulumi.RegisterOutputType(GetProjectsFilterArrayOutput{}) pulumi.RegisterOutputType(GetProjectsProjectOutput{}) pulumi.RegisterOutputType(GetProjectsProjectArrayOutput{}) pulumi.RegisterOutputType(GetProjectsSortOutput{}) pulumi.RegisterOutputType(GetProjectsSortArrayOutput{}) + pulumi.RegisterOutputType(GetRecordsFilterOutput{}) + pulumi.RegisterOutputType(GetRecordsFilterArrayOutput{}) + pulumi.RegisterOutputType(GetRecordsRecordOutput{}) + pulumi.RegisterOutputType(GetRecordsRecordArrayOutput{}) + pulumi.RegisterOutputType(GetRecordsSortOutput{}) + pulumi.RegisterOutputType(GetRecordsSortArrayOutput{}) pulumi.RegisterOutputType(GetRegionsFilterOutput{}) pulumi.RegisterOutputType(GetRegionsFilterArrayOutput{}) pulumi.RegisterOutputType(GetRegionsRegionOutput{}) diff --git a/sdk/go/digitalocean/spacesBucketObject.go b/sdk/go/digitalocean/spacesBucketObject.go index db189c29..7920440f 100644 --- a/sdk/go/digitalocean/spacesBucketObject.go +++ b/sdk/go/digitalocean/spacesBucketObject.go @@ -10,76 +10,6 @@ import ( "github.com/pulumi/pulumi/sdk/v2/go/pulumi" ) -// Provides a bucket object resource for Spaces, DigitalOcean's object storage product. -// The `SpacesBucketObject` resource allows this provider to upload content -// to Spaces. -// -// The [Spaces API](https://developers.digitalocean.com/documentation/spaces/) was -// designed to be interoperable with Amazon's AWS S3 API. This allows users to -// interact with the service while using the tools they already know. Spaces -// mirrors S3's authentication framework and requests to Spaces require a key pair -// similar to Amazon's Access ID and Secret Key. -// -// The authentication requirement can be met by either setting the -// `SPACES_ACCESS_KEY_ID` and `SPACES_SECRET_ACCESS_KEY` environment variables or -// the provider's `spacesAccessId` and `spacesSecretKey` arguments to the -// access ID and secret you generate via the DigitalOcean control panel. For -// example: -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := digitalocean.NewSpacesBucket(ctx, "static_assets", nil) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` -// -// For more information, See [An Introduction to DigitalOcean Spaces](https://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-spaces) -// -// ## Example Usage -// ### Create a Key in a Spaces Bucket -// -// ```go -// package main -// -// import ( -// "github.com/pulumi/pulumi-digitalocean/sdk/v2/go/digitalocean" -// "github.com/pulumi/pulumi/sdk/v2/go/pulumi" -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// foobar, err := digitalocean.NewSpacesBucket(ctx, "foobar", &digitalocean.SpacesBucketArgs{ -// Region: pulumi.String("nyc3"), -// }) -// if err != nil { -// return err -// } -// _, err = digitalocean.NewSpacesBucketObject(ctx, "index", &digitalocean.SpacesBucketObjectArgs{ -// Region: foobar.Region, -// Bucket: foobar.Name, -// Key: pulumi.String("index.html"), -// Content: pulumi.String("

This page is empty.

"), -// ContentType: pulumi.String("text/html"), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// ``` type SpacesBucketObject struct { pulumi.CustomResourceState @@ -101,7 +31,9 @@ type SpacesBucketObject struct { ContentLanguage pulumi.StringPtrOutput `pulumi:"contentLanguage"` // A standard MIME type describing the format of the object data, e.g. application/octet-stream. All Valid MIME Types are valid for this input. ContentType pulumi.StringOutput `pulumi:"contentType"` - // Used to trigger updates. The only meaningful value is `${filemd5("path/to/file")}`. + // the ETag generated for the object (an MD5 sum of the object content). The hash is an MD5 digest of the + // object data. For objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 + // digest. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). Etag pulumi.StringOutput `pulumi:"etag"` // Allow the object to be deleted by removing any legal hold on any object version. // Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. @@ -175,7 +107,9 @@ type spacesBucketObjectState struct { ContentLanguage *string `pulumi:"contentLanguage"` // A standard MIME type describing the format of the object data, e.g. application/octet-stream. All Valid MIME Types are valid for this input. ContentType *string `pulumi:"contentType"` - // Used to trigger updates. The only meaningful value is `${filemd5("path/to/file")}`. + // the ETag generated for the object (an MD5 sum of the object content). The hash is an MD5 digest of the + // object data. For objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 + // digest. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). Etag *string `pulumi:"etag"` // Allow the object to be deleted by removing any legal hold on any object version. // Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. @@ -213,7 +147,9 @@ type SpacesBucketObjectState struct { ContentLanguage pulumi.StringPtrInput // A standard MIME type describing the format of the object data, e.g. application/octet-stream. All Valid MIME Types are valid for this input. ContentType pulumi.StringPtrInput - // Used to trigger updates. The only meaningful value is `${filemd5("path/to/file")}`. + // the ETag generated for the object (an MD5 sum of the object content). The hash is an MD5 digest of the + // object data. For objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 + // digest. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). Etag pulumi.StringPtrInput // Allow the object to be deleted by removing any legal hold on any object version. // Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. @@ -255,7 +191,9 @@ type spacesBucketObjectArgs struct { ContentLanguage *string `pulumi:"contentLanguage"` // A standard MIME type describing the format of the object data, e.g. application/octet-stream. All Valid MIME Types are valid for this input. ContentType *string `pulumi:"contentType"` - // Used to trigger updates. The only meaningful value is `${filemd5("path/to/file")}`. + // the ETag generated for the object (an MD5 sum of the object content). The hash is an MD5 digest of the + // object data. For objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 + // digest. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). Etag *string `pulumi:"etag"` // Allow the object to be deleted by removing any legal hold on any object version. // Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. @@ -292,7 +230,9 @@ type SpacesBucketObjectArgs struct { ContentLanguage pulumi.StringPtrInput // A standard MIME type describing the format of the object data, e.g. application/octet-stream. All Valid MIME Types are valid for this input. ContentType pulumi.StringPtrInput - // Used to trigger updates. The only meaningful value is `${filemd5("path/to/file")}`. + // the ETag generated for the object (an MD5 sum of the object content). The hash is an MD5 digest of the + // object data. For objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 + // digest. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). Etag pulumi.StringPtrInput // Allow the object to be deleted by removing any legal hold on any object version. // Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. diff --git a/sdk/nodejs/cdn.ts b/sdk/nodejs/cdn.ts index 37d4e77f..04b1ccf2 100644 --- a/sdk/nodejs/cdn.ts +++ b/sdk/nodejs/cdn.ts @@ -43,7 +43,7 @@ import * as utilities from "./utilities"; * const mycdn = new digitalocean.Cdn("mycdn", { * origin: mybucket.bucketDomainName, * customDomain: "static.example.com", - * certificateId: cert.id, + * certificateName: cert.name, * }); * ``` */ @@ -76,9 +76,15 @@ export class Cdn extends pulumi.CustomResource { } /** - * The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + * **Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + * + * @deprecated Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead. + */ + public readonly certificateId!: pulumi.Output; + /** + * The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. */ - public readonly certificateId!: pulumi.Output; + public readonly certificateName!: pulumi.Output; /** * The date and time when the CDN Endpoint was created. */ @@ -113,6 +119,7 @@ export class Cdn extends pulumi.CustomResource { if (opts && opts.id) { const state = argsOrState as CdnState | undefined; inputs["certificateId"] = state ? state.certificateId : undefined; + inputs["certificateName"] = state ? state.certificateName : undefined; inputs["createdAt"] = state ? state.createdAt : undefined; inputs["customDomain"] = state ? state.customDomain : undefined; inputs["endpoint"] = state ? state.endpoint : undefined; @@ -124,6 +131,7 @@ export class Cdn extends pulumi.CustomResource { throw new Error("Missing required property 'origin'"); } inputs["certificateId"] = args ? args.certificateId : undefined; + inputs["certificateName"] = args ? args.certificateName : undefined; inputs["customDomain"] = args ? args.customDomain : undefined; inputs["origin"] = args ? args.origin : undefined; inputs["ttl"] = args ? args.ttl : undefined; @@ -146,9 +154,15 @@ export class Cdn extends pulumi.CustomResource { */ export interface CdnState { /** - * The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + * **Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + * + * @deprecated Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead. */ readonly certificateId?: pulumi.Input; + /** + * The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + */ + readonly certificateName?: pulumi.Input; /** * The date and time when the CDN Endpoint was created. */ @@ -176,9 +190,15 @@ export interface CdnState { */ export interface CdnArgs { /** - * The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + * **Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + * + * @deprecated Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead. */ readonly certificateId?: pulumi.Input; + /** + * The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + */ + readonly certificateName?: pulumi.Input; /** * The fully qualified domain name (FQDN) of the custom subdomain used with the CDN Endpoint. */ diff --git a/sdk/nodejs/certificate.ts b/sdk/nodejs/certificate.ts index 8da5fc09..6054cfba 100644 --- a/sdk/nodejs/certificate.ts +++ b/sdk/nodejs/certificate.ts @@ -24,9 +24,9 @@ import {CertificateType} from "./index"; * * const cert = new digitalocean.Certificate("cert", { * type: "custom", - * privateKey: fs.readFileSync("/Users/myuser/certs/privkey.pem"), - * leafCertificate: fs.readFileSync("/Users/myuser/certs/cert.pem"), - * certificateChain: fs.readFileSync("/Users/myuser/certs/fullchain.pem"), + * privateKey: fs.readFileSync("/Users/terraform/certs/privkey.pem"), + * leafCertificate: fs.readFileSync("/Users/terraform/certs/cert.pem"), + * certificateChain: fs.readFileSync("/Users/terraform/certs/fullchain.pem"), * }); * ``` * ### Let's Encrypt Certificate @@ -62,7 +62,7 @@ import {CertificateType} from "./index"; * entryProtocol: "https", * targetPort: 80, * targetProtocol: "http", - * certificateId: cert.id, + * certificateName: cert.name, * }], * }); * ``` @@ -135,6 +135,10 @@ export class Certificate extends pulumi.CustomResource { * `custom` or `letsEncrypt`. Defaults to `custom`. */ public readonly type!: pulumi.Output; + /** + * The UUID of the certificate + */ + public /*out*/ readonly uuid!: pulumi.Output; /** * Create a Certificate resource with the given unique name, arguments, and options. @@ -157,6 +161,7 @@ export class Certificate extends pulumi.CustomResource { inputs["sha1Fingerprint"] = state ? state.sha1Fingerprint : undefined; inputs["state"] = state ? state.state : undefined; inputs["type"] = state ? state.type : undefined; + inputs["uuid"] = state ? state.uuid : undefined; } else { const args = argsOrState as CertificateArgs | undefined; inputs["certificateChain"] = args ? args.certificateChain : undefined; @@ -168,6 +173,7 @@ export class Certificate extends pulumi.CustomResource { inputs["notAfter"] = undefined /*out*/; inputs["sha1Fingerprint"] = undefined /*out*/; inputs["state"] = undefined /*out*/; + inputs["uuid"] = undefined /*out*/; } if (!opts) { opts = {} @@ -224,6 +230,10 @@ export interface CertificateState { * `custom` or `letsEncrypt`. Defaults to `custom`. */ readonly type?: pulumi.Input; + /** + * The UUID of the certificate + */ + readonly uuid?: pulumi.Input; } /** diff --git a/sdk/nodejs/getApp.ts b/sdk/nodejs/getApp.ts index d0263e4b..b996d493 100644 --- a/sdk/nodejs/getApp.ts +++ b/sdk/nodejs/getApp.ts @@ -74,7 +74,7 @@ export interface GetAppResult { /** * A DigitalOcean App spec describing the app. */ - readonly spec: outputs.GetAppSpec; + readonly specs: outputs.GetAppSpec[]; /** * The date and time of when the app was last updated. */ diff --git a/sdk/nodejs/getCertificate.ts b/sdk/nodejs/getCertificate.ts index 26179512..ffab4ef3 100644 --- a/sdk/nodejs/getCertificate.ts +++ b/sdk/nodejs/getCertificate.ts @@ -6,27 +6,6 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; -/** - * 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. - * This is useful if the certificate in question is not managed by this provider or you need to utilize - * any of the certificates data. - * - * An error is triggered if the provided certificate name does not exist. - * - * ## Example Usage - * - * Get the certificate: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const example = pulumi.output(digitalocean.getCertificate({ - * name: "example", - * }, { async: true })); - * ``` - */ export function getCertificate(args: GetCertificateArgs, opts?: pulumi.InvokeOptions): Promise { if (!opts) { opts = {} @@ -64,4 +43,5 @@ export interface GetCertificateResult { readonly sha1Fingerprint: string; readonly state: string; readonly type: string; + readonly uuid: string; } diff --git a/sdk/nodejs/getContainerRegistry.ts b/sdk/nodejs/getContainerRegistry.ts index 1a44e9e5..67fdedf4 100644 --- a/sdk/nodejs/getContainerRegistry.ts +++ b/sdk/nodejs/getContainerRegistry.ts @@ -6,28 +6,6 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; -/** - * Get information on a container registry. This data source provides the name as - * configured on your DigitalOcean account. This is useful if the container - * registry name in question is not managed by this provider or you need validate if - * the container registry exists in the account. - * - * An error is triggered if the provided container registry name does not exist. - * - * ## Example Usage - * ### Basic Example - * - * Get the container registry: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const example = pulumi.output(digitalocean.getContainerRegistry({ - * name: "example", - * }, { async: true })); - * ``` - */ export function getContainerRegistry(args: GetContainerRegistryArgs, opts?: pulumi.InvokeOptions): Promise { if (!opts) { opts = {} diff --git a/sdk/nodejs/getDomain.ts b/sdk/nodejs/getDomain.ts index b2b9e895..81256455 100644 --- a/sdk/nodejs/getDomain.ts +++ b/sdk/nodejs/getDomain.ts @@ -6,29 +6,6 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; -/** - * 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 - * name in question is not managed by this provider or you need to utilize TTL or zone - * file data. - * - * An error is triggered if the provided domain name is not managed with your - * DigitalOcean account. - * - * ## Example Usage - * - * Get the zone file for a domain: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const example = digitalocean.getDomain({ - * name: "example.com", - * }); - * export const domainOutput = example.then(example => example.zoneFile); - * ``` - */ export function getDomain(args: GetDomainArgs, opts?: pulumi.InvokeOptions): Promise { if (!opts) { opts = {} diff --git a/sdk/nodejs/getDroplet.ts b/sdk/nodejs/getDroplet.ts index 0d89af8c..a521e2b5 100644 --- a/sdk/nodejs/getDroplet.ts +++ b/sdk/nodejs/getDroplet.ts @@ -6,51 +6,6 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; -/** - * 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 - * is useful if the Droplet in question is not managed by this provider or you need to - * utilize any of the Droplet's data. - * - * **Note:** This data source returns a single Droplet. When specifying a `tag`, an - * error is triggered if more than one Droplet is found. - * - * ## Example Usage - * - * Get the Droplet by name: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const example = digitalocean.getDroplet({ - * name: "web", - * }); - * export const dropletOutput = example.then(example => example.ipv4Address); - * ``` - * - * Get the Droplet by tag: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const example = pulumi.output(digitalocean.getDroplet({ - * tag: "web", - * }, { async: true })); - * ``` - * - * Get the Droplet by ID: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const example = digitalocean.getDroplet({ - * id: digitalocean_kubernetes_cluster.example.node_pool[0].nodes[0].droplet_id, - * }); - * ``` - */ export function getDroplet(args?: GetDropletArgs, opts?: pulumi.InvokeOptions): Promise { args = args || {}; if (!opts) { diff --git a/sdk/nodejs/getDroplets.ts b/sdk/nodejs/getDroplets.ts index 2c81e04e..1f22e778 100644 --- a/sdk/nodejs/getDroplets.ts +++ b/sdk/nodejs/getDroplets.ts @@ -6,58 +6,6 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; -/** - * 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. - * - * This data source is useful if the Droplets in question are not managed by this provider or you need to - * utilize any of the Droplets' data. - * - * Note: You can use the `digitalocean.Droplet` data source to obtain metadata - * about a single Droplet if you already know the `id`, unique `name`, or unique `tag` to retrieve. - * - * ## Example Usage - * - * Use the `filter` block with a `key` string and `values` list to filter images. - * - * For example to find all Droplets with size `s-1vcpu-1gb`: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const small = pulumi.output(digitalocean.getDroplets({ - * filters: [{ - * key: "size", - * values: ["s-1vcpu-1gb"], - * }], - * }, { async: true })); - * ``` - * - * You can filter on multiple fields and sort the results as well: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const small_with_backups = pulumi.output(digitalocean.getDroplets({ - * filters: [ - * { - * key: "size", - * values: ["s-1vcpu-1gb"], - * }, - * { - * key: "backups", - * values: ["true"], - * }, - * ], - * sorts: [{ - * direction: "desc", - * key: "created_at", - * }], - * }, { async: true })); - * ``` - */ export function getDroplets(args?: GetDropletsArgs, opts?: pulumi.InvokeOptions): Promise { args = args || {}; if (!opts) { diff --git a/sdk/nodejs/getFloatingIp.ts b/sdk/nodejs/getFloatingIp.ts index 2b57b809..452a2028 100644 --- a/sdk/nodejs/getFloatingIp.ts +++ b/sdk/nodejs/getFloatingIp.ts @@ -6,30 +6,6 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; -/** - * Get information on a floating ip. This data source provides the region and Droplet id - * as configured on your DigitalOcean account. This is useful if the floating IP - * in question is not managed by this provider or you need to find the Droplet the IP is - * attached to. - * - * An error is triggered if the provided floating IP does not exist. - * - * ## Example Usage - * - * Get the floating IP: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const config = new pulumi.Config(); - * const publicIp = config.requireObject("publicIp"); - * const example = digitalocean.getFloatingIp({ - * ipAddress: publicIp, - * }); - * export const fipOutput = example.then(example => example.dropletId); - * ``` - */ export function getFloatingIp(args: GetFloatingIpArgs, opts?: pulumi.InvokeOptions): Promise { if (!opts) { opts = {} diff --git a/sdk/nodejs/getImage.ts b/sdk/nodejs/getImage.ts index ac5f6146..de76ec7e 100644 --- a/sdk/nodejs/getImage.ts +++ b/sdk/nodejs/getImage.ts @@ -6,54 +6,6 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; -/** - * 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 - * configured on your DigitalOcean account. This is useful if the image in question - * is not managed by this provider or you need to utilize any of the image's data. - * - * An error is triggered if zero or more than one result is returned by the query. - * - * ## Example Usage - * - * Get the data about a snapshot: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const example1 = pulumi.output(digitalocean.getImage({ - * name: "example-1.0.0", - * }, { async: true })); - * ``` - * - * Reuse the data about a snapshot to create a Droplet: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const exampleImage = digitalocean.getImage({ - * name: "example-1.0.0", - * }); - * const exampleDroplet = new digitalocean.Droplet("exampleDroplet", { - * image: exampleImage.then(exampleImage => exampleImage.id), - * region: "nyc2", - * size: "s-1vcpu-1gb", - * }); - * ``` - * - * Get the data about an official image: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const example2 = pulumi.output(digitalocean.getImage({ - * slug: "ubuntu-18-04-x64", - * }, { async: true })); - * ``` - */ export function getImage(args?: GetImageArgs, opts?: pulumi.InvokeOptions): Promise { args = args || {}; if (!opts) { @@ -98,6 +50,7 @@ export interface GetImageArgs { */ export interface GetImageResult { readonly created: string; + readonly description: string; /** * The name of the distribution of the OS of the image. * * `minDiskSize`: The minimum 'disk' required for the image. diff --git a/sdk/nodejs/getImages.ts b/sdk/nodejs/getImages.ts index 59d9ab38..011016d0 100644 --- a/sdk/nodejs/getImages.ts +++ b/sdk/nodejs/getImages.ts @@ -6,59 +6,6 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; -/** - * 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, - * all images will be returned. - * - * This data source is useful if the image in question is not managed by this provider or you need to utilize any - * of the image's data. - * - * Note: You can use the `digitalocean.getImage` data source to obtain metadata - * about a single image if you already know the `slug`, unique `name`, or `id` to retrieve. - * - * ## Example Usage - * - * Use the `filter` block with a `key` string and `values` list to filter images. - * - * For example to find all Ubuntu images: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const ubuntu = pulumi.output(digitalocean.getImages({ - * filters: [{ - * key: "distribution", - * values: ["Ubuntu"], - * }], - * }, { async: true })); - * ``` - * - * You can filter on multiple fields and sort the results as well: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const available = pulumi.output(digitalocean.getImages({ - * filters: [ - * { - * key: "distribution", - * values: ["Ubuntu"], - * }, - * { - * key: "regions", - * values: ["nyc3"], - * }, - * ], - * sorts: [{ - * direction: "desc", - * key: "created", - * }], - * }, { async: true })); - * ``` - */ export function getImages(args?: GetImagesArgs, opts?: pulumi.InvokeOptions): Promise { args = args || {}; if (!opts) { diff --git a/sdk/nodejs/getKubernetesCluster.ts b/sdk/nodejs/getKubernetesCluster.ts index b4b087b6..ef9975ef 100644 --- a/sdk/nodejs/getKubernetesCluster.ts +++ b/sdk/nodejs/getKubernetesCluster.ts @@ -6,9 +6,6 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; -/** - * 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 this provider. - */ export function getKubernetesCluster(args: GetKubernetesClusterArgs, opts?: pulumi.InvokeOptions): Promise { if (!opts) { opts = {} diff --git a/sdk/nodejs/getKubernetesVersions.ts b/sdk/nodejs/getKubernetesVersions.ts index a12d3f8c..1aaa7200 100644 --- a/sdk/nodejs/getKubernetesVersions.ts +++ b/sdk/nodejs/getKubernetesVersions.ts @@ -74,9 +74,6 @@ export function getKubernetesVersions(args?: GetKubernetesVersionsArgs, opts?: p * A collection of arguments for invoking getKubernetesVersions. */ export interface GetKubernetesVersionsArgs { - /** - * If provided, this provider will only return versions that match the string prefix. For example, `1.15.` will match all 1.15.x series releases. - */ readonly versionPrefix?: string; } diff --git a/sdk/nodejs/getLoadBalancer.ts b/sdk/nodejs/getLoadBalancer.ts index 56f11c48..1af876d4 100644 --- a/sdk/nodejs/getLoadBalancer.ts +++ b/sdk/nodejs/getLoadBalancer.ts @@ -6,28 +6,6 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; -/** - * 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 - * account. This is useful if the load balancer in question is not managed by - * this provider or you need to utilize any of the load balancers data. - * - * An error is triggered if the provided load balancer name does not exist. - * - * ## Example Usage - * - * Get the load balancer: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const example = digitalocean.getLoadBalancer({ - * name: "app", - * }); - * export const lbOutput = example.then(example => example.ip); - * ``` - */ export function getLoadBalancer(args: GetLoadBalancerArgs, opts?: pulumi.InvokeOptions): Promise { if (!opts) { opts = {} @@ -61,7 +39,7 @@ export interface GetLoadBalancerResult { readonly enableBackendKeepalive: boolean; readonly enableProxyProtocol: boolean; readonly forwardingRules: outputs.GetLoadBalancerForwardingRule[]; - readonly healthcheck: outputs.GetLoadBalancerHealthcheck; + readonly healthchecks: outputs.GetLoadBalancerHealthcheck[]; /** * The provider-assigned unique ID for this managed resource. */ @@ -72,6 +50,6 @@ export interface GetLoadBalancerResult { readonly redirectHttpToHttps: boolean; readonly region: string; readonly status: string; - readonly stickySessions: outputs.GetLoadBalancerStickySessions; + readonly stickySessions: outputs.GetLoadBalancerStickySession[]; readonly vpcUuid: string; } diff --git a/sdk/nodejs/getRecord.ts b/sdk/nodejs/getRecord.ts index e98ffe54..b3758843 100644 --- a/sdk/nodejs/getRecord.ts +++ b/sdk/nodejs/getRecord.ts @@ -6,30 +6,6 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; -/** - * 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 - * in question is not managed by this provider. - * - * An error is triggered if the provided domain name or record are not managed with - * your DigitalOcean account. - * - * ## Example Usage - * - * Get data from a DNS record: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const example = digitalocean.getRecord({ - * domain: "example.com", - * name: "test", - * }); - * export const recordType = example.then(example => example.type); - * export const recordTtl = example.then(example => example.ttl); - * ``` - */ export function getRecord(args: GetRecordArgs, opts?: pulumi.InvokeOptions): Promise { if (!opts) { opts = {} diff --git a/sdk/nodejs/getRecords.ts b/sdk/nodejs/getRecords.ts new file mode 100644 index 00000000..f9c3a354 --- /dev/null +++ b/sdk/nodejs/getRecords.ts @@ -0,0 +1,60 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as inputs from "./types/input"; +import * as outputs from "./types/output"; +import * as utilities from "./utilities"; + +/** + * 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. + */ +export function getRecords(args: GetRecordsArgs, opts?: pulumi.InvokeOptions): Promise { + if (!opts) { + opts = {} + } + + if (!opts.version) { + opts.version = utilities.getVersion(); + } + return pulumi.runtime.invoke("digitalocean:index/getRecords:getRecords", { + "domain": args.domain, + "filters": args.filters, + "sorts": args.sorts, + }, opts); +} + +/** + * A collection of arguments for invoking getRecords. + */ +export interface GetRecordsArgs { + /** + * The domain name to search for DNS records + */ + readonly domain: string; + /** + * Filter the results. + * The `filter` block is documented below. + */ + readonly filters?: inputs.GetRecordsFilter[]; + /** + * Sort the results. + * The `sort` block is documented below. + */ + readonly sorts?: inputs.GetRecordsSort[]; +} + +/** + * A collection of values returned by getRecords. + */ +export interface GetRecordsResult { + readonly domain: string; + readonly filters?: outputs.GetRecordsFilter[]; + /** + * The provider-assigned unique ID for this managed resource. + */ + readonly id: string; + readonly records: outputs.GetRecordsRecord[]; + readonly sorts?: outputs.GetRecordsSort[]; +} diff --git a/sdk/nodejs/getSpacesBucket.ts b/sdk/nodejs/getSpacesBucket.ts index d907061d..651f788e 100644 --- a/sdk/nodejs/getSpacesBucket.ts +++ b/sdk/nodejs/getSpacesBucket.ts @@ -6,25 +6,6 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; -/** - * Get information on a Spaces bucket for use in other resources. This is useful if the Spaces bucket in question - * is not managed by this provider or you need to utilize any of the bucket's data. - * - * ## Example Usage - * - * Get the bucket by name: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const example = digitalocean.getSpacesBucket({ - * name: "my-spaces-bucket", - * region: "nyc3", - * }); - * export const bucketDomainName = example.then(example => example.bucketDomainName); - * ``` - */ export function getSpacesBucket(args: GetSpacesBucketArgs, opts?: pulumi.InvokeOptions): Promise { if (!opts) { opts = {} diff --git a/sdk/nodejs/getSpacesBucketObjects.ts b/sdk/nodejs/getSpacesBucketObjects.ts index f1f5960f..fa22d466 100644 --- a/sdk/nodejs/getSpacesBucketObjects.ts +++ b/sdk/nodejs/getSpacesBucketObjects.ts @@ -6,31 +6,6 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; -/** - * > **NOTE on `maxKeys`:** Retrieving very large numbers of keys can adversely affect this provider's performance. - * - * The bucket-objects data source returns keys (i.e., file names) and other metadata about objects in a Spaces bucket. - * - * ## Example Usage - * - * The following example retrieves a list of all object keys in a Spaces bucket and creates corresponding object - * data sources: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const myObjects = digitalocean.getSpacesBucketObjects({ - * bucket: "ourcorp", - * region: "nyc3", - * }); - * const objectInfo = .map(__index => digitalocean.getSpacesBucketObject({ - * key: _arg0_, - * bucket: _arg1_.bucket, - * region: _arg2_.region, - * })); - * ``` - */ export function getSpacesBucketObjects(args: GetSpacesBucketObjectsArgs, opts?: pulumi.InvokeOptions): Promise { if (!opts) { opts = {} diff --git a/sdk/nodejs/getSshKey.ts b/sdk/nodejs/getSshKey.ts index 3df82180..f2ddc3de 100644 --- a/sdk/nodejs/getSshKey.ts +++ b/sdk/nodejs/getSshKey.ts @@ -6,33 +6,6 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; -/** - * 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 - * the ssh key in question is not managed by this provider or you need to utilize any - * of the keys data. - * - * An error is triggered if the provided ssh key name does not exist. - * - * ## Example Usage - * - * Get the ssh key: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const exampleSshKey = digitalocean.getSshKey({ - * name: "example", - * }); - * const exampleDroplet = new digitalocean.Droplet("exampleDroplet", { - * image: "ubuntu-18-04-x64", - * region: "nyc2", - * size: "s-1vcpu-1gb", - * sshKeys: [exampleSshKey.then(exampleSshKey => exampleSshKey.id)], - * }); - * ``` - */ export function getSshKey(args: GetSshKeyArgs, opts?: pulumi.InvokeOptions): Promise { if (!opts) { opts = {} diff --git a/sdk/nodejs/getTag.ts b/sdk/nodejs/getTag.ts index 7eff9cd6..b270b708 100644 --- a/sdk/nodejs/getTag.ts +++ b/sdk/nodejs/getTag.ts @@ -6,32 +6,6 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; -/** - * 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 - * managed by this provider or you need validate if the tag exists in the account. - * - * An error is triggered if the provided tag name does not exist. - * - * ## Example Usage - * - * Get the tag: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const exampleTag = digitalocean.getTag({ - * name: "example", - * }); - * const exampleDroplet = new digitalocean.Droplet("exampleDroplet", { - * image: "ubuntu-18-04-x64", - * region: "nyc2", - * size: "s-1vcpu-1gb", - * tags: [exampleTag.then(exampleTag => exampleTag.name)], - * }); - * ``` - */ export function getTag(args: GetTagArgs, opts?: pulumi.InvokeOptions): Promise { if (!opts) { opts = {} diff --git a/sdk/nodejs/getVolume.ts b/sdk/nodejs/getVolume.ts index 20c61f60..0fc26d3c 100644 --- a/sdk/nodejs/getVolume.ts +++ b/sdk/nodejs/getVolume.ts @@ -6,49 +6,6 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; -/** - * 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 - * useful if the volume in question is not managed by this provider or you need to utilize - * any of the volumes data. - * - * An error is triggered if the provided volume name does not exist. - * - * ## Example Usage - * - * Get the volume: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const example = pulumi.output(digitalocean.getVolume({ - * name: "app-data", - * region: "nyc3", - * }, { async: true })); - * ``` - * - * Reuse the data about a volume to attach it to a Droplet: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const exampleVolume = digitalocean.getVolume({ - * name: "app-data", - * region: "nyc3", - * }); - * const exampleDroplet = new digitalocean.Droplet("exampleDroplet", { - * size: "s-1vcpu-1gb", - * image: "ubuntu-18-04-x64", - * region: "nyc3", - * }); - * const foobar = new digitalocean.VolumeAttachment("foobar", { - * dropletId: exampleDroplet.id, - * volumeId: exampleVolume.then(exampleVolume => exampleVolume.id), - * }); - * ``` - */ export function getVolume(args: GetVolumeArgs, opts?: pulumi.InvokeOptions): Promise { if (!opts) { opts = {} diff --git a/sdk/nodejs/getVpc.ts b/sdk/nodejs/getVpc.ts index 56ed8b5e..78eb1165 100644 --- a/sdk/nodejs/getVpc.ts +++ b/sdk/nodejs/getVpc.ts @@ -6,45 +6,6 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; -/** - * Retrieve information about a VPC for use in other resources. - * - * This data source provides all of the VPC's properties as configured on your - * DigitalOcean account. This is useful if the VPC in question is not managed by - * this provider or you need to utilize any of the VPC's data. - * - * VPCs may be looked up by `id` or `name`. Specifying a `region` will - * return that that region's default VPC. - * - * ## Example Usage - * ### VPC By Name - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const example = pulumi.output(digitalocean.getVpc({ - * name: "example-network", - * }, { async: true })); - * ``` - * - * Reuse the data about a VPC to assign a Droplet to it: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const exampleVpc = digitalocean.getVpc({ - * name: "example-network", - * }); - * const exampleDroplet = new digitalocean.Droplet("exampleDroplet", { - * size: "s-1vcpu-1gb", - * image: "ubuntu-18-04-x64", - * region: "nyc3", - * vpcUuid: exampleVpc.then(exampleVpc => exampleVpc.id), - * }); - * ``` - */ export function getVpc(args?: GetVpcArgs, opts?: pulumi.InvokeOptions): Promise { args = args || {}; if (!opts) { diff --git a/sdk/nodejs/index.ts b/sdk/nodejs/index.ts index 84a37afa..91f9f7c9 100644 --- a/sdk/nodejs/index.ts +++ b/sdk/nodejs/index.ts @@ -43,6 +43,7 @@ export * from "./getLoadBalancer"; export * from "./getProject"; export * from "./getProjects"; export * from "./getRecord"; +export * from "./getRecords"; export * from "./getRegion"; export * from "./getRegions"; export * from "./getSizes"; diff --git a/sdk/nodejs/kubernetesCluster.ts b/sdk/nodejs/kubernetesCluster.ts index 91377168..30c55cb4 100644 --- a/sdk/nodejs/kubernetesCluster.ts +++ b/sdk/nodejs/kubernetesCluster.ts @@ -8,76 +8,6 @@ import * as utilities from "./utilities"; import {Region} from "./index"; -/** - * Provides a DigitalOcean Kubernetes cluster resource. This can be used to create, delete, and modify clusters. For more information see the [official documentation](https://www.digitalocean.com/docs/kubernetes/). - * - * ## Example Usage - * ### Basic Example - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const foo = new digitalocean.KubernetesCluster("foo", { - * nodePool: { - * name: "worker-pool", - * nodeCount: 3, - * size: "s-2vcpu-2gb", - * }, - * region: "nyc1", - * // Grab the latest version slug from `doctl kubernetes options versions` - * version: "1.15.5-do.1", - * }); - * ``` - * ### Autoscaling Example - * - * Node pools may also be configured to [autoscale](https://www.digitalocean.com/docs/kubernetes/how-to/autoscale/). - * For example: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const foo = new digitalocean.KubernetesCluster("foo", { - * nodePool: { - * autoScale: true, - * maxNodes: 5, - * minNodes: 1, - * name: "autoscale-worker-pool", - * size: "s-2vcpu-2gb", - * }, - * region: "nyc1", - * version: "1.15.5-do.1", - * }); - * ``` - * - * Note that, while individual node pools may scale to 0, a cluster must always include at least one node. - * ### Auto Upgrade Example - * - * DigitalOcean Kubernetes clusters may also be configured to [auto upgrade](https://www.digitalocean.com/docs/kubernetes/how-to/upgrade-cluster/#automatically) patch versions. - * For example: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const example = digitalocean.getKubernetesVersions({ - * versionPrefix: "1.18.", - * }); - * const foo = new digitalocean.KubernetesCluster("foo", { - * region: "nyc1", - * autoUpgrade: true, - * version: example.then(example => example.latestVersion), - * nodePool: { - * name: "default", - * size: "s-1vcpu-2gb", - * nodeCount: 3, - * }, - * }); - * ``` - * - * Note that a data source is used to supply the version. This is needed to prevent configuration diff whenever a cluster is upgraded. - */ export class KubernetesCluster extends pulumi.CustomResource { /** * Get an existing KubernetesCluster resource's state with the given name, ID, and optional extra diff --git a/sdk/nodejs/loadBalancer.ts b/sdk/nodejs/loadBalancer.ts index f7116575..1e519c55 100644 --- a/sdk/nodejs/loadBalancer.ts +++ b/sdk/nodejs/loadBalancer.ts @@ -11,6 +11,69 @@ import {Algorithm, Region} from "./index"; /** * Provides a DigitalOcean Load Balancer resource. This can be used to create, * modify, and delete Load Balancers. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as digitalocean from "@pulumi/digitalocean"; + * + * const web = new digitalocean.Droplet("web", { + * size: "s-1vcpu-1gb", + * image: "ubuntu-18-04-x64", + * region: "nyc3", + * }); + * const _public = new digitalocean.LoadBalancer("public", { + * region: "nyc3", + * forwardingRules: [{ + * entryPort: 80, + * entryProtocol: "http", + * targetPort: 80, + * targetProtocol: "http", + * }], + * healthcheck: { + * port: 22, + * protocol: "tcp", + * }, + * dropletIds: [web.id], + * }); + * ``` + * + * When managing certificates attached to the load balancer, make sure to add the `createBeforeDestroy` + * lifecycle property in order to ensure the certificate is correctly updated when changed. The order of + * operations will then be: `Create new certificate` > `Update loadbalancer with new certificate` -> + * `Delete old certificate`. When doing so, you must also change the name of the certificate, + * as there cannot be multiple certificates with the same name in an account. + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as digitalocean from "@pulumi/digitalocean"; + * + * const cert = new digitalocean.Certificate("cert", { + * privateKey: "file('key.pem')", + * leafCertificate: "file('cert.pem')", + * }); + * const web = new digitalocean.Droplet("web", { + * size: "s-1vcpu-1gb", + * image: "ubuntu-18-04-x64", + * region: "nyc3", + * }); + * const _public = new digitalocean.LoadBalancer("public", { + * region: "nyc3", + * forwardingRules: [{ + * entryPort: 443, + * entryProtocol: "https", + * targetPort: 80, + * targetProtocol: "http", + * certificateName: cert.name, + * }], + * healthcheck: { + * port: 22, + * protocol: "tcp", + * }, + * dropletIds: [web.id], + * }); + * ``` */ export class LoadBalancer extends pulumi.CustomResource { /** diff --git a/sdk/nodejs/project.ts b/sdk/nodejs/project.ts index a99a91f4..99dd0bab 100644 --- a/sdk/nodejs/project.ts +++ b/sdk/nodejs/project.ts @@ -4,59 +4,6 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; -/** - * Provides a DigitalOcean Project resource. - * - * Projects allow you to organize your resources into groups that fit the way you work. - * You can group resources (like Droplets, Spaces, Load Balancers, domains, and Floating IPs) - * in ways that align with the applications you host on DigitalOcean. - * - * The following resource types can be associated with a project: - * - * * Database Clusters - * * Domains - * * Droplets - * * Floating IP - * * Load Balancers - * * Spaces Bucket - * * Volume - * - * **Note:** A managed project cannot be set as a default project. - * - * ## Example Usage - * - * The following example demonstrates the creation of an empty project: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const playground = new digitalocean.Project("playground", { - * description: "A project to represent development resources.", - * environment: "Development", - * purpose: "Web Application", - * }); - * ``` - * - * The following example demonstrates the creation of a project with a Droplet resource: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const foobar = new digitalocean.Droplet("foobar", { - * size: "512mb", - * image: "centos-7-x64", - * region: "nyc3", - * }); - * const playground = new digitalocean.Project("playground", { - * description: "A project to represent development resources.", - * purpose: "Web Application", - * environment: "Development", - * resources: [foobar.dropletUrn], - * }); - * ``` - */ export class Project extends pulumi.CustomResource { /** * Get an existing Project resource's state with the given name, ID, and optional extra diff --git a/sdk/nodejs/projectResources.ts b/sdk/nodejs/projectResources.ts index a5ab3fb9..34eeaa31 100644 --- a/sdk/nodejs/projectResources.ts +++ b/sdk/nodejs/projectResources.ts @@ -4,42 +4,6 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; -/** - * Assign resources to a DigitalOcean Project. This is useful if you need to assign resources - * managed this provider to a DigitalOcean Project that is unmanaged by the provider. - * - * The following resource types can be associated with a project: - * - * * Database Clusters - * * Domains - * * Droplets - * * Floating IP - * * Load Balancers - * * Spaces Bucket - * * Volume - * - * ## Example Usage - * - * The following example assigns a droplet to a Project managed outside of this provider: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const playground = digitalocean.getProject({ - * name: "playground", - * }); - * const foobar = new digitalocean.Droplet("foobar", { - * size: "512mb", - * image: "centos-7-x64", - * region: "nyc3", - * }); - * const barfoo = new digitalocean.ProjectResources("barfoo", { - * project: data.digitalocean_project.foo.id, - * resources: [foobar.dropletUrn], - * }); - * ``` - */ export class ProjectResources extends pulumi.CustomResource { /** * Get an existing ProjectResources resource's state with the given name, ID, and optional extra diff --git a/sdk/nodejs/spacesBucketObject.ts b/sdk/nodejs/spacesBucketObject.ts index b1488a4e..9084681e 100644 --- a/sdk/nodejs/spacesBucketObject.ts +++ b/sdk/nodejs/spacesBucketObject.ts @@ -4,50 +4,6 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; -/** - * Provides a bucket object resource for Spaces, DigitalOcean's object storage product. - * The `digitalocean.SpacesBucketObject` resource allows this provider to upload content - * to Spaces. - * - * The [Spaces API](https://developers.digitalocean.com/documentation/spaces/) was - * designed to be interoperable with Amazon's AWS S3 API. This allows users to - * interact with the service while using the tools they already know. Spaces - * mirrors S3's authentication framework and requests to Spaces require a key pair - * similar to Amazon's Access ID and Secret Key. - * - * The authentication requirement can be met by either setting the - * `SPACES_ACCESS_KEY_ID` and `SPACES_SECRET_ACCESS_KEY` environment variables or - * the provider's `spacesAccessId` and `spacesSecretKey` arguments to the - * access ID and secret you generate via the DigitalOcean control panel. For - * example: - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const static_assets = new digitalocean.SpacesBucket("static-assets", {}); - * // ... - * ``` - * - * For more information, See [An Introduction to DigitalOcean Spaces](https://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-spaces) - * - * ## Example Usage - * ### Create a Key in a Spaces Bucket - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as digitalocean from "@pulumi/digitalocean"; - * - * const foobar = new digitalocean.SpacesBucket("foobar", {region: "nyc3"}); - * const index = new digitalocean.SpacesBucketObject("index", { - * region: foobar.region, - * bucket: foobar.name, - * key: "index.html", - * content: "

This page is empty.

", - * contentType: "text/html", - * }); - * ``` - */ export class SpacesBucketObject extends pulumi.CustomResource { /** * Get an existing SpacesBucketObject resource's state with the given name, ID, and optional extra @@ -113,7 +69,9 @@ export class SpacesBucketObject extends pulumi.CustomResource { */ public readonly contentType!: pulumi.Output; /** - * Used to trigger updates. The only meaningful value is `${filemd5("path/to/file")}`. + * the ETag generated for the object (an MD5 sum of the object content). The hash is an MD5 digest of the + * object data. For objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 + * digest. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). */ public readonly etag!: pulumi.Output; /** @@ -256,7 +214,9 @@ export interface SpacesBucketObjectState { */ readonly contentType?: pulumi.Input; /** - * Used to trigger updates. The only meaningful value is `${filemd5("path/to/file")}`. + * the ETag generated for the object (an MD5 sum of the object content). The hash is an MD5 digest of the + * object data. For objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 + * digest. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). */ readonly etag?: pulumi.Input; /** @@ -331,7 +291,9 @@ export interface SpacesBucketObjectArgs { */ readonly contentType?: pulumi.Input; /** - * Used to trigger updates. The only meaningful value is `${filemd5("path/to/file")}`. + * the ETag generated for the object (an MD5 sum of the object content). The hash is an MD5 digest of the + * object data. For objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 + * digest. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). */ readonly etag?: pulumi.Input; /** diff --git a/sdk/nodejs/sshKey.ts b/sdk/nodejs/sshKey.ts index cd2f209d..8a422ac1 100644 --- a/sdk/nodejs/sshKey.ts +++ b/sdk/nodejs/sshKey.ts @@ -18,7 +18,7 @@ import * as utilities from "./utilities"; * import * from "fs"; * * // Create a new SSH key - * const _default = new digitalocean.SshKey("default", {publicKey: fs.readFileSync("/Users/myuser/.ssh/id_rsa.pub")}); + * const _default = new digitalocean.SshKey("default", {publicKey: fs.readFileSync("/Users/terraform/.ssh/id_rsa.pub")}); * // Create a new Droplet using the SSH key * const web = new digitalocean.Droplet("web", { * image: "ubuntu-18-04-x64", diff --git a/sdk/nodejs/tsconfig.json b/sdk/nodejs/tsconfig.json index 526e8cde..a4ff19ab 100644 --- a/sdk/nodejs/tsconfig.json +++ b/sdk/nodejs/tsconfig.json @@ -56,6 +56,7 @@ "getProject.ts", "getProjects.ts", "getRecord.ts", + "getRecords.ts", "getRegion.ts", "getRegions.ts", "getSizes.ts", diff --git a/sdk/nodejs/types/input.ts b/sdk/nodejs/types/input.ts index 67de1791..b2e6ae00 100644 --- a/sdk/nodejs/types/input.ts +++ b/sdk/nodejs/types/input.ts @@ -638,6 +638,43 @@ export interface GetProjectsSort { key: string; } +export interface GetRecordsFilter { + /** + * Set to `true` to require that a field match all of the `values` instead of just one or more of + * them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure + * that all of the `values` are present in the list or set. + */ + all?: boolean; + /** + * Filter the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + * `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + */ + key: string; + /** + * One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to + * match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as + * substrings to find within the string field. + */ + matchBy?: string; + /** + * A list of values to match against the `key` field. Only retrieves projects + * where the `key` field takes on one or more of the values provided here. + */ + values: string[]; +} + +export interface GetRecordsSort { + /** + * The sort direction. This may be either `asc` or `desc`. + */ + direction?: string; + /** + * Sort the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + * `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + */ + key: string; +} + export interface GetRegionsFilter { /** * Set to `true` to require that a field match all of the `values` instead of just one or more of @@ -917,9 +954,15 @@ export interface KubernetesNodePoolNode { export interface LoadBalancerForwardingRule { /** - * The ID of the TLS certificate to be used for SSL termination. + * **Deprecated** The ID of the TLS certificate to be used for SSL termination. + * + * @deprecated Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead. */ certificateId?: pulumi.Input; + /** + * The unique name of the TLS certificate to be used for SSL termination. + */ + certificateName?: pulumi.Input; /** * An integer representing the port on which the Load Balancer instance will listen. */ diff --git a/sdk/nodejs/types/output.ts b/sdk/nodejs/types/output.ts index 2793b841..74c690a6 100644 --- a/sdk/nodejs/types/output.ts +++ b/sdk/nodejs/types/output.ts @@ -1073,6 +1073,7 @@ export interface GetImagesFilter { export interface GetImagesImage { created: string; + description: string; /** * The name of the distribution of the OS of the image. * - `minDiskSize`: The minimum 'disk' required for the image. @@ -1239,7 +1240,7 @@ export interface GetLoadBalancerHealthcheck { unhealthyThreshold: number; } -export interface GetLoadBalancerStickySessions { +export interface GetLoadBalancerStickySession { cookieName: string; cookieTtlSeconds: number; type: string; @@ -1326,6 +1327,60 @@ export interface GetProjectsSort { key: string; } +export interface GetRecordsFilter { + /** + * Set to `true` to require that a field match all of the `values` instead of just one or more of + * them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure + * that all of the `values` are present in the list or set. + */ + all?: boolean; + /** + * Filter the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + * `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + */ + key: string; + /** + * One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to + * match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as + * substrings to find within the string field. + */ + matchBy?: string; + /** + * A list of values to match against the `key` field. Only retrieves projects + * where the `key` field takes on one or more of the values provided here. + */ + values: string[]; +} + +export interface GetRecordsRecord { + /** + * The domain name to search for DNS records + */ + domain: string; + flags: number; + id: number; + name: string; + port: number; + priority: number; + tag: string; + ttl: number; + type: string; + value: string; + weight: number; +} + +export interface GetRecordsSort { + /** + * The sort direction. This may be either `asc` or `desc`. + */ + direction?: string; + /** + * Sort the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + * `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + */ + key: string; +} + export interface GetRegionsFilter { /** * Set to `true` to require that a field match all of the `values` instead of just one or more of @@ -1717,9 +1772,15 @@ export interface KubernetesNodePoolNode { export interface LoadBalancerForwardingRule { /** - * The ID of the TLS certificate to be used for SSL termination. + * **Deprecated** The ID of the TLS certificate to be used for SSL termination. + * + * @deprecated Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead. + */ + certificateId: string; + /** + * The unique name of the TLS certificate to be used for SSL termination. */ - certificateId?: string; + certificateName: string; /** * An integer representing the port on which the Load Balancer instance will listen. */ diff --git a/sdk/python/pulumi_digitalocean/__init__.py b/sdk/python/pulumi_digitalocean/__init__.py index 88735a69..dfcb9e9b 100644 --- a/sdk/python/pulumi_digitalocean/__init__.py +++ b/sdk/python/pulumi_digitalocean/__init__.py @@ -40,6 +40,7 @@ from .get_project import * from .get_projects import * from .get_record import * +from .get_records import * from .get_region import * from .get_regions import * from .get_sizes import * diff --git a/sdk/python/pulumi_digitalocean/_inputs.py b/sdk/python/pulumi_digitalocean/_inputs.py index 2cc55c0a..9cec436f 100644 --- a/sdk/python/pulumi_digitalocean/_inputs.py +++ b/sdk/python/pulumi_digitalocean/_inputs.py @@ -52,6 +52,8 @@ 'GetImagesSortArgs', 'GetProjectsFilterArgs', 'GetProjectsSortArgs', + 'GetRecordsFilterArgs', + 'GetRecordsSortArgs', 'GetRegionsFilterArgs', 'GetRegionsSortArgs', 'GetSizesFilterArgs', @@ -2455,21 +2457,28 @@ def __init__(__self__, *, target_port: pulumi.Input[int], target_protocol: pulumi.Input[str], certificate_id: Optional[pulumi.Input[str]] = None, + certificate_name: Optional[pulumi.Input[str]] = None, tls_passthrough: Optional[pulumi.Input[bool]] = None): """ :param pulumi.Input[int] entry_port: An integer representing the port on which the Load Balancer instance will listen. :param pulumi.Input[str] entry_protocol: The protocol used for traffic to the Load Balancer. The possible values are: `http`, `https`, `http2` or `tcp`. :param pulumi.Input[int] target_port: An integer representing the port on the backend Droplets to which the Load Balancer will send traffic. :param pulumi.Input[str] target_protocol: The protocol used for traffic from the Load Balancer to the backend Droplets. The possible values are: `http`, `https`, `http2` or `tcp`. - :param pulumi.Input[str] certificate_id: The ID of the TLS certificate to be used for SSL termination. + :param pulumi.Input[str] certificate_id: **Deprecated** The ID of the TLS certificate to be used for SSL termination. + :param pulumi.Input[str] certificate_name: The unique name of the TLS certificate to be used for SSL termination. :param pulumi.Input[bool] tls_passthrough: A boolean value indicating whether SSL encrypted traffic will be passed through to the backend Droplets. The default value is `false`. """ pulumi.set(__self__, "entry_port", entry_port) pulumi.set(__self__, "entry_protocol", entry_protocol) pulumi.set(__self__, "target_port", target_port) pulumi.set(__self__, "target_protocol", target_protocol) + if certificate_id is not None: + warnings.warn("Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead.", DeprecationWarning) + pulumi.log.warn("certificate_id is deprecated: Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead.") if certificate_id is not None: pulumi.set(__self__, "certificate_id", certificate_id) + if certificate_name is not None: + pulumi.set(__self__, "certificate_name", certificate_name) if tls_passthrough is not None: pulumi.set(__self__, "tls_passthrough", tls_passthrough) @@ -2525,7 +2534,7 @@ def target_protocol(self, value: pulumi.Input[str]): @pulumi.getter(name="certificateId") def certificate_id(self) -> Optional[pulumi.Input[str]]: """ - The ID of the TLS certificate to be used for SSL termination. + **Deprecated** The ID of the TLS certificate to be used for SSL termination. """ return pulumi.get(self, "certificate_id") @@ -2533,6 +2542,18 @@ def certificate_id(self) -> Optional[pulumi.Input[str]]: def certificate_id(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "certificate_id", value) + @property + @pulumi.getter(name="certificateName") + def certificate_name(self) -> Optional[pulumi.Input[str]]: + """ + The unique name of the TLS certificate to be used for SSL termination. + """ + return pulumi.get(self, "certificate_name") + + @certificate_name.setter + def certificate_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "certificate_name", value) + @property @pulumi.getter(name="tlsPassthrough") def tls_passthrough(self) -> Optional[pulumi.Input[bool]]: @@ -3488,6 +3509,127 @@ def direction(self, value: Optional[str]): pulumi.set(self, "direction", value) +@pulumi.input_type +class GetRecordsFilterArgs: + def __init__(__self__, *, + key: str, + values: Sequence[str], + all: Optional[bool] = None, + match_by: Optional[str] = None): + """ + :param str key: Filter the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + :param Sequence[str] values: A list of values to match against the `key` field. Only retrieves projects + where the `key` field takes on one or more of the values provided here. + :param bool all: Set to `true` to require that a field match all of the `values` instead of just one or more of + them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure + that all of the `values` are present in the list or set. + :param str match_by: One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to + match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as + substrings to find within the string field. + """ + pulumi.set(__self__, "key", key) + pulumi.set(__self__, "values", values) + if all is not None: + pulumi.set(__self__, "all", all) + if match_by is not None: + pulumi.set(__self__, "match_by", match_by) + + @property + @pulumi.getter + def key(self) -> str: + """ + Filter the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + """ + return pulumi.get(self, "key") + + @key.setter + def key(self, value: str): + pulumi.set(self, "key", value) + + @property + @pulumi.getter + def values(self) -> Sequence[str]: + """ + A list of values to match against the `key` field. Only retrieves projects + where the `key` field takes on one or more of the values provided here. + """ + return pulumi.get(self, "values") + + @values.setter + def values(self, value: Sequence[str]): + pulumi.set(self, "values", value) + + @property + @pulumi.getter + def all(self) -> Optional[bool]: + """ + Set to `true` to require that a field match all of the `values` instead of just one or more of + them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure + that all of the `values` are present in the list or set. + """ + return pulumi.get(self, "all") + + @all.setter + def all(self, value: Optional[bool]): + pulumi.set(self, "all", value) + + @property + @pulumi.getter(name="matchBy") + def match_by(self) -> Optional[str]: + """ + One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to + match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as + substrings to find within the string field. + """ + return pulumi.get(self, "match_by") + + @match_by.setter + def match_by(self, value: Optional[str]): + pulumi.set(self, "match_by", value) + + +@pulumi.input_type +class GetRecordsSortArgs: + def __init__(__self__, *, + key: str, + direction: Optional[str] = None): + """ + :param str key: Sort the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + :param str direction: The sort direction. This may be either `asc` or `desc`. + """ + pulumi.set(__self__, "key", key) + if direction is not None: + pulumi.set(__self__, "direction", direction) + + @property + @pulumi.getter + def key(self) -> str: + """ + Sort the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + """ + return pulumi.get(self, "key") + + @key.setter + def key(self, value: str): + pulumi.set(self, "key", value) + + @property + @pulumi.getter + def direction(self) -> Optional[str]: + """ + The sort direction. This may be either `asc` or `desc`. + """ + return pulumi.get(self, "direction") + + @direction.setter + def direction(self, value: Optional[str]): + pulumi.set(self, "direction", value) + + @pulumi.input_type class GetRegionsFilterArgs: def __init__(__self__, *, diff --git a/sdk/python/pulumi_digitalocean/_tables.py b/sdk/python/pulumi_digitalocean/_tables.py index 4bb06bf0..d47ae069 100644 --- a/sdk/python/pulumi_digitalocean/_tables.py +++ b/sdk/python/pulumi_digitalocean/_tables.py @@ -13,6 +13,7 @@ "cache_control": "cacheControl", "certificate_chain": "certificateChain", "certificate_id": "certificateId", + "certificate_name": "certificateName", "cluster_id": "clusterId", "cluster_subnet": "clusterSubnet", "cluster_urn": "clusterUrn", @@ -118,6 +119,7 @@ "cacheControl": "cache_control", "certificateChain": "certificate_chain", "certificateId": "certificate_id", + "certificateName": "certificate_name", "clusterId": "cluster_id", "clusterSubnet": "cluster_subnet", "clusterUrn": "cluster_urn", diff --git a/sdk/python/pulumi_digitalocean/cdn.py b/sdk/python/pulumi_digitalocean/cdn.py index 0f0f32af..922d80e9 100644 --- a/sdk/python/pulumi_digitalocean/cdn.py +++ b/sdk/python/pulumi_digitalocean/cdn.py @@ -16,6 +16,7 @@ def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, certificate_id: Optional[pulumi.Input[str]] = None, + certificate_name: Optional[pulumi.Input[str]] = None, custom_domain: Optional[pulumi.Input[str]] = None, origin: Optional[pulumi.Input[str]] = None, ttl: Optional[pulumi.Input[int]] = None, @@ -58,12 +59,13 @@ def __init__(__self__, mycdn = digitalocean.Cdn("mycdn", origin=mybucket.bucket_domain_name, custom_domain="static.example.com", - certificate_id=cert.id) + certificate_name=cert.name) ``` :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. - :param pulumi.Input[str] certificate_id: The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + :param pulumi.Input[str] certificate_id: **Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + :param pulumi.Input[str] certificate_name: The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. :param pulumi.Input[str] custom_domain: The fully qualified domain name (FQDN) of the custom subdomain used with the CDN Endpoint. :param pulumi.Input[str] origin: The fully qualified domain name, (FQDN) for a Space. :param pulumi.Input[int] ttl: The time to live for the CDN Endpoint, in seconds. Default is 3600 seconds. @@ -85,7 +87,11 @@ def __init__(__self__, raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') __props__ = dict() + if certificate_id is not None: + warnings.warn("Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead.", DeprecationWarning) + pulumi.log.warn("certificate_id is deprecated: Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead.") __props__['certificate_id'] = certificate_id + __props__['certificate_name'] = certificate_name __props__['custom_domain'] = custom_domain if origin is None: raise TypeError("Missing required property 'origin'") @@ -104,6 +110,7 @@ def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, certificate_id: Optional[pulumi.Input[str]] = None, + certificate_name: Optional[pulumi.Input[str]] = None, created_at: Optional[pulumi.Input[str]] = None, custom_domain: Optional[pulumi.Input[str]] = None, endpoint: Optional[pulumi.Input[str]] = None, @@ -116,7 +123,8 @@ def get(resource_name: str, :param str resource_name: The unique name of the resulting resource. :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. - :param pulumi.Input[str] certificate_id: The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + :param pulumi.Input[str] certificate_id: **Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + :param pulumi.Input[str] certificate_name: The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. :param pulumi.Input[str] created_at: The date and time when the CDN Endpoint was created. :param pulumi.Input[str] custom_domain: The fully qualified domain name (FQDN) of the custom subdomain used with the CDN Endpoint. :param pulumi.Input[str] endpoint: The fully qualified domain name (FQDN) from which the CDN-backed content is served. @@ -128,6 +136,7 @@ def get(resource_name: str, __props__ = dict() __props__["certificate_id"] = certificate_id + __props__["certificate_name"] = certificate_name __props__["created_at"] = created_at __props__["custom_domain"] = custom_domain __props__["endpoint"] = endpoint @@ -137,12 +146,20 @@ def get(resource_name: str, @property @pulumi.getter(name="certificateId") - def certificate_id(self) -> pulumi.Output[Optional[str]]: + def certificate_id(self) -> pulumi.Output[str]: """ - The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + **Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. """ return pulumi.get(self, "certificate_id") + @property + @pulumi.getter(name="certificateName") + def certificate_name(self) -> pulumi.Output[str]: + """ + The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided. + """ + return pulumi.get(self, "certificate_name") + @property @pulumi.getter(name="createdAt") def created_at(self) -> pulumi.Output[str]: diff --git a/sdk/python/pulumi_digitalocean/certificate.py b/sdk/python/pulumi_digitalocean/certificate.py index c11a7301..ddec2d75 100644 --- a/sdk/python/pulumi_digitalocean/certificate.py +++ b/sdk/python/pulumi_digitalocean/certificate.py @@ -41,9 +41,9 @@ def __init__(__self__, cert = digitalocean.Certificate("cert", type="custom", - private_key=(lambda path: open(path).read())("/Users/myuser/certs/privkey.pem"), - leaf_certificate=(lambda path: open(path).read())("/Users/myuser/certs/cert.pem"), - certificate_chain=(lambda path: open(path).read())("/Users/myuser/certs/fullchain.pem")) + private_key=(lambda path: open(path).read())("/Users/terraform/certs/privkey.pem"), + leaf_certificate=(lambda path: open(path).read())("/Users/terraform/certs/cert.pem"), + certificate_chain=(lambda path: open(path).read())("/Users/terraform/certs/fullchain.pem")) ``` ### Let's Encrypt Certificate @@ -76,7 +76,7 @@ def __init__(__self__, entry_protocol="https", target_port=80, target_protocol="http", - certificate_id=cert.id, + certificate_name=cert.name, )]) ``` @@ -122,6 +122,7 @@ def __init__(__self__, __props__['not_after'] = None __props__['sha1_fingerprint'] = None __props__['state'] = None + __props__['uuid'] = None super(Certificate, __self__).__init__( 'digitalocean:index/certificate:Certificate', resource_name, @@ -140,7 +141,8 @@ def get(resource_name: str, private_key: Optional[pulumi.Input[str]] = None, sha1_fingerprint: Optional[pulumi.Input[str]] = None, state: Optional[pulumi.Input[str]] = None, - type: Optional[pulumi.Input[str]] = None) -> 'Certificate': + type: Optional[pulumi.Input[str]] = None, + uuid: Optional[pulumi.Input[str]] = None) -> 'Certificate': """ Get an existing Certificate resource's state with the given name, id, and optional extra properties used to qualify the lookup. @@ -163,6 +165,7 @@ def get(resource_name: str, :param pulumi.Input[str] sha1_fingerprint: The SHA-1 fingerprint of the certificate :param pulumi.Input[str] type: The type of certificate to provision. Can be either `custom` or `lets_encrypt`. Defaults to `custom`. + :param pulumi.Input[str] uuid: The UUID of the certificate """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) @@ -177,6 +180,7 @@ def get(resource_name: str, __props__["sha1_fingerprint"] = sha1_fingerprint __props__["state"] = state __props__["type"] = type + __props__["uuid"] = uuid return Certificate(resource_name, opts=opts, __props__=__props__) @property @@ -255,6 +259,14 @@ def type(self) -> pulumi.Output[Optional[str]]: """ return pulumi.get(self, "type") + @property + @pulumi.getter + def uuid(self) -> pulumi.Output[str]: + """ + The UUID of the certificate + """ + return pulumi.get(self, "uuid") + def translate_output_property(self, prop): return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop diff --git a/sdk/python/pulumi_digitalocean/get_app.py b/sdk/python/pulumi_digitalocean/get_app.py index dce97408..a4635d48 100644 --- a/sdk/python/pulumi_digitalocean/get_app.py +++ b/sdk/python/pulumi_digitalocean/get_app.py @@ -20,7 +20,7 @@ class GetAppResult: """ A collection of values returned by getApp. """ - def __init__(__self__, active_deployment_id=None, app_id=None, created_at=None, default_ingress=None, id=None, live_url=None, spec=None, updated_at=None): + def __init__(__self__, active_deployment_id=None, app_id=None, created_at=None, default_ingress=None, id=None, live_url=None, specs=None, updated_at=None): if active_deployment_id and not isinstance(active_deployment_id, str): raise TypeError("Expected argument 'active_deployment_id' to be a str") pulumi.set(__self__, "active_deployment_id", active_deployment_id) @@ -39,9 +39,9 @@ def __init__(__self__, active_deployment_id=None, app_id=None, created_at=None, if live_url and not isinstance(live_url, str): raise TypeError("Expected argument 'live_url' to be a str") pulumi.set(__self__, "live_url", live_url) - if spec and not isinstance(spec, dict): - raise TypeError("Expected argument 'spec' to be a dict") - pulumi.set(__self__, "spec", spec) + if specs and not isinstance(specs, list): + raise TypeError("Expected argument 'specs' to be a list") + pulumi.set(__self__, "specs", specs) if updated_at and not isinstance(updated_at, str): raise TypeError("Expected argument 'updated_at' to be a str") pulumi.set(__self__, "updated_at", updated_at) @@ -93,11 +93,11 @@ def live_url(self) -> str: @property @pulumi.getter - def spec(self) -> 'outputs.GetAppSpecResult': + def specs(self) -> Sequence['outputs.GetAppSpecResult']: """ A DigitalOcean App spec describing the app. """ - return pulumi.get(self, "spec") + return pulumi.get(self, "specs") @property @pulumi.getter(name="updatedAt") @@ -120,7 +120,7 @@ def __await__(self): default_ingress=self.default_ingress, id=self.id, live_url=self.live_url, - spec=self.spec, + specs=self.specs, updated_at=self.updated_at) @@ -159,5 +159,5 @@ def get_app(app_id: Optional[str] = None, default_ingress=__ret__.default_ingress, id=__ret__.id, live_url=__ret__.live_url, - spec=__ret__.spec, + specs=__ret__.specs, updated_at=__ret__.updated_at) diff --git a/sdk/python/pulumi_digitalocean/get_certificate.py b/sdk/python/pulumi_digitalocean/get_certificate.py index 1503e313..4fe4177b 100644 --- a/sdk/python/pulumi_digitalocean/get_certificate.py +++ b/sdk/python/pulumi_digitalocean/get_certificate.py @@ -19,7 +19,7 @@ class GetCertificateResult: """ A collection of values returned by getCertificate. """ - def __init__(__self__, domains=None, id=None, name=None, not_after=None, sha1_fingerprint=None, state=None, type=None): + def __init__(__self__, domains=None, id=None, name=None, not_after=None, sha1_fingerprint=None, state=None, type=None, uuid=None): if domains and not isinstance(domains, list): raise TypeError("Expected argument 'domains' to be a list") pulumi.set(__self__, "domains", domains) @@ -41,6 +41,9 @@ def __init__(__self__, domains=None, id=None, name=None, not_after=None, sha1_fi if type and not isinstance(type, str): raise TypeError("Expected argument 'type' to be a str") pulumi.set(__self__, "type", type) + if uuid and not isinstance(uuid, str): + raise TypeError("Expected argument 'uuid' to be a str") + pulumi.set(__self__, "uuid", uuid) @property @pulumi.getter @@ -80,6 +83,11 @@ def state(self) -> str: def type(self) -> str: return pulumi.get(self, "type") + @property + @pulumi.getter + def uuid(self) -> str: + return pulumi.get(self, "uuid") + class AwaitableGetCertificateResult(GetCertificateResult): # pylint: disable=using-constant-test @@ -93,30 +101,14 @@ def __await__(self): not_after=self.not_after, sha1_fingerprint=self.sha1_fingerprint, state=self.state, - type=self.type) + type=self.type, + uuid=self.uuid) def get_certificate(name: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetCertificateResult: """ - 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. - This is useful if the certificate in question is not managed by this provider or you need to utilize - any of the certificates data. - - An error is triggered if the provided certificate name does not exist. - - ## Example Usage - - Get the certificate: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example = digitalocean.get_certificate(name="example") - ``` - + Use this data source to access information about an existing resource. :param str name: The name of certificate. """ @@ -135,4 +127,5 @@ def get_certificate(name: Optional[str] = None, not_after=__ret__.not_after, sha1_fingerprint=__ret__.sha1_fingerprint, state=__ret__.state, - type=__ret__.type) + type=__ret__.type, + uuid=__ret__.uuid) diff --git a/sdk/python/pulumi_digitalocean/get_container_registry.py b/sdk/python/pulumi_digitalocean/get_container_registry.py index f233db46..fa545d90 100644 --- a/sdk/python/pulumi_digitalocean/get_container_registry.py +++ b/sdk/python/pulumi_digitalocean/get_container_registry.py @@ -77,25 +77,7 @@ def __await__(self): def get_container_registry(name: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetContainerRegistryResult: """ - Get information on a container registry. This data source provides the name as - configured on your DigitalOcean account. This is useful if the container - registry name in question is not managed by this provider or you need validate if - the container registry exists in the account. - - An error is triggered if the provided container registry name does not exist. - - ## Example Usage - ### Basic Example - - Get the container registry: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example = digitalocean.get_container_registry(name="example") - ``` - + Use this data source to access information about an existing resource. :param str name: The name of the container registry. """ diff --git a/sdk/python/pulumi_digitalocean/get_domain.py b/sdk/python/pulumi_digitalocean/get_domain.py index 4fe6768d..64eb73f2 100644 --- a/sdk/python/pulumi_digitalocean/get_domain.py +++ b/sdk/python/pulumi_digitalocean/get_domain.py @@ -85,26 +85,7 @@ def __await__(self): def get_domain(name: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetDomainResult: """ - 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 - name in question is not managed by this provider or you need to utilize TTL or zone - file data. - - An error is triggered if the provided domain name is not managed with your - DigitalOcean account. - - ## Example Usage - - Get the zone file for a domain: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example = digitalocean.get_domain(name="example.com") - pulumi.export("domainOutput", example.zone_file) - ``` - + Use this data source to access information about an existing resource. :param str name: The name of the domain. """ diff --git a/sdk/python/pulumi_digitalocean/get_droplet.py b/sdk/python/pulumi_digitalocean/get_droplet.py index f228fb46..b93bfecc 100644 --- a/sdk/python/pulumi_digitalocean/get_droplet.py +++ b/sdk/python/pulumi_digitalocean/get_droplet.py @@ -335,44 +335,7 @@ def get_droplet(id: Optional[int] = None, tag: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetDropletResult: """ - 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 - is useful if the Droplet in question is not managed by this provider or you need to - utilize any of the Droplet's data. - - **Note:** This data source returns a single Droplet. When specifying a `tag`, an - error is triggered if more than one Droplet is found. - - ## Example Usage - - Get the Droplet by name: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example = digitalocean.get_droplet(name="web") - pulumi.export("dropletOutput", example.ipv4_address) - ``` - - Get the Droplet by tag: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example = digitalocean.get_droplet(tag="web") - ``` - - Get the Droplet by ID: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example = digitalocean.get_droplet(id=digitalocean_kubernetes_cluster["example"]["node_pool"][0]["nodes"][0]["droplet_id"]) - ``` - + Use this data source to access information about an existing resource. :param int id: The ID of the Droplet :param str name: The name of the Droplet. diff --git a/sdk/python/pulumi_digitalocean/get_droplets.py b/sdk/python/pulumi_digitalocean/get_droplets.py index 71c37df7..4fe67281 100644 --- a/sdk/python/pulumi_digitalocean/get_droplets.py +++ b/sdk/python/pulumi_digitalocean/get_droplets.py @@ -78,53 +78,7 @@ def get_droplets(filters: Optional[Sequence[pulumi.InputType['GetDropletsFilterA sorts: Optional[Sequence[pulumi.InputType['GetDropletsSortArgs']]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetDropletsResult: """ - 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. - - This data source is useful if the Droplets in question are not managed by this provider or you need to - utilize any of the Droplets' data. - - Note: You can use the `Droplet` data source to obtain metadata - about a single Droplet if you already know the `id`, unique `name`, or unique `tag` to retrieve. - - ## Example Usage - - Use the `filter` block with a `key` string and `values` list to filter images. - - For example to find all Droplets with size `s-1vcpu-1gb`: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - small = digitalocean.get_droplets(filters=[digitalocean.GetDropletsFilterArgs( - key="size", - values=["s-1vcpu-1gb"], - )]) - ``` - - You can filter on multiple fields and sort the results as well: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - small_with_backups = digitalocean.get_droplets(filters=[ - digitalocean.GetDropletsFilterArgs( - key="size", - values=["s-1vcpu-1gb"], - ), - digitalocean.GetDropletsFilterArgs( - key="backups", - values=["true"], - ), - ], - sorts=[digitalocean.GetDropletsSortArgs( - direction="desc", - key="created_at", - )]) - ``` - + Use this data source to access information about an existing resource. :param Sequence[pulumi.InputType['GetDropletsFilterArgs']] filters: Filter the results. The `filter` block is documented below. diff --git a/sdk/python/pulumi_digitalocean/get_floating_ip.py b/sdk/python/pulumi_digitalocean/get_floating_ip.py index 83eeaea1..f1dab9db 100644 --- a/sdk/python/pulumi_digitalocean/get_floating_ip.py +++ b/sdk/python/pulumi_digitalocean/get_floating_ip.py @@ -81,27 +81,7 @@ def __await__(self): def get_floating_ip(ip_address: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetFloatingIpResult: """ - Get information on a floating ip. This data source provides the region and Droplet id - as configured on your DigitalOcean account. This is useful if the floating IP - in question is not managed by this provider or you need to find the Droplet the IP is - attached to. - - An error is triggered if the provided floating IP does not exist. - - ## Example Usage - - Get the floating IP: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - config = pulumi.Config() - public_ip = config.require_object("publicIp") - example = digitalocean.get_floating_ip(ip_address=public_ip) - pulumi.export("fipOutput", example.droplet_id) - ``` - + Use this data source to access information about an existing resource. :param str ip_address: The allocated IP address of the specific floating IP to retrieve. """ diff --git a/sdk/python/pulumi_digitalocean/get_image.py b/sdk/python/pulumi_digitalocean/get_image.py index 7b12b1b9..bc5aba67 100644 --- a/sdk/python/pulumi_digitalocean/get_image.py +++ b/sdk/python/pulumi_digitalocean/get_image.py @@ -19,10 +19,13 @@ class GetImageResult: """ A collection of values returned by getImage. """ - def __init__(__self__, created=None, distribution=None, error_message=None, id=None, image=None, min_disk_size=None, name=None, private=None, regions=None, size_gigabytes=None, slug=None, source=None, status=None, tags=None, type=None): + def __init__(__self__, created=None, description=None, distribution=None, error_message=None, id=None, image=None, min_disk_size=None, name=None, private=None, regions=None, size_gigabytes=None, slug=None, source=None, status=None, tags=None, type=None): if created and not isinstance(created, str): raise TypeError("Expected argument 'created' to be a str") pulumi.set(__self__, "created", created) + if description and not isinstance(description, str): + raise TypeError("Expected argument 'description' to be a str") + pulumi.set(__self__, "description", description) if distribution and not isinstance(distribution, str): raise TypeError("Expected argument 'distribution' to be a str") pulumi.set(__self__, "distribution", distribution) @@ -71,6 +74,11 @@ def __init__(__self__, created=None, distribution=None, error_message=None, id=N def created(self) -> str: return pulumi.get(self, "created") + @property + @pulumi.getter + def description(self) -> str: + return pulumi.get(self, "description") + @property @pulumi.getter def distribution(self) -> str: @@ -167,6 +175,7 @@ def __await__(self): yield self return GetImageResult( created=self.created, + description=self.description, distribution=self.distribution, error_message=self.error_message, id=self.id, @@ -189,46 +198,7 @@ def get_image(id: Optional[int] = None, source: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetImageResult: """ - 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 - configured on your DigitalOcean account. This is useful if the image in question - is not managed by this provider or you need to utilize any of the image's data. - - An error is triggered if zero or more than one result is returned by the query. - - ## Example Usage - - Get the data about a snapshot: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example1 = digitalocean.get_image(name="example-1.0.0") - ``` - - Reuse the data about a snapshot to create a Droplet: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example_image = digitalocean.get_image(name="example-1.0.0") - example_droplet = digitalocean.Droplet("exampleDroplet", - image=example_image.id, - region="nyc2", - size="s-1vcpu-1gb") - ``` - - Get the data about an official image: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example2 = digitalocean.get_image(slug="ubuntu-18-04-x64") - ``` - + Use this data source to access information about an existing resource. :param int id: The id of the image :param str name: The name of the image. @@ -248,6 +218,7 @@ def get_image(id: Optional[int] = None, return AwaitableGetImageResult( created=__ret__.created, + description=__ret__.description, distribution=__ret__.distribution, error_message=__ret__.error_message, id=__ret__.id, diff --git a/sdk/python/pulumi_digitalocean/get_images.py b/sdk/python/pulumi_digitalocean/get_images.py index 261673d9..7835702d 100644 --- a/sdk/python/pulumi_digitalocean/get_images.py +++ b/sdk/python/pulumi_digitalocean/get_images.py @@ -82,54 +82,7 @@ def get_images(filters: Optional[Sequence[pulumi.InputType['GetImagesFilterArgs' sorts: Optional[Sequence[pulumi.InputType['GetImagesSortArgs']]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetImagesResult: """ - 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, - all images will be returned. - - This data source is useful if the image in question is not managed by this provider or you need to utilize any - of the image's data. - - Note: You can use the `getImage` data source to obtain metadata - about a single image if you already know the `slug`, unique `name`, or `id` to retrieve. - - ## Example Usage - - Use the `filter` block with a `key` string and `values` list to filter images. - - For example to find all Ubuntu images: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - ubuntu = digitalocean.get_images(filters=[digitalocean.GetImagesFilterArgs( - key="distribution", - values=["Ubuntu"], - )]) - ``` - - You can filter on multiple fields and sort the results as well: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - available = digitalocean.get_images(filters=[ - digitalocean.GetImagesFilterArgs( - key="distribution", - values=["Ubuntu"], - ), - digitalocean.GetImagesFilterArgs( - key="regions", - values=["nyc3"], - ), - ], - sorts=[digitalocean.GetImagesSortArgs( - direction="desc", - key="created", - )]) - ``` - + Use this data source to access information about an existing resource. :param Sequence[pulumi.InputType['GetImagesFilterArgs']] filters: Filter the results. The `filter` block is documented below. diff --git a/sdk/python/pulumi_digitalocean/get_kubernetes_cluster.py b/sdk/python/pulumi_digitalocean/get_kubernetes_cluster.py index 846bcd8f..64ec5921 100644 --- a/sdk/python/pulumi_digitalocean/get_kubernetes_cluster.py +++ b/sdk/python/pulumi_digitalocean/get_kubernetes_cluster.py @@ -234,8 +234,7 @@ def get_kubernetes_cluster(name: Optional[str] = None, tags: Optional[Sequence[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetKubernetesClusterResult: """ - 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 this provider. - + Use this data source to access information about an existing resource. :param str name: The name of Kubernetes cluster. :param Sequence[str] tags: A list of tag names applied to the node pool. diff --git a/sdk/python/pulumi_digitalocean/get_kubernetes_versions.py b/sdk/python/pulumi_digitalocean/get_kubernetes_versions.py index e2c9dec8..4fd1e064 100644 --- a/sdk/python/pulumi_digitalocean/get_kubernetes_versions.py +++ b/sdk/python/pulumi_digitalocean/get_kubernetes_versions.py @@ -122,9 +122,6 @@ def get_kubernetes_versions(version_prefix: Optional[str] = None, node_count=3, )) ``` - - - :param str version_prefix: If provided, this provider will only return versions that match the string prefix. For example, `1.15.` will match all 1.15.x series releases. """ __args__ = dict() __args__['versionPrefix'] = version_prefix diff --git a/sdk/python/pulumi_digitalocean/get_load_balancer.py b/sdk/python/pulumi_digitalocean/get_load_balancer.py index d53b5f0c..392115f5 100644 --- a/sdk/python/pulumi_digitalocean/get_load_balancer.py +++ b/sdk/python/pulumi_digitalocean/get_load_balancer.py @@ -20,7 +20,7 @@ class GetLoadBalancerResult: """ A collection of values returned by getLoadBalancer. """ - def __init__(__self__, algorithm=None, droplet_ids=None, droplet_tag=None, enable_backend_keepalive=None, enable_proxy_protocol=None, forwarding_rules=None, healthcheck=None, id=None, ip=None, load_balancer_urn=None, name=None, redirect_http_to_https=None, region=None, status=None, sticky_sessions=None, vpc_uuid=None): + def __init__(__self__, algorithm=None, droplet_ids=None, droplet_tag=None, enable_backend_keepalive=None, enable_proxy_protocol=None, forwarding_rules=None, healthchecks=None, id=None, ip=None, load_balancer_urn=None, name=None, redirect_http_to_https=None, region=None, status=None, sticky_sessions=None, vpc_uuid=None): if algorithm and not isinstance(algorithm, str): raise TypeError("Expected argument 'algorithm' to be a str") pulumi.set(__self__, "algorithm", algorithm) @@ -39,9 +39,9 @@ def __init__(__self__, algorithm=None, droplet_ids=None, droplet_tag=None, enabl if forwarding_rules and not isinstance(forwarding_rules, list): raise TypeError("Expected argument 'forwarding_rules' to be a list") pulumi.set(__self__, "forwarding_rules", forwarding_rules) - if healthcheck and not isinstance(healthcheck, dict): - raise TypeError("Expected argument 'healthcheck' to be a dict") - pulumi.set(__self__, "healthcheck", healthcheck) + if healthchecks and not isinstance(healthchecks, list): + raise TypeError("Expected argument 'healthchecks' to be a list") + pulumi.set(__self__, "healthchecks", healthchecks) if id and not isinstance(id, str): raise TypeError("Expected argument 'id' to be a str") pulumi.set(__self__, "id", id) @@ -63,8 +63,8 @@ def __init__(__self__, algorithm=None, droplet_ids=None, droplet_tag=None, enabl if status and not isinstance(status, str): raise TypeError("Expected argument 'status' to be a str") pulumi.set(__self__, "status", status) - if sticky_sessions and not isinstance(sticky_sessions, dict): - raise TypeError("Expected argument 'sticky_sessions' to be a dict") + if sticky_sessions and not isinstance(sticky_sessions, list): + raise TypeError("Expected argument 'sticky_sessions' to be a list") pulumi.set(__self__, "sticky_sessions", sticky_sessions) if vpc_uuid and not isinstance(vpc_uuid, str): raise TypeError("Expected argument 'vpc_uuid' to be a str") @@ -102,8 +102,8 @@ def forwarding_rules(self) -> Sequence['outputs.GetLoadBalancerForwardingRuleRes @property @pulumi.getter - def healthcheck(self) -> 'outputs.GetLoadBalancerHealthcheckResult': - return pulumi.get(self, "healthcheck") + def healthchecks(self) -> Sequence['outputs.GetLoadBalancerHealthcheckResult']: + return pulumi.get(self, "healthchecks") @property @pulumi.getter @@ -145,7 +145,7 @@ def status(self) -> str: @property @pulumi.getter(name="stickySessions") - def sticky_sessions(self) -> 'outputs.GetLoadBalancerStickySessionsResult': + def sticky_sessions(self) -> Sequence['outputs.GetLoadBalancerStickySessionResult']: return pulumi.get(self, "sticky_sessions") @property @@ -166,7 +166,7 @@ def __await__(self): enable_backend_keepalive=self.enable_backend_keepalive, enable_proxy_protocol=self.enable_proxy_protocol, forwarding_rules=self.forwarding_rules, - healthcheck=self.healthcheck, + healthchecks=self.healthchecks, id=self.id, ip=self.ip, load_balancer_urn=self.load_balancer_urn, @@ -181,25 +181,7 @@ def __await__(self): def get_load_balancer(name: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetLoadBalancerResult: """ - 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 - account. This is useful if the load balancer in question is not managed by - this provider or you need to utilize any of the load balancers data. - - An error is triggered if the provided load balancer name does not exist. - - ## Example Usage - - Get the load balancer: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example = digitalocean.get_load_balancer(name="app") - pulumi.export("lbOutput", example.ip) - ``` - + Use this data source to access information about an existing resource. :param str name: The name of load balancer. """ @@ -218,7 +200,7 @@ def get_load_balancer(name: Optional[str] = None, enable_backend_keepalive=__ret__.enable_backend_keepalive, enable_proxy_protocol=__ret__.enable_proxy_protocol, forwarding_rules=__ret__.forwarding_rules, - healthcheck=__ret__.healthcheck, + healthchecks=__ret__.healthchecks, id=__ret__.id, ip=__ret__.ip, load_balancer_urn=__ret__.load_balancer_urn, diff --git a/sdk/python/pulumi_digitalocean/get_record.py b/sdk/python/pulumi_digitalocean/get_record.py index 1249519e..3baaeaf9 100644 --- a/sdk/python/pulumi_digitalocean/get_record.py +++ b/sdk/python/pulumi_digitalocean/get_record.py @@ -136,27 +136,7 @@ def get_record(domain: Optional[str] = None, name: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetRecordResult: """ - 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 - in question is not managed by this provider. - - An error is triggered if the provided domain name or record are not managed with - your DigitalOcean account. - - ## Example Usage - - Get data from a DNS record: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example = digitalocean.get_record(domain="example.com", - name="test") - pulumi.export("recordType", example.type) - pulumi.export("recordTtl", example.ttl) - ``` - + Use this data source to access information about an existing resource. :param str domain: The domain name of the record. :param str name: The name of the record. diff --git a/sdk/python/pulumi_digitalocean/get_records.py b/sdk/python/pulumi_digitalocean/get_records.py new file mode 100644 index 00000000..a384de80 --- /dev/null +++ b/sdk/python/pulumi_digitalocean/get_records.py @@ -0,0 +1,113 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union +from . import _utilities, _tables +from . import outputs +from ._inputs import * + +__all__ = [ + 'GetRecordsResult', + 'AwaitableGetRecordsResult', + 'get_records', +] + +@pulumi.output_type +class GetRecordsResult: + """ + A collection of values returned by getRecords. + """ + def __init__(__self__, domain=None, filters=None, id=None, records=None, sorts=None): + if domain and not isinstance(domain, str): + raise TypeError("Expected argument 'domain' to be a str") + pulumi.set(__self__, "domain", domain) + if filters and not isinstance(filters, list): + raise TypeError("Expected argument 'filters' to be a list") + pulumi.set(__self__, "filters", filters) + if id and not isinstance(id, str): + raise TypeError("Expected argument 'id' to be a str") + pulumi.set(__self__, "id", id) + if records and not isinstance(records, list): + raise TypeError("Expected argument 'records' to be a list") + pulumi.set(__self__, "records", records) + if sorts and not isinstance(sorts, list): + raise TypeError("Expected argument 'sorts' to be a list") + pulumi.set(__self__, "sorts", sorts) + + @property + @pulumi.getter + def domain(self) -> str: + return pulumi.get(self, "domain") + + @property + @pulumi.getter + def filters(self) -> Optional[Sequence['outputs.GetRecordsFilterResult']]: + return pulumi.get(self, "filters") + + @property + @pulumi.getter + def id(self) -> str: + """ + The provider-assigned unique ID for this managed resource. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter + def records(self) -> Sequence['outputs.GetRecordsRecordResult']: + return pulumi.get(self, "records") + + @property + @pulumi.getter + def sorts(self) -> Optional[Sequence['outputs.GetRecordsSortResult']]: + return pulumi.get(self, "sorts") + + +class AwaitableGetRecordsResult(GetRecordsResult): + # pylint: disable=using-constant-test + def __await__(self): + if False: + yield self + return GetRecordsResult( + domain=self.domain, + filters=self.filters, + id=self.id, + records=self.records, + sorts=self.sorts) + + +def get_records(domain: Optional[str] = None, + filters: Optional[Sequence[pulumi.InputType['GetRecordsFilterArgs']]] = None, + sorts: Optional[Sequence[pulumi.InputType['GetRecordsSortArgs']]] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetRecordsResult: + """ + 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. + + + :param str domain: The domain name to search for DNS records + :param Sequence[pulumi.InputType['GetRecordsFilterArgs']] filters: Filter the results. + The `filter` block is documented below. + :param Sequence[pulumi.InputType['GetRecordsSortArgs']] sorts: Sort the results. + The `sort` block is documented below. + """ + __args__ = dict() + __args__['domain'] = domain + __args__['filters'] = filters + __args__['sorts'] = sorts + if opts is None: + opts = pulumi.InvokeOptions() + if opts.version is None: + opts.version = _utilities.get_version() + __ret__ = pulumi.runtime.invoke('digitalocean:index/getRecords:getRecords', __args__, opts=opts, typ=GetRecordsResult).value + + return AwaitableGetRecordsResult( + domain=__ret__.domain, + filters=__ret__.filters, + id=__ret__.id, + records=__ret__.records, + sorts=__ret__.sorts) diff --git a/sdk/python/pulumi_digitalocean/get_spaces_bucket.py b/sdk/python/pulumi_digitalocean/get_spaces_bucket.py index e5b224fe..bd3d1b99 100644 --- a/sdk/python/pulumi_digitalocean/get_spaces_bucket.py +++ b/sdk/python/pulumi_digitalocean/get_spaces_bucket.py @@ -94,22 +94,7 @@ def get_spaces_bucket(name: Optional[str] = None, region: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetSpacesBucketResult: """ - Get information on a Spaces bucket for use in other resources. This is useful if the Spaces bucket in question - is not managed by this provider or you need to utilize any of the bucket's data. - - ## Example Usage - - Get the bucket by name: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example = digitalocean.get_spaces_bucket(name="my-spaces-bucket", - region="nyc3") - pulumi.export("bucketDomainName", example.bucket_domain_name) - ``` - + Use this data source to access information about an existing resource. :param str name: The name of the Spaces bucket. :param str region: The slug of the region where the bucket is stored. diff --git a/sdk/python/pulumi_digitalocean/get_spaces_bucket_objects.py b/sdk/python/pulumi_digitalocean/get_spaces_bucket_objects.py index 55b1230d..f4a47bff 100644 --- a/sdk/python/pulumi_digitalocean/get_spaces_bucket_objects.py +++ b/sdk/python/pulumi_digitalocean/get_spaces_bucket_objects.py @@ -140,26 +140,7 @@ def get_spaces_bucket_objects(bucket: Optional[str] = None, region: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetSpacesBucketObjectsResult: """ - > **NOTE on `max_keys`:** Retrieving very large numbers of keys can adversely affect this provider's performance. - - The bucket-objects data source returns keys (i.e., file names) and other metadata about objects in a Spaces bucket. - - ## Example Usage - - The following example retrieves a list of all object keys in a Spaces bucket and creates corresponding object - data sources: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - my_objects = digitalocean.get_spaces_bucket_objects(bucket="ourcorp", - region="nyc3") - object_info = [digitalocean.get_spaces_bucket_object(key=my_objects.keys[__index], - bucket=my_objects.bucket, - region=my_objects.region) for __index in range(len(my_objects.keys))] - ``` - + Use this data source to access information about an existing resource. :param str bucket: Lists object keys in this Spaces bucket :param str delimiter: A character used to group keys (Default: none) diff --git a/sdk/python/pulumi_digitalocean/get_ssh_key.py b/sdk/python/pulumi_digitalocean/get_ssh_key.py index f877eced..1bacf603 100644 --- a/sdk/python/pulumi_digitalocean/get_ssh_key.py +++ b/sdk/python/pulumi_digitalocean/get_ssh_key.py @@ -72,29 +72,7 @@ def __await__(self): def get_ssh_key(name: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetSshKeyResult: """ - 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 - the ssh key in question is not managed by this provider or you need to utilize any - of the keys data. - - An error is triggered if the provided ssh key name does not exist. - - ## Example Usage - - Get the ssh key: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example_ssh_key = digitalocean.get_ssh_key(name="example") - example_droplet = digitalocean.Droplet("exampleDroplet", - image="ubuntu-18-04-x64", - region="nyc2", - size="s-1vcpu-1gb", - ssh_keys=[example_ssh_key.id]) - ``` - + Use this data source to access information about an existing resource. :param str name: The name of the ssh key. """ diff --git a/sdk/python/pulumi_digitalocean/get_tag.py b/sdk/python/pulumi_digitalocean/get_tag.py index b933232c..684afd02 100644 --- a/sdk/python/pulumi_digitalocean/get_tag.py +++ b/sdk/python/pulumi_digitalocean/get_tag.py @@ -126,28 +126,7 @@ def __await__(self): def get_tag(name: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetTagResult: """ - 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 - managed by this provider or you need validate if the tag exists in the account. - - An error is triggered if the provided tag name does not exist. - - ## Example Usage - - Get the tag: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example_tag = digitalocean.get_tag(name="example") - example_droplet = digitalocean.Droplet("exampleDroplet", - image="ubuntu-18-04-x64", - region="nyc2", - size="s-1vcpu-1gb", - tags=[example_tag.name]) - ``` - + Use this data source to access information about an existing resource. :param str name: The name of the tag. """ diff --git a/sdk/python/pulumi_digitalocean/get_volume.py b/sdk/python/pulumi_digitalocean/get_volume.py index 6c4796d7..d8c6d5fc 100644 --- a/sdk/python/pulumi_digitalocean/get_volume.py +++ b/sdk/python/pulumi_digitalocean/get_volume.py @@ -146,42 +146,7 @@ def get_volume(description: Optional[str] = None, region: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetVolumeResult: """ - 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 - useful if the volume in question is not managed by this provider or you need to utilize - any of the volumes data. - - An error is triggered if the provided volume name does not exist. - - ## Example Usage - - Get the volume: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example = digitalocean.get_volume(name="app-data", - region="nyc3") - ``` - - Reuse the data about a volume to attach it to a Droplet: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example_volume = digitalocean.get_volume(name="app-data", - region="nyc3") - example_droplet = digitalocean.Droplet("exampleDroplet", - size="s-1vcpu-1gb", - image="ubuntu-18-04-x64", - region="nyc3") - foobar = digitalocean.VolumeAttachment("foobar", - droplet_id=example_droplet.id, - volume_id=example_volume.id) - ``` - + Use this data source to access information about an existing resource. :param str description: Text describing a block storage volume. :param str name: The name of block storage volume. diff --git a/sdk/python/pulumi_digitalocean/get_vpc.py b/sdk/python/pulumi_digitalocean/get_vpc.py index e078e675..c3219822 100644 --- a/sdk/python/pulumi_digitalocean/get_vpc.py +++ b/sdk/python/pulumi_digitalocean/get_vpc.py @@ -131,39 +131,7 @@ def get_vpc(id: Optional[str] = None, region: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetVpcResult: """ - Retrieve information about a VPC for use in other resources. - - This data source provides all of the VPC's properties as configured on your - DigitalOcean account. This is useful if the VPC in question is not managed by - this provider or you need to utilize any of the VPC's data. - - VPCs may be looked up by `id` or `name`. Specifying a `region` will - return that that region's default VPC. - - ## Example Usage - ### VPC By Name - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example = digitalocean.get_vpc(name="example-network") - ``` - - Reuse the data about a VPC to assign a Droplet to it: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example_vpc = digitalocean.get_vpc(name="example-network") - example_droplet = digitalocean.Droplet("exampleDroplet", - size="s-1vcpu-1gb", - image="ubuntu-18-04-x64", - region="nyc3", - vpc_uuid=example_vpc.id) - ``` - + Use this data source to access information about an existing resource. :param str id: The unique identifier of an existing VPC. :param str name: The name of an existing VPC. diff --git a/sdk/python/pulumi_digitalocean/kubernetes_cluster.py b/sdk/python/pulumi_digitalocean/kubernetes_cluster.py index 05b967b2..29bdbde7 100644 --- a/sdk/python/pulumi_digitalocean/kubernetes_cluster.py +++ b/sdk/python/pulumi_digitalocean/kubernetes_cluster.py @@ -29,69 +29,7 @@ def __init__(__self__, __name__=None, __opts__=None): """ - Provides a DigitalOcean Kubernetes cluster resource. This can be used to create, delete, and modify clusters. For more information see the [official documentation](https://www.digitalocean.com/docs/kubernetes/). - - ## Example Usage - ### Basic Example - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - foo = digitalocean.KubernetesCluster("foo", - node_pool=digitalocean.KubernetesClusterNodePoolArgs( - name="worker-pool", - node_count=3, - size="s-2vcpu-2gb", - ), - region="nyc1", - version="1.15.5-do.1") - ``` - ### Autoscaling Example - - Node pools may also be configured to [autoscale](https://www.digitalocean.com/docs/kubernetes/how-to/autoscale/). - For example: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - foo = digitalocean.KubernetesCluster("foo", - node_pool=digitalocean.KubernetesClusterNodePoolArgs( - auto_scale=True, - max_nodes=5, - min_nodes=1, - name="autoscale-worker-pool", - size="s-2vcpu-2gb", - ), - region="nyc1", - version="1.15.5-do.1") - ``` - - Note that, while individual node pools may scale to 0, a cluster must always include at least one node. - ### Auto Upgrade Example - - DigitalOcean Kubernetes clusters may also be configured to [auto upgrade](https://www.digitalocean.com/docs/kubernetes/how-to/upgrade-cluster/#automatically) patch versions. - For example: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - example = digitalocean.get_kubernetes_versions(version_prefix="1.18.") - foo = digitalocean.KubernetesCluster("foo", - region="nyc1", - auto_upgrade=True, - version=example.latest_version, - node_pool=digitalocean.KubernetesClusterNodePoolArgs( - name="default", - size="s-1vcpu-2gb", - node_count=3, - )) - ``` - - Note that a data source is used to supply the version. This is needed to prevent configuration diff whenever a cluster is upgraded. - + Create a KubernetesCluster resource with the given unique name, props, and options. :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[bool] auto_upgrade: A boolean value indicating whether the cluster will be automatically upgraded to new patch releases during its maintenance window. diff --git a/sdk/python/pulumi_digitalocean/load_balancer.py b/sdk/python/pulumi_digitalocean/load_balancer.py index 14c19c5d..d6d3f278 100644 --- a/sdk/python/pulumi_digitalocean/load_balancer.py +++ b/sdk/python/pulumi_digitalocean/load_balancer.py @@ -36,6 +36,64 @@ def __init__(__self__, Provides a DigitalOcean Load Balancer resource. This can be used to create, modify, and delete Load Balancers. + ## Example Usage + + ```python + import pulumi + import pulumi_digitalocean as digitalocean + + web = digitalocean.Droplet("web", + size="s-1vcpu-1gb", + image="ubuntu-18-04-x64", + region="nyc3") + public = digitalocean.LoadBalancer("public", + region="nyc3", + forwarding_rules=[digitalocean.LoadBalancerForwardingRuleArgs( + entry_port=80, + entry_protocol="http", + target_port=80, + target_protocol="http", + )], + healthcheck=digitalocean.LoadBalancerHealthcheckArgs( + port=22, + protocol="tcp", + ), + droplet_ids=[web.id]) + ``` + + When managing certificates attached to the load balancer, make sure to add the `create_before_destroy` + lifecycle property in order to ensure the certificate is correctly updated when changed. The order of + operations will then be: `Create new certificate` > `Update loadbalancer with new certificate` -> + `Delete old certificate`. When doing so, you must also change the name of the certificate, + as there cannot be multiple certificates with the same name in an account. + + ```python + import pulumi + import pulumi_digitalocean as digitalocean + + cert = digitalocean.Certificate("cert", + private_key="file('key.pem')", + leaf_certificate="file('cert.pem')") + web = digitalocean.Droplet("web", + size="s-1vcpu-1gb", + image="ubuntu-18-04-x64", + region="nyc3") + public = digitalocean.LoadBalancer("public", + region="nyc3", + forwarding_rules=[digitalocean.LoadBalancerForwardingRuleArgs( + entry_port=443, + entry_protocol="https", + target_port=80, + target_protocol="http", + certificate_name=cert.name, + )], + healthcheck=digitalocean.LoadBalancerHealthcheckArgs( + port=22, + protocol="tcp", + ), + droplet_ids=[web.id]) + ``` + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] algorithm: The load balancing algorithm used to determine diff --git a/sdk/python/pulumi_digitalocean/outputs.py b/sdk/python/pulumi_digitalocean/outputs.py index 6e4b8771..057fad26 100644 --- a/sdk/python/pulumi_digitalocean/outputs.py +++ b/sdk/python/pulumi_digitalocean/outputs.py @@ -78,10 +78,13 @@ 'GetKubernetesClusterNodePoolNodeResult', 'GetLoadBalancerForwardingRuleResult', 'GetLoadBalancerHealthcheckResult', - 'GetLoadBalancerStickySessionsResult', + 'GetLoadBalancerStickySessionResult', 'GetProjectsFilterResult', 'GetProjectsProjectResult', 'GetProjectsSortResult', + 'GetRecordsFilterResult', + 'GetRecordsRecordResult', + 'GetRecordsSortResult', 'GetRegionsFilterResult', 'GetRegionsRegionResult', 'GetRegionsSortResult', @@ -2014,13 +2017,15 @@ def __init__(__self__, *, target_port: int, target_protocol: str, certificate_id: Optional[str] = None, + certificate_name: Optional[str] = None, tls_passthrough: Optional[bool] = None): """ :param int entry_port: An integer representing the port on which the Load Balancer instance will listen. :param str entry_protocol: The protocol used for traffic to the Load Balancer. The possible values are: `http`, `https`, `http2` or `tcp`. :param int target_port: An integer representing the port on the backend Droplets to which the Load Balancer will send traffic. :param str target_protocol: The protocol used for traffic from the Load Balancer to the backend Droplets. The possible values are: `http`, `https`, `http2` or `tcp`. - :param str certificate_id: The ID of the TLS certificate to be used for SSL termination. + :param str certificate_id: **Deprecated** The ID of the TLS certificate to be used for SSL termination. + :param str certificate_name: The unique name of the TLS certificate to be used for SSL termination. :param bool tls_passthrough: A boolean value indicating whether SSL encrypted traffic will be passed through to the backend Droplets. The default value is `false`. """ pulumi.set(__self__, "entry_port", entry_port) @@ -2029,6 +2034,8 @@ def __init__(__self__, *, pulumi.set(__self__, "target_protocol", target_protocol) if certificate_id is not None: pulumi.set(__self__, "certificate_id", certificate_id) + if certificate_name is not None: + pulumi.set(__self__, "certificate_name", certificate_name) if tls_passthrough is not None: pulumi.set(__self__, "tls_passthrough", tls_passthrough) @@ -2068,10 +2075,18 @@ def target_protocol(self) -> str: @pulumi.getter(name="certificateId") def certificate_id(self) -> Optional[str]: """ - The ID of the TLS certificate to be used for SSL termination. + **Deprecated** The ID of the TLS certificate to be used for SSL termination. """ return pulumi.get(self, "certificate_id") + @property + @pulumi.getter(name="certificateName") + def certificate_name(self) -> Optional[str]: + """ + The unique name of the TLS certificate to be used for SSL termination. + """ + return pulumi.get(self, "certificate_name") + @property @pulumi.getter(name="tlsPassthrough") def tls_passthrough(self) -> Optional[bool]: @@ -4177,6 +4192,7 @@ def match_by(self) -> Optional[str]: class GetImagesImageResult(dict): def __init__(__self__, *, created: str, + description: str, distribution: str, error_message: str, id: int, @@ -4205,6 +4221,7 @@ def __init__(__self__, *, - `error_message`: Any applicable error message pertaining to the image """ pulumi.set(__self__, "created", created) + pulumi.set(__self__, "description", description) pulumi.set(__self__, "distribution", distribution) pulumi.set(__self__, "error_message", error_message) pulumi.set(__self__, "id", id) @@ -4224,6 +4241,11 @@ def __init__(__self__, *, def created(self) -> str: return pulumi.get(self, "created") + @property + @pulumi.getter + def description(self) -> str: + return pulumi.get(self, "description") + @property @pulumi.getter def distribution(self) -> str: @@ -4724,7 +4746,7 @@ def unhealthy_threshold(self) -> int: @pulumi.output_type -class GetLoadBalancerStickySessionsResult(dict): +class GetLoadBalancerStickySessionResult(dict): def __init__(__self__, *, cookie_name: str, cookie_ttl_seconds: int, @@ -4970,6 +4992,191 @@ def direction(self) -> Optional[str]: return pulumi.get(self, "direction") +@pulumi.output_type +class GetRecordsFilterResult(dict): + def __init__(__self__, *, + key: str, + values: Sequence[str], + all: Optional[bool] = None, + match_by: Optional[str] = None): + """ + :param str key: Filter the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + :param Sequence[str] values: A list of values to match against the `key` field. Only retrieves projects + where the `key` field takes on one or more of the values provided here. + :param bool all: Set to `true` to require that a field match all of the `values` instead of just one or more of + them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure + that all of the `values` are present in the list or set. + :param str match_by: One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to + match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as + substrings to find within the string field. + """ + pulumi.set(__self__, "key", key) + pulumi.set(__self__, "values", values) + if all is not None: + pulumi.set(__self__, "all", all) + if match_by is not None: + pulumi.set(__self__, "match_by", match_by) + + @property + @pulumi.getter + def key(self) -> str: + """ + Filter the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + """ + return pulumi.get(self, "key") + + @property + @pulumi.getter + def values(self) -> Sequence[str]: + """ + A list of values to match against the `key` field. Only retrieves projects + where the `key` field takes on one or more of the values provided here. + """ + return pulumi.get(self, "values") + + @property + @pulumi.getter + def all(self) -> Optional[bool]: + """ + Set to `true` to require that a field match all of the `values` instead of just one or more of + them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure + that all of the `values` are present in the list or set. + """ + return pulumi.get(self, "all") + + @property + @pulumi.getter(name="matchBy") + def match_by(self) -> Optional[str]: + """ + One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to + match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as + substrings to find within the string field. + """ + return pulumi.get(self, "match_by") + + +@pulumi.output_type +class GetRecordsRecordResult(dict): + def __init__(__self__, *, + domain: str, + flags: int, + id: int, + name: str, + port: int, + priority: int, + tag: str, + ttl: int, + type: str, + value: str, + weight: int): + """ + :param str domain: The domain name to search for DNS records + """ + pulumi.set(__self__, "domain", domain) + pulumi.set(__self__, "flags", flags) + pulumi.set(__self__, "id", id) + pulumi.set(__self__, "name", name) + pulumi.set(__self__, "port", port) + pulumi.set(__self__, "priority", priority) + pulumi.set(__self__, "tag", tag) + pulumi.set(__self__, "ttl", ttl) + pulumi.set(__self__, "type", type) + pulumi.set(__self__, "value", value) + pulumi.set(__self__, "weight", weight) + + @property + @pulumi.getter + def domain(self) -> str: + """ + The domain name to search for DNS records + """ + return pulumi.get(self, "domain") + + @property + @pulumi.getter + def flags(self) -> int: + return pulumi.get(self, "flags") + + @property + @pulumi.getter + def id(self) -> int: + return pulumi.get(self, "id") + + @property + @pulumi.getter + def name(self) -> str: + return pulumi.get(self, "name") + + @property + @pulumi.getter + def port(self) -> int: + return pulumi.get(self, "port") + + @property + @pulumi.getter + def priority(self) -> int: + return pulumi.get(self, "priority") + + @property + @pulumi.getter + def tag(self) -> str: + return pulumi.get(self, "tag") + + @property + @pulumi.getter + def ttl(self) -> int: + return pulumi.get(self, "ttl") + + @property + @pulumi.getter + def type(self) -> str: + return pulumi.get(self, "type") + + @property + @pulumi.getter + def value(self) -> str: + return pulumi.get(self, "value") + + @property + @pulumi.getter + def weight(self) -> int: + return pulumi.get(self, "weight") + + +@pulumi.output_type +class GetRecordsSortResult(dict): + def __init__(__self__, *, + key: str, + direction: Optional[str] = None): + """ + :param str key: Sort the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + :param str direction: The sort direction. This may be either `asc` or `desc`. + """ + pulumi.set(__self__, "key", key) + if direction is not None: + pulumi.set(__self__, "direction", direction) + + @property + @pulumi.getter + def key(self) -> str: + """ + Sort the projects by this key. This may be one of `domain`, `flags`, `name`, `port`, + `priority`, `tag`, `ttl`, `type`, `value`, or `weight`. + """ + return pulumi.get(self, "key") + + @property + @pulumi.getter + def direction(self) -> Optional[str]: + """ + The sort direction. This may be either `asc` or `desc`. + """ + return pulumi.get(self, "direction") + + @pulumi.output_type class GetRegionsFilterResult(dict): def __init__(__self__, *, diff --git a/sdk/python/pulumi_digitalocean/project.py b/sdk/python/pulumi_digitalocean/project.py index 25cd408c..af880124 100644 --- a/sdk/python/pulumi_digitalocean/project.py +++ b/sdk/python/pulumi_digitalocean/project.py @@ -24,55 +24,7 @@ def __init__(__self__, __name__=None, __opts__=None): """ - Provides a DigitalOcean Project resource. - - Projects allow you to organize your resources into groups that fit the way you work. - You can group resources (like Droplets, Spaces, Load Balancers, domains, and Floating IPs) - in ways that align with the applications you host on DigitalOcean. - - The following resource types can be associated with a project: - - * Database Clusters - * Domains - * Droplets - * Floating IP - * Load Balancers - * Spaces Bucket - * Volume - - **Note:** A managed project cannot be set as a default project. - - ## Example Usage - - The following example demonstrates the creation of an empty project: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - playground = digitalocean.Project("playground", - description="A project to represent development resources.", - environment="Development", - purpose="Web Application") - ``` - - The following example demonstrates the creation of a project with a Droplet resource: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - foobar = digitalocean.Droplet("foobar", - size="512mb", - image="centos-7-x64", - region="nyc3") - playground = digitalocean.Project("playground", - description="A project to represent development resources.", - purpose="Web Application", - environment="Development", - resources=[foobar.droplet_urn]) - ``` - + Create a Project resource with the given unique name, props, and options. :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] description: the description of the project diff --git a/sdk/python/pulumi_digitalocean/project_resources.py b/sdk/python/pulumi_digitalocean/project_resources.py index 1f7efb08..f74e4c43 100644 --- a/sdk/python/pulumi_digitalocean/project_resources.py +++ b/sdk/python/pulumi_digitalocean/project_resources.py @@ -21,37 +21,7 @@ def __init__(__self__, __name__=None, __opts__=None): """ - Assign resources to a DigitalOcean Project. This is useful if you need to assign resources - managed this provider to a DigitalOcean Project that is unmanaged by the provider. - - The following resource types can be associated with a project: - - * Database Clusters - * Domains - * Droplets - * Floating IP - * Load Balancers - * Spaces Bucket - * Volume - - ## Example Usage - - The following example assigns a droplet to a Project managed outside of this provider: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - playground = digitalocean.get_project(name="playground") - foobar = digitalocean.Droplet("foobar", - size="512mb", - image="centos-7-x64", - region="nyc3") - barfoo = digitalocean.ProjectResources("barfoo", - project=data["digitalocean_project"]["foo"]["id"], - resources=[foobar.droplet_urn]) - ``` - + Create a ProjectResources resource with the given unique name, props, and options. :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] project: the ID of the project diff --git a/sdk/python/pulumi_digitalocean/spaces_bucket_object.py b/sdk/python/pulumi_digitalocean/spaces_bucket_object.py index 036695bc..10d7373c 100644 --- a/sdk/python/pulumi_digitalocean/spaces_bucket_object.py +++ b/sdk/python/pulumi_digitalocean/spaces_bucket_object.py @@ -35,48 +35,7 @@ def __init__(__self__, __name__=None, __opts__=None): """ - Provides a bucket object resource for Spaces, DigitalOcean's object storage product. - The `SpacesBucketObject` resource allows this provider to upload content - to Spaces. - - The [Spaces API](https://developers.digitalocean.com/documentation/spaces/) was - designed to be interoperable with Amazon's AWS S3 API. This allows users to - interact with the service while using the tools they already know. Spaces - mirrors S3's authentication framework and requests to Spaces require a key pair - similar to Amazon's Access ID and Secret Key. - - The authentication requirement can be met by either setting the - `SPACES_ACCESS_KEY_ID` and `SPACES_SECRET_ACCESS_KEY` environment variables or - the provider's `spaces_access_id` and `spaces_secret_key` arguments to the - access ID and secret you generate via the DigitalOcean control panel. For - example: - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - static_assets = digitalocean.SpacesBucket("static-assets") - # ... - ``` - - For more information, See [An Introduction to DigitalOcean Spaces](https://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-spaces) - - ## Example Usage - ### Create a Key in a Spaces Bucket - - ```python - import pulumi - import pulumi_digitalocean as digitalocean - - foobar = digitalocean.SpacesBucket("foobar", region="nyc3") - index = digitalocean.SpacesBucketObject("index", - region=foobar.region, - bucket=foobar.name, - key="index.html", - content="

This page is empty.

", - content_type="text/html") - ``` - + Create a SpacesBucketObject resource with the given unique name, props, and options. :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] acl: The canned ACL to apply. DigitalOcean supports "private" and "public-read". (Defaults to "private".) @@ -88,7 +47,9 @@ def __init__(__self__, :param pulumi.Input[str] content_encoding: Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. :param pulumi.Input[str] content_language: The language the content is in e.g. en-US or en-GB. :param pulumi.Input[str] content_type: A standard MIME type describing the format of the object data, e.g. application/octet-stream. All Valid MIME Types are valid for this input. - :param pulumi.Input[str] etag: Used to trigger updates. The only meaningful value is `${filemd5("path/to/file")}`. + :param pulumi.Input[str] etag: the ETag generated for the object (an MD5 sum of the object content). The hash is an MD5 digest of the + object data. For objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 + digest. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). :param pulumi.Input[bool] force_destroy: Allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. :param pulumi.Input[str] key: The name of the object once it is in the bucket. @@ -180,7 +141,9 @@ def get(resource_name: str, :param pulumi.Input[str] content_encoding: Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. :param pulumi.Input[str] content_language: The language the content is in e.g. en-US or en-GB. :param pulumi.Input[str] content_type: A standard MIME type describing the format of the object data, e.g. application/octet-stream. All Valid MIME Types are valid for this input. - :param pulumi.Input[str] etag: Used to trigger updates. The only meaningful value is `${filemd5("path/to/file")}`. + :param pulumi.Input[str] etag: the ETag generated for the object (an MD5 sum of the object content). The hash is an MD5 digest of the + object data. For objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 + digest. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). :param pulumi.Input[bool] force_destroy: Allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. :param pulumi.Input[str] key: The name of the object once it is in the bucket. @@ -289,7 +252,9 @@ def content_type(self) -> pulumi.Output[str]: @pulumi.getter def etag(self) -> pulumi.Output[str]: """ - Used to trigger updates. The only meaningful value is `${filemd5("path/to/file")}`. + the ETag generated for the object (an MD5 sum of the object content). The hash is an MD5 digest of the + object data. For objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 + digest. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). """ return pulumi.get(self, "etag") diff --git a/sdk/python/pulumi_digitalocean/ssh_key.py b/sdk/python/pulumi_digitalocean/ssh_key.py index a4e01f2f..eae4aeb6 100644 --- a/sdk/python/pulumi_digitalocean/ssh_key.py +++ b/sdk/python/pulumi_digitalocean/ssh_key.py @@ -33,7 +33,7 @@ def __init__(__self__, import pulumi_digitalocean as digitalocean # Create a new SSH key - default = digitalocean.SshKey("default", public_key=(lambda path: open(path).read())("/Users/myuser/.ssh/id_rsa.pub")) + default = digitalocean.SshKey("default", public_key=(lambda path: open(path).read())("/Users/terraform/.ssh/id_rsa.pub")) # Create a new Droplet using the SSH key web = digitalocean.Droplet("web", image="ubuntu-18-04-x64",