diff --git a/patches/0002-Add-Go-module-version-to-upstream-go.mod.patch b/patches/0002-Add-Go-module-version-to-upstream-go.mod.patch index c52347ff..eedbd72d 100644 --- a/patches/0002-Add-Go-module-version-to-upstream-go.mod.patch +++ b/patches/0002-Add-Go-module-version-to-upstream-go.mod.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add Go module version to upstream go.mod diff --git a/go.mod b/go.mod -index 093f6183..8a3b61fa 100644 +index 4cd5c97a..14bf33e7 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ diff --git a/provider/cmd/pulumi-resource-confluentcloud/bridge-metadata.json b/provider/cmd/pulumi-resource-confluentcloud/bridge-metadata.json index 57ac3942..ed0c3ba0 100644 --- a/provider/cmd/pulumi-resource-confluentcloud/bridge-metadata.json +++ b/provider/cmd/pulumi-resource-confluentcloud/bridge-metadata.json @@ -100,6 +100,28 @@ } } }, + "confluent_certificate_authority": { + "current": "confluentcloud:index/certificateAuthority:CertificateAuthority", + "fields": { + "expiration_dates": { + "maxItemsOne": false + }, + "fingerprints": { + "maxItemsOne": false + }, + "serial_numbers": { + "maxItemsOne": false + } + } + }, + "confluent_certificate_pool": { + "current": "confluentcloud:index/certificatePool:CertificatePool", + "fields": { + "certificate_authority": { + "maxItemsOne": true + } + } + }, "confluent_cluster_link": { "current": "confluentcloud:index/clusterLink:ClusterLink", "fields": { @@ -842,6 +864,28 @@ } } }, + "confluent_certificate_authority": { + "current": "confluentcloud:index/getCertificateAuthority:getCertificateAuthority", + "fields": { + "expiration_dates": { + "maxItemsOne": false + }, + "fingerprints": { + "maxItemsOne": false + }, + "serial_numbers": { + "maxItemsOne": false + } + } + }, + "confluent_certificate_pool": { + "current": "confluentcloud:index/getCertificatePool:getCertificatePool", + "fields": { + "certificate_authority": { + "maxItemsOne": true + } + } + }, "confluent_dns_record": { "current": "confluentcloud:index/getDnsRecord:getDnsRecord", "fields": { diff --git a/provider/cmd/pulumi-resource-confluentcloud/schema.json b/provider/cmd/pulumi-resource-confluentcloud/schema.json index 1d119e69..22c08030 100644 --- a/provider/cmd/pulumi-resource-confluentcloud/schema.json +++ b/provider/cmd/pulumi-resource-confluentcloud/schema.json @@ -554,6 +554,19 @@ "id" ] }, + "confluentcloud:index/CertificatePoolCertificateAuthority:CertificatePoolCertificateAuthority": { + "properties": { + "id": { + "type": "string", + "description": "The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`.\n", + "willReplaceOnChanges": true + } + }, + "type": "object", + "required": [ + "id" + ] + }, "confluentcloud:index/ClusterLinkDestinationKafkaCluster:ClusterLinkDestinationKafkaCluster": { "properties": { "bootstrapEndpoint": { @@ -2874,6 +2887,18 @@ } } }, + "confluentcloud:index/getCertificatePoolCertificateAuthority:getCertificatePoolCertificateAuthority": { + "properties": { + "id": { + "type": "string", + "description": "The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`.\n" + } + }, + "type": "object", + "required": [ + "id" + ] + }, "confluentcloud:index/getDnsRecordEnvironment:getDnsRecordEnvironment": { "properties": { "id": { @@ -5634,6 +5659,258 @@ "type": "object" } }, + "confluentcloud:index/certificateAuthority:CertificateAuthority": { + "description": "[![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n`confluentcloud.CertificateAuthority` provides a Certificate Authority resource that enables creating, editing, and deleting Certificate Authorities on Confluent Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = new confluentcloud.CertificateAuthority(\"main\", {\n displayName: \"my_certificate_authority\",\n description: \"description\",\n certificateChainFilename: \"certificate.pem\",\n certificateChain: \"***REDACTED***\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.CertificateAuthority(\"main\",\n display_name=\"my_certificate_authority\",\n description=\"description\",\n certificate_chain_filename=\"certificate.pem\",\n certificate_chain=\"***REDACTED***\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new ConfluentCloud.CertificateAuthority(\"main\", new()\n {\n DisplayName = \"my_certificate_authority\",\n Description = \"description\",\n CertificateChainFilename = \"certificate.pem\",\n CertificateChain = \"***REDACTED***\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewCertificateAuthority(ctx, \"main\", \u0026confluentcloud.CertificateAuthorityArgs{\n\t\t\tDisplayName: pulumi.String(\"my_certificate_authority\"),\n\t\t\tDescription: pulumi.String(\"description\"),\n\t\t\tCertificateChainFilename: pulumi.String(\"certificate.pem\"),\n\t\t\tCertificateChain: pulumi.String(\"***REDACTED***\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.CertificateAuthority;\nimport com.pulumi.confluentcloud.CertificateAuthorityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new CertificateAuthority(\"main\", CertificateAuthorityArgs.builder()\n .displayName(\"my_certificate_authority\")\n .description(\"description\")\n .certificateChainFilename(\"certificate.pem\")\n .certificateChain(\"***REDACTED***\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: confluentcloud:CertificateAuthority\n properties:\n displayName: my_certificate_authority\n description: description\n certificateChainFilename: certificate.pem\n certificateChain: '***REDACTED***'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nYou can import a Certificate Authority by using Certificate Authority ID, for example:\n\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n\n```sh\n$ pulumi import confluentcloud:index/certificateAuthority:CertificateAuthority main op-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n", + "properties": { + "certificateChain": { + "type": "string", + "description": "A base64 encoded string containing the signing certificate chain.\n", + "secret": true + }, + "certificateChainFilename": { + "type": "string", + "description": "The name of the certificate file.\n" + }, + "crlChain": { + "type": "string", + "description": "A base64 encoded string containing the CRL for this certificate authority.\n", + "secret": true + }, + "crlSource": { + "type": "string", + "description": "(Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL).\n" + }, + "crlUpdatedAt": { + "type": "string", + "description": "(Optional String) The timestamp for when CRL was last updated.\n" + }, + "crlUrl": { + "type": "string", + "description": "The url from which to fetch the CRL for the certificate authority.\n" + }, + "description": { + "type": "string", + "description": "A description of the Certificate Authority.\n" + }, + "displayName": { + "type": "string", + "description": "The name of the Certificate Authority.\n" + }, + "expirationDates": { + "type": "array", + "items": { + "type": "string" + }, + "description": "(Required List of Strings) The expiration dates of certificates in the chain.\n" + }, + "fingerprints": { + "type": "array", + "items": { + "type": "string" + }, + "description": "(Required List of Strings) The fingerprints for each certificate in the certificate chain.\n" + }, + "serialNumbers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "(Required List of Strings) The serial numbers for each certificate in the certificate chain.\n" + } + }, + "required": [ + "certificateChain", + "certificateChainFilename", + "crlSource", + "crlUpdatedAt", + "description", + "displayName", + "expirationDates", + "fingerprints", + "serialNumbers" + ], + "inputProperties": { + "certificateChain": { + "type": "string", + "description": "A base64 encoded string containing the signing certificate chain.\n", + "secret": true + }, + "certificateChainFilename": { + "type": "string", + "description": "The name of the certificate file.\n" + }, + "crlChain": { + "type": "string", + "description": "A base64 encoded string containing the CRL for this certificate authority.\n", + "secret": true + }, + "crlUrl": { + "type": "string", + "description": "The url from which to fetch the CRL for the certificate authority.\n" + }, + "description": { + "type": "string", + "description": "A description of the Certificate Authority.\n" + }, + "displayName": { + "type": "string", + "description": "The name of the Certificate Authority.\n" + } + }, + "requiredInputs": [ + "certificateChain", + "certificateChainFilename", + "description", + "displayName" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering CertificateAuthority resources.\n", + "properties": { + "certificateChain": { + "type": "string", + "description": "A base64 encoded string containing the signing certificate chain.\n", + "secret": true + }, + "certificateChainFilename": { + "type": "string", + "description": "The name of the certificate file.\n" + }, + "crlChain": { + "type": "string", + "description": "A base64 encoded string containing the CRL for this certificate authority.\n", + "secret": true + }, + "crlSource": { + "type": "string", + "description": "(Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL).\n" + }, + "crlUpdatedAt": { + "type": "string", + "description": "(Optional String) The timestamp for when CRL was last updated.\n" + }, + "crlUrl": { + "type": "string", + "description": "The url from which to fetch the CRL for the certificate authority.\n" + }, + "description": { + "type": "string", + "description": "A description of the Certificate Authority.\n" + }, + "displayName": { + "type": "string", + "description": "The name of the Certificate Authority.\n" + }, + "expirationDates": { + "type": "array", + "items": { + "type": "string" + }, + "description": "(Required List of Strings) The expiration dates of certificates in the chain.\n" + }, + "fingerprints": { + "type": "array", + "items": { + "type": "string" + }, + "description": "(Required List of Strings) The fingerprints for each certificate in the certificate chain.\n" + }, + "serialNumbers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "(Required List of Strings) The serial numbers for each certificate in the certificate chain.\n" + } + }, + "type": "object" + } + }, + "confluentcloud:index/certificatePool:CertificatePool": { + "description": "[![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n`confluentcloud.CertificatePool` provides a Certificate Pool resource that enables creating, editing, and deleting Certificate Pools on Confluent Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = new confluentcloud.CertificatePool(\"main\", {\n certificateAuthority: {\n id: mainConfluentCertificateAuthority.id,\n },\n displayName: \"my-certificate-pool\",\n description: \"example description\",\n externalIdentifier: \"CN\",\n filter: \"CN == \\\"test\\\"\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.CertificatePool(\"main\",\n certificate_authority={\n \"id\": main_confluent_certificate_authority[\"id\"],\n },\n display_name=\"my-certificate-pool\",\n description=\"example description\",\n external_identifier=\"CN\",\n filter=\"CN == \\\"test\\\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new ConfluentCloud.CertificatePool(\"main\", new()\n {\n CertificateAuthority = new ConfluentCloud.Inputs.CertificatePoolCertificateAuthorityArgs\n {\n Id = mainConfluentCertificateAuthority.Id,\n },\n DisplayName = \"my-certificate-pool\",\n Description = \"example description\",\n ExternalIdentifier = \"CN\",\n Filter = \"CN == \\\"test\\\"\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewCertificatePool(ctx, \"main\", \u0026confluentcloud.CertificatePoolArgs{\n\t\t\tCertificateAuthority: \u0026confluentcloud.CertificatePoolCertificateAuthorityArgs{\n\t\t\t\tId: pulumi.Any(mainConfluentCertificateAuthority.Id),\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"my-certificate-pool\"),\n\t\t\tDescription: pulumi.String(\"example description\"),\n\t\t\tExternalIdentifier: pulumi.String(\"CN\"),\n\t\t\tFilter: pulumi.String(\"CN == \\\"test\\\"\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.CertificatePool;\nimport com.pulumi.confluentcloud.CertificatePoolArgs;\nimport com.pulumi.confluentcloud.inputs.CertificatePoolCertificateAuthorityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new CertificatePool(\"main\", CertificatePoolArgs.builder()\n .certificateAuthority(CertificatePoolCertificateAuthorityArgs.builder()\n .id(mainConfluentCertificateAuthority.id())\n .build())\n .displayName(\"my-certificate-pool\")\n .description(\"example description\")\n .externalIdentifier(\"CN\")\n .filter(\"CN == \\\"test\\\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: confluentcloud:CertificatePool\n properties:\n certificateAuthority:\n id: ${mainConfluentCertificateAuthority.id}\n displayName: my-certificate-pool\n description: example description\n externalIdentifier: CN\n filter: CN == \"test\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nYou can import a Certificate Pool by using Certificate Authority ID and Certificate Pool ID, in the format `\u003cCertificate Authority ID\u003e/\u003cCertificate Pool ID\u003e`. The following example shows how to import a Certificate Pool:\n\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n\n```sh\n$ pulumi import confluentcloud:index/certificatePool:CertificatePool main op-abc123/pool-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n", + "properties": { + "certificateAuthority": { + "$ref": "#/types/confluentcloud:index/CertificatePoolCertificateAuthority:CertificatePoolCertificateAuthority" + }, + "description": { + "type": "string", + "description": "A description of the Certificate Pool.\n" + }, + "displayName": { + "type": "string", + "description": "The name of the Certificate Pool.\n" + }, + "externalIdentifier": { + "type": "string", + "description": "The certificate field that will be used to represent the pool's external identity for audit logging.\n" + }, + "filter": { + "type": "string", + "description": "A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool.\n" + } + }, + "required": [ + "certificateAuthority", + "description", + "displayName", + "externalIdentifier", + "filter" + ], + "inputProperties": { + "certificateAuthority": { + "$ref": "#/types/confluentcloud:index/CertificatePoolCertificateAuthority:CertificatePoolCertificateAuthority", + "willReplaceOnChanges": true + }, + "description": { + "type": "string", + "description": "A description of the Certificate Pool.\n" + }, + "displayName": { + "type": "string", + "description": "The name of the Certificate Pool.\n" + }, + "externalIdentifier": { + "type": "string", + "description": "The certificate field that will be used to represent the pool's external identity for audit logging.\n" + }, + "filter": { + "type": "string", + "description": "A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool.\n" + } + }, + "requiredInputs": [ + "certificateAuthority", + "description", + "displayName", + "externalIdentifier", + "filter" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering CertificatePool resources.\n", + "properties": { + "certificateAuthority": { + "$ref": "#/types/confluentcloud:index/CertificatePoolCertificateAuthority:CertificatePoolCertificateAuthority", + "willReplaceOnChanges": true + }, + "description": { + "type": "string", + "description": "A description of the Certificate Pool.\n" + }, + "displayName": { + "type": "string", + "description": "The name of the Certificate Pool.\n" + }, + "externalIdentifier": { + "type": "string", + "description": "The certificate field that will be used to represent the pool's external identity for audit logging.\n" + }, + "filter": { + "type": "string", + "description": "A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool.\n" + } + }, + "type": "object" + } + }, "confluentcloud:index/clusterLink:ClusterLink": { "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\n// https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/cluster-links-cc.html#create-a-cluster-link-in-bidirectional-mode\nconst east_to_west = new confluentcloud.ClusterLink(\"east-to-west\", {\n link: \"bidirectional-link\",\n linkMode: \"BIDIRECTIONAL\",\n localKafkaCluster: {\n id: east.id,\n restEndpoint: east.restEndpoint,\n credentials: {\n key: app_manager_east_cluster_api_key.id,\n secret: app_manager_east_cluster_api_key.secret,\n },\n },\n remoteKafkaCluster: {\n id: west.id,\n bootstrapEndpoint: west.bootstrapEndpoint,\n credentials: {\n key: app_manager_west_cluster_api_key.id,\n secret: app_manager_west_cluster_api_key.secret,\n },\n },\n});\nconst west_to_east = new confluentcloud.ClusterLink(\"west-to-east\", {\n link: \"bidirectional-link\",\n linkMode: \"BIDIRECTIONAL\",\n localKafkaCluster: {\n id: west.id,\n restEndpoint: west.restEndpoint,\n credentials: {\n key: app_manager_west_cluster_api_key.id,\n secret: app_manager_west_cluster_api_key.secret,\n },\n },\n remoteKafkaCluster: {\n id: east.id,\n bootstrapEndpoint: east.bootstrapEndpoint,\n credentials: {\n key: app_manager_east_cluster_api_key.id,\n secret: app_manager_east_cluster_api_key.secret,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\n# https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/cluster-links-cc.html#create-a-cluster-link-in-bidirectional-mode\neast_to_west = confluentcloud.ClusterLink(\"east-to-west\",\n link=\"bidirectional-link\",\n link_mode=\"BIDIRECTIONAL\",\n local_kafka_cluster={\n \"id\": east[\"id\"],\n \"rest_endpoint\": east[\"restEndpoint\"],\n \"credentials\": {\n \"key\": app_manager_east_cluster_api_key[\"id\"],\n \"secret\": app_manager_east_cluster_api_key[\"secret\"],\n },\n },\n remote_kafka_cluster={\n \"id\": west[\"id\"],\n \"bootstrap_endpoint\": west[\"bootstrapEndpoint\"],\n \"credentials\": {\n \"key\": app_manager_west_cluster_api_key[\"id\"],\n \"secret\": app_manager_west_cluster_api_key[\"secret\"],\n },\n })\nwest_to_east = confluentcloud.ClusterLink(\"west-to-east\",\n link=\"bidirectional-link\",\n link_mode=\"BIDIRECTIONAL\",\n local_kafka_cluster={\n \"id\": west[\"id\"],\n \"rest_endpoint\": west[\"restEndpoint\"],\n \"credentials\": {\n \"key\": app_manager_west_cluster_api_key[\"id\"],\n \"secret\": app_manager_west_cluster_api_key[\"secret\"],\n },\n },\n remote_kafka_cluster={\n \"id\": east[\"id\"],\n \"bootstrap_endpoint\": east[\"bootstrapEndpoint\"],\n \"credentials\": {\n \"key\": app_manager_east_cluster_api_key[\"id\"],\n \"secret\": app_manager_east_cluster_api_key[\"secret\"],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/cluster-links-cc.html#create-a-cluster-link-in-bidirectional-mode\n var east_to_west = new ConfluentCloud.ClusterLink(\"east-to-west\", new()\n {\n Link = \"bidirectional-link\",\n LinkMode = \"BIDIRECTIONAL\",\n LocalKafkaCluster = new ConfluentCloud.Inputs.ClusterLinkLocalKafkaClusterArgs\n {\n Id = east.Id,\n RestEndpoint = east.RestEndpoint,\n Credentials = new ConfluentCloud.Inputs.ClusterLinkLocalKafkaClusterCredentialsArgs\n {\n Key = app_manager_east_cluster_api_key.Id,\n Secret = app_manager_east_cluster_api_key.Secret,\n },\n },\n RemoteKafkaCluster = new ConfluentCloud.Inputs.ClusterLinkRemoteKafkaClusterArgs\n {\n Id = west.Id,\n BootstrapEndpoint = west.BootstrapEndpoint,\n Credentials = new ConfluentCloud.Inputs.ClusterLinkRemoteKafkaClusterCredentialsArgs\n {\n Key = app_manager_west_cluster_api_key.Id,\n Secret = app_manager_west_cluster_api_key.Secret,\n },\n },\n });\n\n var west_to_east = new ConfluentCloud.ClusterLink(\"west-to-east\", new()\n {\n Link = \"bidirectional-link\",\n LinkMode = \"BIDIRECTIONAL\",\n LocalKafkaCluster = new ConfluentCloud.Inputs.ClusterLinkLocalKafkaClusterArgs\n {\n Id = west.Id,\n RestEndpoint = west.RestEndpoint,\n Credentials = new ConfluentCloud.Inputs.ClusterLinkLocalKafkaClusterCredentialsArgs\n {\n Key = app_manager_west_cluster_api_key.Id,\n Secret = app_manager_west_cluster_api_key.Secret,\n },\n },\n RemoteKafkaCluster = new ConfluentCloud.Inputs.ClusterLinkRemoteKafkaClusterArgs\n {\n Id = east.Id,\n BootstrapEndpoint = east.BootstrapEndpoint,\n Credentials = new ConfluentCloud.Inputs.ClusterLinkRemoteKafkaClusterCredentialsArgs\n {\n Key = app_manager_east_cluster_api_key.Id,\n Secret = app_manager_east_cluster_api_key.Secret,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/cluster-links-cc.html#create-a-cluster-link-in-bidirectional-mode\n\t\t_, err := confluentcloud.NewClusterLink(ctx, \"east-to-west\", \u0026confluentcloud.ClusterLinkArgs{\n\t\t\tLink: pulumi.String(\"bidirectional-link\"),\n\t\t\tLinkMode: pulumi.String(\"BIDIRECTIONAL\"),\n\t\t\tLocalKafkaCluster: \u0026confluentcloud.ClusterLinkLocalKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(east.Id),\n\t\t\t\tRestEndpoint: pulumi.Any(east.RestEndpoint),\n\t\t\t\tCredentials: \u0026confluentcloud.ClusterLinkLocalKafkaClusterCredentialsArgs{\n\t\t\t\t\tKey: pulumi.Any(app_manager_east_cluster_api_key.Id),\n\t\t\t\t\tSecret: pulumi.Any(app_manager_east_cluster_api_key.Secret),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRemoteKafkaCluster: \u0026confluentcloud.ClusterLinkRemoteKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(west.Id),\n\t\t\t\tBootstrapEndpoint: pulumi.Any(west.BootstrapEndpoint),\n\t\t\t\tCredentials: \u0026confluentcloud.ClusterLinkRemoteKafkaClusterCredentialsArgs{\n\t\t\t\t\tKey: pulumi.Any(app_manager_west_cluster_api_key.Id),\n\t\t\t\t\tSecret: pulumi.Any(app_manager_west_cluster_api_key.Secret),\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\t_, err = confluentcloud.NewClusterLink(ctx, \"west-to-east\", \u0026confluentcloud.ClusterLinkArgs{\n\t\t\tLink: pulumi.String(\"bidirectional-link\"),\n\t\t\tLinkMode: pulumi.String(\"BIDIRECTIONAL\"),\n\t\t\tLocalKafkaCluster: \u0026confluentcloud.ClusterLinkLocalKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(west.Id),\n\t\t\t\tRestEndpoint: pulumi.Any(west.RestEndpoint),\n\t\t\t\tCredentials: \u0026confluentcloud.ClusterLinkLocalKafkaClusterCredentialsArgs{\n\t\t\t\t\tKey: pulumi.Any(app_manager_west_cluster_api_key.Id),\n\t\t\t\t\tSecret: pulumi.Any(app_manager_west_cluster_api_key.Secret),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRemoteKafkaCluster: \u0026confluentcloud.ClusterLinkRemoteKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(east.Id),\n\t\t\t\tBootstrapEndpoint: pulumi.Any(east.BootstrapEndpoint),\n\t\t\t\tCredentials: \u0026confluentcloud.ClusterLinkRemoteKafkaClusterCredentialsArgs{\n\t\t\t\t\tKey: pulumi.Any(app_manager_east_cluster_api_key.Id),\n\t\t\t\t\tSecret: pulumi.Any(app_manager_east_cluster_api_key.Secret),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ClusterLink;\nimport com.pulumi.confluentcloud.ClusterLinkArgs;\nimport com.pulumi.confluentcloud.inputs.ClusterLinkLocalKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.ClusterLinkLocalKafkaClusterCredentialsArgs;\nimport com.pulumi.confluentcloud.inputs.ClusterLinkRemoteKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.ClusterLinkRemoteKafkaClusterCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/cluster-links-cc.html#create-a-cluster-link-in-bidirectional-mode\n var east_to_west = new ClusterLink(\"east-to-west\", ClusterLinkArgs.builder()\n .link(\"bidirectional-link\")\n .linkMode(\"BIDIRECTIONAL\")\n .localKafkaCluster(ClusterLinkLocalKafkaClusterArgs.builder()\n .id(east.id())\n .restEndpoint(east.restEndpoint())\n .credentials(ClusterLinkLocalKafkaClusterCredentialsArgs.builder()\n .key(app_manager_east_cluster_api_key.id())\n .secret(app_manager_east_cluster_api_key.secret())\n .build())\n .build())\n .remoteKafkaCluster(ClusterLinkRemoteKafkaClusterArgs.builder()\n .id(west.id())\n .bootstrapEndpoint(west.bootstrapEndpoint())\n .credentials(ClusterLinkRemoteKafkaClusterCredentialsArgs.builder()\n .key(app_manager_west_cluster_api_key.id())\n .secret(app_manager_west_cluster_api_key.secret())\n .build())\n .build())\n .build());\n\n var west_to_east = new ClusterLink(\"west-to-east\", ClusterLinkArgs.builder()\n .link(\"bidirectional-link\")\n .linkMode(\"BIDIRECTIONAL\")\n .localKafkaCluster(ClusterLinkLocalKafkaClusterArgs.builder()\n .id(west.id())\n .restEndpoint(west.restEndpoint())\n .credentials(ClusterLinkLocalKafkaClusterCredentialsArgs.builder()\n .key(app_manager_west_cluster_api_key.id())\n .secret(app_manager_west_cluster_api_key.secret())\n .build())\n .build())\n .remoteKafkaCluster(ClusterLinkRemoteKafkaClusterArgs.builder()\n .id(east.id())\n .bootstrapEndpoint(east.bootstrapEndpoint())\n .credentials(ClusterLinkRemoteKafkaClusterCredentialsArgs.builder()\n .key(app_manager_east_cluster_api_key.id())\n .secret(app_manager_east_cluster_api_key.secret())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/cluster-links-cc.html#create-a-cluster-link-in-bidirectional-mode\n east-to-west:\n type: confluentcloud:ClusterLink\n properties:\n link: bidirectional-link\n linkMode: BIDIRECTIONAL\n localKafkaCluster:\n id: ${east.id}\n restEndpoint: ${east.restEndpoint}\n credentials:\n key: ${[\"app-manager-east-cluster-api-key\"].id}\n secret: ${[\"app-manager-east-cluster-api-key\"].secret}\n remoteKafkaCluster:\n id: ${west.id}\n bootstrapEndpoint: ${west.bootstrapEndpoint}\n credentials:\n key: ${[\"app-manager-west-cluster-api-key\"].id}\n secret: ${[\"app-manager-west-cluster-api-key\"].secret}\n west-to-east:\n type: confluentcloud:ClusterLink\n properties:\n link: bidirectional-link\n linkMode: BIDIRECTIONAL\n localKafkaCluster:\n id: ${west.id}\n restEndpoint: ${west.restEndpoint}\n credentials:\n key: ${[\"app-manager-west-cluster-api-key\"].id}\n secret: ${[\"app-manager-west-cluster-api-key\"].secret}\n remoteKafkaCluster:\n id: ${east.id}\n bootstrapEndpoint: ${east.bootstrapEndpoint}\n credentials:\n key: ${[\"app-manager-east-cluster-api-key\"].id}\n secret: ${[\"app-manager-east-cluster-api-key\"].secret}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with `confluentcloud.ClusterLink` resource:\n * `destination-initiated-cluster-link-rbac`: An example of setting up a _destination_ initiated cluster link with a mirror topic\n * `source-initiated-cluster-link-rbac`: An example of setting up a _source_ initiated cluster link with a mirror topic\n * `regular-bidirectional-cluster-link-rbac`: An example of setting up a bidirectional cluster link with 2 mirror topics\n * `advanced-bidirectional-cluster-link-rbac`: An example of setting up a bidirectional cluster link with 2 mirror topics ([advanced option](https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/cluster-links-cc.html#create-a-cluster-link-in-bidirectional-mode))\n\nSee [Cluster Linking on Confluent Cloud](https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/index.html) to learn more about Cluster Linking on Confluent Cloud.\n\n## Import\n\nYou can import a Kafka mirror topic by using the cluster link name, cluster link mode, cluster link connection mode,\n\nsource (or local for bidirectional cluster links) Kafka cluster ID, and destination (or remote for bidirectional cluster links) Kafka cluster ID, in the format `\u003cCluster link name\u003e/\u003cCluster link mode\u003e/\u003cCluster connection mode\u003e/\u003cSource (Local) Kafka cluster ID\u003e/\u003cDestination (Remote) Kafka cluster ID\u003e`, for example:\n\nOption #1 when using source-initiated or destination-initiated cluster links\n\n$ export IMPORT_SOURCE_KAFKA_BOOTSTRAP_ENDPOINT=\"\u003csource_kafka_bootstrap_endpoint\u003e\"\n\n$ export IMPORT_SOURCE_KAFKA_API_KEY=\"\u003csource_kafka_api_key\u003e\"\n\n$ export IMPORT_SOURCE_KAFKA_API_SECRET=\"\u003csource_kafka_api_secret\u003e\"\n\n$ export IMPORT_DESTINATION_KAFKA_REST_ENDPOINT=\"\u003cdestination_kafka_rest_endpoint\u003e\"\n\n$ export IMPORT_DESTINATION_KAFKA_API_KEY=\"\u003cdestination_kafka_api_key\u003e\"\n\n$ export IMPORT_DESTINATION_KAFKA_API_SECRET=\"\u003cdestination_kafka_api_secret\u003e\"\n\n```sh\n$ pulumi import confluentcloud:index/clusterLink:ClusterLink my_cluster_link my-cluster-link/DESTINATION/OUTBOUND/lkc-abc123/lkc-xyz456\n```\n\nOption #2 when using bidirectional cluster links\n\n$ export IMPORT_LOCAL_KAFKA_BOOTSTRAP_ENDPOINT=\"\u003clocal_kafka_bootstrap_endpoint\u003e\"\n\n$ export IMPORT_LOCAL_KAFKA_API_KEY=\"\u003clocal_kafka_api_key\u003e\"\n\n$ export IMPORT_LOCAL_KAFKA_API_SECRET=\"\u003clocal_kafka_api_secret\u003e\"\n\n$ export IMPORT_REMOTE_KAFKA_REST_ENDPOINT=\"\u003cremote_kafka_rest_endpoint\u003e\"\n\n$ export IMPORT_REMOTE_KAFKA_API_KEY=\"\u003cremote_kafka_api_key\u003e\"\n\n$ export IMPORT_REMOTE_KAFKA_API_SECRET=\"\u003cremote_kafka_api_secret\u003e\"\n\n```sh\n$ pulumi import confluentcloud:index/clusterLink:ClusterLink my_cluster_link my-cluster-link/BIDIRECTIONAL/OUTBOUND/lkc-abc123/lkc-xyz456\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n", "properties": { @@ -10558,6 +10835,156 @@ "type": "object" } }, + "confluentcloud:index/getCertificateAuthority:getCertificateAuthority": { + "description": "[![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n`confluentcloud.CertificateAuthority` describes a Certificate Authority data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getCertificateAuthority({\n id: \"op-abc123\",\n});\nexport const certificateAuthority = main;\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_certificate_authority(id=\"op-abc123\")\npulumi.export(\"certificateAuthority\", main)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = ConfluentCloud.GetCertificateAuthority.Invoke(new()\n {\n Id = \"op-abc123\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"certificateAuthority\"] = main,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupCertificateAuthority(ctx, \u0026confluentcloud.LookupCertificateAuthorityArgs{\n\t\t\tId: \"op-abc123\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"certificateAuthority\", main)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetCertificateAuthorityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var main = ConfluentcloudFunctions.getCertificateAuthority(GetCertificateAuthorityArgs.builder()\n .id(\"op-abc123\")\n .build());\n\n ctx.export(\"certificateAuthority\", main.applyValue(getCertificateAuthorityResult -\u003e getCertificateAuthorityResult));\n }\n}\n```\n```yaml\nvariables:\n main:\n fn::invoke:\n Function: confluentcloud:getCertificateAuthority\n Arguments:\n id: op-abc123\noutputs:\n certificateAuthority: ${main}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "inputs": { + "description": "A collection of arguments for invoking getCertificateAuthority.\n", + "properties": { + "crlSource": { + "type": "string", + "description": "(Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`.\n" + }, + "crlUpdatedAt": { + "type": "string", + "description": "(Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`.\n" + }, + "crlUrl": { + "type": "string", + "description": "(Optional String) The url from which to fetch the CRL for the certificate authority if crl_source is URL.\n" + }, + "id": { + "type": "string", + "description": "The ID of the Certificate Authority, for example, `op-abc123`.\n" + } + }, + "type": "object", + "required": [ + "id" + ] + }, + "outputs": { + "description": "A collection of values returned by getCertificateAuthority.\n", + "properties": { + "certificateChainFilename": { + "description": "(Required String) The name of the certificate file, for example, `certificate.pem`.\n", + "type": "string" + }, + "crlSource": { + "description": "(Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`.\n", + "type": "string" + }, + "crlUpdatedAt": { + "description": "(Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`.\n", + "type": "string" + }, + "crlUrl": { + "description": "(Optional String) The url from which to fetch the CRL for the certificate authority if crl_source is URL.\n", + "type": "string" + }, + "description": { + "description": "(Required String) A description for the Certificate Authority.\n", + "type": "string" + }, + "displayName": { + "description": "(Required String) A human-readable name for the Certificate Authority.\n", + "type": "string" + }, + "expirationDates": { + "description": "(Required List of Strings) The expiration dates of certificates in the chain, for example, `[\"2017-07-21T17:32:28Z\"]`.\n", + "items": { + "type": "string" + }, + "type": "array" + }, + "fingerprints": { + "description": "(Required List of Strings) The fingerprints for each certificate in the certificate chain, for example, `[\"B1BC968BD4f49D622AA89A81F2150152A41D829C\"]`.\n", + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "serialNumbers": { + "description": "(Required List of Strings) The serial numbers for each certificate in the certificate chain.\n", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "certificateChainFilename", + "crlSource", + "crlUpdatedAt", + "crlUrl", + "description", + "displayName", + "expirationDates", + "fingerprints", + "id", + "serialNumbers" + ], + "type": "object" + } + }, + "confluentcloud:index/getCertificatePool:getCertificatePool": { + "description": "[![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n`confluentcloud.CertificatePool` describes a Certificate Pool data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getCertificatePool({\n id: \"pool-def456\",\n certificateAuthority: {\n id: \"op-abc123\",\n },\n});\nexport const certificatePool = main;\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_certificate_pool(id=\"pool-def456\",\n certificate_authority={\n \"id\": \"op-abc123\",\n })\npulumi.export(\"certificatePool\", main)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = ConfluentCloud.GetCertificatePool.Invoke(new()\n {\n Id = \"pool-def456\",\n CertificateAuthority = new ConfluentCloud.Inputs.GetCertificatePoolCertificateAuthorityInputArgs\n {\n Id = \"op-abc123\",\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"certificatePool\"] = main,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupCertificatePool(ctx, \u0026confluentcloud.LookupCertificatePoolArgs{\n\t\t\tId: \"pool-def456\",\n\t\t\tCertificateAuthority: confluentcloud.GetCertificatePoolCertificateAuthority{\n\t\t\t\tId: \"op-abc123\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"certificatePool\", main)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetCertificatePoolArgs;\nimport com.pulumi.confluentcloud.inputs.GetCertificatePoolCertificateAuthorityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var main = ConfluentcloudFunctions.getCertificatePool(GetCertificatePoolArgs.builder()\n .id(\"pool-def456\")\n .certificateAuthority(GetCertificatePoolCertificateAuthorityArgs.builder()\n .id(\"op-abc123\")\n .build())\n .build());\n\n ctx.export(\"certificatePool\", main.applyValue(getCertificatePoolResult -\u003e getCertificatePoolResult));\n }\n}\n```\n```yaml\nvariables:\n main:\n fn::invoke:\n Function: confluentcloud:getCertificatePool\n Arguments:\n id: pool-def456\n certificateAuthority:\n id: op-abc123\noutputs:\n certificatePool: ${main}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "inputs": { + "description": "A collection of arguments for invoking getCertificatePool.\n", + "properties": { + "certificateAuthority": { + "$ref": "#/types/confluentcloud:index/getCertificatePoolCertificateAuthority:getCertificatePoolCertificateAuthority" + }, + "id": { + "type": "string", + "description": "The ID of the Certificate Pool, for example, `pool-abc123`.\n" + } + }, + "type": "object", + "required": [ + "certificateAuthority", + "id" + ] + }, + "outputs": { + "description": "A collection of values returned by getCertificatePool.\n", + "properties": { + "certificateAuthority": { + "$ref": "#/types/confluentcloud:index/getCertificatePoolCertificateAuthority:getCertificatePoolCertificateAuthority" + }, + "description": { + "description": "(Required String) A description of the Certificate Pool.\n", + "type": "string" + }, + "displayName": { + "description": "(Required String) A human-readable name for the Certificate Pool.\n", + "type": "string" + }, + "externalIdentifier": { + "description": "(Required String) The certificate field that will be used to represent the pool's external identity for audit logging, for example, `UID`.\n", + "type": "string" + }, + "filter": { + "description": "(Required String) A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool.\n", + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "certificateAuthority", + "description", + "displayName", + "externalIdentifier", + "filter", + "id" + ], + "type": "object" + } + }, "confluentcloud:index/getDnsRecord:getDnsRecord": { "description": "[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n`confluentcloud.DnsRecord` describes a DNS Record data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getDnsRecord({\n id: \"dnsrec-abc123\",\n environment: {\n id: \"env-123abc\",\n },\n});\nexport const dnsRecord = main;\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_dns_record(id=\"dnsrec-abc123\",\n environment={\n \"id\": \"env-123abc\",\n })\npulumi.export(\"dnsRecord\", main)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = ConfluentCloud.GetDnsRecord.Invoke(new()\n {\n Id = \"dnsrec-abc123\",\n Environment = new ConfluentCloud.Inputs.GetDnsRecordEnvironmentInputArgs\n {\n Id = \"env-123abc\",\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dnsRecord\"] = main,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupDnsRecord(ctx, \u0026confluentcloud.LookupDnsRecordArgs{\n\t\t\tId: \"dnsrec-abc123\",\n\t\t\tEnvironment: confluentcloud.GetDnsRecordEnvironment{\n\t\t\t\tId: \"env-123abc\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dnsRecord\", main)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetDnsRecordArgs;\nimport com.pulumi.confluentcloud.inputs.GetDnsRecordEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var main = ConfluentcloudFunctions.getDnsRecord(GetDnsRecordArgs.builder()\n .id(\"dnsrec-abc123\")\n .environment(GetDnsRecordEnvironmentArgs.builder()\n .id(\"env-123abc\")\n .build())\n .build());\n\n ctx.export(\"dnsRecord\", main.applyValue(getDnsRecordResult -\u003e getDnsRecordResult));\n }\n}\n```\n```yaml\nvariables:\n main:\n fn::invoke:\n Function: confluentcloud:getDnsRecord\n Arguments:\n id: dnsrec-abc123\n environment:\n id: env-123abc\noutputs:\n dnsRecord: ${main}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { diff --git a/provider/go.mod b/provider/go.mod index 77acb749..ec0c3c2c 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -74,6 +74,7 @@ require ( github.com/cloudflare/circl v1.3.7 // indirect github.com/confluentinc/ccloud-sdk-go-v2/apikeys v0.3.0 // indirect github.com/confluentinc/ccloud-sdk-go-v2/byok v0.0.2 // indirect + github.com/confluentinc/ccloud-sdk-go-v2/certificate-authority v0.0.0-20240921001517-750d06dd7c27 // indirect github.com/confluentinc/ccloud-sdk-go-v2/cmk v0.21.0 // indirect github.com/confluentinc/ccloud-sdk-go-v2/connect v0.2.0 // indirect github.com/confluentinc/ccloud-sdk-go-v2/connect-custom-plugin v0.0.2 // indirect diff --git a/provider/go.sum b/provider/go.sum index c41d38e5..99288c1c 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -1337,6 +1337,8 @@ github.com/confluentinc/ccloud-sdk-go-v2/apikeys v0.3.0 h1:7AixGTQ3QRYRfmVEJRIs0 github.com/confluentinc/ccloud-sdk-go-v2/apikeys v0.3.0/go.mod h1:wNa9Qg2e2v/+PQsUyKh+qB22hhLkPR6Ahy6rP+1jmGI= github.com/confluentinc/ccloud-sdk-go-v2/byok v0.0.2 h1:BV/dPTFVovJPylrcr9lcSmukCVxBxyUeHBr6hp7zUNk= github.com/confluentinc/ccloud-sdk-go-v2/byok v0.0.2/go.mod h1:MMtRTfg1g32bQrRwfqvGpe+grS5pQzeq9V+L5GKydV4= +github.com/confluentinc/ccloud-sdk-go-v2/certificate-authority v0.0.0-20240921001517-750d06dd7c27 h1:prbOJKQGZ6VgBFRDN3mzE942apQnlS5d68L7HyA2Gz8= +github.com/confluentinc/ccloud-sdk-go-v2/certificate-authority v0.0.0-20240921001517-750d06dd7c27/go.mod h1:xqB2YHUtcYF5cbwctSDzXoYw0YXaawj13d0lzcvphEA= github.com/confluentinc/ccloud-sdk-go-v2/cmk v0.21.0 h1:ioG3TsP8FwskPtwitfGfvBgTdprYKutHB0oxG5F4Dj8= github.com/confluentinc/ccloud-sdk-go-v2/cmk v0.21.0/go.mod h1:WndyhYUqeH7usVOfh+3g9CpVPqHWxIkJqopSISD0pGg= github.com/confluentinc/ccloud-sdk-go-v2/connect v0.2.0 h1:rEb3sxzKCZvZCnEZ10WyGqkVIdlqxJGbmP85/4C4YdE= diff --git a/sdk/dotnet/CertificateAuthority.cs b/sdk/dotnet/CertificateAuthority.cs new file mode 100644 index 00000000..f8ff8cc7 --- /dev/null +++ b/sdk/dotnet/CertificateAuthority.cs @@ -0,0 +1,345 @@ +// *** 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.ConfluentCloud +{ + /// + /// [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + /// + /// `confluentcloud.CertificateAuthority` provides a Certificate Authority resource that enables creating, editing, and deleting Certificate Authorities on Confluent Cloud. + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using ConfluentCloud = Pulumi.ConfluentCloud; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var main = new ConfluentCloud.CertificateAuthority("main", new() + /// { + /// DisplayName = "my_certificate_authority", + /// Description = "description", + /// CertificateChainFilename = "certificate.pem", + /// CertificateChain = "***REDACTED***", + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// You can import a Certificate Authority by using Certificate Authority ID, for example: + /// + /// $ export CONFLUENT_CLOUD_API_KEY="<cloud_api_key>" + /// + /// $ export CONFLUENT_CLOUD_API_SECRET="<cloud_api_secret>" + /// + /// ```sh + /// $ pulumi import confluentcloud:index/certificateAuthority:CertificateAuthority main op-abc123 + /// ``` + /// + /// !> **Warning:** Do not forget to delete terminal command history afterwards for security purposes. + /// + [ConfluentCloudResourceType("confluentcloud:index/certificateAuthority:CertificateAuthority")] + public partial class CertificateAuthority : global::Pulumi.CustomResource + { + /// + /// A base64 encoded string containing the signing certificate chain. + /// + [Output("certificateChain")] + public Output CertificateChain { get; private set; } = null!; + + /// + /// The name of the certificate file. + /// + [Output("certificateChainFilename")] + public Output CertificateChainFilename { get; private set; } = null!; + + /// + /// A base64 encoded string containing the CRL for this certificate authority. + /// + [Output("crlChain")] + public Output CrlChain { get; private set; } = null!; + + /// + /// (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). + /// + [Output("crlSource")] + public Output CrlSource { get; private set; } = null!; + + /// + /// (Optional String) The timestamp for when CRL was last updated. + /// + [Output("crlUpdatedAt")] + public Output CrlUpdatedAt { get; private set; } = null!; + + /// + /// The url from which to fetch the CRL for the certificate authority. + /// + [Output("crlUrl")] + public Output CrlUrl { get; private set; } = null!; + + /// + /// A description of the Certificate Authority. + /// + [Output("description")] + public Output Description { get; private set; } = null!; + + /// + /// The name of the Certificate Authority. + /// + [Output("displayName")] + public Output DisplayName { get; private set; } = null!; + + /// + /// (Required List of Strings) The expiration dates of certificates in the chain. + /// + [Output("expirationDates")] + public Output> ExpirationDates { get; private set; } = null!; + + /// + /// (Required List of Strings) The fingerprints for each certificate in the certificate chain. + /// + [Output("fingerprints")] + public Output> Fingerprints { get; private set; } = null!; + + /// + /// (Required List of Strings) The serial numbers for each certificate in the certificate chain. + /// + [Output("serialNumbers")] + public Output> SerialNumbers { get; private set; } = null!; + + + /// + /// Create a CertificateAuthority resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public CertificateAuthority(string name, CertificateAuthorityArgs args, CustomResourceOptions? options = null) + : base("confluentcloud:index/certificateAuthority:CertificateAuthority", name, args ?? new CertificateAuthorityArgs(), MakeResourceOptions(options, "")) + { + } + + private CertificateAuthority(string name, Input id, CertificateAuthorityState? state = null, CustomResourceOptions? options = null) + : base("confluentcloud:index/certificateAuthority:CertificateAuthority", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + AdditionalSecretOutputs = + { + "certificateChain", + "crlChain", + }, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing CertificateAuthority resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static CertificateAuthority Get(string name, Input id, CertificateAuthorityState? state = null, CustomResourceOptions? options = null) + { + return new CertificateAuthority(name, id, state, options); + } + } + + public sealed class CertificateAuthorityArgs : global::Pulumi.ResourceArgs + { + [Input("certificateChain", required: true)] + private Input? _certificateChain; + + /// + /// A base64 encoded string containing the signing certificate chain. + /// + public Input? CertificateChain + { + get => _certificateChain; + set + { + var emptySecret = Output.CreateSecret(0); + _certificateChain = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// The name of the certificate file. + /// + [Input("certificateChainFilename", required: true)] + public Input CertificateChainFilename { get; set; } = null!; + + [Input("crlChain")] + private Input? _crlChain; + + /// + /// A base64 encoded string containing the CRL for this certificate authority. + /// + public Input? CrlChain + { + get => _crlChain; + set + { + var emptySecret = Output.CreateSecret(0); + _crlChain = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// The url from which to fetch the CRL for the certificate authority. + /// + [Input("crlUrl")] + public Input? CrlUrl { get; set; } + + /// + /// A description of the Certificate Authority. + /// + [Input("description", required: true)] + public Input Description { get; set; } = null!; + + /// + /// The name of the Certificate Authority. + /// + [Input("displayName", required: true)] + public Input DisplayName { get; set; } = null!; + + public CertificateAuthorityArgs() + { + } + public static new CertificateAuthorityArgs Empty => new CertificateAuthorityArgs(); + } + + public sealed class CertificateAuthorityState : global::Pulumi.ResourceArgs + { + [Input("certificateChain")] + private Input? _certificateChain; + + /// + /// A base64 encoded string containing the signing certificate chain. + /// + public Input? CertificateChain + { + get => _certificateChain; + set + { + var emptySecret = Output.CreateSecret(0); + _certificateChain = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// The name of the certificate file. + /// + [Input("certificateChainFilename")] + public Input? CertificateChainFilename { get; set; } + + [Input("crlChain")] + private Input? _crlChain; + + /// + /// A base64 encoded string containing the CRL for this certificate authority. + /// + public Input? CrlChain + { + get => _crlChain; + set + { + var emptySecret = Output.CreateSecret(0); + _crlChain = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). + /// + [Input("crlSource")] + public Input? CrlSource { get; set; } + + /// + /// (Optional String) The timestamp for when CRL was last updated. + /// + [Input("crlUpdatedAt")] + public Input? CrlUpdatedAt { get; set; } + + /// + /// The url from which to fetch the CRL for the certificate authority. + /// + [Input("crlUrl")] + public Input? CrlUrl { get; set; } + + /// + /// A description of the Certificate Authority. + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// The name of the Certificate Authority. + /// + [Input("displayName")] + public Input? DisplayName { get; set; } + + [Input("expirationDates")] + private InputList? _expirationDates; + + /// + /// (Required List of Strings) The expiration dates of certificates in the chain. + /// + public InputList ExpirationDates + { + get => _expirationDates ?? (_expirationDates = new InputList()); + set => _expirationDates = value; + } + + [Input("fingerprints")] + private InputList? _fingerprints; + + /// + /// (Required List of Strings) The fingerprints for each certificate in the certificate chain. + /// + public InputList Fingerprints + { + get => _fingerprints ?? (_fingerprints = new InputList()); + set => _fingerprints = value; + } + + [Input("serialNumbers")] + private InputList? _serialNumbers; + + /// + /// (Required List of Strings) The serial numbers for each certificate in the certificate chain. + /// + public InputList SerialNumbers + { + get => _serialNumbers ?? (_serialNumbers = new InputList()); + set => _serialNumbers = value; + } + + public CertificateAuthorityState() + { + } + public static new CertificateAuthorityState Empty => new CertificateAuthorityState(); + } +} diff --git a/sdk/dotnet/CertificatePool.cs b/sdk/dotnet/CertificatePool.cs new file mode 100644 index 00000000..20735e96 --- /dev/null +++ b/sdk/dotnet/CertificatePool.cs @@ -0,0 +1,199 @@ +// *** 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.ConfluentCloud +{ + /// + /// [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + /// + /// `confluentcloud.CertificatePool` provides a Certificate Pool resource that enables creating, editing, and deleting Certificate Pools on Confluent Cloud. + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using ConfluentCloud = Pulumi.ConfluentCloud; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var main = new ConfluentCloud.CertificatePool("main", new() + /// { + /// CertificateAuthority = new ConfluentCloud.Inputs.CertificatePoolCertificateAuthorityArgs + /// { + /// Id = mainConfluentCertificateAuthority.Id, + /// }, + /// DisplayName = "my-certificate-pool", + /// Description = "example description", + /// ExternalIdentifier = "CN", + /// Filter = "CN == \"test\"", + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// You can import a Certificate Pool by using Certificate Authority ID and Certificate Pool ID, in the format `<Certificate Authority ID>/<Certificate Pool ID>`. The following example shows how to import a Certificate Pool: + /// + /// $ export CONFLUENT_CLOUD_API_KEY="<cloud_api_key>" + /// + /// $ export CONFLUENT_CLOUD_API_SECRET="<cloud_api_secret>" + /// + /// ```sh + /// $ pulumi import confluentcloud:index/certificatePool:CertificatePool main op-abc123/pool-abc123 + /// ``` + /// + /// !> **Warning:** Do not forget to delete terminal command history afterwards for security purposes. + /// + [ConfluentCloudResourceType("confluentcloud:index/certificatePool:CertificatePool")] + public partial class CertificatePool : global::Pulumi.CustomResource + { + [Output("certificateAuthority")] + public Output CertificateAuthority { get; private set; } = null!; + + /// + /// A description of the Certificate Pool. + /// + [Output("description")] + public Output Description { get; private set; } = null!; + + /// + /// The name of the Certificate Pool. + /// + [Output("displayName")] + public Output DisplayName { get; private set; } = null!; + + /// + /// The certificate field that will be used to represent the pool's external identity for audit logging. + /// + [Output("externalIdentifier")] + public Output ExternalIdentifier { get; private set; } = null!; + + /// + /// A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + /// + [Output("filter")] + public Output Filter { get; private set; } = null!; + + + /// + /// Create a CertificatePool resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public CertificatePool(string name, CertificatePoolArgs args, CustomResourceOptions? options = null) + : base("confluentcloud:index/certificatePool:CertificatePool", name, args ?? new CertificatePoolArgs(), MakeResourceOptions(options, "")) + { + } + + private CertificatePool(string name, Input id, CertificatePoolState? state = null, CustomResourceOptions? options = null) + : base("confluentcloud:index/certificatePool:CertificatePool", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing CertificatePool resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static CertificatePool Get(string name, Input id, CertificatePoolState? state = null, CustomResourceOptions? options = null) + { + return new CertificatePool(name, id, state, options); + } + } + + public sealed class CertificatePoolArgs : global::Pulumi.ResourceArgs + { + [Input("certificateAuthority", required: true)] + public Input CertificateAuthority { get; set; } = null!; + + /// + /// A description of the Certificate Pool. + /// + [Input("description", required: true)] + public Input Description { get; set; } = null!; + + /// + /// The name of the Certificate Pool. + /// + [Input("displayName", required: true)] + public Input DisplayName { get; set; } = null!; + + /// + /// The certificate field that will be used to represent the pool's external identity for audit logging. + /// + [Input("externalIdentifier", required: true)] + public Input ExternalIdentifier { get; set; } = null!; + + /// + /// A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + /// + [Input("filter", required: true)] + public Input Filter { get; set; } = null!; + + public CertificatePoolArgs() + { + } + public static new CertificatePoolArgs Empty => new CertificatePoolArgs(); + } + + public sealed class CertificatePoolState : global::Pulumi.ResourceArgs + { + [Input("certificateAuthority")] + public Input? CertificateAuthority { get; set; } + + /// + /// A description of the Certificate Pool. + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// The name of the Certificate Pool. + /// + [Input("displayName")] + public Input? DisplayName { get; set; } + + /// + /// The certificate field that will be used to represent the pool's external identity for audit logging. + /// + [Input("externalIdentifier")] + public Input? ExternalIdentifier { get; set; } + + /// + /// A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + /// + [Input("filter")] + public Input? Filter { get; set; } + + public CertificatePoolState() + { + } + public static new CertificatePoolState Empty => new CertificatePoolState(); + } +} diff --git a/sdk/dotnet/GetCertificateAuthority.cs b/sdk/dotnet/GetCertificateAuthority.cs new file mode 100644 index 00000000..3fd40ba3 --- /dev/null +++ b/sdk/dotnet/GetCertificateAuthority.cs @@ -0,0 +1,216 @@ +// *** 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.ConfluentCloud +{ + public static class GetCertificateAuthority + { + /// + /// [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + /// + /// `confluentcloud.CertificateAuthority` describes a Certificate Authority data source. + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using ConfluentCloud = Pulumi.ConfluentCloud; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var main = ConfluentCloud.GetCertificateAuthority.Invoke(new() + /// { + /// Id = "op-abc123", + /// }); + /// + /// return new Dictionary<string, object?> + /// { + /// ["certificateAuthority"] = main, + /// }; + /// }); + /// ``` + /// + public static Task InvokeAsync(GetCertificateAuthorityArgs args, InvokeOptions? options = null) + => global::Pulumi.Deployment.Instance.InvokeAsync("confluentcloud:index/getCertificateAuthority:getCertificateAuthority", args ?? new GetCertificateAuthorityArgs(), options.WithDefaults()); + + /// + /// [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + /// + /// `confluentcloud.CertificateAuthority` describes a Certificate Authority data source. + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using ConfluentCloud = Pulumi.ConfluentCloud; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var main = ConfluentCloud.GetCertificateAuthority.Invoke(new() + /// { + /// Id = "op-abc123", + /// }); + /// + /// return new Dictionary<string, object?> + /// { + /// ["certificateAuthority"] = main, + /// }; + /// }); + /// ``` + /// + public static Output Invoke(GetCertificateAuthorityInvokeArgs args, InvokeOptions? options = null) + => global::Pulumi.Deployment.Instance.Invoke("confluentcloud:index/getCertificateAuthority:getCertificateAuthority", args ?? new GetCertificateAuthorityInvokeArgs(), options.WithDefaults()); + } + + + public sealed class GetCertificateAuthorityArgs : global::Pulumi.InvokeArgs + { + /// + /// (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + /// + [Input("crlSource")] + public string? CrlSource { get; set; } + + /// + /// (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + /// + [Input("crlUpdatedAt")] + public string? CrlUpdatedAt { get; set; } + + /// + /// (Optional String) The url from which to fetch the CRL for the certificate authority if crl_source is URL. + /// + [Input("crlUrl")] + public string? CrlUrl { get; set; } + + /// + /// The ID of the Certificate Authority, for example, `op-abc123`. + /// + [Input("id", required: true)] + public string Id { get; set; } = null!; + + public GetCertificateAuthorityArgs() + { + } + public static new GetCertificateAuthorityArgs Empty => new GetCertificateAuthorityArgs(); + } + + public sealed class GetCertificateAuthorityInvokeArgs : global::Pulumi.InvokeArgs + { + /// + /// (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + /// + [Input("crlSource")] + public Input? CrlSource { get; set; } + + /// + /// (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + /// + [Input("crlUpdatedAt")] + public Input? CrlUpdatedAt { get; set; } + + /// + /// (Optional String) The url from which to fetch the CRL for the certificate authority if crl_source is URL. + /// + [Input("crlUrl")] + public Input? CrlUrl { get; set; } + + /// + /// The ID of the Certificate Authority, for example, `op-abc123`. + /// + [Input("id", required: true)] + public Input Id { get; set; } = null!; + + public GetCertificateAuthorityInvokeArgs() + { + } + public static new GetCertificateAuthorityInvokeArgs Empty => new GetCertificateAuthorityInvokeArgs(); + } + + + [OutputType] + public sealed class GetCertificateAuthorityResult + { + /// + /// (Required String) The name of the certificate file, for example, `certificate.pem`. + /// + public readonly string CertificateChainFilename; + /// + /// (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + /// + public readonly string CrlSource; + /// + /// (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + /// + public readonly string CrlUpdatedAt; + /// + /// (Optional String) The url from which to fetch the CRL for the certificate authority if crl_source is URL. + /// + public readonly string CrlUrl; + /// + /// (Required String) A description for the Certificate Authority. + /// + public readonly string Description; + /// + /// (Required String) A human-readable name for the Certificate Authority. + /// + public readonly string DisplayName; + /// + /// (Required List of Strings) The expiration dates of certificates in the chain, for example, `["2017-07-21T17:32:28Z"]`. + /// + public readonly ImmutableArray ExpirationDates; + /// + /// (Required List of Strings) The fingerprints for each certificate in the certificate chain, for example, `["B1BC968BD4f49D622AA89A81F2150152A41D829C"]`. + /// + public readonly ImmutableArray Fingerprints; + public readonly string Id; + /// + /// (Required List of Strings) The serial numbers for each certificate in the certificate chain. + /// + public readonly ImmutableArray SerialNumbers; + + [OutputConstructor] + private GetCertificateAuthorityResult( + string certificateChainFilename, + + string crlSource, + + string crlUpdatedAt, + + string crlUrl, + + string description, + + string displayName, + + ImmutableArray expirationDates, + + ImmutableArray fingerprints, + + string id, + + ImmutableArray serialNumbers) + { + CertificateChainFilename = certificateChainFilename; + CrlSource = crlSource; + CrlUpdatedAt = crlUpdatedAt; + CrlUrl = crlUrl; + Description = description; + DisplayName = displayName; + ExpirationDates = expirationDates; + Fingerprints = fingerprints; + Id = id; + SerialNumbers = serialNumbers; + } + } +} diff --git a/sdk/dotnet/GetCertificatePool.cs b/sdk/dotnet/GetCertificatePool.cs new file mode 100644 index 00000000..23368143 --- /dev/null +++ b/sdk/dotnet/GetCertificatePool.cs @@ -0,0 +1,163 @@ +// *** 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.ConfluentCloud +{ + public static class GetCertificatePool + { + /// + /// [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + /// + /// `confluentcloud.CertificatePool` describes a Certificate Pool data source. + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using ConfluentCloud = Pulumi.ConfluentCloud; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var main = ConfluentCloud.GetCertificatePool.Invoke(new() + /// { + /// Id = "pool-def456", + /// CertificateAuthority = new ConfluentCloud.Inputs.GetCertificatePoolCertificateAuthorityInputArgs + /// { + /// Id = "op-abc123", + /// }, + /// }); + /// + /// return new Dictionary<string, object?> + /// { + /// ["certificatePool"] = main, + /// }; + /// }); + /// ``` + /// + public static Task InvokeAsync(GetCertificatePoolArgs args, InvokeOptions? options = null) + => global::Pulumi.Deployment.Instance.InvokeAsync("confluentcloud:index/getCertificatePool:getCertificatePool", args ?? new GetCertificatePoolArgs(), options.WithDefaults()); + + /// + /// [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + /// + /// `confluentcloud.CertificatePool` describes a Certificate Pool data source. + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using ConfluentCloud = Pulumi.ConfluentCloud; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var main = ConfluentCloud.GetCertificatePool.Invoke(new() + /// { + /// Id = "pool-def456", + /// CertificateAuthority = new ConfluentCloud.Inputs.GetCertificatePoolCertificateAuthorityInputArgs + /// { + /// Id = "op-abc123", + /// }, + /// }); + /// + /// return new Dictionary<string, object?> + /// { + /// ["certificatePool"] = main, + /// }; + /// }); + /// ``` + /// + public static Output Invoke(GetCertificatePoolInvokeArgs args, InvokeOptions? options = null) + => global::Pulumi.Deployment.Instance.Invoke("confluentcloud:index/getCertificatePool:getCertificatePool", args ?? new GetCertificatePoolInvokeArgs(), options.WithDefaults()); + } + + + public sealed class GetCertificatePoolArgs : global::Pulumi.InvokeArgs + { + [Input("certificateAuthority", required: true)] + public Inputs.GetCertificatePoolCertificateAuthorityArgs CertificateAuthority { get; set; } = null!; + + /// + /// The ID of the Certificate Pool, for example, `pool-abc123`. + /// + [Input("id", required: true)] + public string Id { get; set; } = null!; + + public GetCertificatePoolArgs() + { + } + public static new GetCertificatePoolArgs Empty => new GetCertificatePoolArgs(); + } + + public sealed class GetCertificatePoolInvokeArgs : global::Pulumi.InvokeArgs + { + [Input("certificateAuthority", required: true)] + public Input CertificateAuthority { get; set; } = null!; + + /// + /// The ID of the Certificate Pool, for example, `pool-abc123`. + /// + [Input("id", required: true)] + public Input Id { get; set; } = null!; + + public GetCertificatePoolInvokeArgs() + { + } + public static new GetCertificatePoolInvokeArgs Empty => new GetCertificatePoolInvokeArgs(); + } + + + [OutputType] + public sealed class GetCertificatePoolResult + { + public readonly Outputs.GetCertificatePoolCertificateAuthorityResult CertificateAuthority; + /// + /// (Required String) A description of the Certificate Pool. + /// + public readonly string Description; + /// + /// (Required String) A human-readable name for the Certificate Pool. + /// + public readonly string DisplayName; + /// + /// (Required String) The certificate field that will be used to represent the pool's external identity for audit logging, for example, `UID`. + /// + public readonly string ExternalIdentifier; + /// + /// (Required String) A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + /// + public readonly string Filter; + public readonly string Id; + + [OutputConstructor] + private GetCertificatePoolResult( + Outputs.GetCertificatePoolCertificateAuthorityResult certificateAuthority, + + string description, + + string displayName, + + string externalIdentifier, + + string filter, + + string id) + { + CertificateAuthority = certificateAuthority; + Description = description; + DisplayName = displayName; + ExternalIdentifier = externalIdentifier; + Filter = filter; + Id = id; + } + } +} diff --git a/sdk/dotnet/Inputs/CertificatePoolCertificateAuthorityArgs.cs b/sdk/dotnet/Inputs/CertificatePoolCertificateAuthorityArgs.cs new file mode 100644 index 00000000..af223c1f --- /dev/null +++ b/sdk/dotnet/Inputs/CertificatePoolCertificateAuthorityArgs.cs @@ -0,0 +1,26 @@ +// *** 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.ConfluentCloud.Inputs +{ + + public sealed class CertificatePoolCertificateAuthorityArgs : global::Pulumi.ResourceArgs + { + /// + /// The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + /// + [Input("id", required: true)] + public Input Id { get; set; } = null!; + + public CertificatePoolCertificateAuthorityArgs() + { + } + public static new CertificatePoolCertificateAuthorityArgs Empty => new CertificatePoolCertificateAuthorityArgs(); + } +} diff --git a/sdk/dotnet/Inputs/CertificatePoolCertificateAuthorityGetArgs.cs b/sdk/dotnet/Inputs/CertificatePoolCertificateAuthorityGetArgs.cs new file mode 100644 index 00000000..05deef34 --- /dev/null +++ b/sdk/dotnet/Inputs/CertificatePoolCertificateAuthorityGetArgs.cs @@ -0,0 +1,26 @@ +// *** 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.ConfluentCloud.Inputs +{ + + public sealed class CertificatePoolCertificateAuthorityGetArgs : global::Pulumi.ResourceArgs + { + /// + /// The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + /// + [Input("id", required: true)] + public Input Id { get; set; } = null!; + + public CertificatePoolCertificateAuthorityGetArgs() + { + } + public static new CertificatePoolCertificateAuthorityGetArgs Empty => new CertificatePoolCertificateAuthorityGetArgs(); + } +} diff --git a/sdk/dotnet/Inputs/GetCertificatePoolCertificateAuthority.cs b/sdk/dotnet/Inputs/GetCertificatePoolCertificateAuthority.cs new file mode 100644 index 00000000..4e70beee --- /dev/null +++ b/sdk/dotnet/Inputs/GetCertificatePoolCertificateAuthority.cs @@ -0,0 +1,26 @@ +// *** 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.ConfluentCloud.Inputs +{ + + public sealed class GetCertificatePoolCertificateAuthorityArgs : global::Pulumi.InvokeArgs + { + /// + /// The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + /// + [Input("id", required: true)] + public string Id { get; set; } = null!; + + public GetCertificatePoolCertificateAuthorityArgs() + { + } + public static new GetCertificatePoolCertificateAuthorityArgs Empty => new GetCertificatePoolCertificateAuthorityArgs(); + } +} diff --git a/sdk/dotnet/Inputs/GetCertificatePoolCertificateAuthorityArgs.cs b/sdk/dotnet/Inputs/GetCertificatePoolCertificateAuthorityArgs.cs new file mode 100644 index 00000000..78e184f2 --- /dev/null +++ b/sdk/dotnet/Inputs/GetCertificatePoolCertificateAuthorityArgs.cs @@ -0,0 +1,26 @@ +// *** 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.ConfluentCloud.Inputs +{ + + public sealed class GetCertificatePoolCertificateAuthorityInputArgs : global::Pulumi.ResourceArgs + { + /// + /// The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + /// + [Input("id", required: true)] + public Input Id { get; set; } = null!; + + public GetCertificatePoolCertificateAuthorityInputArgs() + { + } + public static new GetCertificatePoolCertificateAuthorityInputArgs Empty => new GetCertificatePoolCertificateAuthorityInputArgs(); + } +} diff --git a/sdk/dotnet/Outputs/CertificatePoolCertificateAuthority.cs b/sdk/dotnet/Outputs/CertificatePoolCertificateAuthority.cs new file mode 100644 index 00000000..c1218e28 --- /dev/null +++ b/sdk/dotnet/Outputs/CertificatePoolCertificateAuthority.cs @@ -0,0 +1,27 @@ +// *** 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.ConfluentCloud.Outputs +{ + + [OutputType] + public sealed class CertificatePoolCertificateAuthority + { + /// + /// The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + /// + public readonly string Id; + + [OutputConstructor] + private CertificatePoolCertificateAuthority(string id) + { + Id = id; + } + } +} diff --git a/sdk/dotnet/Outputs/GetCertificatePoolCertificateAuthorityResult.cs b/sdk/dotnet/Outputs/GetCertificatePoolCertificateAuthorityResult.cs new file mode 100644 index 00000000..7ed6b869 --- /dev/null +++ b/sdk/dotnet/Outputs/GetCertificatePoolCertificateAuthorityResult.cs @@ -0,0 +1,27 @@ +// *** 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.ConfluentCloud.Outputs +{ + + [OutputType] + public sealed class GetCertificatePoolCertificateAuthorityResult + { + /// + /// The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + /// + public readonly string Id; + + [OutputConstructor] + private GetCertificatePoolCertificateAuthorityResult(string id) + { + Id = id; + } + } +} diff --git a/sdk/go/confluentcloud/certificateAuthority.go b/sdk/go/confluentcloud/certificateAuthority.go new file mode 100644 index 00000000..50762fb3 --- /dev/null +++ b/sdk/go/confluentcloud/certificateAuthority.go @@ -0,0 +1,414 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package confluentcloud + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) +// +// `CertificateAuthority` provides a Certificate Authority resource that enables creating, editing, and deleting Certificate Authorities on Confluent Cloud. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := confluentcloud.NewCertificateAuthority(ctx, "main", &confluentcloud.CertificateAuthorityArgs{ +// DisplayName: pulumi.String("my_certificate_authority"), +// Description: pulumi.String("description"), +// CertificateChainFilename: pulumi.String("certificate.pem"), +// CertificateChain: pulumi.String("***REDACTED***"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// You can import a Certificate Authority by using Certificate Authority ID, for example: +// +// $ export CONFLUENT_CLOUD_API_KEY="" +// +// $ export CONFLUENT_CLOUD_API_SECRET="" +// +// ```sh +// $ pulumi import confluentcloud:index/certificateAuthority:CertificateAuthority main op-abc123 +// ``` +// +// !> **Warning:** Do not forget to delete terminal command history afterwards for security purposes. +type CertificateAuthority struct { + pulumi.CustomResourceState + + // A base64 encoded string containing the signing certificate chain. + CertificateChain pulumi.StringOutput `pulumi:"certificateChain"` + // The name of the certificate file. + CertificateChainFilename pulumi.StringOutput `pulumi:"certificateChainFilename"` + // A base64 encoded string containing the CRL for this certificate authority. + CrlChain pulumi.StringPtrOutput `pulumi:"crlChain"` + // (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). + CrlSource pulumi.StringOutput `pulumi:"crlSource"` + // (Optional String) The timestamp for when CRL was last updated. + CrlUpdatedAt pulumi.StringOutput `pulumi:"crlUpdatedAt"` + // The url from which to fetch the CRL for the certificate authority. + CrlUrl pulumi.StringPtrOutput `pulumi:"crlUrl"` + // A description of the Certificate Authority. + Description pulumi.StringOutput `pulumi:"description"` + // The name of the Certificate Authority. + DisplayName pulumi.StringOutput `pulumi:"displayName"` + // (Required List of Strings) The expiration dates of certificates in the chain. + ExpirationDates pulumi.StringArrayOutput `pulumi:"expirationDates"` + // (Required List of Strings) The fingerprints for each certificate in the certificate chain. + Fingerprints pulumi.StringArrayOutput `pulumi:"fingerprints"` + // (Required List of Strings) The serial numbers for each certificate in the certificate chain. + SerialNumbers pulumi.StringArrayOutput `pulumi:"serialNumbers"` +} + +// NewCertificateAuthority registers a new resource with the given unique name, arguments, and options. +func NewCertificateAuthority(ctx *pulumi.Context, + name string, args *CertificateAuthorityArgs, opts ...pulumi.ResourceOption) (*CertificateAuthority, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.CertificateChain == nil { + return nil, errors.New("invalid value for required argument 'CertificateChain'") + } + if args.CertificateChainFilename == nil { + return nil, errors.New("invalid value for required argument 'CertificateChainFilename'") + } + if args.Description == nil { + return nil, errors.New("invalid value for required argument 'Description'") + } + if args.DisplayName == nil { + return nil, errors.New("invalid value for required argument 'DisplayName'") + } + if args.CertificateChain != nil { + args.CertificateChain = pulumi.ToSecret(args.CertificateChain).(pulumi.StringInput) + } + if args.CrlChain != nil { + args.CrlChain = pulumi.ToSecret(args.CrlChain).(pulumi.StringPtrInput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "certificateChain", + "crlChain", + }) + opts = append(opts, secrets) + opts = internal.PkgResourceDefaultOpts(opts) + var resource CertificateAuthority + err := ctx.RegisterResource("confluentcloud:index/certificateAuthority:CertificateAuthority", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetCertificateAuthority gets an existing CertificateAuthority resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetCertificateAuthority(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *CertificateAuthorityState, opts ...pulumi.ResourceOption) (*CertificateAuthority, error) { + var resource CertificateAuthority + err := ctx.ReadResource("confluentcloud:index/certificateAuthority:CertificateAuthority", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering CertificateAuthority resources. +type certificateAuthorityState struct { + // A base64 encoded string containing the signing certificate chain. + CertificateChain *string `pulumi:"certificateChain"` + // The name of the certificate file. + CertificateChainFilename *string `pulumi:"certificateChainFilename"` + // A base64 encoded string containing the CRL for this certificate authority. + CrlChain *string `pulumi:"crlChain"` + // (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). + CrlSource *string `pulumi:"crlSource"` + // (Optional String) The timestamp for when CRL was last updated. + CrlUpdatedAt *string `pulumi:"crlUpdatedAt"` + // The url from which to fetch the CRL for the certificate authority. + CrlUrl *string `pulumi:"crlUrl"` + // A description of the Certificate Authority. + Description *string `pulumi:"description"` + // The name of the Certificate Authority. + DisplayName *string `pulumi:"displayName"` + // (Required List of Strings) The expiration dates of certificates in the chain. + ExpirationDates []string `pulumi:"expirationDates"` + // (Required List of Strings) The fingerprints for each certificate in the certificate chain. + Fingerprints []string `pulumi:"fingerprints"` + // (Required List of Strings) The serial numbers for each certificate in the certificate chain. + SerialNumbers []string `pulumi:"serialNumbers"` +} + +type CertificateAuthorityState struct { + // A base64 encoded string containing the signing certificate chain. + CertificateChain pulumi.StringPtrInput + // The name of the certificate file. + CertificateChainFilename pulumi.StringPtrInput + // A base64 encoded string containing the CRL for this certificate authority. + CrlChain pulumi.StringPtrInput + // (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). + CrlSource pulumi.StringPtrInput + // (Optional String) The timestamp for when CRL was last updated. + CrlUpdatedAt pulumi.StringPtrInput + // The url from which to fetch the CRL for the certificate authority. + CrlUrl pulumi.StringPtrInput + // A description of the Certificate Authority. + Description pulumi.StringPtrInput + // The name of the Certificate Authority. + DisplayName pulumi.StringPtrInput + // (Required List of Strings) The expiration dates of certificates in the chain. + ExpirationDates pulumi.StringArrayInput + // (Required List of Strings) The fingerprints for each certificate in the certificate chain. + Fingerprints pulumi.StringArrayInput + // (Required List of Strings) The serial numbers for each certificate in the certificate chain. + SerialNumbers pulumi.StringArrayInput +} + +func (CertificateAuthorityState) ElementType() reflect.Type { + return reflect.TypeOf((*certificateAuthorityState)(nil)).Elem() +} + +type certificateAuthorityArgs struct { + // A base64 encoded string containing the signing certificate chain. + CertificateChain string `pulumi:"certificateChain"` + // The name of the certificate file. + CertificateChainFilename string `pulumi:"certificateChainFilename"` + // A base64 encoded string containing the CRL for this certificate authority. + CrlChain *string `pulumi:"crlChain"` + // The url from which to fetch the CRL for the certificate authority. + CrlUrl *string `pulumi:"crlUrl"` + // A description of the Certificate Authority. + Description string `pulumi:"description"` + // The name of the Certificate Authority. + DisplayName string `pulumi:"displayName"` +} + +// The set of arguments for constructing a CertificateAuthority resource. +type CertificateAuthorityArgs struct { + // A base64 encoded string containing the signing certificate chain. + CertificateChain pulumi.StringInput + // The name of the certificate file. + CertificateChainFilename pulumi.StringInput + // A base64 encoded string containing the CRL for this certificate authority. + CrlChain pulumi.StringPtrInput + // The url from which to fetch the CRL for the certificate authority. + CrlUrl pulumi.StringPtrInput + // A description of the Certificate Authority. + Description pulumi.StringInput + // The name of the Certificate Authority. + DisplayName pulumi.StringInput +} + +func (CertificateAuthorityArgs) ElementType() reflect.Type { + return reflect.TypeOf((*certificateAuthorityArgs)(nil)).Elem() +} + +type CertificateAuthorityInput interface { + pulumi.Input + + ToCertificateAuthorityOutput() CertificateAuthorityOutput + ToCertificateAuthorityOutputWithContext(ctx context.Context) CertificateAuthorityOutput +} + +func (*CertificateAuthority) ElementType() reflect.Type { + return reflect.TypeOf((**CertificateAuthority)(nil)).Elem() +} + +func (i *CertificateAuthority) ToCertificateAuthorityOutput() CertificateAuthorityOutput { + return i.ToCertificateAuthorityOutputWithContext(context.Background()) +} + +func (i *CertificateAuthority) ToCertificateAuthorityOutputWithContext(ctx context.Context) CertificateAuthorityOutput { + return pulumi.ToOutputWithContext(ctx, i).(CertificateAuthorityOutput) +} + +// CertificateAuthorityArrayInput is an input type that accepts CertificateAuthorityArray and CertificateAuthorityArrayOutput values. +// You can construct a concrete instance of `CertificateAuthorityArrayInput` via: +// +// CertificateAuthorityArray{ CertificateAuthorityArgs{...} } +type CertificateAuthorityArrayInput interface { + pulumi.Input + + ToCertificateAuthorityArrayOutput() CertificateAuthorityArrayOutput + ToCertificateAuthorityArrayOutputWithContext(context.Context) CertificateAuthorityArrayOutput +} + +type CertificateAuthorityArray []CertificateAuthorityInput + +func (CertificateAuthorityArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*CertificateAuthority)(nil)).Elem() +} + +func (i CertificateAuthorityArray) ToCertificateAuthorityArrayOutput() CertificateAuthorityArrayOutput { + return i.ToCertificateAuthorityArrayOutputWithContext(context.Background()) +} + +func (i CertificateAuthorityArray) ToCertificateAuthorityArrayOutputWithContext(ctx context.Context) CertificateAuthorityArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(CertificateAuthorityArrayOutput) +} + +// CertificateAuthorityMapInput is an input type that accepts CertificateAuthorityMap and CertificateAuthorityMapOutput values. +// You can construct a concrete instance of `CertificateAuthorityMapInput` via: +// +// CertificateAuthorityMap{ "key": CertificateAuthorityArgs{...} } +type CertificateAuthorityMapInput interface { + pulumi.Input + + ToCertificateAuthorityMapOutput() CertificateAuthorityMapOutput + ToCertificateAuthorityMapOutputWithContext(context.Context) CertificateAuthorityMapOutput +} + +type CertificateAuthorityMap map[string]CertificateAuthorityInput + +func (CertificateAuthorityMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*CertificateAuthority)(nil)).Elem() +} + +func (i CertificateAuthorityMap) ToCertificateAuthorityMapOutput() CertificateAuthorityMapOutput { + return i.ToCertificateAuthorityMapOutputWithContext(context.Background()) +} + +func (i CertificateAuthorityMap) ToCertificateAuthorityMapOutputWithContext(ctx context.Context) CertificateAuthorityMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(CertificateAuthorityMapOutput) +} + +type CertificateAuthorityOutput struct{ *pulumi.OutputState } + +func (CertificateAuthorityOutput) ElementType() reflect.Type { + return reflect.TypeOf((**CertificateAuthority)(nil)).Elem() +} + +func (o CertificateAuthorityOutput) ToCertificateAuthorityOutput() CertificateAuthorityOutput { + return o +} + +func (o CertificateAuthorityOutput) ToCertificateAuthorityOutputWithContext(ctx context.Context) CertificateAuthorityOutput { + return o +} + +// A base64 encoded string containing the signing certificate chain. +func (o CertificateAuthorityOutput) CertificateChain() pulumi.StringOutput { + return o.ApplyT(func(v *CertificateAuthority) pulumi.StringOutput { return v.CertificateChain }).(pulumi.StringOutput) +} + +// The name of the certificate file. +func (o CertificateAuthorityOutput) CertificateChainFilename() pulumi.StringOutput { + return o.ApplyT(func(v *CertificateAuthority) pulumi.StringOutput { return v.CertificateChainFilename }).(pulumi.StringOutput) +} + +// A base64 encoded string containing the CRL for this certificate authority. +func (o CertificateAuthorityOutput) CrlChain() pulumi.StringPtrOutput { + return o.ApplyT(func(v *CertificateAuthority) pulumi.StringPtrOutput { return v.CrlChain }).(pulumi.StringPtrOutput) +} + +// (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). +func (o CertificateAuthorityOutput) CrlSource() pulumi.StringOutput { + return o.ApplyT(func(v *CertificateAuthority) pulumi.StringOutput { return v.CrlSource }).(pulumi.StringOutput) +} + +// (Optional String) The timestamp for when CRL was last updated. +func (o CertificateAuthorityOutput) CrlUpdatedAt() pulumi.StringOutput { + return o.ApplyT(func(v *CertificateAuthority) pulumi.StringOutput { return v.CrlUpdatedAt }).(pulumi.StringOutput) +} + +// The url from which to fetch the CRL for the certificate authority. +func (o CertificateAuthorityOutput) CrlUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *CertificateAuthority) pulumi.StringPtrOutput { return v.CrlUrl }).(pulumi.StringPtrOutput) +} + +// A description of the Certificate Authority. +func (o CertificateAuthorityOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *CertificateAuthority) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// The name of the Certificate Authority. +func (o CertificateAuthorityOutput) DisplayName() pulumi.StringOutput { + return o.ApplyT(func(v *CertificateAuthority) pulumi.StringOutput { return v.DisplayName }).(pulumi.StringOutput) +} + +// (Required List of Strings) The expiration dates of certificates in the chain. +func (o CertificateAuthorityOutput) ExpirationDates() pulumi.StringArrayOutput { + return o.ApplyT(func(v *CertificateAuthority) pulumi.StringArrayOutput { return v.ExpirationDates }).(pulumi.StringArrayOutput) +} + +// (Required List of Strings) The fingerprints for each certificate in the certificate chain. +func (o CertificateAuthorityOutput) Fingerprints() pulumi.StringArrayOutput { + return o.ApplyT(func(v *CertificateAuthority) pulumi.StringArrayOutput { return v.Fingerprints }).(pulumi.StringArrayOutput) +} + +// (Required List of Strings) The serial numbers for each certificate in the certificate chain. +func (o CertificateAuthorityOutput) SerialNumbers() pulumi.StringArrayOutput { + return o.ApplyT(func(v *CertificateAuthority) pulumi.StringArrayOutput { return v.SerialNumbers }).(pulumi.StringArrayOutput) +} + +type CertificateAuthorityArrayOutput struct{ *pulumi.OutputState } + +func (CertificateAuthorityArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*CertificateAuthority)(nil)).Elem() +} + +func (o CertificateAuthorityArrayOutput) ToCertificateAuthorityArrayOutput() CertificateAuthorityArrayOutput { + return o +} + +func (o CertificateAuthorityArrayOutput) ToCertificateAuthorityArrayOutputWithContext(ctx context.Context) CertificateAuthorityArrayOutput { + return o +} + +func (o CertificateAuthorityArrayOutput) Index(i pulumi.IntInput) CertificateAuthorityOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *CertificateAuthority { + return vs[0].([]*CertificateAuthority)[vs[1].(int)] + }).(CertificateAuthorityOutput) +} + +type CertificateAuthorityMapOutput struct{ *pulumi.OutputState } + +func (CertificateAuthorityMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*CertificateAuthority)(nil)).Elem() +} + +func (o CertificateAuthorityMapOutput) ToCertificateAuthorityMapOutput() CertificateAuthorityMapOutput { + return o +} + +func (o CertificateAuthorityMapOutput) ToCertificateAuthorityMapOutputWithContext(ctx context.Context) CertificateAuthorityMapOutput { + return o +} + +func (o CertificateAuthorityMapOutput) MapIndex(k pulumi.StringInput) CertificateAuthorityOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *CertificateAuthority { + return vs[0].(map[string]*CertificateAuthority)[vs[1].(string)] + }).(CertificateAuthorityOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*CertificateAuthorityInput)(nil)).Elem(), &CertificateAuthority{}) + pulumi.RegisterInputType(reflect.TypeOf((*CertificateAuthorityArrayInput)(nil)).Elem(), CertificateAuthorityArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*CertificateAuthorityMapInput)(nil)).Elem(), CertificateAuthorityMap{}) + pulumi.RegisterOutputType(CertificateAuthorityOutput{}) + pulumi.RegisterOutputType(CertificateAuthorityArrayOutput{}) + pulumi.RegisterOutputType(CertificateAuthorityMapOutput{}) +} diff --git a/sdk/go/confluentcloud/certificatePool.go b/sdk/go/confluentcloud/certificatePool.go new file mode 100644 index 00000000..d639edb3 --- /dev/null +++ b/sdk/go/confluentcloud/certificatePool.go @@ -0,0 +1,333 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package confluentcloud + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) +// +// `CertificatePool` provides a Certificate Pool resource that enables creating, editing, and deleting Certificate Pools on Confluent Cloud. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := confluentcloud.NewCertificatePool(ctx, "main", &confluentcloud.CertificatePoolArgs{ +// CertificateAuthority: &confluentcloud.CertificatePoolCertificateAuthorityArgs{ +// Id: pulumi.Any(mainConfluentCertificateAuthority.Id), +// }, +// DisplayName: pulumi.String("my-certificate-pool"), +// Description: pulumi.String("example description"), +// ExternalIdentifier: pulumi.String("CN"), +// Filter: pulumi.String("CN == \"test\""), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// You can import a Certificate Pool by using Certificate Authority ID and Certificate Pool ID, in the format `/`. The following example shows how to import a Certificate Pool: +// +// $ export CONFLUENT_CLOUD_API_KEY="" +// +// $ export CONFLUENT_CLOUD_API_SECRET="" +// +// ```sh +// $ pulumi import confluentcloud:index/certificatePool:CertificatePool main op-abc123/pool-abc123 +// ``` +// +// !> **Warning:** Do not forget to delete terminal command history afterwards for security purposes. +type CertificatePool struct { + pulumi.CustomResourceState + + CertificateAuthority CertificatePoolCertificateAuthorityOutput `pulumi:"certificateAuthority"` + // A description of the Certificate Pool. + Description pulumi.StringOutput `pulumi:"description"` + // The name of the Certificate Pool. + DisplayName pulumi.StringOutput `pulumi:"displayName"` + // The certificate field that will be used to represent the pool's external identity for audit logging. + ExternalIdentifier pulumi.StringOutput `pulumi:"externalIdentifier"` + // A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + Filter pulumi.StringOutput `pulumi:"filter"` +} + +// NewCertificatePool registers a new resource with the given unique name, arguments, and options. +func NewCertificatePool(ctx *pulumi.Context, + name string, args *CertificatePoolArgs, opts ...pulumi.ResourceOption) (*CertificatePool, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.CertificateAuthority == nil { + return nil, errors.New("invalid value for required argument 'CertificateAuthority'") + } + if args.Description == nil { + return nil, errors.New("invalid value for required argument 'Description'") + } + if args.DisplayName == nil { + return nil, errors.New("invalid value for required argument 'DisplayName'") + } + if args.ExternalIdentifier == nil { + return nil, errors.New("invalid value for required argument 'ExternalIdentifier'") + } + if args.Filter == nil { + return nil, errors.New("invalid value for required argument 'Filter'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource CertificatePool + err := ctx.RegisterResource("confluentcloud:index/certificatePool:CertificatePool", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetCertificatePool gets an existing CertificatePool resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetCertificatePool(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *CertificatePoolState, opts ...pulumi.ResourceOption) (*CertificatePool, error) { + var resource CertificatePool + err := ctx.ReadResource("confluentcloud:index/certificatePool:CertificatePool", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering CertificatePool resources. +type certificatePoolState struct { + CertificateAuthority *CertificatePoolCertificateAuthority `pulumi:"certificateAuthority"` + // A description of the Certificate Pool. + Description *string `pulumi:"description"` + // The name of the Certificate Pool. + DisplayName *string `pulumi:"displayName"` + // The certificate field that will be used to represent the pool's external identity for audit logging. + ExternalIdentifier *string `pulumi:"externalIdentifier"` + // A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + Filter *string `pulumi:"filter"` +} + +type CertificatePoolState struct { + CertificateAuthority CertificatePoolCertificateAuthorityPtrInput + // A description of the Certificate Pool. + Description pulumi.StringPtrInput + // The name of the Certificate Pool. + DisplayName pulumi.StringPtrInput + // The certificate field that will be used to represent the pool's external identity for audit logging. + ExternalIdentifier pulumi.StringPtrInput + // A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + Filter pulumi.StringPtrInput +} + +func (CertificatePoolState) ElementType() reflect.Type { + return reflect.TypeOf((*certificatePoolState)(nil)).Elem() +} + +type certificatePoolArgs struct { + CertificateAuthority CertificatePoolCertificateAuthority `pulumi:"certificateAuthority"` + // A description of the Certificate Pool. + Description string `pulumi:"description"` + // The name of the Certificate Pool. + DisplayName string `pulumi:"displayName"` + // The certificate field that will be used to represent the pool's external identity for audit logging. + ExternalIdentifier string `pulumi:"externalIdentifier"` + // A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + Filter string `pulumi:"filter"` +} + +// The set of arguments for constructing a CertificatePool resource. +type CertificatePoolArgs struct { + CertificateAuthority CertificatePoolCertificateAuthorityInput + // A description of the Certificate Pool. + Description pulumi.StringInput + // The name of the Certificate Pool. + DisplayName pulumi.StringInput + // The certificate field that will be used to represent the pool's external identity for audit logging. + ExternalIdentifier pulumi.StringInput + // A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + Filter pulumi.StringInput +} + +func (CertificatePoolArgs) ElementType() reflect.Type { + return reflect.TypeOf((*certificatePoolArgs)(nil)).Elem() +} + +type CertificatePoolInput interface { + pulumi.Input + + ToCertificatePoolOutput() CertificatePoolOutput + ToCertificatePoolOutputWithContext(ctx context.Context) CertificatePoolOutput +} + +func (*CertificatePool) ElementType() reflect.Type { + return reflect.TypeOf((**CertificatePool)(nil)).Elem() +} + +func (i *CertificatePool) ToCertificatePoolOutput() CertificatePoolOutput { + return i.ToCertificatePoolOutputWithContext(context.Background()) +} + +func (i *CertificatePool) ToCertificatePoolOutputWithContext(ctx context.Context) CertificatePoolOutput { + return pulumi.ToOutputWithContext(ctx, i).(CertificatePoolOutput) +} + +// CertificatePoolArrayInput is an input type that accepts CertificatePoolArray and CertificatePoolArrayOutput values. +// You can construct a concrete instance of `CertificatePoolArrayInput` via: +// +// CertificatePoolArray{ CertificatePoolArgs{...} } +type CertificatePoolArrayInput interface { + pulumi.Input + + ToCertificatePoolArrayOutput() CertificatePoolArrayOutput + ToCertificatePoolArrayOutputWithContext(context.Context) CertificatePoolArrayOutput +} + +type CertificatePoolArray []CertificatePoolInput + +func (CertificatePoolArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*CertificatePool)(nil)).Elem() +} + +func (i CertificatePoolArray) ToCertificatePoolArrayOutput() CertificatePoolArrayOutput { + return i.ToCertificatePoolArrayOutputWithContext(context.Background()) +} + +func (i CertificatePoolArray) ToCertificatePoolArrayOutputWithContext(ctx context.Context) CertificatePoolArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(CertificatePoolArrayOutput) +} + +// CertificatePoolMapInput is an input type that accepts CertificatePoolMap and CertificatePoolMapOutput values. +// You can construct a concrete instance of `CertificatePoolMapInput` via: +// +// CertificatePoolMap{ "key": CertificatePoolArgs{...} } +type CertificatePoolMapInput interface { + pulumi.Input + + ToCertificatePoolMapOutput() CertificatePoolMapOutput + ToCertificatePoolMapOutputWithContext(context.Context) CertificatePoolMapOutput +} + +type CertificatePoolMap map[string]CertificatePoolInput + +func (CertificatePoolMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*CertificatePool)(nil)).Elem() +} + +func (i CertificatePoolMap) ToCertificatePoolMapOutput() CertificatePoolMapOutput { + return i.ToCertificatePoolMapOutputWithContext(context.Background()) +} + +func (i CertificatePoolMap) ToCertificatePoolMapOutputWithContext(ctx context.Context) CertificatePoolMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(CertificatePoolMapOutput) +} + +type CertificatePoolOutput struct{ *pulumi.OutputState } + +func (CertificatePoolOutput) ElementType() reflect.Type { + return reflect.TypeOf((**CertificatePool)(nil)).Elem() +} + +func (o CertificatePoolOutput) ToCertificatePoolOutput() CertificatePoolOutput { + return o +} + +func (o CertificatePoolOutput) ToCertificatePoolOutputWithContext(ctx context.Context) CertificatePoolOutput { + return o +} + +func (o CertificatePoolOutput) CertificateAuthority() CertificatePoolCertificateAuthorityOutput { + return o.ApplyT(func(v *CertificatePool) CertificatePoolCertificateAuthorityOutput { return v.CertificateAuthority }).(CertificatePoolCertificateAuthorityOutput) +} + +// A description of the Certificate Pool. +func (o CertificatePoolOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *CertificatePool) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// The name of the Certificate Pool. +func (o CertificatePoolOutput) DisplayName() pulumi.StringOutput { + return o.ApplyT(func(v *CertificatePool) pulumi.StringOutput { return v.DisplayName }).(pulumi.StringOutput) +} + +// The certificate field that will be used to represent the pool's external identity for audit logging. +func (o CertificatePoolOutput) ExternalIdentifier() pulumi.StringOutput { + return o.ApplyT(func(v *CertificatePool) pulumi.StringOutput { return v.ExternalIdentifier }).(pulumi.StringOutput) +} + +// A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. +func (o CertificatePoolOutput) Filter() pulumi.StringOutput { + return o.ApplyT(func(v *CertificatePool) pulumi.StringOutput { return v.Filter }).(pulumi.StringOutput) +} + +type CertificatePoolArrayOutput struct{ *pulumi.OutputState } + +func (CertificatePoolArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*CertificatePool)(nil)).Elem() +} + +func (o CertificatePoolArrayOutput) ToCertificatePoolArrayOutput() CertificatePoolArrayOutput { + return o +} + +func (o CertificatePoolArrayOutput) ToCertificatePoolArrayOutputWithContext(ctx context.Context) CertificatePoolArrayOutput { + return o +} + +func (o CertificatePoolArrayOutput) Index(i pulumi.IntInput) CertificatePoolOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *CertificatePool { + return vs[0].([]*CertificatePool)[vs[1].(int)] + }).(CertificatePoolOutput) +} + +type CertificatePoolMapOutput struct{ *pulumi.OutputState } + +func (CertificatePoolMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*CertificatePool)(nil)).Elem() +} + +func (o CertificatePoolMapOutput) ToCertificatePoolMapOutput() CertificatePoolMapOutput { + return o +} + +func (o CertificatePoolMapOutput) ToCertificatePoolMapOutputWithContext(ctx context.Context) CertificatePoolMapOutput { + return o +} + +func (o CertificatePoolMapOutput) MapIndex(k pulumi.StringInput) CertificatePoolOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *CertificatePool { + return vs[0].(map[string]*CertificatePool)[vs[1].(string)] + }).(CertificatePoolOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*CertificatePoolInput)(nil)).Elem(), &CertificatePool{}) + pulumi.RegisterInputType(reflect.TypeOf((*CertificatePoolArrayInput)(nil)).Elem(), CertificatePoolArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*CertificatePoolMapInput)(nil)).Elem(), CertificatePoolMap{}) + pulumi.RegisterOutputType(CertificatePoolOutput{}) + pulumi.RegisterOutputType(CertificatePoolArrayOutput{}) + pulumi.RegisterOutputType(CertificatePoolMapOutput{}) +} diff --git a/sdk/go/confluentcloud/getCertificateAuthority.go b/sdk/go/confluentcloud/getCertificateAuthority.go new file mode 100644 index 00000000..6ad00537 --- /dev/null +++ b/sdk/go/confluentcloud/getCertificateAuthority.go @@ -0,0 +1,190 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package confluentcloud + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) +// +// `CertificateAuthority` describes a Certificate Authority data source. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// main, err := confluentcloud.LookupCertificateAuthority(ctx, &confluentcloud.LookupCertificateAuthorityArgs{ +// Id: "op-abc123", +// }, nil) +// if err != nil { +// return err +// } +// ctx.Export("certificateAuthority", main) +// return nil +// }) +// } +// +// ``` +func LookupCertificateAuthority(ctx *pulumi.Context, args *LookupCertificateAuthorityArgs, opts ...pulumi.InvokeOption) (*LookupCertificateAuthorityResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupCertificateAuthorityResult + err := ctx.Invoke("confluentcloud:index/getCertificateAuthority:getCertificateAuthority", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getCertificateAuthority. +type LookupCertificateAuthorityArgs struct { + // (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + CrlSource *string `pulumi:"crlSource"` + // (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + CrlUpdatedAt *string `pulumi:"crlUpdatedAt"` + // (Optional String) The url from which to fetch the CRL for the certificate authority if crlSource is URL. + CrlUrl *string `pulumi:"crlUrl"` + // The ID of the Certificate Authority, for example, `op-abc123`. + Id string `pulumi:"id"` +} + +// A collection of values returned by getCertificateAuthority. +type LookupCertificateAuthorityResult struct { + // (Required String) The name of the certificate file, for example, `certificate.pem`. + CertificateChainFilename string `pulumi:"certificateChainFilename"` + // (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + CrlSource string `pulumi:"crlSource"` + // (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + CrlUpdatedAt string `pulumi:"crlUpdatedAt"` + // (Optional String) The url from which to fetch the CRL for the certificate authority if crlSource is URL. + CrlUrl string `pulumi:"crlUrl"` + // (Required String) A description for the Certificate Authority. + Description string `pulumi:"description"` + // (Required String) A human-readable name for the Certificate Authority. + DisplayName string `pulumi:"displayName"` + // (Required List of Strings) The expiration dates of certificates in the chain, for example, `["2017-07-21T17:32:28Z"]`. + ExpirationDates []string `pulumi:"expirationDates"` + // (Required List of Strings) The fingerprints for each certificate in the certificate chain, for example, `["B1BC968BD4f49D622AA89A81F2150152A41D829C"]`. + Fingerprints []string `pulumi:"fingerprints"` + Id string `pulumi:"id"` + // (Required List of Strings) The serial numbers for each certificate in the certificate chain. + SerialNumbers []string `pulumi:"serialNumbers"` +} + +func LookupCertificateAuthorityOutput(ctx *pulumi.Context, args LookupCertificateAuthorityOutputArgs, opts ...pulumi.InvokeOption) LookupCertificateAuthorityResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupCertificateAuthorityResultOutput, error) { + args := v.(LookupCertificateAuthorityArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupCertificateAuthorityResult + secret, err := ctx.InvokePackageRaw("confluentcloud:index/getCertificateAuthority:getCertificateAuthority", args, &rv, "", opts...) + if err != nil { + return LookupCertificateAuthorityResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupCertificateAuthorityResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupCertificateAuthorityResultOutput), nil + } + return output, nil + }).(LookupCertificateAuthorityResultOutput) +} + +// A collection of arguments for invoking getCertificateAuthority. +type LookupCertificateAuthorityOutputArgs struct { + // (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + CrlSource pulumi.StringPtrInput `pulumi:"crlSource"` + // (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + CrlUpdatedAt pulumi.StringPtrInput `pulumi:"crlUpdatedAt"` + // (Optional String) The url from which to fetch the CRL for the certificate authority if crlSource is URL. + CrlUrl pulumi.StringPtrInput `pulumi:"crlUrl"` + // The ID of the Certificate Authority, for example, `op-abc123`. + Id pulumi.StringInput `pulumi:"id"` +} + +func (LookupCertificateAuthorityOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupCertificateAuthorityArgs)(nil)).Elem() +} + +// A collection of values returned by getCertificateAuthority. +type LookupCertificateAuthorityResultOutput struct{ *pulumi.OutputState } + +func (LookupCertificateAuthorityResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupCertificateAuthorityResult)(nil)).Elem() +} + +func (o LookupCertificateAuthorityResultOutput) ToLookupCertificateAuthorityResultOutput() LookupCertificateAuthorityResultOutput { + return o +} + +func (o LookupCertificateAuthorityResultOutput) ToLookupCertificateAuthorityResultOutputWithContext(ctx context.Context) LookupCertificateAuthorityResultOutput { + return o +} + +// (Required String) The name of the certificate file, for example, `certificate.pem`. +func (o LookupCertificateAuthorityResultOutput) CertificateChainFilename() pulumi.StringOutput { + return o.ApplyT(func(v LookupCertificateAuthorityResult) string { return v.CertificateChainFilename }).(pulumi.StringOutput) +} + +// (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. +func (o LookupCertificateAuthorityResultOutput) CrlSource() pulumi.StringOutput { + return o.ApplyT(func(v LookupCertificateAuthorityResult) string { return v.CrlSource }).(pulumi.StringOutput) +} + +// (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. +func (o LookupCertificateAuthorityResultOutput) CrlUpdatedAt() pulumi.StringOutput { + return o.ApplyT(func(v LookupCertificateAuthorityResult) string { return v.CrlUpdatedAt }).(pulumi.StringOutput) +} + +// (Optional String) The url from which to fetch the CRL for the certificate authority if crlSource is URL. +func (o LookupCertificateAuthorityResultOutput) CrlUrl() pulumi.StringOutput { + return o.ApplyT(func(v LookupCertificateAuthorityResult) string { return v.CrlUrl }).(pulumi.StringOutput) +} + +// (Required String) A description for the Certificate Authority. +func (o LookupCertificateAuthorityResultOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v LookupCertificateAuthorityResult) string { return v.Description }).(pulumi.StringOutput) +} + +// (Required String) A human-readable name for the Certificate Authority. +func (o LookupCertificateAuthorityResultOutput) DisplayName() pulumi.StringOutput { + return o.ApplyT(func(v LookupCertificateAuthorityResult) string { return v.DisplayName }).(pulumi.StringOutput) +} + +// (Required List of Strings) The expiration dates of certificates in the chain, for example, `["2017-07-21T17:32:28Z"]`. +func (o LookupCertificateAuthorityResultOutput) ExpirationDates() pulumi.StringArrayOutput { + return o.ApplyT(func(v LookupCertificateAuthorityResult) []string { return v.ExpirationDates }).(pulumi.StringArrayOutput) +} + +// (Required List of Strings) The fingerprints for each certificate in the certificate chain, for example, `["B1BC968BD4f49D622AA89A81F2150152A41D829C"]`. +func (o LookupCertificateAuthorityResultOutput) Fingerprints() pulumi.StringArrayOutput { + return o.ApplyT(func(v LookupCertificateAuthorityResult) []string { return v.Fingerprints }).(pulumi.StringArrayOutput) +} + +func (o LookupCertificateAuthorityResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupCertificateAuthorityResult) string { return v.Id }).(pulumi.StringOutput) +} + +// (Required List of Strings) The serial numbers for each certificate in the certificate chain. +func (o LookupCertificateAuthorityResultOutput) SerialNumbers() pulumi.StringArrayOutput { + return o.ApplyT(func(v LookupCertificateAuthorityResult) []string { return v.SerialNumbers }).(pulumi.StringArrayOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupCertificateAuthorityResultOutput{}) +} diff --git a/sdk/go/confluentcloud/getCertificatePool.go b/sdk/go/confluentcloud/getCertificatePool.go new file mode 100644 index 00000000..12bdb7d6 --- /dev/null +++ b/sdk/go/confluentcloud/getCertificatePool.go @@ -0,0 +1,155 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package confluentcloud + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) +// +// `CertificatePool` describes a Certificate Pool data source. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// main, err := confluentcloud.LookupCertificatePool(ctx, &confluentcloud.LookupCertificatePoolArgs{ +// Id: "pool-def456", +// CertificateAuthority: confluentcloud.GetCertificatePoolCertificateAuthority{ +// Id: "op-abc123", +// }, +// }, nil) +// if err != nil { +// return err +// } +// ctx.Export("certificatePool", main) +// return nil +// }) +// } +// +// ``` +func LookupCertificatePool(ctx *pulumi.Context, args *LookupCertificatePoolArgs, opts ...pulumi.InvokeOption) (*LookupCertificatePoolResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupCertificatePoolResult + err := ctx.Invoke("confluentcloud:index/getCertificatePool:getCertificatePool", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getCertificatePool. +type LookupCertificatePoolArgs struct { + CertificateAuthority GetCertificatePoolCertificateAuthority `pulumi:"certificateAuthority"` + // The ID of the Certificate Pool, for example, `pool-abc123`. + Id string `pulumi:"id"` +} + +// A collection of values returned by getCertificatePool. +type LookupCertificatePoolResult struct { + CertificateAuthority GetCertificatePoolCertificateAuthority `pulumi:"certificateAuthority"` + // (Required String) A description of the Certificate Pool. + Description string `pulumi:"description"` + // (Required String) A human-readable name for the Certificate Pool. + DisplayName string `pulumi:"displayName"` + // (Required String) The certificate field that will be used to represent the pool's external identity for audit logging, for example, `UID`. + ExternalIdentifier string `pulumi:"externalIdentifier"` + // (Required String) A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + Filter string `pulumi:"filter"` + Id string `pulumi:"id"` +} + +func LookupCertificatePoolOutput(ctx *pulumi.Context, args LookupCertificatePoolOutputArgs, opts ...pulumi.InvokeOption) LookupCertificatePoolResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupCertificatePoolResultOutput, error) { + args := v.(LookupCertificatePoolArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupCertificatePoolResult + secret, err := ctx.InvokePackageRaw("confluentcloud:index/getCertificatePool:getCertificatePool", args, &rv, "", opts...) + if err != nil { + return LookupCertificatePoolResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupCertificatePoolResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupCertificatePoolResultOutput), nil + } + return output, nil + }).(LookupCertificatePoolResultOutput) +} + +// A collection of arguments for invoking getCertificatePool. +type LookupCertificatePoolOutputArgs struct { + CertificateAuthority GetCertificatePoolCertificateAuthorityInput `pulumi:"certificateAuthority"` + // The ID of the Certificate Pool, for example, `pool-abc123`. + Id pulumi.StringInput `pulumi:"id"` +} + +func (LookupCertificatePoolOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupCertificatePoolArgs)(nil)).Elem() +} + +// A collection of values returned by getCertificatePool. +type LookupCertificatePoolResultOutput struct{ *pulumi.OutputState } + +func (LookupCertificatePoolResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupCertificatePoolResult)(nil)).Elem() +} + +func (o LookupCertificatePoolResultOutput) ToLookupCertificatePoolResultOutput() LookupCertificatePoolResultOutput { + return o +} + +func (o LookupCertificatePoolResultOutput) ToLookupCertificatePoolResultOutputWithContext(ctx context.Context) LookupCertificatePoolResultOutput { + return o +} + +func (o LookupCertificatePoolResultOutput) CertificateAuthority() GetCertificatePoolCertificateAuthorityOutput { + return o.ApplyT(func(v LookupCertificatePoolResult) GetCertificatePoolCertificateAuthority { + return v.CertificateAuthority + }).(GetCertificatePoolCertificateAuthorityOutput) +} + +// (Required String) A description of the Certificate Pool. +func (o LookupCertificatePoolResultOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v LookupCertificatePoolResult) string { return v.Description }).(pulumi.StringOutput) +} + +// (Required String) A human-readable name for the Certificate Pool. +func (o LookupCertificatePoolResultOutput) DisplayName() pulumi.StringOutput { + return o.ApplyT(func(v LookupCertificatePoolResult) string { return v.DisplayName }).(pulumi.StringOutput) +} + +// (Required String) The certificate field that will be used to represent the pool's external identity for audit logging, for example, `UID`. +func (o LookupCertificatePoolResultOutput) ExternalIdentifier() pulumi.StringOutput { + return o.ApplyT(func(v LookupCertificatePoolResult) string { return v.ExternalIdentifier }).(pulumi.StringOutput) +} + +// (Required String) A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. +func (o LookupCertificatePoolResultOutput) Filter() pulumi.StringOutput { + return o.ApplyT(func(v LookupCertificatePoolResult) string { return v.Filter }).(pulumi.StringOutput) +} + +func (o LookupCertificatePoolResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupCertificatePoolResult) string { return v.Id }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupCertificatePoolResultOutput{}) +} diff --git a/sdk/go/confluentcloud/init.go b/sdk/go/confluentcloud/init.go index c1be686c..bb714e6f 100644 --- a/sdk/go/confluentcloud/init.go +++ b/sdk/go/confluentcloud/init.go @@ -33,6 +33,10 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &ByokKey{} case "confluentcloud:index/catalogEntityAttributes:CatalogEntityAttributes": r = &CatalogEntityAttributes{} + case "confluentcloud:index/certificateAuthority:CertificateAuthority": + r = &CertificateAuthority{} + case "confluentcloud:index/certificatePool:CertificatePool": + r = &CertificatePool{} case "confluentcloud:index/clusterLink:ClusterLink": r = &ClusterLink{} case "confluentcloud:index/connector:Connector": @@ -176,6 +180,16 @@ func init() { "index/catalogEntityAttributes", &module{version}, ) + pulumi.RegisterResourceModule( + "confluentcloud", + "index/certificateAuthority", + &module{version}, + ) + pulumi.RegisterResourceModule( + "confluentcloud", + "index/certificatePool", + &module{version}, + ) pulumi.RegisterResourceModule( "confluentcloud", "index/clusterLink", diff --git a/sdk/go/confluentcloud/pulumiTypes.go b/sdk/go/confluentcloud/pulumiTypes.go index f6d5b022..c553c360 100644 --- a/sdk/go/confluentcloud/pulumiTypes.go +++ b/sdk/go/confluentcloud/pulumiTypes.go @@ -2754,6 +2754,143 @@ func (o CatalogEntityAttributesSchemaRegistryClusterPtrOutput) Id() pulumi.Strin }).(pulumi.StringPtrOutput) } +type CertificatePoolCertificateAuthority struct { + // The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + Id string `pulumi:"id"` +} + +// CertificatePoolCertificateAuthorityInput is an input type that accepts CertificatePoolCertificateAuthorityArgs and CertificatePoolCertificateAuthorityOutput values. +// You can construct a concrete instance of `CertificatePoolCertificateAuthorityInput` via: +// +// CertificatePoolCertificateAuthorityArgs{...} +type CertificatePoolCertificateAuthorityInput interface { + pulumi.Input + + ToCertificatePoolCertificateAuthorityOutput() CertificatePoolCertificateAuthorityOutput + ToCertificatePoolCertificateAuthorityOutputWithContext(context.Context) CertificatePoolCertificateAuthorityOutput +} + +type CertificatePoolCertificateAuthorityArgs struct { + // The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + Id pulumi.StringInput `pulumi:"id"` +} + +func (CertificatePoolCertificateAuthorityArgs) ElementType() reflect.Type { + return reflect.TypeOf((*CertificatePoolCertificateAuthority)(nil)).Elem() +} + +func (i CertificatePoolCertificateAuthorityArgs) ToCertificatePoolCertificateAuthorityOutput() CertificatePoolCertificateAuthorityOutput { + return i.ToCertificatePoolCertificateAuthorityOutputWithContext(context.Background()) +} + +func (i CertificatePoolCertificateAuthorityArgs) ToCertificatePoolCertificateAuthorityOutputWithContext(ctx context.Context) CertificatePoolCertificateAuthorityOutput { + return pulumi.ToOutputWithContext(ctx, i).(CertificatePoolCertificateAuthorityOutput) +} + +func (i CertificatePoolCertificateAuthorityArgs) ToCertificatePoolCertificateAuthorityPtrOutput() CertificatePoolCertificateAuthorityPtrOutput { + return i.ToCertificatePoolCertificateAuthorityPtrOutputWithContext(context.Background()) +} + +func (i CertificatePoolCertificateAuthorityArgs) ToCertificatePoolCertificateAuthorityPtrOutputWithContext(ctx context.Context) CertificatePoolCertificateAuthorityPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(CertificatePoolCertificateAuthorityOutput).ToCertificatePoolCertificateAuthorityPtrOutputWithContext(ctx) +} + +// CertificatePoolCertificateAuthorityPtrInput is an input type that accepts CertificatePoolCertificateAuthorityArgs, CertificatePoolCertificateAuthorityPtr and CertificatePoolCertificateAuthorityPtrOutput values. +// You can construct a concrete instance of `CertificatePoolCertificateAuthorityPtrInput` via: +// +// CertificatePoolCertificateAuthorityArgs{...} +// +// or: +// +// nil +type CertificatePoolCertificateAuthorityPtrInput interface { + pulumi.Input + + ToCertificatePoolCertificateAuthorityPtrOutput() CertificatePoolCertificateAuthorityPtrOutput + ToCertificatePoolCertificateAuthorityPtrOutputWithContext(context.Context) CertificatePoolCertificateAuthorityPtrOutput +} + +type certificatePoolCertificateAuthorityPtrType CertificatePoolCertificateAuthorityArgs + +func CertificatePoolCertificateAuthorityPtr(v *CertificatePoolCertificateAuthorityArgs) CertificatePoolCertificateAuthorityPtrInput { + return (*certificatePoolCertificateAuthorityPtrType)(v) +} + +func (*certificatePoolCertificateAuthorityPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**CertificatePoolCertificateAuthority)(nil)).Elem() +} + +func (i *certificatePoolCertificateAuthorityPtrType) ToCertificatePoolCertificateAuthorityPtrOutput() CertificatePoolCertificateAuthorityPtrOutput { + return i.ToCertificatePoolCertificateAuthorityPtrOutputWithContext(context.Background()) +} + +func (i *certificatePoolCertificateAuthorityPtrType) ToCertificatePoolCertificateAuthorityPtrOutputWithContext(ctx context.Context) CertificatePoolCertificateAuthorityPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(CertificatePoolCertificateAuthorityPtrOutput) +} + +type CertificatePoolCertificateAuthorityOutput struct{ *pulumi.OutputState } + +func (CertificatePoolCertificateAuthorityOutput) ElementType() reflect.Type { + return reflect.TypeOf((*CertificatePoolCertificateAuthority)(nil)).Elem() +} + +func (o CertificatePoolCertificateAuthorityOutput) ToCertificatePoolCertificateAuthorityOutput() CertificatePoolCertificateAuthorityOutput { + return o +} + +func (o CertificatePoolCertificateAuthorityOutput) ToCertificatePoolCertificateAuthorityOutputWithContext(ctx context.Context) CertificatePoolCertificateAuthorityOutput { + return o +} + +func (o CertificatePoolCertificateAuthorityOutput) ToCertificatePoolCertificateAuthorityPtrOutput() CertificatePoolCertificateAuthorityPtrOutput { + return o.ToCertificatePoolCertificateAuthorityPtrOutputWithContext(context.Background()) +} + +func (o CertificatePoolCertificateAuthorityOutput) ToCertificatePoolCertificateAuthorityPtrOutputWithContext(ctx context.Context) CertificatePoolCertificateAuthorityPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v CertificatePoolCertificateAuthority) *CertificatePoolCertificateAuthority { + return &v + }).(CertificatePoolCertificateAuthorityPtrOutput) +} + +// The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. +func (o CertificatePoolCertificateAuthorityOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v CertificatePoolCertificateAuthority) string { return v.Id }).(pulumi.StringOutput) +} + +type CertificatePoolCertificateAuthorityPtrOutput struct{ *pulumi.OutputState } + +func (CertificatePoolCertificateAuthorityPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**CertificatePoolCertificateAuthority)(nil)).Elem() +} + +func (o CertificatePoolCertificateAuthorityPtrOutput) ToCertificatePoolCertificateAuthorityPtrOutput() CertificatePoolCertificateAuthorityPtrOutput { + return o +} + +func (o CertificatePoolCertificateAuthorityPtrOutput) ToCertificatePoolCertificateAuthorityPtrOutputWithContext(ctx context.Context) CertificatePoolCertificateAuthorityPtrOutput { + return o +} + +func (o CertificatePoolCertificateAuthorityPtrOutput) Elem() CertificatePoolCertificateAuthorityOutput { + return o.ApplyT(func(v *CertificatePoolCertificateAuthority) CertificatePoolCertificateAuthority { + if v != nil { + return *v + } + var ret CertificatePoolCertificateAuthority + return ret + }).(CertificatePoolCertificateAuthorityOutput) +} + +// The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. +func (o CertificatePoolCertificateAuthorityPtrOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v *CertificatePoolCertificateAuthority) *string { + if v == nil { + return nil + } + return &v.Id + }).(pulumi.StringPtrOutput) +} + type ClusterLinkDestinationKafkaCluster struct { // The bootstrap endpoint of the destination Kafka cluster, for example, `SASL_SSL://pkc-00000.us-central1.gcp.confluent.cloud:9092` or `pkc-00000.us-central1.gcp.confluent.cloud:9092`). BootstrapEndpoint *string `pulumi:"bootstrapEndpoint"` @@ -20829,6 +20966,58 @@ func (o GetByokKeyGcpArrayOutput) Index(i pulumi.IntInput) GetByokKeyGcpOutput { }).(GetByokKeyGcpOutput) } +type GetCertificatePoolCertificateAuthority struct { + // The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + Id string `pulumi:"id"` +} + +// GetCertificatePoolCertificateAuthorityInput is an input type that accepts GetCertificatePoolCertificateAuthorityArgs and GetCertificatePoolCertificateAuthorityOutput values. +// You can construct a concrete instance of `GetCertificatePoolCertificateAuthorityInput` via: +// +// GetCertificatePoolCertificateAuthorityArgs{...} +type GetCertificatePoolCertificateAuthorityInput interface { + pulumi.Input + + ToGetCertificatePoolCertificateAuthorityOutput() GetCertificatePoolCertificateAuthorityOutput + ToGetCertificatePoolCertificateAuthorityOutputWithContext(context.Context) GetCertificatePoolCertificateAuthorityOutput +} + +type GetCertificatePoolCertificateAuthorityArgs struct { + // The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + Id pulumi.StringInput `pulumi:"id"` +} + +func (GetCertificatePoolCertificateAuthorityArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetCertificatePoolCertificateAuthority)(nil)).Elem() +} + +func (i GetCertificatePoolCertificateAuthorityArgs) ToGetCertificatePoolCertificateAuthorityOutput() GetCertificatePoolCertificateAuthorityOutput { + return i.ToGetCertificatePoolCertificateAuthorityOutputWithContext(context.Background()) +} + +func (i GetCertificatePoolCertificateAuthorityArgs) ToGetCertificatePoolCertificateAuthorityOutputWithContext(ctx context.Context) GetCertificatePoolCertificateAuthorityOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetCertificatePoolCertificateAuthorityOutput) +} + +type GetCertificatePoolCertificateAuthorityOutput struct{ *pulumi.OutputState } + +func (GetCertificatePoolCertificateAuthorityOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetCertificatePoolCertificateAuthority)(nil)).Elem() +} + +func (o GetCertificatePoolCertificateAuthorityOutput) ToGetCertificatePoolCertificateAuthorityOutput() GetCertificatePoolCertificateAuthorityOutput { + return o +} + +func (o GetCertificatePoolCertificateAuthorityOutput) ToGetCertificatePoolCertificateAuthorityOutputWithContext(ctx context.Context) GetCertificatePoolCertificateAuthorityOutput { + return o +} + +// The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. +func (o GetCertificatePoolCertificateAuthorityOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetCertificatePoolCertificateAuthority) string { return v.Id }).(pulumi.StringOutput) +} + type GetDnsRecordEnvironment struct { // The ID of the Environment that the DNS Record belongs to, for example, `env-123abc`. Id string `pulumi:"id"` @@ -32184,6 +32373,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*CatalogEntityAttributesCredentialsPtrInput)(nil)).Elem(), CatalogEntityAttributesCredentialsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*CatalogEntityAttributesSchemaRegistryClusterInput)(nil)).Elem(), CatalogEntityAttributesSchemaRegistryClusterArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*CatalogEntityAttributesSchemaRegistryClusterPtrInput)(nil)).Elem(), CatalogEntityAttributesSchemaRegistryClusterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*CertificatePoolCertificateAuthorityInput)(nil)).Elem(), CertificatePoolCertificateAuthorityArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*CertificatePoolCertificateAuthorityPtrInput)(nil)).Elem(), CertificatePoolCertificateAuthorityArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ClusterLinkDestinationKafkaClusterInput)(nil)).Elem(), ClusterLinkDestinationKafkaClusterArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ClusterLinkDestinationKafkaClusterPtrInput)(nil)).Elem(), ClusterLinkDestinationKafkaClusterArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ClusterLinkDestinationKafkaClusterCredentialsInput)(nil)).Elem(), ClusterLinkDestinationKafkaClusterCredentialsArgs{}) @@ -32437,6 +32628,7 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*GetByokKeyAzureArrayInput)(nil)).Elem(), GetByokKeyAzureArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetByokKeyGcpInput)(nil)).Elem(), GetByokKeyGcpArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetByokKeyGcpArrayInput)(nil)).Elem(), GetByokKeyGcpArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetCertificatePoolCertificateAuthorityInput)(nil)).Elem(), GetCertificatePoolCertificateAuthorityArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetDnsRecordEnvironmentInput)(nil)).Elem(), GetDnsRecordEnvironmentArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetDnsRecordGatewayInput)(nil)).Elem(), GetDnsRecordGatewayArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetDnsRecordGatewayArrayInput)(nil)).Elem(), GetDnsRecordGatewayArray{}) @@ -32656,6 +32848,8 @@ func init() { pulumi.RegisterOutputType(CatalogEntityAttributesCredentialsPtrOutput{}) pulumi.RegisterOutputType(CatalogEntityAttributesSchemaRegistryClusterOutput{}) pulumi.RegisterOutputType(CatalogEntityAttributesSchemaRegistryClusterPtrOutput{}) + pulumi.RegisterOutputType(CertificatePoolCertificateAuthorityOutput{}) + pulumi.RegisterOutputType(CertificatePoolCertificateAuthorityPtrOutput{}) pulumi.RegisterOutputType(ClusterLinkDestinationKafkaClusterOutput{}) pulumi.RegisterOutputType(ClusterLinkDestinationKafkaClusterPtrOutput{}) pulumi.RegisterOutputType(ClusterLinkDestinationKafkaClusterCredentialsOutput{}) @@ -32909,6 +33103,7 @@ func init() { pulumi.RegisterOutputType(GetByokKeyAzureArrayOutput{}) pulumi.RegisterOutputType(GetByokKeyGcpOutput{}) pulumi.RegisterOutputType(GetByokKeyGcpArrayOutput{}) + pulumi.RegisterOutputType(GetCertificatePoolCertificateAuthorityOutput{}) pulumi.RegisterOutputType(GetDnsRecordEnvironmentOutput{}) pulumi.RegisterOutputType(GetDnsRecordGatewayOutput{}) pulumi.RegisterOutputType(GetDnsRecordGatewayArrayOutput{}) diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/CertificateAuthority.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/CertificateAuthority.java new file mode 100644 index 00000000..93879b44 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/CertificateAuthority.java @@ -0,0 +1,292 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.confluentcloud; + +import com.pulumi.confluentcloud.CertificateAuthorityArgs; +import com.pulumi.confluentcloud.Utilities; +import com.pulumi.confluentcloud.inputs.CertificateAuthorityState; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import java.lang.String; +import java.util.List; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + * + * `confluentcloud.CertificateAuthority` provides a Certificate Authority resource that enables creating, editing, and deleting Certificate Authorities on Confluent Cloud. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.confluentcloud.CertificateAuthority;
+ * import com.pulumi.confluentcloud.CertificateAuthorityArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var main = new CertificateAuthority("main", CertificateAuthorityArgs.builder()
+ *             .displayName("my_certificate_authority")
+ *             .description("description")
+ *             .certificateChainFilename("certificate.pem")
+ *             .certificateChain("***REDACTED***")
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ## Import + * + * You can import a Certificate Authority by using Certificate Authority ID, for example: + * + * $ export CONFLUENT_CLOUD_API_KEY="<cloud_api_key>" + * + * $ export CONFLUENT_CLOUD_API_SECRET="<cloud_api_secret>" + * + * ```sh + * $ pulumi import confluentcloud:index/certificateAuthority:CertificateAuthority main op-abc123 + * ``` + * + * !> **Warning:** Do not forget to delete terminal command history afterwards for security purposes. + * + */ +@ResourceType(type="confluentcloud:index/certificateAuthority:CertificateAuthority") +public class CertificateAuthority extends com.pulumi.resources.CustomResource { + /** + * A base64 encoded string containing the signing certificate chain. + * + */ + @Export(name="certificateChain", refs={String.class}, tree="[0]") + private Output certificateChain; + + /** + * @return A base64 encoded string containing the signing certificate chain. + * + */ + public Output certificateChain() { + return this.certificateChain; + } + /** + * The name of the certificate file. + * + */ + @Export(name="certificateChainFilename", refs={String.class}, tree="[0]") + private Output certificateChainFilename; + + /** + * @return The name of the certificate file. + * + */ + public Output certificateChainFilename() { + return this.certificateChainFilename; + } + /** + * A base64 encoded string containing the CRL for this certificate authority. + * + */ + @Export(name="crlChain", refs={String.class}, tree="[0]") + private Output crlChain; + + /** + * @return A base64 encoded string containing the CRL for this certificate authority. + * + */ + public Output> crlChain() { + return Codegen.optional(this.crlChain); + } + /** + * (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). + * + */ + @Export(name="crlSource", refs={String.class}, tree="[0]") + private Output crlSource; + + /** + * @return (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). + * + */ + public Output crlSource() { + return this.crlSource; + } + /** + * (Optional String) The timestamp for when CRL was last updated. + * + */ + @Export(name="crlUpdatedAt", refs={String.class}, tree="[0]") + private Output crlUpdatedAt; + + /** + * @return (Optional String) The timestamp for when CRL was last updated. + * + */ + public Output crlUpdatedAt() { + return this.crlUpdatedAt; + } + /** + * The url from which to fetch the CRL for the certificate authority. + * + */ + @Export(name="crlUrl", refs={String.class}, tree="[0]") + private Output crlUrl; + + /** + * @return The url from which to fetch the CRL for the certificate authority. + * + */ + public Output> crlUrl() { + return Codegen.optional(this.crlUrl); + } + /** + * A description of the Certificate Authority. + * + */ + @Export(name="description", refs={String.class}, tree="[0]") + private Output description; + + /** + * @return A description of the Certificate Authority. + * + */ + public Output description() { + return this.description; + } + /** + * The name of the Certificate Authority. + * + */ + @Export(name="displayName", refs={String.class}, tree="[0]") + private Output displayName; + + /** + * @return The name of the Certificate Authority. + * + */ + public Output displayName() { + return this.displayName; + } + /** + * (Required List of Strings) The expiration dates of certificates in the chain. + * + */ + @Export(name="expirationDates", refs={List.class,String.class}, tree="[0,1]") + private Output> expirationDates; + + /** + * @return (Required List of Strings) The expiration dates of certificates in the chain. + * + */ + public Output> expirationDates() { + return this.expirationDates; + } + /** + * (Required List of Strings) The fingerprints for each certificate in the certificate chain. + * + */ + @Export(name="fingerprints", refs={List.class,String.class}, tree="[0,1]") + private Output> fingerprints; + + /** + * @return (Required List of Strings) The fingerprints for each certificate in the certificate chain. + * + */ + public Output> fingerprints() { + return this.fingerprints; + } + /** + * (Required List of Strings) The serial numbers for each certificate in the certificate chain. + * + */ + @Export(name="serialNumbers", refs={List.class,String.class}, tree="[0,1]") + private Output> serialNumbers; + + /** + * @return (Required List of Strings) The serial numbers for each certificate in the certificate chain. + * + */ + public Output> serialNumbers() { + return this.serialNumbers; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public CertificateAuthority(java.lang.String name) { + this(name, CertificateAuthorityArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public CertificateAuthority(java.lang.String name, CertificateAuthorityArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public CertificateAuthority(java.lang.String name, CertificateAuthorityArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("confluentcloud:index/certificateAuthority:CertificateAuthority", name, makeArgs(args, options), makeResourceOptions(options, Codegen.empty()), false); + } + + private CertificateAuthority(java.lang.String name, Output id, @Nullable CertificateAuthorityState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("confluentcloud:index/certificateAuthority:CertificateAuthority", name, state, makeResourceOptions(options, id), false); + } + + private static CertificateAuthorityArgs makeArgs(CertificateAuthorityArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + if (options != null && options.getUrn().isPresent()) { + return null; + } + return args == null ? CertificateAuthorityArgs.Empty : args; + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .additionalSecretOutputs(List.of( + "certificateChain", + "crlChain" + )) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static CertificateAuthority get(java.lang.String name, Output id, @Nullable CertificateAuthorityState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new CertificateAuthority(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/CertificateAuthorityArgs.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/CertificateAuthorityArgs.java new file mode 100644 index 00000000..227caf66 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/CertificateAuthorityArgs.java @@ -0,0 +1,281 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.confluentcloud; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class CertificateAuthorityArgs extends com.pulumi.resources.ResourceArgs { + + public static final CertificateAuthorityArgs Empty = new CertificateAuthorityArgs(); + + /** + * A base64 encoded string containing the signing certificate chain. + * + */ + @Import(name="certificateChain", required=true) + private Output certificateChain; + + /** + * @return A base64 encoded string containing the signing certificate chain. + * + */ + public Output certificateChain() { + return this.certificateChain; + } + + /** + * The name of the certificate file. + * + */ + @Import(name="certificateChainFilename", required=true) + private Output certificateChainFilename; + + /** + * @return The name of the certificate file. + * + */ + public Output certificateChainFilename() { + return this.certificateChainFilename; + } + + /** + * A base64 encoded string containing the CRL for this certificate authority. + * + */ + @Import(name="crlChain") + private @Nullable Output crlChain; + + /** + * @return A base64 encoded string containing the CRL for this certificate authority. + * + */ + public Optional> crlChain() { + return Optional.ofNullable(this.crlChain); + } + + /** + * The url from which to fetch the CRL for the certificate authority. + * + */ + @Import(name="crlUrl") + private @Nullable Output crlUrl; + + /** + * @return The url from which to fetch the CRL for the certificate authority. + * + */ + public Optional> crlUrl() { + return Optional.ofNullable(this.crlUrl); + } + + /** + * A description of the Certificate Authority. + * + */ + @Import(name="description", required=true) + private Output description; + + /** + * @return A description of the Certificate Authority. + * + */ + public Output description() { + return this.description; + } + + /** + * The name of the Certificate Authority. + * + */ + @Import(name="displayName", required=true) + private Output displayName; + + /** + * @return The name of the Certificate Authority. + * + */ + public Output displayName() { + return this.displayName; + } + + private CertificateAuthorityArgs() {} + + private CertificateAuthorityArgs(CertificateAuthorityArgs $) { + this.certificateChain = $.certificateChain; + this.certificateChainFilename = $.certificateChainFilename; + this.crlChain = $.crlChain; + this.crlUrl = $.crlUrl; + this.description = $.description; + this.displayName = $.displayName; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(CertificateAuthorityArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private CertificateAuthorityArgs $; + + public Builder() { + $ = new CertificateAuthorityArgs(); + } + + public Builder(CertificateAuthorityArgs defaults) { + $ = new CertificateAuthorityArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param certificateChain A base64 encoded string containing the signing certificate chain. + * + * @return builder + * + */ + public Builder certificateChain(Output certificateChain) { + $.certificateChain = certificateChain; + return this; + } + + /** + * @param certificateChain A base64 encoded string containing the signing certificate chain. + * + * @return builder + * + */ + public Builder certificateChain(String certificateChain) { + return certificateChain(Output.of(certificateChain)); + } + + /** + * @param certificateChainFilename The name of the certificate file. + * + * @return builder + * + */ + public Builder certificateChainFilename(Output certificateChainFilename) { + $.certificateChainFilename = certificateChainFilename; + return this; + } + + /** + * @param certificateChainFilename The name of the certificate file. + * + * @return builder + * + */ + public Builder certificateChainFilename(String certificateChainFilename) { + return certificateChainFilename(Output.of(certificateChainFilename)); + } + + /** + * @param crlChain A base64 encoded string containing the CRL for this certificate authority. + * + * @return builder + * + */ + public Builder crlChain(@Nullable Output crlChain) { + $.crlChain = crlChain; + return this; + } + + /** + * @param crlChain A base64 encoded string containing the CRL for this certificate authority. + * + * @return builder + * + */ + public Builder crlChain(String crlChain) { + return crlChain(Output.of(crlChain)); + } + + /** + * @param crlUrl The url from which to fetch the CRL for the certificate authority. + * + * @return builder + * + */ + public Builder crlUrl(@Nullable Output crlUrl) { + $.crlUrl = crlUrl; + return this; + } + + /** + * @param crlUrl The url from which to fetch the CRL for the certificate authority. + * + * @return builder + * + */ + public Builder crlUrl(String crlUrl) { + return crlUrl(Output.of(crlUrl)); + } + + /** + * @param description A description of the Certificate Authority. + * + * @return builder + * + */ + public Builder description(Output description) { + $.description = description; + return this; + } + + /** + * @param description A description of the Certificate Authority. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param displayName The name of the Certificate Authority. + * + * @return builder + * + */ + public Builder displayName(Output displayName) { + $.displayName = displayName; + return this; + } + + /** + * @param displayName The name of the Certificate Authority. + * + * @return builder + * + */ + public Builder displayName(String displayName) { + return displayName(Output.of(displayName)); + } + + public CertificateAuthorityArgs build() { + if ($.certificateChain == null) { + throw new MissingRequiredPropertyException("CertificateAuthorityArgs", "certificateChain"); + } + if ($.certificateChainFilename == null) { + throw new MissingRequiredPropertyException("CertificateAuthorityArgs", "certificateChainFilename"); + } + if ($.description == null) { + throw new MissingRequiredPropertyException("CertificateAuthorityArgs", "description"); + } + if ($.displayName == null) { + throw new MissingRequiredPropertyException("CertificateAuthorityArgs", "displayName"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/CertificatePool.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/CertificatePool.java new file mode 100644 index 00000000..c1fc20a3 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/CertificatePool.java @@ -0,0 +1,199 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.confluentcloud; + +import com.pulumi.confluentcloud.CertificatePoolArgs; +import com.pulumi.confluentcloud.Utilities; +import com.pulumi.confluentcloud.inputs.CertificatePoolState; +import com.pulumi.confluentcloud.outputs.CertificatePoolCertificateAuthority; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import java.lang.String; +import javax.annotation.Nullable; + +/** + * [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + * + * `confluentcloud.CertificatePool` provides a Certificate Pool resource that enables creating, editing, and deleting Certificate Pools on Confluent Cloud. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.confluentcloud.CertificatePool;
+ * import com.pulumi.confluentcloud.CertificatePoolArgs;
+ * import com.pulumi.confluentcloud.inputs.CertificatePoolCertificateAuthorityArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var main = new CertificatePool("main", CertificatePoolArgs.builder()
+ *             .certificateAuthority(CertificatePoolCertificateAuthorityArgs.builder()
+ *                 .id(mainConfluentCertificateAuthority.id())
+ *                 .build())
+ *             .displayName("my-certificate-pool")
+ *             .description("example description")
+ *             .externalIdentifier("CN")
+ *             .filter("CN == \"test\"")
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ## Import + * + * You can import a Certificate Pool by using Certificate Authority ID and Certificate Pool ID, in the format `<Certificate Authority ID>/<Certificate Pool ID>`. The following example shows how to import a Certificate Pool: + * + * $ export CONFLUENT_CLOUD_API_KEY="<cloud_api_key>" + * + * $ export CONFLUENT_CLOUD_API_SECRET="<cloud_api_secret>" + * + * ```sh + * $ pulumi import confluentcloud:index/certificatePool:CertificatePool main op-abc123/pool-abc123 + * ``` + * + * !> **Warning:** Do not forget to delete terminal command history afterwards for security purposes. + * + */ +@ResourceType(type="confluentcloud:index/certificatePool:CertificatePool") +public class CertificatePool extends com.pulumi.resources.CustomResource { + @Export(name="certificateAuthority", refs={CertificatePoolCertificateAuthority.class}, tree="[0]") + private Output certificateAuthority; + + public Output certificateAuthority() { + return this.certificateAuthority; + } + /** + * A description of the Certificate Pool. + * + */ + @Export(name="description", refs={String.class}, tree="[0]") + private Output description; + + /** + * @return A description of the Certificate Pool. + * + */ + public Output description() { + return this.description; + } + /** + * The name of the Certificate Pool. + * + */ + @Export(name="displayName", refs={String.class}, tree="[0]") + private Output displayName; + + /** + * @return The name of the Certificate Pool. + * + */ + public Output displayName() { + return this.displayName; + } + /** + * The certificate field that will be used to represent the pool's external identity for audit logging. + * + */ + @Export(name="externalIdentifier", refs={String.class}, tree="[0]") + private Output externalIdentifier; + + /** + * @return The certificate field that will be used to represent the pool's external identity for audit logging. + * + */ + public Output externalIdentifier() { + return this.externalIdentifier; + } + /** + * A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + * + */ + @Export(name="filter", refs={String.class}, tree="[0]") + private Output filter; + + /** + * @return A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + * + */ + public Output filter() { + return this.filter; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public CertificatePool(java.lang.String name) { + this(name, CertificatePoolArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public CertificatePool(java.lang.String name, CertificatePoolArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public CertificatePool(java.lang.String name, CertificatePoolArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("confluentcloud:index/certificatePool:CertificatePool", name, makeArgs(args, options), makeResourceOptions(options, Codegen.empty()), false); + } + + private CertificatePool(java.lang.String name, Output id, @Nullable CertificatePoolState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("confluentcloud:index/certificatePool:CertificatePool", name, state, makeResourceOptions(options, id), false); + } + + private static CertificatePoolArgs makeArgs(CertificatePoolArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + if (options != null && options.getUrn().isPresent()) { + return null; + } + return args == null ? CertificatePoolArgs.Empty : args; + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static CertificatePool get(java.lang.String name, Output id, @Nullable CertificatePoolState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new CertificatePool(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/CertificatePoolArgs.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/CertificatePoolArgs.java new file mode 100644 index 00000000..4dda4fd4 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/CertificatePoolArgs.java @@ -0,0 +1,226 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.confluentcloud; + +import com.pulumi.confluentcloud.inputs.CertificatePoolCertificateAuthorityArgs; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class CertificatePoolArgs extends com.pulumi.resources.ResourceArgs { + + public static final CertificatePoolArgs Empty = new CertificatePoolArgs(); + + @Import(name="certificateAuthority", required=true) + private Output certificateAuthority; + + public Output certificateAuthority() { + return this.certificateAuthority; + } + + /** + * A description of the Certificate Pool. + * + */ + @Import(name="description", required=true) + private Output description; + + /** + * @return A description of the Certificate Pool. + * + */ + public Output description() { + return this.description; + } + + /** + * The name of the Certificate Pool. + * + */ + @Import(name="displayName", required=true) + private Output displayName; + + /** + * @return The name of the Certificate Pool. + * + */ + public Output displayName() { + return this.displayName; + } + + /** + * The certificate field that will be used to represent the pool's external identity for audit logging. + * + */ + @Import(name="externalIdentifier", required=true) + private Output externalIdentifier; + + /** + * @return The certificate field that will be used to represent the pool's external identity for audit logging. + * + */ + public Output externalIdentifier() { + return this.externalIdentifier; + } + + /** + * A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + * + */ + @Import(name="filter", required=true) + private Output filter; + + /** + * @return A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + * + */ + public Output filter() { + return this.filter; + } + + private CertificatePoolArgs() {} + + private CertificatePoolArgs(CertificatePoolArgs $) { + this.certificateAuthority = $.certificateAuthority; + this.description = $.description; + this.displayName = $.displayName; + this.externalIdentifier = $.externalIdentifier; + this.filter = $.filter; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(CertificatePoolArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private CertificatePoolArgs $; + + public Builder() { + $ = new CertificatePoolArgs(); + } + + public Builder(CertificatePoolArgs defaults) { + $ = new CertificatePoolArgs(Objects.requireNonNull(defaults)); + } + + public Builder certificateAuthority(Output certificateAuthority) { + $.certificateAuthority = certificateAuthority; + return this; + } + + public Builder certificateAuthority(CertificatePoolCertificateAuthorityArgs certificateAuthority) { + return certificateAuthority(Output.of(certificateAuthority)); + } + + /** + * @param description A description of the Certificate Pool. + * + * @return builder + * + */ + public Builder description(Output description) { + $.description = description; + return this; + } + + /** + * @param description A description of the Certificate Pool. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param displayName The name of the Certificate Pool. + * + * @return builder + * + */ + public Builder displayName(Output displayName) { + $.displayName = displayName; + return this; + } + + /** + * @param displayName The name of the Certificate Pool. + * + * @return builder + * + */ + public Builder displayName(String displayName) { + return displayName(Output.of(displayName)); + } + + /** + * @param externalIdentifier The certificate field that will be used to represent the pool's external identity for audit logging. + * + * @return builder + * + */ + public Builder externalIdentifier(Output externalIdentifier) { + $.externalIdentifier = externalIdentifier; + return this; + } + + /** + * @param externalIdentifier The certificate field that will be used to represent the pool's external identity for audit logging. + * + * @return builder + * + */ + public Builder externalIdentifier(String externalIdentifier) { + return externalIdentifier(Output.of(externalIdentifier)); + } + + /** + * @param filter A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + * + * @return builder + * + */ + public Builder filter(Output filter) { + $.filter = filter; + return this; + } + + /** + * @param filter A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + * + * @return builder + * + */ + public Builder filter(String filter) { + return filter(Output.of(filter)); + } + + public CertificatePoolArgs build() { + if ($.certificateAuthority == null) { + throw new MissingRequiredPropertyException("CertificatePoolArgs", "certificateAuthority"); + } + if ($.description == null) { + throw new MissingRequiredPropertyException("CertificatePoolArgs", "description"); + } + if ($.displayName == null) { + throw new MissingRequiredPropertyException("CertificatePoolArgs", "displayName"); + } + if ($.externalIdentifier == null) { + throw new MissingRequiredPropertyException("CertificatePoolArgs", "externalIdentifier"); + } + if ($.filter == null) { + throw new MissingRequiredPropertyException("CertificatePoolArgs", "filter"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/ConfluentcloudFunctions.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/ConfluentcloudFunctions.java index 41fd2b3f..7b945974 100644 --- a/sdk/java/src/main/java/com/pulumi/confluentcloud/ConfluentcloudFunctions.java +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/ConfluentcloudFunctions.java @@ -12,6 +12,10 @@ import com.pulumi.confluentcloud.inputs.GetBusinessMetadataPlainArgs; import com.pulumi.confluentcloud.inputs.GetByokKeyArgs; import com.pulumi.confluentcloud.inputs.GetByokKeyPlainArgs; +import com.pulumi.confluentcloud.inputs.GetCertificateAuthorityArgs; +import com.pulumi.confluentcloud.inputs.GetCertificateAuthorityPlainArgs; +import com.pulumi.confluentcloud.inputs.GetCertificatePoolArgs; +import com.pulumi.confluentcloud.inputs.GetCertificatePoolPlainArgs; import com.pulumi.confluentcloud.inputs.GetDnsRecordArgs; import com.pulumi.confluentcloud.inputs.GetDnsRecordPlainArgs; import com.pulumi.confluentcloud.inputs.GetEnvironmentArgs; @@ -92,6 +96,8 @@ import com.pulumi.confluentcloud.outputs.GetBusinessMetadataBindingResult; import com.pulumi.confluentcloud.outputs.GetBusinessMetadataResult; import com.pulumi.confluentcloud.outputs.GetByokKeyResult; +import com.pulumi.confluentcloud.outputs.GetCertificateAuthorityResult; +import com.pulumi.confluentcloud.outputs.GetCertificatePoolResult; import com.pulumi.confluentcloud.outputs.GetDnsRecordResult; import com.pulumi.confluentcloud.outputs.GetEnvironmentResult; import com.pulumi.confluentcloud.outputs.GetEnvironmentsResult; @@ -541,6 +547,382 @@ public static Output getByokKey(GetByokKeyArgs args, InvokeOpt public static CompletableFuture getByokKeyPlain(GetByokKeyPlainArgs args, InvokeOptions options) { return Deployment.getInstance().invokeAsync("confluentcloud:index/getByokKey:getByokKey", TypeShape.of(GetByokKeyResult.class), args, Utilities.withVersion(options)); } + /** + * [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + * + * `confluentcloud.CertificateAuthority` describes a Certificate Authority data source. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.confluentcloud.ConfluentcloudFunctions;
+     * import com.pulumi.confluentcloud.inputs.GetCertificateAuthorityArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var main = ConfluentcloudFunctions.getCertificateAuthority(GetCertificateAuthorityArgs.builder()
+     *             .id("op-abc123")
+     *             .build());
+     * 
+     *         ctx.export("certificateAuthority", main.applyValue(getCertificateAuthorityResult -> getCertificateAuthorityResult));
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static Output getCertificateAuthority(GetCertificateAuthorityArgs args) { + return getCertificateAuthority(args, InvokeOptions.Empty); + } + /** + * [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + * + * `confluentcloud.CertificateAuthority` describes a Certificate Authority data source. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.confluentcloud.ConfluentcloudFunctions;
+     * import com.pulumi.confluentcloud.inputs.GetCertificateAuthorityArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var main = ConfluentcloudFunctions.getCertificateAuthority(GetCertificateAuthorityArgs.builder()
+     *             .id("op-abc123")
+     *             .build());
+     * 
+     *         ctx.export("certificateAuthority", main.applyValue(getCertificateAuthorityResult -> getCertificateAuthorityResult));
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static CompletableFuture getCertificateAuthorityPlain(GetCertificateAuthorityPlainArgs args) { + return getCertificateAuthorityPlain(args, InvokeOptions.Empty); + } + /** + * [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + * + * `confluentcloud.CertificateAuthority` describes a Certificate Authority data source. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.confluentcloud.ConfluentcloudFunctions;
+     * import com.pulumi.confluentcloud.inputs.GetCertificateAuthorityArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var main = ConfluentcloudFunctions.getCertificateAuthority(GetCertificateAuthorityArgs.builder()
+     *             .id("op-abc123")
+     *             .build());
+     * 
+     *         ctx.export("certificateAuthority", main.applyValue(getCertificateAuthorityResult -> getCertificateAuthorityResult));
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static Output getCertificateAuthority(GetCertificateAuthorityArgs args, InvokeOptions options) { + return Deployment.getInstance().invoke("confluentcloud:index/getCertificateAuthority:getCertificateAuthority", TypeShape.of(GetCertificateAuthorityResult.class), args, Utilities.withVersion(options)); + } + /** + * [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + * + * `confluentcloud.CertificateAuthority` describes a Certificate Authority data source. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.confluentcloud.ConfluentcloudFunctions;
+     * import com.pulumi.confluentcloud.inputs.GetCertificateAuthorityArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var main = ConfluentcloudFunctions.getCertificateAuthority(GetCertificateAuthorityArgs.builder()
+     *             .id("op-abc123")
+     *             .build());
+     * 
+     *         ctx.export("certificateAuthority", main.applyValue(getCertificateAuthorityResult -> getCertificateAuthorityResult));
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static CompletableFuture getCertificateAuthorityPlain(GetCertificateAuthorityPlainArgs args, InvokeOptions options) { + return Deployment.getInstance().invokeAsync("confluentcloud:index/getCertificateAuthority:getCertificateAuthority", TypeShape.of(GetCertificateAuthorityResult.class), args, Utilities.withVersion(options)); + } + /** + * [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + * + * `confluentcloud.CertificatePool` describes a Certificate Pool data source. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.confluentcloud.ConfluentcloudFunctions;
+     * import com.pulumi.confluentcloud.inputs.GetCertificatePoolArgs;
+     * import com.pulumi.confluentcloud.inputs.GetCertificatePoolCertificateAuthorityArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var main = ConfluentcloudFunctions.getCertificatePool(GetCertificatePoolArgs.builder()
+     *             .id("pool-def456")
+     *             .certificateAuthority(GetCertificatePoolCertificateAuthorityArgs.builder()
+     *                 .id("op-abc123")
+     *                 .build())
+     *             .build());
+     * 
+     *         ctx.export("certificatePool", main.applyValue(getCertificatePoolResult -> getCertificatePoolResult));
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static Output getCertificatePool(GetCertificatePoolArgs args) { + return getCertificatePool(args, InvokeOptions.Empty); + } + /** + * [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + * + * `confluentcloud.CertificatePool` describes a Certificate Pool data source. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.confluentcloud.ConfluentcloudFunctions;
+     * import com.pulumi.confluentcloud.inputs.GetCertificatePoolArgs;
+     * import com.pulumi.confluentcloud.inputs.GetCertificatePoolCertificateAuthorityArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var main = ConfluentcloudFunctions.getCertificatePool(GetCertificatePoolArgs.builder()
+     *             .id("pool-def456")
+     *             .certificateAuthority(GetCertificatePoolCertificateAuthorityArgs.builder()
+     *                 .id("op-abc123")
+     *                 .build())
+     *             .build());
+     * 
+     *         ctx.export("certificatePool", main.applyValue(getCertificatePoolResult -> getCertificatePoolResult));
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static CompletableFuture getCertificatePoolPlain(GetCertificatePoolPlainArgs args) { + return getCertificatePoolPlain(args, InvokeOptions.Empty); + } + /** + * [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + * + * `confluentcloud.CertificatePool` describes a Certificate Pool data source. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.confluentcloud.ConfluentcloudFunctions;
+     * import com.pulumi.confluentcloud.inputs.GetCertificatePoolArgs;
+     * import com.pulumi.confluentcloud.inputs.GetCertificatePoolCertificateAuthorityArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var main = ConfluentcloudFunctions.getCertificatePool(GetCertificatePoolArgs.builder()
+     *             .id("pool-def456")
+     *             .certificateAuthority(GetCertificatePoolCertificateAuthorityArgs.builder()
+     *                 .id("op-abc123")
+     *                 .build())
+     *             .build());
+     * 
+     *         ctx.export("certificatePool", main.applyValue(getCertificatePoolResult -> getCertificatePoolResult));
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static Output getCertificatePool(GetCertificatePoolArgs args, InvokeOptions options) { + return Deployment.getInstance().invoke("confluentcloud:index/getCertificatePool:getCertificatePool", TypeShape.of(GetCertificatePoolResult.class), args, Utilities.withVersion(options)); + } + /** + * [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + * + * `confluentcloud.CertificatePool` describes a Certificate Pool data source. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.confluentcloud.ConfluentcloudFunctions;
+     * import com.pulumi.confluentcloud.inputs.GetCertificatePoolArgs;
+     * import com.pulumi.confluentcloud.inputs.GetCertificatePoolCertificateAuthorityArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var main = ConfluentcloudFunctions.getCertificatePool(GetCertificatePoolArgs.builder()
+     *             .id("pool-def456")
+     *             .certificateAuthority(GetCertificatePoolCertificateAuthorityArgs.builder()
+     *                 .id("op-abc123")
+     *                 .build())
+     *             .build());
+     * 
+     *         ctx.export("certificatePool", main.applyValue(getCertificatePoolResult -> getCertificatePoolResult));
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static CompletableFuture getCertificatePoolPlain(GetCertificatePoolPlainArgs args, InvokeOptions options) { + return Deployment.getInstance().invokeAsync("confluentcloud:index/getCertificatePool:getCertificatePool", TypeShape.of(GetCertificatePoolResult.class), args, Utilities.withVersion(options)); + } /** * [![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) * diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/CertificateAuthorityState.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/CertificateAuthorityState.java new file mode 100644 index 00000000..668d707e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/CertificateAuthorityState.java @@ -0,0 +1,484 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.confluentcloud.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class CertificateAuthorityState extends com.pulumi.resources.ResourceArgs { + + public static final CertificateAuthorityState Empty = new CertificateAuthorityState(); + + /** + * A base64 encoded string containing the signing certificate chain. + * + */ + @Import(name="certificateChain") + private @Nullable Output certificateChain; + + /** + * @return A base64 encoded string containing the signing certificate chain. + * + */ + public Optional> certificateChain() { + return Optional.ofNullable(this.certificateChain); + } + + /** + * The name of the certificate file. + * + */ + @Import(name="certificateChainFilename") + private @Nullable Output certificateChainFilename; + + /** + * @return The name of the certificate file. + * + */ + public Optional> certificateChainFilename() { + return Optional.ofNullable(this.certificateChainFilename); + } + + /** + * A base64 encoded string containing the CRL for this certificate authority. + * + */ + @Import(name="crlChain") + private @Nullable Output crlChain; + + /** + * @return A base64 encoded string containing the CRL for this certificate authority. + * + */ + public Optional> crlChain() { + return Optional.ofNullable(this.crlChain); + } + + /** + * (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). + * + */ + @Import(name="crlSource") + private @Nullable Output crlSource; + + /** + * @return (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). + * + */ + public Optional> crlSource() { + return Optional.ofNullable(this.crlSource); + } + + /** + * (Optional String) The timestamp for when CRL was last updated. + * + */ + @Import(name="crlUpdatedAt") + private @Nullable Output crlUpdatedAt; + + /** + * @return (Optional String) The timestamp for when CRL was last updated. + * + */ + public Optional> crlUpdatedAt() { + return Optional.ofNullable(this.crlUpdatedAt); + } + + /** + * The url from which to fetch the CRL for the certificate authority. + * + */ + @Import(name="crlUrl") + private @Nullable Output crlUrl; + + /** + * @return The url from which to fetch the CRL for the certificate authority. + * + */ + public Optional> crlUrl() { + return Optional.ofNullable(this.crlUrl); + } + + /** + * A description of the Certificate Authority. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return A description of the Certificate Authority. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * The name of the Certificate Authority. + * + */ + @Import(name="displayName") + private @Nullable Output displayName; + + /** + * @return The name of the Certificate Authority. + * + */ + public Optional> displayName() { + return Optional.ofNullable(this.displayName); + } + + /** + * (Required List of Strings) The expiration dates of certificates in the chain. + * + */ + @Import(name="expirationDates") + private @Nullable Output> expirationDates; + + /** + * @return (Required List of Strings) The expiration dates of certificates in the chain. + * + */ + public Optional>> expirationDates() { + return Optional.ofNullable(this.expirationDates); + } + + /** + * (Required List of Strings) The fingerprints for each certificate in the certificate chain. + * + */ + @Import(name="fingerprints") + private @Nullable Output> fingerprints; + + /** + * @return (Required List of Strings) The fingerprints for each certificate in the certificate chain. + * + */ + public Optional>> fingerprints() { + return Optional.ofNullable(this.fingerprints); + } + + /** + * (Required List of Strings) The serial numbers for each certificate in the certificate chain. + * + */ + @Import(name="serialNumbers") + private @Nullable Output> serialNumbers; + + /** + * @return (Required List of Strings) The serial numbers for each certificate in the certificate chain. + * + */ + public Optional>> serialNumbers() { + return Optional.ofNullable(this.serialNumbers); + } + + private CertificateAuthorityState() {} + + private CertificateAuthorityState(CertificateAuthorityState $) { + this.certificateChain = $.certificateChain; + this.certificateChainFilename = $.certificateChainFilename; + this.crlChain = $.crlChain; + this.crlSource = $.crlSource; + this.crlUpdatedAt = $.crlUpdatedAt; + this.crlUrl = $.crlUrl; + this.description = $.description; + this.displayName = $.displayName; + this.expirationDates = $.expirationDates; + this.fingerprints = $.fingerprints; + this.serialNumbers = $.serialNumbers; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(CertificateAuthorityState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private CertificateAuthorityState $; + + public Builder() { + $ = new CertificateAuthorityState(); + } + + public Builder(CertificateAuthorityState defaults) { + $ = new CertificateAuthorityState(Objects.requireNonNull(defaults)); + } + + /** + * @param certificateChain A base64 encoded string containing the signing certificate chain. + * + * @return builder + * + */ + public Builder certificateChain(@Nullable Output certificateChain) { + $.certificateChain = certificateChain; + return this; + } + + /** + * @param certificateChain A base64 encoded string containing the signing certificate chain. + * + * @return builder + * + */ + public Builder certificateChain(String certificateChain) { + return certificateChain(Output.of(certificateChain)); + } + + /** + * @param certificateChainFilename The name of the certificate file. + * + * @return builder + * + */ + public Builder certificateChainFilename(@Nullable Output certificateChainFilename) { + $.certificateChainFilename = certificateChainFilename; + return this; + } + + /** + * @param certificateChainFilename The name of the certificate file. + * + * @return builder + * + */ + public Builder certificateChainFilename(String certificateChainFilename) { + return certificateChainFilename(Output.of(certificateChainFilename)); + } + + /** + * @param crlChain A base64 encoded string containing the CRL for this certificate authority. + * + * @return builder + * + */ + public Builder crlChain(@Nullable Output crlChain) { + $.crlChain = crlChain; + return this; + } + + /** + * @param crlChain A base64 encoded string containing the CRL for this certificate authority. + * + * @return builder + * + */ + public Builder crlChain(String crlChain) { + return crlChain(Output.of(crlChain)); + } + + /** + * @param crlSource (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). + * + * @return builder + * + */ + public Builder crlSource(@Nullable Output crlSource) { + $.crlSource = crlSource; + return this; + } + + /** + * @param crlSource (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). + * + * @return builder + * + */ + public Builder crlSource(String crlSource) { + return crlSource(Output.of(crlSource)); + } + + /** + * @param crlUpdatedAt (Optional String) The timestamp for when CRL was last updated. + * + * @return builder + * + */ + public Builder crlUpdatedAt(@Nullable Output crlUpdatedAt) { + $.crlUpdatedAt = crlUpdatedAt; + return this; + } + + /** + * @param crlUpdatedAt (Optional String) The timestamp for when CRL was last updated. + * + * @return builder + * + */ + public Builder crlUpdatedAt(String crlUpdatedAt) { + return crlUpdatedAt(Output.of(crlUpdatedAt)); + } + + /** + * @param crlUrl The url from which to fetch the CRL for the certificate authority. + * + * @return builder + * + */ + public Builder crlUrl(@Nullable Output crlUrl) { + $.crlUrl = crlUrl; + return this; + } + + /** + * @param crlUrl The url from which to fetch the CRL for the certificate authority. + * + * @return builder + * + */ + public Builder crlUrl(String crlUrl) { + return crlUrl(Output.of(crlUrl)); + } + + /** + * @param description A description of the Certificate Authority. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description A description of the Certificate Authority. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param displayName The name of the Certificate Authority. + * + * @return builder + * + */ + public Builder displayName(@Nullable Output displayName) { + $.displayName = displayName; + return this; + } + + /** + * @param displayName The name of the Certificate Authority. + * + * @return builder + * + */ + public Builder displayName(String displayName) { + return displayName(Output.of(displayName)); + } + + /** + * @param expirationDates (Required List of Strings) The expiration dates of certificates in the chain. + * + * @return builder + * + */ + public Builder expirationDates(@Nullable Output> expirationDates) { + $.expirationDates = expirationDates; + return this; + } + + /** + * @param expirationDates (Required List of Strings) The expiration dates of certificates in the chain. + * + * @return builder + * + */ + public Builder expirationDates(List expirationDates) { + return expirationDates(Output.of(expirationDates)); + } + + /** + * @param expirationDates (Required List of Strings) The expiration dates of certificates in the chain. + * + * @return builder + * + */ + public Builder expirationDates(String... expirationDates) { + return expirationDates(List.of(expirationDates)); + } + + /** + * @param fingerprints (Required List of Strings) The fingerprints for each certificate in the certificate chain. + * + * @return builder + * + */ + public Builder fingerprints(@Nullable Output> fingerprints) { + $.fingerprints = fingerprints; + return this; + } + + /** + * @param fingerprints (Required List of Strings) The fingerprints for each certificate in the certificate chain. + * + * @return builder + * + */ + public Builder fingerprints(List fingerprints) { + return fingerprints(Output.of(fingerprints)); + } + + /** + * @param fingerprints (Required List of Strings) The fingerprints for each certificate in the certificate chain. + * + * @return builder + * + */ + public Builder fingerprints(String... fingerprints) { + return fingerprints(List.of(fingerprints)); + } + + /** + * @param serialNumbers (Required List of Strings) The serial numbers for each certificate in the certificate chain. + * + * @return builder + * + */ + public Builder serialNumbers(@Nullable Output> serialNumbers) { + $.serialNumbers = serialNumbers; + return this; + } + + /** + * @param serialNumbers (Required List of Strings) The serial numbers for each certificate in the certificate chain. + * + * @return builder + * + */ + public Builder serialNumbers(List serialNumbers) { + return serialNumbers(Output.of(serialNumbers)); + } + + /** + * @param serialNumbers (Required List of Strings) The serial numbers for each certificate in the certificate chain. + * + * @return builder + * + */ + public Builder serialNumbers(String... serialNumbers) { + return serialNumbers(List.of(serialNumbers)); + } + + public CertificateAuthorityState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/CertificatePoolCertificateAuthorityArgs.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/CertificatePoolCertificateAuthorityArgs.java new file mode 100644 index 00000000..5ca1f321 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/CertificatePoolCertificateAuthorityArgs.java @@ -0,0 +1,85 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.confluentcloud.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class CertificatePoolCertificateAuthorityArgs extends com.pulumi.resources.ResourceArgs { + + public static final CertificatePoolCertificateAuthorityArgs Empty = new CertificatePoolCertificateAuthorityArgs(); + + /** + * The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + * + */ + @Import(name="id", required=true) + private Output id; + + /** + * @return The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + * + */ + public Output id() { + return this.id; + } + + private CertificatePoolCertificateAuthorityArgs() {} + + private CertificatePoolCertificateAuthorityArgs(CertificatePoolCertificateAuthorityArgs $) { + this.id = $.id; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(CertificatePoolCertificateAuthorityArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private CertificatePoolCertificateAuthorityArgs $; + + public Builder() { + $ = new CertificatePoolCertificateAuthorityArgs(); + } + + public Builder(CertificatePoolCertificateAuthorityArgs defaults) { + $ = new CertificatePoolCertificateAuthorityArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param id The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + * + * @return builder + * + */ + public Builder id(Output id) { + $.id = id; + return this; + } + + /** + * @param id The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + * + * @return builder + * + */ + public Builder id(String id) { + return id(Output.of(id)); + } + + public CertificatePoolCertificateAuthorityArgs build() { + if ($.id == null) { + throw new MissingRequiredPropertyException("CertificatePoolCertificateAuthorityArgs", "id"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/CertificatePoolState.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/CertificatePoolState.java new file mode 100644 index 00000000..d533bca3 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/CertificatePoolState.java @@ -0,0 +1,212 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.confluentcloud.inputs; + +import com.pulumi.confluentcloud.inputs.CertificatePoolCertificateAuthorityArgs; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class CertificatePoolState extends com.pulumi.resources.ResourceArgs { + + public static final CertificatePoolState Empty = new CertificatePoolState(); + + @Import(name="certificateAuthority") + private @Nullable Output certificateAuthority; + + public Optional> certificateAuthority() { + return Optional.ofNullable(this.certificateAuthority); + } + + /** + * A description of the Certificate Pool. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return A description of the Certificate Pool. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * The name of the Certificate Pool. + * + */ + @Import(name="displayName") + private @Nullable Output displayName; + + /** + * @return The name of the Certificate Pool. + * + */ + public Optional> displayName() { + return Optional.ofNullable(this.displayName); + } + + /** + * The certificate field that will be used to represent the pool's external identity for audit logging. + * + */ + @Import(name="externalIdentifier") + private @Nullable Output externalIdentifier; + + /** + * @return The certificate field that will be used to represent the pool's external identity for audit logging. + * + */ + public Optional> externalIdentifier() { + return Optional.ofNullable(this.externalIdentifier); + } + + /** + * A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + * + */ + @Import(name="filter") + private @Nullable Output filter; + + /** + * @return A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + * + */ + public Optional> filter() { + return Optional.ofNullable(this.filter); + } + + private CertificatePoolState() {} + + private CertificatePoolState(CertificatePoolState $) { + this.certificateAuthority = $.certificateAuthority; + this.description = $.description; + this.displayName = $.displayName; + this.externalIdentifier = $.externalIdentifier; + this.filter = $.filter; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(CertificatePoolState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private CertificatePoolState $; + + public Builder() { + $ = new CertificatePoolState(); + } + + public Builder(CertificatePoolState defaults) { + $ = new CertificatePoolState(Objects.requireNonNull(defaults)); + } + + public Builder certificateAuthority(@Nullable Output certificateAuthority) { + $.certificateAuthority = certificateAuthority; + return this; + } + + public Builder certificateAuthority(CertificatePoolCertificateAuthorityArgs certificateAuthority) { + return certificateAuthority(Output.of(certificateAuthority)); + } + + /** + * @param description A description of the Certificate Pool. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description A description of the Certificate Pool. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param displayName The name of the Certificate Pool. + * + * @return builder + * + */ + public Builder displayName(@Nullable Output displayName) { + $.displayName = displayName; + return this; + } + + /** + * @param displayName The name of the Certificate Pool. + * + * @return builder + * + */ + public Builder displayName(String displayName) { + return displayName(Output.of(displayName)); + } + + /** + * @param externalIdentifier The certificate field that will be used to represent the pool's external identity for audit logging. + * + * @return builder + * + */ + public Builder externalIdentifier(@Nullable Output externalIdentifier) { + $.externalIdentifier = externalIdentifier; + return this; + } + + /** + * @param externalIdentifier The certificate field that will be used to represent the pool's external identity for audit logging. + * + * @return builder + * + */ + public Builder externalIdentifier(String externalIdentifier) { + return externalIdentifier(Output.of(externalIdentifier)); + } + + /** + * @param filter A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + * + * @return builder + * + */ + public Builder filter(@Nullable Output filter) { + $.filter = filter; + return this; + } + + /** + * @param filter A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + * + * @return builder + * + */ + public Builder filter(String filter) { + return filter(Output.of(filter)); + } + + public CertificatePoolState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificateAuthorityArgs.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificateAuthorityArgs.java new file mode 100644 index 00000000..6c6b8fdb --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificateAuthorityArgs.java @@ -0,0 +1,198 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.confluentcloud.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class GetCertificateAuthorityArgs extends com.pulumi.resources.InvokeArgs { + + public static final GetCertificateAuthorityArgs Empty = new GetCertificateAuthorityArgs(); + + /** + * (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + * + */ + @Import(name="crlSource") + private @Nullable Output crlSource; + + /** + * @return (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + * + */ + public Optional> crlSource() { + return Optional.ofNullable(this.crlSource); + } + + /** + * (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + * + */ + @Import(name="crlUpdatedAt") + private @Nullable Output crlUpdatedAt; + + /** + * @return (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + * + */ + public Optional> crlUpdatedAt() { + return Optional.ofNullable(this.crlUpdatedAt); + } + + /** + * (Optional String) The url from which to fetch the CRL for the certificate authority if crl_source is URL. + * + */ + @Import(name="crlUrl") + private @Nullable Output crlUrl; + + /** + * @return (Optional String) The url from which to fetch the CRL for the certificate authority if crl_source is URL. + * + */ + public Optional> crlUrl() { + return Optional.ofNullable(this.crlUrl); + } + + /** + * The ID of the Certificate Authority, for example, `op-abc123`. + * + */ + @Import(name="id", required=true) + private Output id; + + /** + * @return The ID of the Certificate Authority, for example, `op-abc123`. + * + */ + public Output id() { + return this.id; + } + + private GetCertificateAuthorityArgs() {} + + private GetCertificateAuthorityArgs(GetCertificateAuthorityArgs $) { + this.crlSource = $.crlSource; + this.crlUpdatedAt = $.crlUpdatedAt; + this.crlUrl = $.crlUrl; + this.id = $.id; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GetCertificateAuthorityArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GetCertificateAuthorityArgs $; + + public Builder() { + $ = new GetCertificateAuthorityArgs(); + } + + public Builder(GetCertificateAuthorityArgs defaults) { + $ = new GetCertificateAuthorityArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param crlSource (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + * + * @return builder + * + */ + public Builder crlSource(@Nullable Output crlSource) { + $.crlSource = crlSource; + return this; + } + + /** + * @param crlSource (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + * + * @return builder + * + */ + public Builder crlSource(String crlSource) { + return crlSource(Output.of(crlSource)); + } + + /** + * @param crlUpdatedAt (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + * + * @return builder + * + */ + public Builder crlUpdatedAt(@Nullable Output crlUpdatedAt) { + $.crlUpdatedAt = crlUpdatedAt; + return this; + } + + /** + * @param crlUpdatedAt (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + * + * @return builder + * + */ + public Builder crlUpdatedAt(String crlUpdatedAt) { + return crlUpdatedAt(Output.of(crlUpdatedAt)); + } + + /** + * @param crlUrl (Optional String) The url from which to fetch the CRL for the certificate authority if crl_source is URL. + * + * @return builder + * + */ + public Builder crlUrl(@Nullable Output crlUrl) { + $.crlUrl = crlUrl; + return this; + } + + /** + * @param crlUrl (Optional String) The url from which to fetch the CRL for the certificate authority if crl_source is URL. + * + * @return builder + * + */ + public Builder crlUrl(String crlUrl) { + return crlUrl(Output.of(crlUrl)); + } + + /** + * @param id The ID of the Certificate Authority, for example, `op-abc123`. + * + * @return builder + * + */ + public Builder id(Output id) { + $.id = id; + return this; + } + + /** + * @param id The ID of the Certificate Authority, for example, `op-abc123`. + * + * @return builder + * + */ + public Builder id(String id) { + return id(Output.of(id)); + } + + public GetCertificateAuthorityArgs build() { + if ($.id == null) { + throw new MissingRequiredPropertyException("GetCertificateAuthorityArgs", "id"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificateAuthorityPlainArgs.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificateAuthorityPlainArgs.java new file mode 100644 index 00000000..1003cc66 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificateAuthorityPlainArgs.java @@ -0,0 +1,157 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.confluentcloud.inputs; + +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class GetCertificateAuthorityPlainArgs extends com.pulumi.resources.InvokeArgs { + + public static final GetCertificateAuthorityPlainArgs Empty = new GetCertificateAuthorityPlainArgs(); + + /** + * (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + * + */ + @Import(name="crlSource") + private @Nullable String crlSource; + + /** + * @return (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + * + */ + public Optional crlSource() { + return Optional.ofNullable(this.crlSource); + } + + /** + * (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + * + */ + @Import(name="crlUpdatedAt") + private @Nullable String crlUpdatedAt; + + /** + * @return (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + * + */ + public Optional crlUpdatedAt() { + return Optional.ofNullable(this.crlUpdatedAt); + } + + /** + * (Optional String) The url from which to fetch the CRL for the certificate authority if crl_source is URL. + * + */ + @Import(name="crlUrl") + private @Nullable String crlUrl; + + /** + * @return (Optional String) The url from which to fetch the CRL for the certificate authority if crl_source is URL. + * + */ + public Optional crlUrl() { + return Optional.ofNullable(this.crlUrl); + } + + /** + * The ID of the Certificate Authority, for example, `op-abc123`. + * + */ + @Import(name="id", required=true) + private String id; + + /** + * @return The ID of the Certificate Authority, for example, `op-abc123`. + * + */ + public String id() { + return this.id; + } + + private GetCertificateAuthorityPlainArgs() {} + + private GetCertificateAuthorityPlainArgs(GetCertificateAuthorityPlainArgs $) { + this.crlSource = $.crlSource; + this.crlUpdatedAt = $.crlUpdatedAt; + this.crlUrl = $.crlUrl; + this.id = $.id; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GetCertificateAuthorityPlainArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GetCertificateAuthorityPlainArgs $; + + public Builder() { + $ = new GetCertificateAuthorityPlainArgs(); + } + + public Builder(GetCertificateAuthorityPlainArgs defaults) { + $ = new GetCertificateAuthorityPlainArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param crlSource (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + * + * @return builder + * + */ + public Builder crlSource(@Nullable String crlSource) { + $.crlSource = crlSource; + return this; + } + + /** + * @param crlUpdatedAt (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + * + * @return builder + * + */ + public Builder crlUpdatedAt(@Nullable String crlUpdatedAt) { + $.crlUpdatedAt = crlUpdatedAt; + return this; + } + + /** + * @param crlUrl (Optional String) The url from which to fetch the CRL for the certificate authority if crl_source is URL. + * + * @return builder + * + */ + public Builder crlUrl(@Nullable String crlUrl) { + $.crlUrl = crlUrl; + return this; + } + + /** + * @param id The ID of the Certificate Authority, for example, `op-abc123`. + * + * @return builder + * + */ + public Builder id(String id) { + $.id = id; + return this; + } + + public GetCertificateAuthorityPlainArgs build() { + if ($.id == null) { + throw new MissingRequiredPropertyException("GetCertificateAuthorityPlainArgs", "id"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificatePoolArgs.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificatePoolArgs.java new file mode 100644 index 00000000..9b8a45d6 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificatePoolArgs.java @@ -0,0 +1,106 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.confluentcloud.inputs; + +import com.pulumi.confluentcloud.inputs.GetCertificatePoolCertificateAuthorityArgs; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class GetCertificatePoolArgs extends com.pulumi.resources.InvokeArgs { + + public static final GetCertificatePoolArgs Empty = new GetCertificatePoolArgs(); + + @Import(name="certificateAuthority", required=true) + private Output certificateAuthority; + + public Output certificateAuthority() { + return this.certificateAuthority; + } + + /** + * The ID of the Certificate Pool, for example, `pool-abc123`. + * + */ + @Import(name="id", required=true) + private Output id; + + /** + * @return The ID of the Certificate Pool, for example, `pool-abc123`. + * + */ + public Output id() { + return this.id; + } + + private GetCertificatePoolArgs() {} + + private GetCertificatePoolArgs(GetCertificatePoolArgs $) { + this.certificateAuthority = $.certificateAuthority; + this.id = $.id; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GetCertificatePoolArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GetCertificatePoolArgs $; + + public Builder() { + $ = new GetCertificatePoolArgs(); + } + + public Builder(GetCertificatePoolArgs defaults) { + $ = new GetCertificatePoolArgs(Objects.requireNonNull(defaults)); + } + + public Builder certificateAuthority(Output certificateAuthority) { + $.certificateAuthority = certificateAuthority; + return this; + } + + public Builder certificateAuthority(GetCertificatePoolCertificateAuthorityArgs certificateAuthority) { + return certificateAuthority(Output.of(certificateAuthority)); + } + + /** + * @param id The ID of the Certificate Pool, for example, `pool-abc123`. + * + * @return builder + * + */ + public Builder id(Output id) { + $.id = id; + return this; + } + + /** + * @param id The ID of the Certificate Pool, for example, `pool-abc123`. + * + * @return builder + * + */ + public Builder id(String id) { + return id(Output.of(id)); + } + + public GetCertificatePoolArgs build() { + if ($.certificateAuthority == null) { + throw new MissingRequiredPropertyException("GetCertificatePoolArgs", "certificateAuthority"); + } + if ($.id == null) { + throw new MissingRequiredPropertyException("GetCertificatePoolArgs", "id"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificatePoolCertificateAuthority.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificatePoolCertificateAuthority.java new file mode 100644 index 00000000..e3739155 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificatePoolCertificateAuthority.java @@ -0,0 +1,74 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.confluentcloud.inputs; + +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class GetCertificatePoolCertificateAuthority extends com.pulumi.resources.InvokeArgs { + + public static final GetCertificatePoolCertificateAuthority Empty = new GetCertificatePoolCertificateAuthority(); + + /** + * The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + * + */ + @Import(name="id", required=true) + private String id; + + /** + * @return The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + * + */ + public String id() { + return this.id; + } + + private GetCertificatePoolCertificateAuthority() {} + + private GetCertificatePoolCertificateAuthority(GetCertificatePoolCertificateAuthority $) { + this.id = $.id; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GetCertificatePoolCertificateAuthority defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GetCertificatePoolCertificateAuthority $; + + public Builder() { + $ = new GetCertificatePoolCertificateAuthority(); + } + + public Builder(GetCertificatePoolCertificateAuthority defaults) { + $ = new GetCertificatePoolCertificateAuthority(Objects.requireNonNull(defaults)); + } + + /** + * @param id The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + * + * @return builder + * + */ + public Builder id(String id) { + $.id = id; + return this; + } + + public GetCertificatePoolCertificateAuthority build() { + if ($.id == null) { + throw new MissingRequiredPropertyException("GetCertificatePoolCertificateAuthority", "id"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificatePoolCertificateAuthorityArgs.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificatePoolCertificateAuthorityArgs.java new file mode 100644 index 00000000..199115e4 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificatePoolCertificateAuthorityArgs.java @@ -0,0 +1,85 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.confluentcloud.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class GetCertificatePoolCertificateAuthorityArgs extends com.pulumi.resources.ResourceArgs { + + public static final GetCertificatePoolCertificateAuthorityArgs Empty = new GetCertificatePoolCertificateAuthorityArgs(); + + /** + * The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + * + */ + @Import(name="id", required=true) + private Output id; + + /** + * @return The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + * + */ + public Output id() { + return this.id; + } + + private GetCertificatePoolCertificateAuthorityArgs() {} + + private GetCertificatePoolCertificateAuthorityArgs(GetCertificatePoolCertificateAuthorityArgs $) { + this.id = $.id; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GetCertificatePoolCertificateAuthorityArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GetCertificatePoolCertificateAuthorityArgs $; + + public Builder() { + $ = new GetCertificatePoolCertificateAuthorityArgs(); + } + + public Builder(GetCertificatePoolCertificateAuthorityArgs defaults) { + $ = new GetCertificatePoolCertificateAuthorityArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param id The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + * + * @return builder + * + */ + public Builder id(Output id) { + $.id = id; + return this; + } + + /** + * @param id The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + * + * @return builder + * + */ + public Builder id(String id) { + return id(Output.of(id)); + } + + public GetCertificatePoolCertificateAuthorityArgs build() { + if ($.id == null) { + throw new MissingRequiredPropertyException("GetCertificatePoolCertificateAuthorityArgs", "id"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificatePoolPlainArgs.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificatePoolPlainArgs.java new file mode 100644 index 00000000..027cef5c --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/inputs/GetCertificatePoolPlainArgs.java @@ -0,0 +1,91 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.confluentcloud.inputs; + +import com.pulumi.confluentcloud.inputs.GetCertificatePoolCertificateAuthority; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class GetCertificatePoolPlainArgs extends com.pulumi.resources.InvokeArgs { + + public static final GetCertificatePoolPlainArgs Empty = new GetCertificatePoolPlainArgs(); + + @Import(name="certificateAuthority", required=true) + private GetCertificatePoolCertificateAuthority certificateAuthority; + + public GetCertificatePoolCertificateAuthority certificateAuthority() { + return this.certificateAuthority; + } + + /** + * The ID of the Certificate Pool, for example, `pool-abc123`. + * + */ + @Import(name="id", required=true) + private String id; + + /** + * @return The ID of the Certificate Pool, for example, `pool-abc123`. + * + */ + public String id() { + return this.id; + } + + private GetCertificatePoolPlainArgs() {} + + private GetCertificatePoolPlainArgs(GetCertificatePoolPlainArgs $) { + this.certificateAuthority = $.certificateAuthority; + this.id = $.id; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GetCertificatePoolPlainArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GetCertificatePoolPlainArgs $; + + public Builder() { + $ = new GetCertificatePoolPlainArgs(); + } + + public Builder(GetCertificatePoolPlainArgs defaults) { + $ = new GetCertificatePoolPlainArgs(Objects.requireNonNull(defaults)); + } + + public Builder certificateAuthority(GetCertificatePoolCertificateAuthority certificateAuthority) { + $.certificateAuthority = certificateAuthority; + return this; + } + + /** + * @param id The ID of the Certificate Pool, for example, `pool-abc123`. + * + * @return builder + * + */ + public Builder id(String id) { + $.id = id; + return this; + } + + public GetCertificatePoolPlainArgs build() { + if ($.certificateAuthority == null) { + throw new MissingRequiredPropertyException("GetCertificatePoolPlainArgs", "certificateAuthority"); + } + if ($.id == null) { + throw new MissingRequiredPropertyException("GetCertificatePoolPlainArgs", "id"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/outputs/CertificatePoolCertificateAuthority.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/outputs/CertificatePoolCertificateAuthority.java new file mode 100644 index 00000000..09dd6b65 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/outputs/CertificatePoolCertificateAuthority.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.confluentcloud.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class CertificatePoolCertificateAuthority { + /** + * @return The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + * + */ + private String id; + + private CertificatePoolCertificateAuthority() {} + /** + * @return The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + * + */ + public String id() { + return this.id; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(CertificatePoolCertificateAuthority defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String id; + public Builder() {} + public Builder(CertificatePoolCertificateAuthority defaults) { + Objects.requireNonNull(defaults); + this.id = defaults.id; + } + + @CustomType.Setter + public Builder id(String id) { + if (id == null) { + throw new MissingRequiredPropertyException("CertificatePoolCertificateAuthority", "id"); + } + this.id = id; + return this; + } + public CertificatePoolCertificateAuthority build() { + final var _resultValue = new CertificatePoolCertificateAuthority(); + _resultValue.id = id; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/outputs/GetCertificateAuthorityResult.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/outputs/GetCertificateAuthorityResult.java new file mode 100644 index 00000000..3d5fa848 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/outputs/GetCertificateAuthorityResult.java @@ -0,0 +1,267 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.confluentcloud.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetCertificateAuthorityResult { + /** + * @return (Required String) The name of the certificate file, for example, `certificate.pem`. + * + */ + private String certificateChainFilename; + /** + * @return (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + * + */ + private String crlSource; + /** + * @return (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + * + */ + private String crlUpdatedAt; + /** + * @return (Optional String) The url from which to fetch the CRL for the certificate authority if crl_source is URL. + * + */ + private String crlUrl; + /** + * @return (Required String) A description for the Certificate Authority. + * + */ + private String description; + /** + * @return (Required String) A human-readable name for the Certificate Authority. + * + */ + private String displayName; + /** + * @return (Required List of Strings) The expiration dates of certificates in the chain, for example, `["2017-07-21T17:32:28Z"]`. + * + */ + private List expirationDates; + /** + * @return (Required List of Strings) The fingerprints for each certificate in the certificate chain, for example, `["B1BC968BD4f49D622AA89A81F2150152A41D829C"]`. + * + */ + private List fingerprints; + private String id; + /** + * @return (Required List of Strings) The serial numbers for each certificate in the certificate chain. + * + */ + private List serialNumbers; + + private GetCertificateAuthorityResult() {} + /** + * @return (Required String) The name of the certificate file, for example, `certificate.pem`. + * + */ + public String certificateChainFilename() { + return this.certificateChainFilename; + } + /** + * @return (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + * + */ + public String crlSource() { + return this.crlSource; + } + /** + * @return (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + * + */ + public String crlUpdatedAt() { + return this.crlUpdatedAt; + } + /** + * @return (Optional String) The url from which to fetch the CRL for the certificate authority if crl_source is URL. + * + */ + public String crlUrl() { + return this.crlUrl; + } + /** + * @return (Required String) A description for the Certificate Authority. + * + */ + public String description() { + return this.description; + } + /** + * @return (Required String) A human-readable name for the Certificate Authority. + * + */ + public String displayName() { + return this.displayName; + } + /** + * @return (Required List of Strings) The expiration dates of certificates in the chain, for example, `["2017-07-21T17:32:28Z"]`. + * + */ + public List expirationDates() { + return this.expirationDates; + } + /** + * @return (Required List of Strings) The fingerprints for each certificate in the certificate chain, for example, `["B1BC968BD4f49D622AA89A81F2150152A41D829C"]`. + * + */ + public List fingerprints() { + return this.fingerprints; + } + public String id() { + return this.id; + } + /** + * @return (Required List of Strings) The serial numbers for each certificate in the certificate chain. + * + */ + public List serialNumbers() { + return this.serialNumbers; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetCertificateAuthorityResult defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String certificateChainFilename; + private String crlSource; + private String crlUpdatedAt; + private String crlUrl; + private String description; + private String displayName; + private List expirationDates; + private List fingerprints; + private String id; + private List serialNumbers; + public Builder() {} + public Builder(GetCertificateAuthorityResult defaults) { + Objects.requireNonNull(defaults); + this.certificateChainFilename = defaults.certificateChainFilename; + this.crlSource = defaults.crlSource; + this.crlUpdatedAt = defaults.crlUpdatedAt; + this.crlUrl = defaults.crlUrl; + this.description = defaults.description; + this.displayName = defaults.displayName; + this.expirationDates = defaults.expirationDates; + this.fingerprints = defaults.fingerprints; + this.id = defaults.id; + this.serialNumbers = defaults.serialNumbers; + } + + @CustomType.Setter + public Builder certificateChainFilename(String certificateChainFilename) { + if (certificateChainFilename == null) { + throw new MissingRequiredPropertyException("GetCertificateAuthorityResult", "certificateChainFilename"); + } + this.certificateChainFilename = certificateChainFilename; + return this; + } + @CustomType.Setter + public Builder crlSource(String crlSource) { + if (crlSource == null) { + throw new MissingRequiredPropertyException("GetCertificateAuthorityResult", "crlSource"); + } + this.crlSource = crlSource; + return this; + } + @CustomType.Setter + public Builder crlUpdatedAt(String crlUpdatedAt) { + if (crlUpdatedAt == null) { + throw new MissingRequiredPropertyException("GetCertificateAuthorityResult", "crlUpdatedAt"); + } + this.crlUpdatedAt = crlUpdatedAt; + return this; + } + @CustomType.Setter + public Builder crlUrl(String crlUrl) { + if (crlUrl == null) { + throw new MissingRequiredPropertyException("GetCertificateAuthorityResult", "crlUrl"); + } + this.crlUrl = crlUrl; + return this; + } + @CustomType.Setter + public Builder description(String description) { + if (description == null) { + throw new MissingRequiredPropertyException("GetCertificateAuthorityResult", "description"); + } + this.description = description; + return this; + } + @CustomType.Setter + public Builder displayName(String displayName) { + if (displayName == null) { + throw new MissingRequiredPropertyException("GetCertificateAuthorityResult", "displayName"); + } + this.displayName = displayName; + return this; + } + @CustomType.Setter + public Builder expirationDates(List expirationDates) { + if (expirationDates == null) { + throw new MissingRequiredPropertyException("GetCertificateAuthorityResult", "expirationDates"); + } + this.expirationDates = expirationDates; + return this; + } + public Builder expirationDates(String... expirationDates) { + return expirationDates(List.of(expirationDates)); + } + @CustomType.Setter + public Builder fingerprints(List fingerprints) { + if (fingerprints == null) { + throw new MissingRequiredPropertyException("GetCertificateAuthorityResult", "fingerprints"); + } + this.fingerprints = fingerprints; + return this; + } + public Builder fingerprints(String... fingerprints) { + return fingerprints(List.of(fingerprints)); + } + @CustomType.Setter + public Builder id(String id) { + if (id == null) { + throw new MissingRequiredPropertyException("GetCertificateAuthorityResult", "id"); + } + this.id = id; + return this; + } + @CustomType.Setter + public Builder serialNumbers(List serialNumbers) { + if (serialNumbers == null) { + throw new MissingRequiredPropertyException("GetCertificateAuthorityResult", "serialNumbers"); + } + this.serialNumbers = serialNumbers; + return this; + } + public Builder serialNumbers(String... serialNumbers) { + return serialNumbers(List.of(serialNumbers)); + } + public GetCertificateAuthorityResult build() { + final var _resultValue = new GetCertificateAuthorityResult(); + _resultValue.certificateChainFilename = certificateChainFilename; + _resultValue.crlSource = crlSource; + _resultValue.crlUpdatedAt = crlUpdatedAt; + _resultValue.crlUrl = crlUrl; + _resultValue.description = description; + _resultValue.displayName = displayName; + _resultValue.expirationDates = expirationDates; + _resultValue.fingerprints = fingerprints; + _resultValue.id = id; + _resultValue.serialNumbers = serialNumbers; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/outputs/GetCertificatePoolCertificateAuthority.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/outputs/GetCertificatePoolCertificateAuthority.java new file mode 100644 index 00000000..0a9e153e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/outputs/GetCertificatePoolCertificateAuthority.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.confluentcloud.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetCertificatePoolCertificateAuthority { + /** + * @return The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + * + */ + private String id; + + private GetCertificatePoolCertificateAuthority() {} + /** + * @return The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + * + */ + public String id() { + return this.id; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetCertificatePoolCertificateAuthority defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String id; + public Builder() {} + public Builder(GetCertificatePoolCertificateAuthority defaults) { + Objects.requireNonNull(defaults); + this.id = defaults.id; + } + + @CustomType.Setter + public Builder id(String id) { + if (id == null) { + throw new MissingRequiredPropertyException("GetCertificatePoolCertificateAuthority", "id"); + } + this.id = id; + return this; + } + public GetCertificatePoolCertificateAuthority build() { + final var _resultValue = new GetCertificatePoolCertificateAuthority(); + _resultValue.id = id; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/confluentcloud/outputs/GetCertificatePoolResult.java b/sdk/java/src/main/java/com/pulumi/confluentcloud/outputs/GetCertificatePoolResult.java new file mode 100644 index 00000000..0ae28ee6 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/confluentcloud/outputs/GetCertificatePoolResult.java @@ -0,0 +1,158 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.confluentcloud.outputs; + +import com.pulumi.confluentcloud.outputs.GetCertificatePoolCertificateAuthority; +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetCertificatePoolResult { + private GetCertificatePoolCertificateAuthority certificateAuthority; + /** + * @return (Required String) A description of the Certificate Pool. + * + */ + private String description; + /** + * @return (Required String) A human-readable name for the Certificate Pool. + * + */ + private String displayName; + /** + * @return (Required String) The certificate field that will be used to represent the pool's external identity for audit logging, for example, `UID`. + * + */ + private String externalIdentifier; + /** + * @return (Required String) A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + * + */ + private String filter; + private String id; + + private GetCertificatePoolResult() {} + public GetCertificatePoolCertificateAuthority certificateAuthority() { + return this.certificateAuthority; + } + /** + * @return (Required String) A description of the Certificate Pool. + * + */ + public String description() { + return this.description; + } + /** + * @return (Required String) A human-readable name for the Certificate Pool. + * + */ + public String displayName() { + return this.displayName; + } + /** + * @return (Required String) The certificate field that will be used to represent the pool's external identity for audit logging, for example, `UID`. + * + */ + public String externalIdentifier() { + return this.externalIdentifier; + } + /** + * @return (Required String) A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + * + */ + public String filter() { + return this.filter; + } + public String id() { + return this.id; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetCertificatePoolResult defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private GetCertificatePoolCertificateAuthority certificateAuthority; + private String description; + private String displayName; + private String externalIdentifier; + private String filter; + private String id; + public Builder() {} + public Builder(GetCertificatePoolResult defaults) { + Objects.requireNonNull(defaults); + this.certificateAuthority = defaults.certificateAuthority; + this.description = defaults.description; + this.displayName = defaults.displayName; + this.externalIdentifier = defaults.externalIdentifier; + this.filter = defaults.filter; + this.id = defaults.id; + } + + @CustomType.Setter + public Builder certificateAuthority(GetCertificatePoolCertificateAuthority certificateAuthority) { + if (certificateAuthority == null) { + throw new MissingRequiredPropertyException("GetCertificatePoolResult", "certificateAuthority"); + } + this.certificateAuthority = certificateAuthority; + return this; + } + @CustomType.Setter + public Builder description(String description) { + if (description == null) { + throw new MissingRequiredPropertyException("GetCertificatePoolResult", "description"); + } + this.description = description; + return this; + } + @CustomType.Setter + public Builder displayName(String displayName) { + if (displayName == null) { + throw new MissingRequiredPropertyException("GetCertificatePoolResult", "displayName"); + } + this.displayName = displayName; + return this; + } + @CustomType.Setter + public Builder externalIdentifier(String externalIdentifier) { + if (externalIdentifier == null) { + throw new MissingRequiredPropertyException("GetCertificatePoolResult", "externalIdentifier"); + } + this.externalIdentifier = externalIdentifier; + return this; + } + @CustomType.Setter + public Builder filter(String filter) { + if (filter == null) { + throw new MissingRequiredPropertyException("GetCertificatePoolResult", "filter"); + } + this.filter = filter; + return this; + } + @CustomType.Setter + public Builder id(String id) { + if (id == null) { + throw new MissingRequiredPropertyException("GetCertificatePoolResult", "id"); + } + this.id = id; + return this; + } + public GetCertificatePoolResult build() { + final var _resultValue = new GetCertificatePoolResult(); + _resultValue.certificateAuthority = certificateAuthority; + _resultValue.description = description; + _resultValue.displayName = displayName; + _resultValue.externalIdentifier = externalIdentifier; + _resultValue.filter = filter; + _resultValue.id = id; + return _resultValue; + } + } +} diff --git a/sdk/nodejs/certificateAuthority.ts b/sdk/nodejs/certificateAuthority.ts new file mode 100644 index 00000000..b4d797f5 --- /dev/null +++ b/sdk/nodejs/certificateAuthority.ts @@ -0,0 +1,248 @@ +// *** 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 utilities from "./utilities"; + +/** + * [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + * + * `confluentcloud.CertificateAuthority` provides a Certificate Authority resource that enables creating, editing, and deleting Certificate Authorities on Confluent Cloud. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as confluentcloud from "@pulumi/confluentcloud"; + * + * const main = new confluentcloud.CertificateAuthority("main", { + * displayName: "my_certificate_authority", + * description: "description", + * certificateChainFilename: "certificate.pem", + * certificateChain: "***REDACTED***", + * }); + * ``` + * + * ## Import + * + * You can import a Certificate Authority by using Certificate Authority ID, for example: + * + * $ export CONFLUENT_CLOUD_API_KEY="" + * + * $ export CONFLUENT_CLOUD_API_SECRET="" + * + * ```sh + * $ pulumi import confluentcloud:index/certificateAuthority:CertificateAuthority main op-abc123 + * ``` + * + * !> **Warning:** Do not forget to delete terminal command history afterwards for security purposes. + */ +export class CertificateAuthority extends pulumi.CustomResource { + /** + * Get an existing CertificateAuthority resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: CertificateAuthorityState, opts?: pulumi.CustomResourceOptions): CertificateAuthority { + return new CertificateAuthority(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'confluentcloud:index/certificateAuthority:CertificateAuthority'; + + /** + * Returns true if the given object is an instance of CertificateAuthority. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is CertificateAuthority { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === CertificateAuthority.__pulumiType; + } + + /** + * A base64 encoded string containing the signing certificate chain. + */ + public readonly certificateChain!: pulumi.Output; + /** + * The name of the certificate file. + */ + public readonly certificateChainFilename!: pulumi.Output; + /** + * A base64 encoded string containing the CRL for this certificate authority. + */ + public readonly crlChain!: pulumi.Output; + /** + * (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). + */ + public /*out*/ readonly crlSource!: pulumi.Output; + /** + * (Optional String) The timestamp for when CRL was last updated. + */ + public /*out*/ readonly crlUpdatedAt!: pulumi.Output; + /** + * The url from which to fetch the CRL for the certificate authority. + */ + public readonly crlUrl!: pulumi.Output; + /** + * A description of the Certificate Authority. + */ + public readonly description!: pulumi.Output; + /** + * The name of the Certificate Authority. + */ + public readonly displayName!: pulumi.Output; + /** + * (Required List of Strings) The expiration dates of certificates in the chain. + */ + public /*out*/ readonly expirationDates!: pulumi.Output; + /** + * (Required List of Strings) The fingerprints for each certificate in the certificate chain. + */ + public /*out*/ readonly fingerprints!: pulumi.Output; + /** + * (Required List of Strings) The serial numbers for each certificate in the certificate chain. + */ + public /*out*/ readonly serialNumbers!: pulumi.Output; + + /** + * Create a CertificateAuthority resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: CertificateAuthorityArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: CertificateAuthorityArgs | CertificateAuthorityState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as CertificateAuthorityState | undefined; + resourceInputs["certificateChain"] = state ? state.certificateChain : undefined; + resourceInputs["certificateChainFilename"] = state ? state.certificateChainFilename : undefined; + resourceInputs["crlChain"] = state ? state.crlChain : undefined; + resourceInputs["crlSource"] = state ? state.crlSource : undefined; + resourceInputs["crlUpdatedAt"] = state ? state.crlUpdatedAt : undefined; + resourceInputs["crlUrl"] = state ? state.crlUrl : undefined; + resourceInputs["description"] = state ? state.description : undefined; + resourceInputs["displayName"] = state ? state.displayName : undefined; + resourceInputs["expirationDates"] = state ? state.expirationDates : undefined; + resourceInputs["fingerprints"] = state ? state.fingerprints : undefined; + resourceInputs["serialNumbers"] = state ? state.serialNumbers : undefined; + } else { + const args = argsOrState as CertificateAuthorityArgs | undefined; + if ((!args || args.certificateChain === undefined) && !opts.urn) { + throw new Error("Missing required property 'certificateChain'"); + } + if ((!args || args.certificateChainFilename === undefined) && !opts.urn) { + throw new Error("Missing required property 'certificateChainFilename'"); + } + if ((!args || args.description === undefined) && !opts.urn) { + throw new Error("Missing required property 'description'"); + } + if ((!args || args.displayName === undefined) && !opts.urn) { + throw new Error("Missing required property 'displayName'"); + } + resourceInputs["certificateChain"] = args?.certificateChain ? pulumi.secret(args.certificateChain) : undefined; + resourceInputs["certificateChainFilename"] = args ? args.certificateChainFilename : undefined; + resourceInputs["crlChain"] = args?.crlChain ? pulumi.secret(args.crlChain) : undefined; + resourceInputs["crlUrl"] = args ? args.crlUrl : undefined; + resourceInputs["description"] = args ? args.description : undefined; + resourceInputs["displayName"] = args ? args.displayName : undefined; + resourceInputs["crlSource"] = undefined /*out*/; + resourceInputs["crlUpdatedAt"] = undefined /*out*/; + resourceInputs["expirationDates"] = undefined /*out*/; + resourceInputs["fingerprints"] = undefined /*out*/; + resourceInputs["serialNumbers"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + const secretOpts = { additionalSecretOutputs: ["certificateChain", "crlChain"] }; + opts = pulumi.mergeOptions(opts, secretOpts); + super(CertificateAuthority.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering CertificateAuthority resources. + */ +export interface CertificateAuthorityState { + /** + * A base64 encoded string containing the signing certificate chain. + */ + certificateChain?: pulumi.Input; + /** + * The name of the certificate file. + */ + certificateChainFilename?: pulumi.Input; + /** + * A base64 encoded string containing the CRL for this certificate authority. + */ + crlChain?: pulumi.Input; + /** + * (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). + */ + crlSource?: pulumi.Input; + /** + * (Optional String) The timestamp for when CRL was last updated. + */ + crlUpdatedAt?: pulumi.Input; + /** + * The url from which to fetch the CRL for the certificate authority. + */ + crlUrl?: pulumi.Input; + /** + * A description of the Certificate Authority. + */ + description?: pulumi.Input; + /** + * The name of the Certificate Authority. + */ + displayName?: pulumi.Input; + /** + * (Required List of Strings) The expiration dates of certificates in the chain. + */ + expirationDates?: pulumi.Input[]>; + /** + * (Required List of Strings) The fingerprints for each certificate in the certificate chain. + */ + fingerprints?: pulumi.Input[]>; + /** + * (Required List of Strings) The serial numbers for each certificate in the certificate chain. + */ + serialNumbers?: pulumi.Input[]>; +} + +/** + * The set of arguments for constructing a CertificateAuthority resource. + */ +export interface CertificateAuthorityArgs { + /** + * A base64 encoded string containing the signing certificate chain. + */ + certificateChain: pulumi.Input; + /** + * The name of the certificate file. + */ + certificateChainFilename: pulumi.Input; + /** + * A base64 encoded string containing the CRL for this certificate authority. + */ + crlChain?: pulumi.Input; + /** + * The url from which to fetch the CRL for the certificate authority. + */ + crlUrl?: pulumi.Input; + /** + * A description of the Certificate Authority. + */ + description: pulumi.Input; + /** + * The name of the Certificate Authority. + */ + displayName: pulumi.Input; +} diff --git a/sdk/nodejs/certificatePool.ts b/sdk/nodejs/certificatePool.ts new file mode 100644 index 00000000..98790a7b --- /dev/null +++ b/sdk/nodejs/certificatePool.ts @@ -0,0 +1,181 @@ +// *** 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"; + +/** + * [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + * + * `confluentcloud.CertificatePool` provides a Certificate Pool resource that enables creating, editing, and deleting Certificate Pools on Confluent Cloud. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as confluentcloud from "@pulumi/confluentcloud"; + * + * const main = new confluentcloud.CertificatePool("main", { + * certificateAuthority: { + * id: mainConfluentCertificateAuthority.id, + * }, + * displayName: "my-certificate-pool", + * description: "example description", + * externalIdentifier: "CN", + * filter: "CN == \"test\"", + * }); + * ``` + * + * ## Import + * + * You can import a Certificate Pool by using Certificate Authority ID and Certificate Pool ID, in the format `/`. The following example shows how to import a Certificate Pool: + * + * $ export CONFLUENT_CLOUD_API_KEY="" + * + * $ export CONFLUENT_CLOUD_API_SECRET="" + * + * ```sh + * $ pulumi import confluentcloud:index/certificatePool:CertificatePool main op-abc123/pool-abc123 + * ``` + * + * !> **Warning:** Do not forget to delete terminal command history afterwards for security purposes. + */ +export class CertificatePool extends pulumi.CustomResource { + /** + * Get an existing CertificatePool resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: CertificatePoolState, opts?: pulumi.CustomResourceOptions): CertificatePool { + return new CertificatePool(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'confluentcloud:index/certificatePool:CertificatePool'; + + /** + * Returns true if the given object is an instance of CertificatePool. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is CertificatePool { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === CertificatePool.__pulumiType; + } + + public readonly certificateAuthority!: pulumi.Output; + /** + * A description of the Certificate Pool. + */ + public readonly description!: pulumi.Output; + /** + * The name of the Certificate Pool. + */ + public readonly displayName!: pulumi.Output; + /** + * The certificate field that will be used to represent the pool's external identity for audit logging. + */ + public readonly externalIdentifier!: pulumi.Output; + /** + * A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + */ + public readonly filter!: pulumi.Output; + + /** + * Create a CertificatePool resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: CertificatePoolArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: CertificatePoolArgs | CertificatePoolState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as CertificatePoolState | undefined; + resourceInputs["certificateAuthority"] = state ? state.certificateAuthority : undefined; + resourceInputs["description"] = state ? state.description : undefined; + resourceInputs["displayName"] = state ? state.displayName : undefined; + resourceInputs["externalIdentifier"] = state ? state.externalIdentifier : undefined; + resourceInputs["filter"] = state ? state.filter : undefined; + } else { + const args = argsOrState as CertificatePoolArgs | undefined; + if ((!args || args.certificateAuthority === undefined) && !opts.urn) { + throw new Error("Missing required property 'certificateAuthority'"); + } + if ((!args || args.description === undefined) && !opts.urn) { + throw new Error("Missing required property 'description'"); + } + if ((!args || args.displayName === undefined) && !opts.urn) { + throw new Error("Missing required property 'displayName'"); + } + if ((!args || args.externalIdentifier === undefined) && !opts.urn) { + throw new Error("Missing required property 'externalIdentifier'"); + } + if ((!args || args.filter === undefined) && !opts.urn) { + throw new Error("Missing required property 'filter'"); + } + resourceInputs["certificateAuthority"] = args ? args.certificateAuthority : undefined; + resourceInputs["description"] = args ? args.description : undefined; + resourceInputs["displayName"] = args ? args.displayName : undefined; + resourceInputs["externalIdentifier"] = args ? args.externalIdentifier : undefined; + resourceInputs["filter"] = args ? args.filter : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(CertificatePool.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering CertificatePool resources. + */ +export interface CertificatePoolState { + certificateAuthority?: pulumi.Input; + /** + * A description of the Certificate Pool. + */ + description?: pulumi.Input; + /** + * The name of the Certificate Pool. + */ + displayName?: pulumi.Input; + /** + * The certificate field that will be used to represent the pool's external identity for audit logging. + */ + externalIdentifier?: pulumi.Input; + /** + * A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + */ + filter?: pulumi.Input; +} + +/** + * The set of arguments for constructing a CertificatePool resource. + */ +export interface CertificatePoolArgs { + certificateAuthority: pulumi.Input; + /** + * A description of the Certificate Pool. + */ + description: pulumi.Input; + /** + * The name of the Certificate Pool. + */ + displayName: pulumi.Input; + /** + * The certificate field that will be used to represent the pool's external identity for audit logging. + */ + externalIdentifier: pulumi.Input; + /** + * A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + */ + filter: pulumi.Input; +} diff --git a/sdk/nodejs/getCertificateAuthority.ts b/sdk/nodejs/getCertificateAuthority.ts new file mode 100644 index 00000000..cec92803 --- /dev/null +++ b/sdk/nodejs/getCertificateAuthority.ts @@ -0,0 +1,145 @@ +// *** 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 utilities from "./utilities"; + +/** + * [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + * + * `confluentcloud.CertificateAuthority` describes a Certificate Authority data source. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as confluentcloud from "@pulumi/confluentcloud"; + * + * const main = confluentcloud.getCertificateAuthority({ + * id: "op-abc123", + * }); + * export const certificateAuthority = main; + * ``` + */ +export function getCertificateAuthority(args: GetCertificateAuthorityArgs, opts?: pulumi.InvokeOptions): Promise { + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); + return pulumi.runtime.invoke("confluentcloud:index/getCertificateAuthority:getCertificateAuthority", { + "crlSource": args.crlSource, + "crlUpdatedAt": args.crlUpdatedAt, + "crlUrl": args.crlUrl, + "id": args.id, + }, opts); +} + +/** + * A collection of arguments for invoking getCertificateAuthority. + */ +export interface GetCertificateAuthorityArgs { + /** + * (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + */ + crlSource?: string; + /** + * (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + */ + crlUpdatedAt?: string; + /** + * (Optional String) The url from which to fetch the CRL for the certificate authority if crlSource is URL. + */ + crlUrl?: string; + /** + * The ID of the Certificate Authority, for example, `op-abc123`. + */ + id: string; +} + +/** + * A collection of values returned by getCertificateAuthority. + */ +export interface GetCertificateAuthorityResult { + /** + * (Required String) The name of the certificate file, for example, `certificate.pem`. + */ + readonly certificateChainFilename: string; + /** + * (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + */ + readonly crlSource: string; + /** + * (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + */ + readonly crlUpdatedAt: string; + /** + * (Optional String) The url from which to fetch the CRL for the certificate authority if crlSource is URL. + */ + readonly crlUrl: string; + /** + * (Required String) A description for the Certificate Authority. + */ + readonly description: string; + /** + * (Required String) A human-readable name for the Certificate Authority. + */ + readonly displayName: string; + /** + * (Required List of Strings) The expiration dates of certificates in the chain, for example, `["2017-07-21T17:32:28Z"]`. + */ + readonly expirationDates: string[]; + /** + * (Required List of Strings) The fingerprints for each certificate in the certificate chain, for example, `["B1BC968BD4f49D622AA89A81F2150152A41D829C"]`. + */ + readonly fingerprints: string[]; + readonly id: string; + /** + * (Required List of Strings) The serial numbers for each certificate in the certificate chain. + */ + readonly serialNumbers: string[]; +} +/** + * [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + * + * `confluentcloud.CertificateAuthority` describes a Certificate Authority data source. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as confluentcloud from "@pulumi/confluentcloud"; + * + * const main = confluentcloud.getCertificateAuthority({ + * id: "op-abc123", + * }); + * export const certificateAuthority = main; + * ``` + */ +export function getCertificateAuthorityOutput(args: GetCertificateAuthorityOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output { + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); + return pulumi.runtime.invokeOutput("confluentcloud:index/getCertificateAuthority:getCertificateAuthority", { + "crlSource": args.crlSource, + "crlUpdatedAt": args.crlUpdatedAt, + "crlUrl": args.crlUrl, + "id": args.id, + }, opts); +} + +/** + * A collection of arguments for invoking getCertificateAuthority. + */ +export interface GetCertificateAuthorityOutputArgs { + /** + * (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + */ + crlSource?: pulumi.Input; + /** + * (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + */ + crlUpdatedAt?: pulumi.Input; + /** + * (Optional String) The url from which to fetch the CRL for the certificate authority if crlSource is URL. + */ + crlUrl?: pulumi.Input; + /** + * The ID of the Certificate Authority, for example, `op-abc123`. + */ + id: pulumi.Input; +} diff --git a/sdk/nodejs/getCertificatePool.ts b/sdk/nodejs/getCertificatePool.ts new file mode 100644 index 00000000..ef647556 --- /dev/null +++ b/sdk/nodejs/getCertificatePool.ts @@ -0,0 +1,108 @@ +// *** 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"; + +/** + * [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + * + * `confluentcloud.CertificatePool` describes a Certificate Pool data source. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as confluentcloud from "@pulumi/confluentcloud"; + * + * const main = confluentcloud.getCertificatePool({ + * id: "pool-def456", + * certificateAuthority: { + * id: "op-abc123", + * }, + * }); + * export const certificatePool = main; + * ``` + */ +export function getCertificatePool(args: GetCertificatePoolArgs, opts?: pulumi.InvokeOptions): Promise { + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); + return pulumi.runtime.invoke("confluentcloud:index/getCertificatePool:getCertificatePool", { + "certificateAuthority": args.certificateAuthority, + "id": args.id, + }, opts); +} + +/** + * A collection of arguments for invoking getCertificatePool. + */ +export interface GetCertificatePoolArgs { + certificateAuthority: inputs.GetCertificatePoolCertificateAuthority; + /** + * The ID of the Certificate Pool, for example, `pool-abc123`. + */ + id: string; +} + +/** + * A collection of values returned by getCertificatePool. + */ +export interface GetCertificatePoolResult { + readonly certificateAuthority: outputs.GetCertificatePoolCertificateAuthority; + /** + * (Required String) A description of the Certificate Pool. + */ + readonly description: string; + /** + * (Required String) A human-readable name for the Certificate Pool. + */ + readonly displayName: string; + /** + * (Required String) The certificate field that will be used to represent the pool's external identity for audit logging, for example, `UID`. + */ + readonly externalIdentifier: string; + /** + * (Required String) A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + */ + readonly filter: string; + readonly id: string; +} +/** + * [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + * + * `confluentcloud.CertificatePool` describes a Certificate Pool data source. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as confluentcloud from "@pulumi/confluentcloud"; + * + * const main = confluentcloud.getCertificatePool({ + * id: "pool-def456", + * certificateAuthority: { + * id: "op-abc123", + * }, + * }); + * export const certificatePool = main; + * ``` + */ +export function getCertificatePoolOutput(args: GetCertificatePoolOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output { + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); + return pulumi.runtime.invokeOutput("confluentcloud:index/getCertificatePool:getCertificatePool", { + "certificateAuthority": args.certificateAuthority, + "id": args.id, + }, opts); +} + +/** + * A collection of arguments for invoking getCertificatePool. + */ +export interface GetCertificatePoolOutputArgs { + certificateAuthority: pulumi.Input; + /** + * The ID of the Certificate Pool, for example, `pool-abc123`. + */ + id: pulumi.Input; +} diff --git a/sdk/nodejs/index.ts b/sdk/nodejs/index.ts index 38fbf32b..90fdf573 100644 --- a/sdk/nodejs/index.ts +++ b/sdk/nodejs/index.ts @@ -35,6 +35,16 @@ export type CatalogEntityAttributes = import("./catalogEntityAttributes").Catalo export const CatalogEntityAttributes: typeof import("./catalogEntityAttributes").CatalogEntityAttributes = null as any; utilities.lazyLoad(exports, ["CatalogEntityAttributes"], () => require("./catalogEntityAttributes")); +export { CertificateAuthorityArgs, CertificateAuthorityState } from "./certificateAuthority"; +export type CertificateAuthority = import("./certificateAuthority").CertificateAuthority; +export const CertificateAuthority: typeof import("./certificateAuthority").CertificateAuthority = null as any; +utilities.lazyLoad(exports, ["CertificateAuthority"], () => require("./certificateAuthority")); + +export { CertificatePoolArgs, CertificatePoolState } from "./certificatePool"; +export type CertificatePool = import("./certificatePool").CertificatePool; +export const CertificatePool: typeof import("./certificatePool").CertificatePool = null as any; +utilities.lazyLoad(exports, ["CertificatePool"], () => require("./certificatePool")); + export { ClusterLinkArgs, ClusterLinkState } from "./clusterLink"; export type ClusterLink = import("./clusterLink").ClusterLink; export const ClusterLink: typeof import("./clusterLink").ClusterLink = null as any; @@ -95,6 +105,16 @@ export const getByokKey: typeof import("./getByokKey").getByokKey = null as any; export const getByokKeyOutput: typeof import("./getByokKey").getByokKeyOutput = null as any; utilities.lazyLoad(exports, ["getByokKey","getByokKeyOutput"], () => require("./getByokKey")); +export { GetCertificateAuthorityArgs, GetCertificateAuthorityResult, GetCertificateAuthorityOutputArgs } from "./getCertificateAuthority"; +export const getCertificateAuthority: typeof import("./getCertificateAuthority").getCertificateAuthority = null as any; +export const getCertificateAuthorityOutput: typeof import("./getCertificateAuthority").getCertificateAuthorityOutput = null as any; +utilities.lazyLoad(exports, ["getCertificateAuthority","getCertificateAuthorityOutput"], () => require("./getCertificateAuthority")); + +export { GetCertificatePoolArgs, GetCertificatePoolResult, GetCertificatePoolOutputArgs } from "./getCertificatePool"; +export const getCertificatePool: typeof import("./getCertificatePool").getCertificatePool = null as any; +export const getCertificatePoolOutput: typeof import("./getCertificatePool").getCertificatePoolOutput = null as any; +utilities.lazyLoad(exports, ["getCertificatePool","getCertificatePoolOutput"], () => require("./getCertificatePool")); + export { GetDnsRecordArgs, GetDnsRecordResult, GetDnsRecordOutputArgs } from "./getDnsRecord"; export const getDnsRecord: typeof import("./getDnsRecord").getDnsRecord = null as any; export const getDnsRecordOutput: typeof import("./getDnsRecord").getDnsRecordOutput = null as any; @@ -496,6 +516,10 @@ const _module = { return new ByokKey(name, undefined, { urn }) case "confluentcloud:index/catalogEntityAttributes:CatalogEntityAttributes": return new CatalogEntityAttributes(name, undefined, { urn }) + case "confluentcloud:index/certificateAuthority:CertificateAuthority": + return new CertificateAuthority(name, undefined, { urn }) + case "confluentcloud:index/certificatePool:CertificatePool": + return new CertificatePool(name, undefined, { urn }) case "confluentcloud:index/clusterLink:ClusterLink": return new ClusterLink(name, undefined, { urn }) case "confluentcloud:index/connector:Connector": @@ -589,6 +613,8 @@ pulumi.runtime.registerResourceModule("confluentcloud", "index/businessMetadata" pulumi.runtime.registerResourceModule("confluentcloud", "index/businessMetadataBinding", _module) pulumi.runtime.registerResourceModule("confluentcloud", "index/byokKey", _module) pulumi.runtime.registerResourceModule("confluentcloud", "index/catalogEntityAttributes", _module) +pulumi.runtime.registerResourceModule("confluentcloud", "index/certificateAuthority", _module) +pulumi.runtime.registerResourceModule("confluentcloud", "index/certificatePool", _module) pulumi.runtime.registerResourceModule("confluentcloud", "index/clusterLink", _module) pulumi.runtime.registerResourceModule("confluentcloud", "index/connector", _module) pulumi.runtime.registerResourceModule("confluentcloud", "index/customConnectorPlugin", _module) diff --git a/sdk/nodejs/tsconfig.json b/sdk/nodejs/tsconfig.json index 9ce1b85b..883fbcf8 100644 --- a/sdk/nodejs/tsconfig.json +++ b/sdk/nodejs/tsconfig.json @@ -19,6 +19,8 @@ "businessMetadataBinding.ts", "byokKey.ts", "catalogEntityAttributes.ts", + "certificateAuthority.ts", + "certificatePool.ts", "clusterLink.ts", "config/index.ts", "config/vars.ts", @@ -33,6 +35,8 @@ "getBusinessMetadata.ts", "getBusinessMetadataBinding.ts", "getByokKey.ts", + "getCertificateAuthority.ts", + "getCertificatePool.ts", "getDnsRecord.ts", "getEnvironment.ts", "getEnvironments.ts", diff --git a/sdk/nodejs/types/input.ts b/sdk/nodejs/types/input.ts index c9a7ec14..3acbeaec 100644 --- a/sdk/nodejs/types/input.ts +++ b/sdk/nodejs/types/input.ts @@ -230,6 +230,13 @@ export interface CatalogEntityAttributesSchemaRegistryCluster { id: pulumi.Input; } +export interface CertificatePoolCertificateAuthority { + /** + * The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + */ + id: pulumi.Input; +} + export interface ClusterLinkDestinationKafkaCluster { /** * The bootstrap endpoint of the destination Kafka cluster, for example, `SASL_SSL://pkc-00000.us-central1.gcp.confluent.cloud:9092` or `pkc-00000.us-central1.gcp.confluent.cloud:9092`). @@ -553,6 +560,20 @@ export interface GetBusinessMetadataSchemaRegistryClusterArgs { id: pulumi.Input; } +export interface GetCertificatePoolCertificateAuthority { + /** + * The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + */ + id: string; +} + +export interface GetCertificatePoolCertificateAuthorityArgs { + /** + * The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + */ + id: pulumi.Input; +} + export interface GetDnsRecordEnvironment { /** * The ID of the Environment that the DNS Record belongs to, for example, `env-123abc`. diff --git a/sdk/nodejs/types/output.ts b/sdk/nodejs/types/output.ts index fdc39d0e..748cd3c2 100644 --- a/sdk/nodejs/types/output.ts +++ b/sdk/nodejs/types/output.ts @@ -230,6 +230,13 @@ export interface CatalogEntityAttributesSchemaRegistryCluster { id: string; } +export interface CertificatePoolCertificateAuthority { + /** + * The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + */ + id: string; +} + export interface ClusterLinkDestinationKafkaCluster { /** * The bootstrap endpoint of the destination Kafka cluster, for example, `SASL_SSL://pkc-00000.us-central1.gcp.confluent.cloud:9092` or `pkc-00000.us-central1.gcp.confluent.cloud:9092`). @@ -633,6 +640,13 @@ export interface GetByokKeyGcp { securityGroup: string; } +export interface GetCertificatePoolCertificateAuthority { + /** + * The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + */ + id: string; +} + export interface GetDnsRecordEnvironment { /** * The ID of the Environment that the DNS Record belongs to, for example, `env-123abc`. diff --git a/sdk/python/pulumi_confluentcloud/__init__.py b/sdk/python/pulumi_confluentcloud/__init__.py index a5828224..9f15f729 100644 --- a/sdk/python/pulumi_confluentcloud/__init__.py +++ b/sdk/python/pulumi_confluentcloud/__init__.py @@ -11,6 +11,8 @@ from .business_metadata_binding import * from .byok_key import * from .catalog_entity_attributes import * +from .certificate_authority import * +from .certificate_pool import * from .cluster_link import * from .connector import * from .custom_connector_plugin import * @@ -23,6 +25,8 @@ from .get_business_metadata import * from .get_business_metadata_binding import * from .get_byok_key import * +from .get_certificate_authority import * +from .get_certificate_pool import * from .get_dns_record import * from .get_environment import * from .get_environments import * @@ -159,6 +163,22 @@ "confluentcloud:index/catalogEntityAttributes:CatalogEntityAttributes": "CatalogEntityAttributes" } }, + { + "pkg": "confluentcloud", + "mod": "index/certificateAuthority", + "fqn": "pulumi_confluentcloud", + "classes": { + "confluentcloud:index/certificateAuthority:CertificateAuthority": "CertificateAuthority" + } + }, + { + "pkg": "confluentcloud", + "mod": "index/certificatePool", + "fqn": "pulumi_confluentcloud", + "classes": { + "confluentcloud:index/certificatePool:CertificatePool": "CertificatePool" + } + }, { "pkg": "confluentcloud", "mod": "index/clusterLink", diff --git a/sdk/python/pulumi_confluentcloud/_inputs.py b/sdk/python/pulumi_confluentcloud/_inputs.py index 3ac1fd19..3e9bc508 100644 --- a/sdk/python/pulumi_confluentcloud/_inputs.py +++ b/sdk/python/pulumi_confluentcloud/_inputs.py @@ -27,6 +27,7 @@ 'ByokKeyGcpArgs', 'CatalogEntityAttributesCredentialsArgs', 'CatalogEntityAttributesSchemaRegistryClusterArgs', + 'CertificatePoolCertificateAuthorityArgs', 'ClusterLinkDestinationKafkaClusterArgs', 'ClusterLinkDestinationKafkaClusterCredentialsArgs', 'ClusterLinkLocalKafkaClusterArgs', @@ -147,6 +148,7 @@ 'GetBusinessMetadataBindingSchemaRegistryClusterArgs', 'GetBusinessMetadataCredentialsArgs', 'GetBusinessMetadataSchemaRegistryClusterArgs', + 'GetCertificatePoolCertificateAuthorityArgs', 'GetDnsRecordEnvironmentArgs', 'GetEnvironmentStreamGovernanceArgs', 'GetFlinkComputePoolEnvironmentArgs', @@ -990,6 +992,28 @@ def id(self, value: pulumi.Input[str]): pulumi.set(self, "id", value) +@pulumi.input_type +class CertificatePoolCertificateAuthorityArgs: + def __init__(__self__, *, + id: pulumi.Input[str]): + """ + :param pulumi.Input[str] id: The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + """ + pulumi.set(__self__, "id", id) + + @property + @pulumi.getter + def id(self) -> pulumi.Input[str]: + """ + The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + """ + return pulumi.get(self, "id") + + @id.setter + def id(self, value: pulumi.Input[str]): + pulumi.set(self, "id", value) + + @pulumi.input_type class ClusterLinkDestinationKafkaClusterArgs: def __init__(__self__, *, @@ -5022,6 +5046,28 @@ def id(self, value: str): pulumi.set(self, "id", value) +@pulumi.input_type +class GetCertificatePoolCertificateAuthorityArgs: + def __init__(__self__, *, + id: str): + """ + :param str id: The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + """ + pulumi.set(__self__, "id", id) + + @property + @pulumi.getter + def id(self) -> str: + """ + The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + """ + return pulumi.get(self, "id") + + @id.setter + def id(self, value: str): + pulumi.set(self, "id", value) + + @pulumi.input_type class GetDnsRecordEnvironmentArgs: def __init__(__self__, *, diff --git a/sdk/python/pulumi_confluentcloud/certificate_authority.py b/sdk/python/pulumi_confluentcloud/certificate_authority.py new file mode 100644 index 00000000..c9de3ead --- /dev/null +++ b/sdk/python/pulumi_confluentcloud/certificate_authority.py @@ -0,0 +1,584 @@ +# 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 copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = ['CertificateAuthorityArgs', 'CertificateAuthority'] + +@pulumi.input_type +class CertificateAuthorityArgs: + def __init__(__self__, *, + certificate_chain: pulumi.Input[str], + certificate_chain_filename: pulumi.Input[str], + description: pulumi.Input[str], + display_name: pulumi.Input[str], + crl_chain: Optional[pulumi.Input[str]] = None, + crl_url: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a CertificateAuthority resource. + :param pulumi.Input[str] certificate_chain: A base64 encoded string containing the signing certificate chain. + :param pulumi.Input[str] certificate_chain_filename: The name of the certificate file. + :param pulumi.Input[str] description: A description of the Certificate Authority. + :param pulumi.Input[str] display_name: The name of the Certificate Authority. + :param pulumi.Input[str] crl_chain: A base64 encoded string containing the CRL for this certificate authority. + :param pulumi.Input[str] crl_url: The url from which to fetch the CRL for the certificate authority. + """ + pulumi.set(__self__, "certificate_chain", certificate_chain) + pulumi.set(__self__, "certificate_chain_filename", certificate_chain_filename) + pulumi.set(__self__, "description", description) + pulumi.set(__self__, "display_name", display_name) + if crl_chain is not None: + pulumi.set(__self__, "crl_chain", crl_chain) + if crl_url is not None: + pulumi.set(__self__, "crl_url", crl_url) + + @property + @pulumi.getter(name="certificateChain") + def certificate_chain(self) -> pulumi.Input[str]: + """ + A base64 encoded string containing the signing certificate chain. + """ + return pulumi.get(self, "certificate_chain") + + @certificate_chain.setter + def certificate_chain(self, value: pulumi.Input[str]): + pulumi.set(self, "certificate_chain", value) + + @property + @pulumi.getter(name="certificateChainFilename") + def certificate_chain_filename(self) -> pulumi.Input[str]: + """ + The name of the certificate file. + """ + return pulumi.get(self, "certificate_chain_filename") + + @certificate_chain_filename.setter + def certificate_chain_filename(self, value: pulumi.Input[str]): + pulumi.set(self, "certificate_chain_filename", value) + + @property + @pulumi.getter + def description(self) -> pulumi.Input[str]: + """ + A description of the Certificate Authority. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: pulumi.Input[str]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> pulumi.Input[str]: + """ + The name of the Certificate Authority. + """ + return pulumi.get(self, "display_name") + + @display_name.setter + def display_name(self, value: pulumi.Input[str]): + pulumi.set(self, "display_name", value) + + @property + @pulumi.getter(name="crlChain") + def crl_chain(self) -> Optional[pulumi.Input[str]]: + """ + A base64 encoded string containing the CRL for this certificate authority. + """ + return pulumi.get(self, "crl_chain") + + @crl_chain.setter + def crl_chain(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "crl_chain", value) + + @property + @pulumi.getter(name="crlUrl") + def crl_url(self) -> Optional[pulumi.Input[str]]: + """ + The url from which to fetch the CRL for the certificate authority. + """ + return pulumi.get(self, "crl_url") + + @crl_url.setter + def crl_url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "crl_url", value) + + +@pulumi.input_type +class _CertificateAuthorityState: + def __init__(__self__, *, + certificate_chain: Optional[pulumi.Input[str]] = None, + certificate_chain_filename: Optional[pulumi.Input[str]] = None, + crl_chain: Optional[pulumi.Input[str]] = None, + crl_source: Optional[pulumi.Input[str]] = None, + crl_updated_at: Optional[pulumi.Input[str]] = None, + crl_url: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + expiration_dates: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + fingerprints: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + serial_numbers: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): + """ + Input properties used for looking up and filtering CertificateAuthority resources. + :param pulumi.Input[str] certificate_chain: A base64 encoded string containing the signing certificate chain. + :param pulumi.Input[str] certificate_chain_filename: The name of the certificate file. + :param pulumi.Input[str] crl_chain: A base64 encoded string containing the CRL for this certificate authority. + :param pulumi.Input[str] crl_source: (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). + :param pulumi.Input[str] crl_updated_at: (Optional String) The timestamp for when CRL was last updated. + :param pulumi.Input[str] crl_url: The url from which to fetch the CRL for the certificate authority. + :param pulumi.Input[str] description: A description of the Certificate Authority. + :param pulumi.Input[str] display_name: The name of the Certificate Authority. + :param pulumi.Input[Sequence[pulumi.Input[str]]] expiration_dates: (Required List of Strings) The expiration dates of certificates in the chain. + :param pulumi.Input[Sequence[pulumi.Input[str]]] fingerprints: (Required List of Strings) The fingerprints for each certificate in the certificate chain. + :param pulumi.Input[Sequence[pulumi.Input[str]]] serial_numbers: (Required List of Strings) The serial numbers for each certificate in the certificate chain. + """ + if certificate_chain is not None: + pulumi.set(__self__, "certificate_chain", certificate_chain) + if certificate_chain_filename is not None: + pulumi.set(__self__, "certificate_chain_filename", certificate_chain_filename) + if crl_chain is not None: + pulumi.set(__self__, "crl_chain", crl_chain) + if crl_source is not None: + pulumi.set(__self__, "crl_source", crl_source) + if crl_updated_at is not None: + pulumi.set(__self__, "crl_updated_at", crl_updated_at) + if crl_url is not None: + pulumi.set(__self__, "crl_url", crl_url) + if description is not None: + pulumi.set(__self__, "description", description) + if display_name is not None: + pulumi.set(__self__, "display_name", display_name) + if expiration_dates is not None: + pulumi.set(__self__, "expiration_dates", expiration_dates) + if fingerprints is not None: + pulumi.set(__self__, "fingerprints", fingerprints) + if serial_numbers is not None: + pulumi.set(__self__, "serial_numbers", serial_numbers) + + @property + @pulumi.getter(name="certificateChain") + def certificate_chain(self) -> Optional[pulumi.Input[str]]: + """ + A base64 encoded string containing the signing certificate chain. + """ + return pulumi.get(self, "certificate_chain") + + @certificate_chain.setter + def certificate_chain(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "certificate_chain", value) + + @property + @pulumi.getter(name="certificateChainFilename") + def certificate_chain_filename(self) -> Optional[pulumi.Input[str]]: + """ + The name of the certificate file. + """ + return pulumi.get(self, "certificate_chain_filename") + + @certificate_chain_filename.setter + def certificate_chain_filename(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "certificate_chain_filename", value) + + @property + @pulumi.getter(name="crlChain") + def crl_chain(self) -> Optional[pulumi.Input[str]]: + """ + A base64 encoded string containing the CRL for this certificate authority. + """ + return pulumi.get(self, "crl_chain") + + @crl_chain.setter + def crl_chain(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "crl_chain", value) + + @property + @pulumi.getter(name="crlSource") + def crl_source(self) -> Optional[pulumi.Input[str]]: + """ + (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). + """ + return pulumi.get(self, "crl_source") + + @crl_source.setter + def crl_source(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "crl_source", value) + + @property + @pulumi.getter(name="crlUpdatedAt") + def crl_updated_at(self) -> Optional[pulumi.Input[str]]: + """ + (Optional String) The timestamp for when CRL was last updated. + """ + return pulumi.get(self, "crl_updated_at") + + @crl_updated_at.setter + def crl_updated_at(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "crl_updated_at", value) + + @property + @pulumi.getter(name="crlUrl") + def crl_url(self) -> Optional[pulumi.Input[str]]: + """ + The url from which to fetch the CRL for the certificate authority. + """ + return pulumi.get(self, "crl_url") + + @crl_url.setter + def crl_url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "crl_url", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + A description of the Certificate Authority. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the Certificate Authority. + """ + return pulumi.get(self, "display_name") + + @display_name.setter + def display_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "display_name", value) + + @property + @pulumi.getter(name="expirationDates") + def expiration_dates(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + (Required List of Strings) The expiration dates of certificates in the chain. + """ + return pulumi.get(self, "expiration_dates") + + @expiration_dates.setter + def expiration_dates(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "expiration_dates", value) + + @property + @pulumi.getter + def fingerprints(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + (Required List of Strings) The fingerprints for each certificate in the certificate chain. + """ + return pulumi.get(self, "fingerprints") + + @fingerprints.setter + def fingerprints(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "fingerprints", value) + + @property + @pulumi.getter(name="serialNumbers") + def serial_numbers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + (Required List of Strings) The serial numbers for each certificate in the certificate chain. + """ + return pulumi.get(self, "serial_numbers") + + @serial_numbers.setter + def serial_numbers(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "serial_numbers", value) + + +class CertificateAuthority(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + certificate_chain: Optional[pulumi.Input[str]] = None, + certificate_chain_filename: Optional[pulumi.Input[str]] = None, + crl_chain: Optional[pulumi.Input[str]] = None, + crl_url: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + + `CertificateAuthority` provides a Certificate Authority resource that enables creating, editing, and deleting Certificate Authorities on Confluent Cloud. + + ## Example Usage + + ```python + import pulumi + import pulumi_confluentcloud as confluentcloud + + main = confluentcloud.CertificateAuthority("main", + display_name="my_certificate_authority", + description="description", + certificate_chain_filename="certificate.pem", + certificate_chain="***REDACTED***") + ``` + + ## Import + + You can import a Certificate Authority by using Certificate Authority ID, for example: + + $ export CONFLUENT_CLOUD_API_KEY="" + + $ export CONFLUENT_CLOUD_API_SECRET="" + + ```sh + $ pulumi import confluentcloud:index/certificateAuthority:CertificateAuthority main op-abc123 + ``` + + !> **Warning:** Do not forget to delete terminal command history afterwards for security purposes. + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] certificate_chain: A base64 encoded string containing the signing certificate chain. + :param pulumi.Input[str] certificate_chain_filename: The name of the certificate file. + :param pulumi.Input[str] crl_chain: A base64 encoded string containing the CRL for this certificate authority. + :param pulumi.Input[str] crl_url: The url from which to fetch the CRL for the certificate authority. + :param pulumi.Input[str] description: A description of the Certificate Authority. + :param pulumi.Input[str] display_name: The name of the Certificate Authority. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: CertificateAuthorityArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + + `CertificateAuthority` provides a Certificate Authority resource that enables creating, editing, and deleting Certificate Authorities on Confluent Cloud. + + ## Example Usage + + ```python + import pulumi + import pulumi_confluentcloud as confluentcloud + + main = confluentcloud.CertificateAuthority("main", + display_name="my_certificate_authority", + description="description", + certificate_chain_filename="certificate.pem", + certificate_chain="***REDACTED***") + ``` + + ## Import + + You can import a Certificate Authority by using Certificate Authority ID, for example: + + $ export CONFLUENT_CLOUD_API_KEY="" + + $ export CONFLUENT_CLOUD_API_SECRET="" + + ```sh + $ pulumi import confluentcloud:index/certificateAuthority:CertificateAuthority main op-abc123 + ``` + + !> **Warning:** Do not forget to delete terminal command history afterwards for security purposes. + + :param str resource_name: The name of the resource. + :param CertificateAuthorityArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(CertificateAuthorityArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + certificate_chain: Optional[pulumi.Input[str]] = None, + certificate_chain_filename: Optional[pulumi.Input[str]] = None, + crl_chain: Optional[pulumi.Input[str]] = None, + crl_url: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = CertificateAuthorityArgs.__new__(CertificateAuthorityArgs) + + if certificate_chain is None and not opts.urn: + raise TypeError("Missing required property 'certificate_chain'") + __props__.__dict__["certificate_chain"] = None if certificate_chain is None else pulumi.Output.secret(certificate_chain) + if certificate_chain_filename is None and not opts.urn: + raise TypeError("Missing required property 'certificate_chain_filename'") + __props__.__dict__["certificate_chain_filename"] = certificate_chain_filename + __props__.__dict__["crl_chain"] = None if crl_chain is None else pulumi.Output.secret(crl_chain) + __props__.__dict__["crl_url"] = crl_url + if description is None and not opts.urn: + raise TypeError("Missing required property 'description'") + __props__.__dict__["description"] = description + if display_name is None and not opts.urn: + raise TypeError("Missing required property 'display_name'") + __props__.__dict__["display_name"] = display_name + __props__.__dict__["crl_source"] = None + __props__.__dict__["crl_updated_at"] = None + __props__.__dict__["expiration_dates"] = None + __props__.__dict__["fingerprints"] = None + __props__.__dict__["serial_numbers"] = None + secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["certificateChain", "crlChain"]) + opts = pulumi.ResourceOptions.merge(opts, secret_opts) + super(CertificateAuthority, __self__).__init__( + 'confluentcloud:index/certificateAuthority:CertificateAuthority', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + certificate_chain: Optional[pulumi.Input[str]] = None, + certificate_chain_filename: Optional[pulumi.Input[str]] = None, + crl_chain: Optional[pulumi.Input[str]] = None, + crl_source: Optional[pulumi.Input[str]] = None, + crl_updated_at: Optional[pulumi.Input[str]] = None, + crl_url: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + expiration_dates: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + fingerprints: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + serial_numbers: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None) -> 'CertificateAuthority': + """ + Get an existing CertificateAuthority resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :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_chain: A base64 encoded string containing the signing certificate chain. + :param pulumi.Input[str] certificate_chain_filename: The name of the certificate file. + :param pulumi.Input[str] crl_chain: A base64 encoded string containing the CRL for this certificate authority. + :param pulumi.Input[str] crl_source: (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). + :param pulumi.Input[str] crl_updated_at: (Optional String) The timestamp for when CRL was last updated. + :param pulumi.Input[str] crl_url: The url from which to fetch the CRL for the certificate authority. + :param pulumi.Input[str] description: A description of the Certificate Authority. + :param pulumi.Input[str] display_name: The name of the Certificate Authority. + :param pulumi.Input[Sequence[pulumi.Input[str]]] expiration_dates: (Required List of Strings) The expiration dates of certificates in the chain. + :param pulumi.Input[Sequence[pulumi.Input[str]]] fingerprints: (Required List of Strings) The fingerprints for each certificate in the certificate chain. + :param pulumi.Input[Sequence[pulumi.Input[str]]] serial_numbers: (Required List of Strings) The serial numbers for each certificate in the certificate chain. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _CertificateAuthorityState.__new__(_CertificateAuthorityState) + + __props__.__dict__["certificate_chain"] = certificate_chain + __props__.__dict__["certificate_chain_filename"] = certificate_chain_filename + __props__.__dict__["crl_chain"] = crl_chain + __props__.__dict__["crl_source"] = crl_source + __props__.__dict__["crl_updated_at"] = crl_updated_at + __props__.__dict__["crl_url"] = crl_url + __props__.__dict__["description"] = description + __props__.__dict__["display_name"] = display_name + __props__.__dict__["expiration_dates"] = expiration_dates + __props__.__dict__["fingerprints"] = fingerprints + __props__.__dict__["serial_numbers"] = serial_numbers + return CertificateAuthority(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter(name="certificateChain") + def certificate_chain(self) -> pulumi.Output[str]: + """ + A base64 encoded string containing the signing certificate chain. + """ + return pulumi.get(self, "certificate_chain") + + @property + @pulumi.getter(name="certificateChainFilename") + def certificate_chain_filename(self) -> pulumi.Output[str]: + """ + The name of the certificate file. + """ + return pulumi.get(self, "certificate_chain_filename") + + @property + @pulumi.getter(name="crlChain") + def crl_chain(self) -> pulumi.Output[Optional[str]]: + """ + A base64 encoded string containing the CRL for this certificate authority. + """ + return pulumi.get(self, "crl_chain") + + @property + @pulumi.getter(name="crlSource") + def crl_source(self) -> pulumi.Output[str]: + """ + (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). + """ + return pulumi.get(self, "crl_source") + + @property + @pulumi.getter(name="crlUpdatedAt") + def crl_updated_at(self) -> pulumi.Output[str]: + """ + (Optional String) The timestamp for when CRL was last updated. + """ + return pulumi.get(self, "crl_updated_at") + + @property + @pulumi.getter(name="crlUrl") + def crl_url(self) -> pulumi.Output[Optional[str]]: + """ + The url from which to fetch the CRL for the certificate authority. + """ + return pulumi.get(self, "crl_url") + + @property + @pulumi.getter + def description(self) -> pulumi.Output[str]: + """ + A description of the Certificate Authority. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> pulumi.Output[str]: + """ + The name of the Certificate Authority. + """ + return pulumi.get(self, "display_name") + + @property + @pulumi.getter(name="expirationDates") + def expiration_dates(self) -> pulumi.Output[Sequence[str]]: + """ + (Required List of Strings) The expiration dates of certificates in the chain. + """ + return pulumi.get(self, "expiration_dates") + + @property + @pulumi.getter + def fingerprints(self) -> pulumi.Output[Sequence[str]]: + """ + (Required List of Strings) The fingerprints for each certificate in the certificate chain. + """ + return pulumi.get(self, "fingerprints") + + @property + @pulumi.getter(name="serialNumbers") + def serial_numbers(self) -> pulumi.Output[Sequence[str]]: + """ + (Required List of Strings) The serial numbers for each certificate in the certificate chain. + """ + return pulumi.get(self, "serial_numbers") + diff --git a/sdk/python/pulumi_confluentcloud/certificate_pool.py b/sdk/python/pulumi_confluentcloud/certificate_pool.py new file mode 100644 index 00000000..d8ac17a6 --- /dev/null +++ b/sdk/python/pulumi_confluentcloud/certificate_pool.py @@ -0,0 +1,391 @@ +# 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 copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities +from . import outputs +from ._inputs import * + +__all__ = ['CertificatePoolArgs', 'CertificatePool'] + +@pulumi.input_type +class CertificatePoolArgs: + def __init__(__self__, *, + certificate_authority: pulumi.Input['CertificatePoolCertificateAuthorityArgs'], + description: pulumi.Input[str], + display_name: pulumi.Input[str], + external_identifier: pulumi.Input[str], + filter: pulumi.Input[str]): + """ + The set of arguments for constructing a CertificatePool resource. + :param pulumi.Input[str] description: A description of the Certificate Pool. + :param pulumi.Input[str] display_name: The name of the Certificate Pool. + :param pulumi.Input[str] external_identifier: The certificate field that will be used to represent the pool's external identity for audit logging. + :param pulumi.Input[str] filter: A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + """ + pulumi.set(__self__, "certificate_authority", certificate_authority) + pulumi.set(__self__, "description", description) + pulumi.set(__self__, "display_name", display_name) + pulumi.set(__self__, "external_identifier", external_identifier) + pulumi.set(__self__, "filter", filter) + + @property + @pulumi.getter(name="certificateAuthority") + def certificate_authority(self) -> pulumi.Input['CertificatePoolCertificateAuthorityArgs']: + return pulumi.get(self, "certificate_authority") + + @certificate_authority.setter + def certificate_authority(self, value: pulumi.Input['CertificatePoolCertificateAuthorityArgs']): + pulumi.set(self, "certificate_authority", value) + + @property + @pulumi.getter + def description(self) -> pulumi.Input[str]: + """ + A description of the Certificate Pool. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: pulumi.Input[str]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> pulumi.Input[str]: + """ + The name of the Certificate Pool. + """ + return pulumi.get(self, "display_name") + + @display_name.setter + def display_name(self, value: pulumi.Input[str]): + pulumi.set(self, "display_name", value) + + @property + @pulumi.getter(name="externalIdentifier") + def external_identifier(self) -> pulumi.Input[str]: + """ + The certificate field that will be used to represent the pool's external identity for audit logging. + """ + return pulumi.get(self, "external_identifier") + + @external_identifier.setter + def external_identifier(self, value: pulumi.Input[str]): + pulumi.set(self, "external_identifier", value) + + @property + @pulumi.getter + def filter(self) -> pulumi.Input[str]: + """ + A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + """ + return pulumi.get(self, "filter") + + @filter.setter + def filter(self, value: pulumi.Input[str]): + pulumi.set(self, "filter", value) + + +@pulumi.input_type +class _CertificatePoolState: + def __init__(__self__, *, + certificate_authority: Optional[pulumi.Input['CertificatePoolCertificateAuthorityArgs']] = None, + description: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + external_identifier: Optional[pulumi.Input[str]] = None, + filter: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering CertificatePool resources. + :param pulumi.Input[str] description: A description of the Certificate Pool. + :param pulumi.Input[str] display_name: The name of the Certificate Pool. + :param pulumi.Input[str] external_identifier: The certificate field that will be used to represent the pool's external identity for audit logging. + :param pulumi.Input[str] filter: A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + """ + if certificate_authority is not None: + pulumi.set(__self__, "certificate_authority", certificate_authority) + if description is not None: + pulumi.set(__self__, "description", description) + if display_name is not None: + pulumi.set(__self__, "display_name", display_name) + if external_identifier is not None: + pulumi.set(__self__, "external_identifier", external_identifier) + if filter is not None: + pulumi.set(__self__, "filter", filter) + + @property + @pulumi.getter(name="certificateAuthority") + def certificate_authority(self) -> Optional[pulumi.Input['CertificatePoolCertificateAuthorityArgs']]: + return pulumi.get(self, "certificate_authority") + + @certificate_authority.setter + def certificate_authority(self, value: Optional[pulumi.Input['CertificatePoolCertificateAuthorityArgs']]): + pulumi.set(self, "certificate_authority", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + A description of the Certificate Pool. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the Certificate Pool. + """ + return pulumi.get(self, "display_name") + + @display_name.setter + def display_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "display_name", value) + + @property + @pulumi.getter(name="externalIdentifier") + def external_identifier(self) -> Optional[pulumi.Input[str]]: + """ + The certificate field that will be used to represent the pool's external identity for audit logging. + """ + return pulumi.get(self, "external_identifier") + + @external_identifier.setter + def external_identifier(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "external_identifier", value) + + @property + @pulumi.getter + def filter(self) -> Optional[pulumi.Input[str]]: + """ + A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + """ + return pulumi.get(self, "filter") + + @filter.setter + def filter(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "filter", value) + + +class CertificatePool(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + certificate_authority: Optional[pulumi.Input[Union['CertificatePoolCertificateAuthorityArgs', 'CertificatePoolCertificateAuthorityArgsDict']]] = None, + description: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + external_identifier: Optional[pulumi.Input[str]] = None, + filter: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + + `CertificatePool` provides a Certificate Pool resource that enables creating, editing, and deleting Certificate Pools on Confluent Cloud. + + ## Example Usage + + ```python + import pulumi + import pulumi_confluentcloud as confluentcloud + + main = confluentcloud.CertificatePool("main", + certificate_authority={ + "id": main_confluent_certificate_authority["id"], + }, + display_name="my-certificate-pool", + description="example description", + external_identifier="CN", + filter="CN == \\"test\\"") + ``` + + ## Import + + You can import a Certificate Pool by using Certificate Authority ID and Certificate Pool ID, in the format `/`. The following example shows how to import a Certificate Pool: + + $ export CONFLUENT_CLOUD_API_KEY="" + + $ export CONFLUENT_CLOUD_API_SECRET="" + + ```sh + $ pulumi import confluentcloud:index/certificatePool:CertificatePool main op-abc123/pool-abc123 + ``` + + !> **Warning:** Do not forget to delete terminal command history afterwards for security purposes. + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] description: A description of the Certificate Pool. + :param pulumi.Input[str] display_name: The name of the Certificate Pool. + :param pulumi.Input[str] external_identifier: The certificate field that will be used to represent the pool's external identity for audit logging. + :param pulumi.Input[str] filter: A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: CertificatePoolArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + + `CertificatePool` provides a Certificate Pool resource that enables creating, editing, and deleting Certificate Pools on Confluent Cloud. + + ## Example Usage + + ```python + import pulumi + import pulumi_confluentcloud as confluentcloud + + main = confluentcloud.CertificatePool("main", + certificate_authority={ + "id": main_confluent_certificate_authority["id"], + }, + display_name="my-certificate-pool", + description="example description", + external_identifier="CN", + filter="CN == \\"test\\"") + ``` + + ## Import + + You can import a Certificate Pool by using Certificate Authority ID and Certificate Pool ID, in the format `/`. The following example shows how to import a Certificate Pool: + + $ export CONFLUENT_CLOUD_API_KEY="" + + $ export CONFLUENT_CLOUD_API_SECRET="" + + ```sh + $ pulumi import confluentcloud:index/certificatePool:CertificatePool main op-abc123/pool-abc123 + ``` + + !> **Warning:** Do not forget to delete terminal command history afterwards for security purposes. + + :param str resource_name: The name of the resource. + :param CertificatePoolArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(CertificatePoolArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + certificate_authority: Optional[pulumi.Input[Union['CertificatePoolCertificateAuthorityArgs', 'CertificatePoolCertificateAuthorityArgsDict']]] = None, + description: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + external_identifier: Optional[pulumi.Input[str]] = None, + filter: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = CertificatePoolArgs.__new__(CertificatePoolArgs) + + if certificate_authority is None and not opts.urn: + raise TypeError("Missing required property 'certificate_authority'") + __props__.__dict__["certificate_authority"] = certificate_authority + if description is None and not opts.urn: + raise TypeError("Missing required property 'description'") + __props__.__dict__["description"] = description + if display_name is None and not opts.urn: + raise TypeError("Missing required property 'display_name'") + __props__.__dict__["display_name"] = display_name + if external_identifier is None and not opts.urn: + raise TypeError("Missing required property 'external_identifier'") + __props__.__dict__["external_identifier"] = external_identifier + if filter is None and not opts.urn: + raise TypeError("Missing required property 'filter'") + __props__.__dict__["filter"] = filter + super(CertificatePool, __self__).__init__( + 'confluentcloud:index/certificatePool:CertificatePool', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + certificate_authority: Optional[pulumi.Input[Union['CertificatePoolCertificateAuthorityArgs', 'CertificatePoolCertificateAuthorityArgsDict']]] = None, + description: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + external_identifier: Optional[pulumi.Input[str]] = None, + filter: Optional[pulumi.Input[str]] = None) -> 'CertificatePool': + """ + Get an existing CertificatePool resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :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] description: A description of the Certificate Pool. + :param pulumi.Input[str] display_name: The name of the Certificate Pool. + :param pulumi.Input[str] external_identifier: The certificate field that will be used to represent the pool's external identity for audit logging. + :param pulumi.Input[str] filter: A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _CertificatePoolState.__new__(_CertificatePoolState) + + __props__.__dict__["certificate_authority"] = certificate_authority + __props__.__dict__["description"] = description + __props__.__dict__["display_name"] = display_name + __props__.__dict__["external_identifier"] = external_identifier + __props__.__dict__["filter"] = filter + return CertificatePool(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter(name="certificateAuthority") + def certificate_authority(self) -> pulumi.Output['outputs.CertificatePoolCertificateAuthority']: + return pulumi.get(self, "certificate_authority") + + @property + @pulumi.getter + def description(self) -> pulumi.Output[str]: + """ + A description of the Certificate Pool. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> pulumi.Output[str]: + """ + The name of the Certificate Pool. + """ + return pulumi.get(self, "display_name") + + @property + @pulumi.getter(name="externalIdentifier") + def external_identifier(self) -> pulumi.Output[str]: + """ + The certificate field that will be used to represent the pool's external identity for audit logging. + """ + return pulumi.get(self, "external_identifier") + + @property + @pulumi.getter + def filter(self) -> pulumi.Output[str]: + """ + A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + """ + return pulumi.get(self, "filter") + diff --git a/sdk/python/pulumi_confluentcloud/get_certificate_authority.py b/sdk/python/pulumi_confluentcloud/get_certificate_authority.py new file mode 100644 index 00000000..a2753aee --- /dev/null +++ b/sdk/python/pulumi_confluentcloud/get_certificate_authority.py @@ -0,0 +1,226 @@ +# 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 copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = [ + 'GetCertificateAuthorityResult', + 'AwaitableGetCertificateAuthorityResult', + 'get_certificate_authority', + 'get_certificate_authority_output', +] + +@pulumi.output_type +class GetCertificateAuthorityResult: + """ + A collection of values returned by getCertificateAuthority. + """ + def __init__(__self__, certificate_chain_filename=None, crl_source=None, crl_updated_at=None, crl_url=None, description=None, display_name=None, expiration_dates=None, fingerprints=None, id=None, serial_numbers=None): + if certificate_chain_filename and not isinstance(certificate_chain_filename, str): + raise TypeError("Expected argument 'certificate_chain_filename' to be a str") + pulumi.set(__self__, "certificate_chain_filename", certificate_chain_filename) + if crl_source and not isinstance(crl_source, str): + raise TypeError("Expected argument 'crl_source' to be a str") + pulumi.set(__self__, "crl_source", crl_source) + if crl_updated_at and not isinstance(crl_updated_at, str): + raise TypeError("Expected argument 'crl_updated_at' to be a str") + pulumi.set(__self__, "crl_updated_at", crl_updated_at) + if crl_url and not isinstance(crl_url, str): + raise TypeError("Expected argument 'crl_url' to be a str") + pulumi.set(__self__, "crl_url", crl_url) + if description and not isinstance(description, str): + raise TypeError("Expected argument 'description' to be a str") + pulumi.set(__self__, "description", description) + if display_name and not isinstance(display_name, str): + raise TypeError("Expected argument 'display_name' to be a str") + pulumi.set(__self__, "display_name", display_name) + if expiration_dates and not isinstance(expiration_dates, list): + raise TypeError("Expected argument 'expiration_dates' to be a list") + pulumi.set(__self__, "expiration_dates", expiration_dates) + if fingerprints and not isinstance(fingerprints, list): + raise TypeError("Expected argument 'fingerprints' to be a list") + pulumi.set(__self__, "fingerprints", fingerprints) + if id and not isinstance(id, str): + raise TypeError("Expected argument 'id' to be a str") + pulumi.set(__self__, "id", id) + if serial_numbers and not isinstance(serial_numbers, list): + raise TypeError("Expected argument 'serial_numbers' to be a list") + pulumi.set(__self__, "serial_numbers", serial_numbers) + + @property + @pulumi.getter(name="certificateChainFilename") + def certificate_chain_filename(self) -> str: + """ + (Required String) The name of the certificate file, for example, `certificate.pem`. + """ + return pulumi.get(self, "certificate_chain_filename") + + @property + @pulumi.getter(name="crlSource") + def crl_source(self) -> str: + """ + (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + """ + return pulumi.get(self, "crl_source") + + @property + @pulumi.getter(name="crlUpdatedAt") + def crl_updated_at(self) -> str: + """ + (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + """ + return pulumi.get(self, "crl_updated_at") + + @property + @pulumi.getter(name="crlUrl") + def crl_url(self) -> str: + """ + (Optional String) The url from which to fetch the CRL for the certificate authority if crl_source is URL. + """ + return pulumi.get(self, "crl_url") + + @property + @pulumi.getter + def description(self) -> str: + """ + (Required String) A description for the Certificate Authority. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> str: + """ + (Required String) A human-readable name for the Certificate Authority. + """ + return pulumi.get(self, "display_name") + + @property + @pulumi.getter(name="expirationDates") + def expiration_dates(self) -> Sequence[str]: + """ + (Required List of Strings) The expiration dates of certificates in the chain, for example, `["2017-07-21T17:32:28Z"]`. + """ + return pulumi.get(self, "expiration_dates") + + @property + @pulumi.getter + def fingerprints(self) -> Sequence[str]: + """ + (Required List of Strings) The fingerprints for each certificate in the certificate chain, for example, `["B1BC968BD4f49D622AA89A81F2150152A41D829C"]`. + """ + return pulumi.get(self, "fingerprints") + + @property + @pulumi.getter + def id(self) -> str: + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="serialNumbers") + def serial_numbers(self) -> Sequence[str]: + """ + (Required List of Strings) The serial numbers for each certificate in the certificate chain. + """ + return pulumi.get(self, "serial_numbers") + + +class AwaitableGetCertificateAuthorityResult(GetCertificateAuthorityResult): + # pylint: disable=using-constant-test + def __await__(self): + if False: + yield self + return GetCertificateAuthorityResult( + certificate_chain_filename=self.certificate_chain_filename, + crl_source=self.crl_source, + crl_updated_at=self.crl_updated_at, + crl_url=self.crl_url, + description=self.description, + display_name=self.display_name, + expiration_dates=self.expiration_dates, + fingerprints=self.fingerprints, + id=self.id, + serial_numbers=self.serial_numbers) + + +def get_certificate_authority(crl_source: Optional[str] = None, + crl_updated_at: Optional[str] = None, + crl_url: Optional[str] = None, + id: Optional[str] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetCertificateAuthorityResult: + """ + [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + + `CertificateAuthority` describes a Certificate Authority data source. + + ## Example Usage + + ```python + import pulumi + import pulumi_confluentcloud as confluentcloud + + main = confluentcloud.get_certificate_authority(id="op-abc123") + pulumi.export("certificateAuthority", main) + ``` + + + :param str crl_source: (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + :param str crl_updated_at: (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + :param str crl_url: (Optional String) The url from which to fetch the CRL for the certificate authority if crl_source is URL. + :param str id: The ID of the Certificate Authority, for example, `op-abc123`. + """ + __args__ = dict() + __args__['crlSource'] = crl_source + __args__['crlUpdatedAt'] = crl_updated_at + __args__['crlUrl'] = crl_url + __args__['id'] = id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke('confluentcloud:index/getCertificateAuthority:getCertificateAuthority', __args__, opts=opts, typ=GetCertificateAuthorityResult).value + + return AwaitableGetCertificateAuthorityResult( + certificate_chain_filename=pulumi.get(__ret__, 'certificate_chain_filename'), + crl_source=pulumi.get(__ret__, 'crl_source'), + crl_updated_at=pulumi.get(__ret__, 'crl_updated_at'), + crl_url=pulumi.get(__ret__, 'crl_url'), + description=pulumi.get(__ret__, 'description'), + display_name=pulumi.get(__ret__, 'display_name'), + expiration_dates=pulumi.get(__ret__, 'expiration_dates'), + fingerprints=pulumi.get(__ret__, 'fingerprints'), + id=pulumi.get(__ret__, 'id'), + serial_numbers=pulumi.get(__ret__, 'serial_numbers')) + + +@_utilities.lift_output_func(get_certificate_authority) +def get_certificate_authority_output(crl_source: Optional[pulumi.Input[Optional[str]]] = None, + crl_updated_at: Optional[pulumi.Input[Optional[str]]] = None, + crl_url: Optional[pulumi.Input[Optional[str]]] = None, + id: Optional[pulumi.Input[str]] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetCertificateAuthorityResult]: + """ + [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + + `CertificateAuthority` describes a Certificate Authority data source. + + ## Example Usage + + ```python + import pulumi + import pulumi_confluentcloud as confluentcloud + + main = confluentcloud.get_certificate_authority(id="op-abc123") + pulumi.export("certificateAuthority", main) + ``` + + + :param str crl_source: (Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`. + :param str crl_updated_at: (Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`. + :param str crl_url: (Optional String) The url from which to fetch the CRL for the certificate authority if crl_source is URL. + :param str id: The ID of the Certificate Authority, for example, `op-abc123`. + """ + ... diff --git a/sdk/python/pulumi_confluentcloud/get_certificate_pool.py b/sdk/python/pulumi_confluentcloud/get_certificate_pool.py new file mode 100644 index 00000000..6ddff4ff --- /dev/null +++ b/sdk/python/pulumi_confluentcloud/get_certificate_pool.py @@ -0,0 +1,167 @@ +# 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 copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities +from . import outputs +from ._inputs import * + +__all__ = [ + 'GetCertificatePoolResult', + 'AwaitableGetCertificatePoolResult', + 'get_certificate_pool', + 'get_certificate_pool_output', +] + +@pulumi.output_type +class GetCertificatePoolResult: + """ + A collection of values returned by getCertificatePool. + """ + def __init__(__self__, certificate_authority=None, description=None, display_name=None, external_identifier=None, filter=None, id=None): + if certificate_authority and not isinstance(certificate_authority, dict): + raise TypeError("Expected argument 'certificate_authority' to be a dict") + pulumi.set(__self__, "certificate_authority", certificate_authority) + if description and not isinstance(description, str): + raise TypeError("Expected argument 'description' to be a str") + pulumi.set(__self__, "description", description) + if display_name and not isinstance(display_name, str): + raise TypeError("Expected argument 'display_name' to be a str") + pulumi.set(__self__, "display_name", display_name) + if external_identifier and not isinstance(external_identifier, str): + raise TypeError("Expected argument 'external_identifier' to be a str") + pulumi.set(__self__, "external_identifier", external_identifier) + if filter and not isinstance(filter, str): + raise TypeError("Expected argument 'filter' to be a str") + pulumi.set(__self__, "filter", filter) + if id and not isinstance(id, str): + raise TypeError("Expected argument 'id' to be a str") + pulumi.set(__self__, "id", id) + + @property + @pulumi.getter(name="certificateAuthority") + def certificate_authority(self) -> 'outputs.GetCertificatePoolCertificateAuthorityResult': + return pulumi.get(self, "certificate_authority") + + @property + @pulumi.getter + def description(self) -> str: + """ + (Required String) A description of the Certificate Pool. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> str: + """ + (Required String) A human-readable name for the Certificate Pool. + """ + return pulumi.get(self, "display_name") + + @property + @pulumi.getter(name="externalIdentifier") + def external_identifier(self) -> str: + """ + (Required String) The certificate field that will be used to represent the pool's external identity for audit logging, for example, `UID`. + """ + return pulumi.get(self, "external_identifier") + + @property + @pulumi.getter + def filter(self) -> str: + """ + (Required String) A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool. + """ + return pulumi.get(self, "filter") + + @property + @pulumi.getter + def id(self) -> str: + return pulumi.get(self, "id") + + +class AwaitableGetCertificatePoolResult(GetCertificatePoolResult): + # pylint: disable=using-constant-test + def __await__(self): + if False: + yield self + return GetCertificatePoolResult( + certificate_authority=self.certificate_authority, + description=self.description, + display_name=self.display_name, + external_identifier=self.external_identifier, + filter=self.filter, + id=self.id) + + +def get_certificate_pool(certificate_authority: Optional[Union['GetCertificatePoolCertificateAuthorityArgs', 'GetCertificatePoolCertificateAuthorityArgsDict']] = None, + id: Optional[str] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetCertificatePoolResult: + """ + [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + + `CertificatePool` describes a Certificate Pool data source. + + ## Example Usage + + ```python + import pulumi + import pulumi_confluentcloud as confluentcloud + + main = confluentcloud.get_certificate_pool(id="pool-def456", + certificate_authority={ + "id": "op-abc123", + }) + pulumi.export("certificatePool", main) + ``` + + + :param str id: The ID of the Certificate Pool, for example, `pool-abc123`. + """ + __args__ = dict() + __args__['certificateAuthority'] = certificate_authority + __args__['id'] = id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke('confluentcloud:index/getCertificatePool:getCertificatePool', __args__, opts=opts, typ=GetCertificatePoolResult).value + + return AwaitableGetCertificatePoolResult( + certificate_authority=pulumi.get(__ret__, 'certificate_authority'), + description=pulumi.get(__ret__, 'description'), + display_name=pulumi.get(__ret__, 'display_name'), + external_identifier=pulumi.get(__ret__, 'external_identifier'), + filter=pulumi.get(__ret__, 'filter'), + id=pulumi.get(__ret__, 'id')) + + +@_utilities.lift_output_func(get_certificate_pool) +def get_certificate_pool_output(certificate_authority: Optional[pulumi.Input[Union['GetCertificatePoolCertificateAuthorityArgs', 'GetCertificatePoolCertificateAuthorityArgsDict']]] = None, + id: Optional[pulumi.Input[str]] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetCertificatePoolResult]: + """ + [![Limited Availability](https://img.shields.io/badge/Lifecycle%20Stage-Limited%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy) + + `CertificatePool` describes a Certificate Pool data source. + + ## Example Usage + + ```python + import pulumi + import pulumi_confluentcloud as confluentcloud + + main = confluentcloud.get_certificate_pool(id="pool-def456", + certificate_authority={ + "id": "op-abc123", + }) + pulumi.export("certificatePool", main) + ``` + + + :param str id: The ID of the Certificate Pool, for example, `pool-abc123`. + """ + ... diff --git a/sdk/python/pulumi_confluentcloud/outputs.py b/sdk/python/pulumi_confluentcloud/outputs.py index 2ccf87f3..82bb367f 100644 --- a/sdk/python/pulumi_confluentcloud/outputs.py +++ b/sdk/python/pulumi_confluentcloud/outputs.py @@ -28,6 +28,7 @@ 'ByokKeyGcp', 'CatalogEntityAttributesCredentials', 'CatalogEntityAttributesSchemaRegistryCluster', + 'CertificatePoolCertificateAuthority', 'ClusterLinkDestinationKafkaCluster', 'ClusterLinkDestinationKafkaClusterCredentials', 'ClusterLinkLocalKafkaCluster', @@ -155,6 +156,7 @@ 'GetByokKeyAwResult', 'GetByokKeyAzureResult', 'GetByokKeyGcpResult', + 'GetCertificatePoolCertificateAuthorityResult', 'GetDnsRecordEnvironmentResult', 'GetDnsRecordGatewayResult', 'GetDnsRecordPrivateLinkAccessPointResult', @@ -1032,6 +1034,24 @@ def id(self) -> str: return pulumi.get(self, "id") +@pulumi.output_type +class CertificatePoolCertificateAuthority(dict): + def __init__(__self__, *, + id: str): + """ + :param str id: The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + """ + pulumi.set(__self__, "id", id) + + @property + @pulumi.getter + def id(self) -> str: + """ + The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + """ + return pulumi.get(self, "id") + + @pulumi.output_type class ClusterLinkDestinationKafkaCluster(dict): @staticmethod @@ -5132,6 +5152,24 @@ def security_group(self) -> str: return pulumi.get(self, "security_group") +@pulumi.output_type +class GetCertificatePoolCertificateAuthorityResult(dict): + def __init__(__self__, *, + id: str): + """ + :param str id: The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + """ + pulumi.set(__self__, "id", id) + + @property + @pulumi.getter + def id(self) -> str: + """ + The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`. + """ + return pulumi.get(self, "id") + + @pulumi.output_type class GetDnsRecordEnvironmentResult(dict): def __init__(__self__, *, diff --git a/upstream b/upstream index 93cdc323..cf729532 160000 --- a/upstream +++ b/upstream @@ -1 +1 @@ -Subproject commit 93cdc323d3b608be0ade87b5794ad6fbdd36342b +Subproject commit cf729532e18ccf1c2278204958d967040bd5dde7