From f7dbaefb2bf90d7789f7c1c43b92c8d1c35a3700 Mon Sep 17 00:00:00 2001 From: Anton Pavlov <15091368+pavlov-tony@users.noreply.github.com> Date: Thu, 27 Aug 2026 20:54:30 +0200 Subject: [PATCH 1/2] Add skip_dns_check property field --- docs/data-sources/cdn_custom_domain.md | 1 + docs/resources/cdn_custom_domain.md | 6 +- .../stackit_cdn_custom_domain/resource.tf | 5 +- stackit/internal/services/cdn/cdn_acc_test.go | 3 + .../services/cdn/customdomain/datasource.go | 16 ++- .../cdn/customdomain/datasource_test.go | 26 +++- .../services/cdn/customdomain/resource.go | 54 +++++--- .../cdn/customdomain/resource_test.go | 124 ++++++++++++++---- 8 files changed, 184 insertions(+), 51 deletions(-) diff --git a/docs/data-sources/cdn_custom_domain.md b/docs/data-sources/cdn_custom_domain.md index 071e4dad2..df1ee45fa 100644 --- a/docs/data-sources/cdn_custom_domain.md +++ b/docs/data-sources/cdn_custom_domain.md @@ -47,4 +47,5 @@ data "stackit_cdn_custom_domain" "example" { Read-Only: +- `skip_dns_check` (Boolean) When true, skips the verification check that the custom domain points to the distribution domain via CNAME or ALIAS. Useful for zero-downtime migrations. - `version` (Number) A version identifier for the certificate. Required for custom certificates. The certificate will be updated if this field is changed. diff --git a/docs/resources/cdn_custom_domain.md b/docs/resources/cdn_custom_domain.md index 1612cd5ee..e1097e81f 100644 --- a/docs/resources/cdn_custom_domain.md +++ b/docs/resources/cdn_custom_domain.md @@ -21,8 +21,9 @@ resource "stackit_cdn_custom_domain" "example" { distribution_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" name = "https://xxx.xxx" certificate = { - certificate = "-----BEGIN CERTIFICATE-----\nY2VydGlmaWNhdGVfZGF0YQ==\n-----END CERTIFICATE---" - private_key = "-----BEGIN RSA PRIVATE KEY-----\nY2VydGlmaWNhdGVfZGF0YQ==\n-----END RSA PRIVATE KEY---" + certificate = "-----BEGIN CERTIFICATE-----\nY2VydGlmaWNhdGVfZGF0YQ==\n-----END CERTIFICATE---" + private_key = "-----BEGIN RSA PRIVATE KEY-----\nY2VydGlmaWNhdGVfZGF0YQ==\n-----END RSA PRIVATE KEY---" + skip_dns_check = true } } ``` @@ -53,6 +54,7 @@ Optional: - `certificate` (String, Sensitive) The PEM-encoded TLS certificate. Required for custom certificates. - `private_key` (String, Sensitive) The PEM-encoded private key for the certificate. Required for custom certificates. The certificate will be updated if this field is changed. +- `skip_dns_check` (Boolean) When true, skips the verification check that the custom domain points to the distribution domain via CNAME or ALIAS. Useful for zero-downtime migrations. Read-Only: diff --git a/examples/resources/stackit_cdn_custom_domain/resource.tf b/examples/resources/stackit_cdn_custom_domain/resource.tf index e1ec03d99..a0259e3d3 100644 --- a/examples/resources/stackit_cdn_custom_domain/resource.tf +++ b/examples/resources/stackit_cdn_custom_domain/resource.tf @@ -3,7 +3,8 @@ resource "stackit_cdn_custom_domain" "example" { distribution_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" name = "https://xxx.xxx" certificate = { - certificate = "-----BEGIN CERTIFICATE-----\nY2VydGlmaWNhdGVfZGF0YQ==\n-----END CERTIFICATE---" - private_key = "-----BEGIN RSA PRIVATE KEY-----\nY2VydGlmaWNhdGVfZGF0YQ==\n-----END RSA PRIVATE KEY---" + certificate = "-----BEGIN CERTIFICATE-----\nY2VydGlmaWNhdGVfZGF0YQ==\n-----END CERTIFICATE---" + private_key = "-----BEGIN RSA PRIVATE KEY-----\nY2VydGlmaWNhdGVfZGF0YQ==\n-----END RSA PRIVATE KEY---" + skip_dns_check = true } } \ No newline at end of file diff --git a/stackit/internal/services/cdn/cdn_acc_test.go b/stackit/internal/services/cdn/cdn_acc_test.go index ca5dfb8e9..2f3e6a90d 100644 --- a/stackit/internal/services/cdn/cdn_acc_test.go +++ b/stackit/internal/services/cdn/cdn_acc_test.go @@ -287,6 +287,7 @@ func TestAccCDNDistributionHttp(t *testing.T) { resource.TestCheckResourceAttr("stackit_cdn_custom_domain.custom_domain", "status", "ACTIVE"), resource.TestCheckResourceAttr("stackit_cdn_custom_domain.custom_domain", "name", fullDomainNameHttp), resource.TestCheckResourceAttr("stackit_cdn_custom_domain.custom_domain", "certificate.version", "1"), + resource.TestCheckResourceAttr("stackit_cdn_custom_domain.custom_domain", "certificate.skip_dns_check", "false"), resource.TestCheckResourceAttrPair("stackit_cdn_distribution.distribution", "distribution_id", "stackit_cdn_custom_domain.custom_domain", "distribution_id"), resource.TestCheckResourceAttrPair("stackit_cdn_distribution.distribution", "project_id", "stackit_cdn_custom_domain.custom_domain", "project_id"), ), @@ -396,6 +397,7 @@ func TestAccCDNDistributionHttp(t *testing.T) { resource.TestCheckResourceAttr("data.stackit_cdn_custom_domain.custom_domain", "status", "ACTIVE"), resource.TestCheckResourceAttr("data.stackit_cdn_custom_domain.custom_domain", "name", fullDomainNameHttp), resource.TestCheckResourceAttr("data.stackit_cdn_custom_domain.custom_domain", "certificate.version", "1"), + resource.TestCheckResourceAttr("data.stackit_cdn_custom_domain.custom_domain", "certificate.skip_dns_check", "false"), resource.TestCheckResourceAttrPair("stackit_cdn_distribution.distribution", "distribution_id", "stackit_cdn_custom_domain.custom_domain", "distribution_id"), ), }, @@ -456,6 +458,7 @@ func TestAccCDNDistributionHttp(t *testing.T) { resource.TestCheckResourceAttr("stackit_cdn_custom_domain.custom_domain", "status", "ACTIVE"), resource.TestCheckResourceAttr("stackit_cdn_custom_domain.custom_domain", "name", fullDomainNameHttp), resource.TestCheckResourceAttr("stackit_cdn_custom_domain.custom_domain", "certificate.version", "1"), + resource.TestCheckResourceAttr("stackit_cdn_custom_domain.custom_domain", "certificate.skip_dns_check", "false"), resource.TestCheckResourceAttrPair("stackit_cdn_distribution.distribution", "distribution_id", "stackit_cdn_custom_domain.custom_domain", "distribution_id"), resource.TestCheckResourceAttrPair("stackit_cdn_distribution.distribution", "project_id", "stackit_cdn_custom_domain.custom_domain", "project_id"), ), diff --git a/stackit/internal/services/cdn/customdomain/datasource.go b/stackit/internal/services/cdn/customdomain/datasource.go index d57fd0d19..ff1fcd8b9 100644 --- a/stackit/internal/services/cdn/customdomain/datasource.go +++ b/stackit/internal/services/cdn/customdomain/datasource.go @@ -29,7 +29,8 @@ var ( ) var certificateDataSourceTypes = map[string]attr.Type{ - "version": types.Int32Type, + "version": types.Int32Type, + "skip_dns_check": types.BoolType, } type customDomainDataSource struct { @@ -112,6 +113,10 @@ func (r *customDomainDataSource) Schema(_ context.Context, _ datasource.SchemaRe Description: certificateSchemaDescriptions["version"], Computed: true, }, + "skip_dns_check": schema.BoolAttribute{ + Description: certificateSchemaDescriptions["skip_dns_check"], + Computed: true, + }, }, }, }, @@ -191,14 +196,19 @@ func mapCustomDomainDataSourceFields(customDomainResponse *cdnSdk.GetCustomDomai if normalizedCert.Type == "managed" { model.Certificate = types.ObjectNull(certificateDataSourceTypes) } else { - // For custom certificates, we only care about the version. + // For custom certificates, we only care about the version and skip_dns_check. version := types.Int32Null() if normalizedCert.Version != nil { version = types.Int32Value(*normalizedCert.Version) } + skipDnsCheck := types.BoolNull() + if normalizedCert.SkipDnsCheck != nil { + skipDnsCheck = types.BoolValue(*normalizedCert.SkipDnsCheck) + } certificateObj, diags := types.ObjectValue(certificateDataSourceTypes, map[string]attr.Value{ - "version": version, + "version": version, + "skip_dns_check": skipDnsCheck, }) if diags.HasError() { return fmt.Errorf("failed to map certificate: %w", core.DiagsToError(diags)) diff --git a/stackit/internal/services/cdn/customdomain/datasource_test.go b/stackit/internal/services/cdn/customdomain/datasource_test.go index 169fc8908..9d3edecb1 100644 --- a/stackit/internal/services/cdn/customdomain/datasource_test.go +++ b/stackit/internal/services/cdn/customdomain/datasource_test.go @@ -14,7 +14,8 @@ func TestMapDataSourceFields(t *testing.T) { // Expected certificate object when a custom certificate is returned certAttributes := map[string]attr.Value{ - "version": types.Int32Value(3), + "version": types.Int32Value(3), + "skip_dns_check": types.BoolValue(false), } certificateObj, _ := types.ObjectValue(certificateDataSourceTypes, certAttributes) @@ -40,8 +41,9 @@ func TestMapDataSourceFields(t *testing.T) { customVersion := int32(3) getRespCustom := cdnSdk.GetCustomDomainResponseCertificate{ GetCustomDomainCustomCertificate: &cdnSdk.GetCustomDomainCustomCertificate{ - Type: customType, - Version: customVersion, + Type: customType, + Version: customVersion, + SkipDnsCheck: false, }, } @@ -83,6 +85,24 @@ func TestMapDataSourceFields(t *testing.T) { Input: customDomainFixture(), IsValid: true, }, + "happy_path_custom_cert_skip_dns_check_true": { + Expected: expectedModel(func(m *customDomainDataSourceModel) { + m.Certificate = types.ObjectValueMust(certificateDataSourceTypes, map[string]attr.Value{ + "version": types.Int32Value(3), + "skip_dns_check": types.BoolValue(true), + }) + }), + Input: customDomainFixture(func(gcdr *cdnSdk.GetCustomDomainResponse) { + gcdr.Certificate = cdnSdk.GetCustomDomainResponseCertificate{ + GetCustomDomainCustomCertificate: &cdnSdk.GetCustomDomainCustomCertificate{ + Type: customType, + Version: customVersion, + SkipDnsCheck: true, + }, + } + }), + IsValid: true, + }, "happy_path_managed_cert": { Expected: expectedModel(func(m *customDomainDataSourceModel) { m.Certificate = types.ObjectNull(certificateDataSourceTypes) diff --git a/stackit/internal/services/cdn/customdomain/resource.go b/stackit/internal/services/cdn/customdomain/resource.go index 97863fda3..230e61340 100644 --- a/stackit/internal/services/cdn/customdomain/resource.go +++ b/stackit/internal/services/cdn/customdomain/resource.go @@ -42,16 +42,18 @@ var ( _ resource.ResourceWithImportState = &customDomainResource{} ) var certificateSchemaDescriptions = map[string]string{ - "main": "The TLS certificate for the custom domain. If omitted, a managed certificate will be used. If the block is specified, a custom certificate is used.", - "certificate": "The PEM-encoded TLS certificate. Required for custom certificates.", - "private_key": "The PEM-encoded private key for the certificate. Required for custom certificates. The certificate will be updated if this field is changed.", - "version": "A version identifier for the certificate. Required for custom certificates. The certificate will be updated if this field is changed.", + "main": "The TLS certificate for the custom domain. If omitted, a managed certificate will be used. If the block is specified, a custom certificate is used.", + "certificate": "The PEM-encoded TLS certificate. Required for custom certificates.", + "private_key": "The PEM-encoded private key for the certificate. Required for custom certificates. The certificate will be updated if this field is changed.", + "version": "A version identifier for the certificate. Required for custom certificates. The certificate will be updated if this field is changed.", + "skip_dns_check": "When true, skips the verification check that the custom domain points to the distribution domain via CNAME. Useful for zero-downtime migrations.", } var certificateTypes = map[string]attr.Type{ - "version": types.Int32Type, - "certificate": types.StringType, - "private_key": types.StringType, + "version": types.Int32Type, + "certificate": types.StringType, + "private_key": types.StringType, + "skip_dns_check": types.BoolType, } var customDomainSchemaDescriptions = map[string]string{ @@ -63,9 +65,10 @@ var customDomainSchemaDescriptions = map[string]string{ } type CertificateModel struct { - Certificate types.String `tfsdk:"certificate"` - PrivateKey types.String `tfsdk:"private_key"` - Version types.Int32 `tfsdk:"version"` + Certificate types.String `tfsdk:"certificate"` + PrivateKey types.String `tfsdk:"private_key"` + Version types.Int32 `tfsdk:"version"` + SkipDnsCheck types.Bool `tfsdk:"skip_dns_check"` } type CustomDomainModel struct { @@ -87,8 +90,9 @@ func NewCustomDomainResource() resource.Resource { } type Certificate struct { - Type string - Version *int32 + Type string + Version *int32 + SkipDnsCheck *bool } func (r *customDomainResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) { @@ -166,6 +170,11 @@ func (r *customDomainResource) Schema(_ context.Context, _ resource.SchemaReques Description: certificateSchemaDescriptions["version"], Computed: true, }, + "skip_dns_check": schema.BoolAttribute{ + Description: certificateSchemaDescriptions["skip_dns_check"], + Optional: true, + Computed: true, + }, }, }, "status": schema.StringAttribute{ @@ -417,8 +426,9 @@ func normalizeCertificate(certInput cdnSdk.GetCustomDomainResponseCertificate) ( // Now we process the extracted certificates if customCert != nil && customCert.Type != "" { return Certificate{ - Type: customCert.Type, - Version: new(customCert.Version), + Type: customCert.Type, + Version: &customCert.Version, + SkipDnsCheck: &customCert.SkipDnsCheck, }, nil } @@ -465,6 +475,7 @@ func toCertificatePayload(ctx context.Context, model *CustomDomainModel) (*cdnSd keyStr, "custom", ) + customCert.SkipDnsCheck = conversion.BoolValueToPointer(certModel.SkipDnsCheck) certPayload := cdnSdk.PutCustomDomainCustomCertificateAsPutCustomDomainPayloadCertificate(customCert) return &certPayload, nil @@ -495,11 +506,12 @@ func mapCustomDomainResourceFields(customDomainResponse *cdnSdk.GetCustomDomainR model.Certificate = types.ObjectNull(certificateTypes) } else { // If the certificate is custom, we need to preserve the user-configured - // certificate and private key from the plan/state, and only update the computed version. + // certificate and private key from the plan/state, and update the computed version and skip_dns_check. certAttributes := map[string]attr.Value{ - "certificate": types.StringNull(), // Default to null - "private_key": types.StringNull(), // Default to null - "version": types.Int32Null(), + "certificate": types.StringNull(), // Default to null + "private_key": types.StringNull(), // Default to null + "version": types.Int32Null(), + "skip_dns_check": types.BoolNull(), } // Get existing values from the model's certificate object if it exists @@ -511,12 +523,18 @@ func mapCustomDomainResourceFields(customDomainResponse *cdnSdk.GetCustomDomainR if val, ok := existingAttrs["private_key"]; ok { certAttributes["private_key"] = val } + if val, ok := existingAttrs["skip_dns_check"]; ok { + certAttributes["skip_dns_check"] = val + } } // Set the computed version from the API response if normalizedCert.Version != nil { certAttributes["version"] = types.Int32Value(*normalizedCert.Version) } + if normalizedCert.SkipDnsCheck != nil { + certAttributes["skip_dns_check"] = types.BoolValue(*normalizedCert.SkipDnsCheck) + } certificateObj, diags := types.ObjectValue(certificateTypes, certAttributes) if diags.HasError() { diff --git a/stackit/internal/services/cdn/customdomain/resource_test.go b/stackit/internal/services/cdn/customdomain/resource_test.go index 4f1bf8f47..06f61cada 100644 --- a/stackit/internal/services/cdn/customdomain/resource_test.go +++ b/stackit/internal/services/cdn/customdomain/resource_test.go @@ -24,9 +24,10 @@ import ( func TestMapFields(t *testing.T) { // Redefine certificateTypes locally for testing, matching the updated schema certificateTypes := map[string]attr.Type{ - "version": types.Int32Type, - "certificate": types.StringType, - "private_key": types.StringType, + "version": types.Int32Type, + "certificate": types.StringType, + "private_key": types.StringType, + "skip_dns_check": types.BoolType, } const dummyCert = "dummy-cert-pem" @@ -36,9 +37,10 @@ func TestMapFields(t *testing.T) { // Expected object when a custom certificate is returned certAttributes := map[string]attr.Value{ - "version": types.Int32Value(3), - "certificate": types.StringValue(dummyCert), - "private_key": types.StringValue(dummyKey), + "version": types.Int32Value(3), + "certificate": types.StringValue(dummyCert), + "private_key": types.StringValue(dummyKey), + "skip_dns_check": types.BoolValue(false), } certificateObj, _ := types.ObjectValue(certificateTypes, certAttributes) @@ -62,8 +64,9 @@ func TestMapFields(t *testing.T) { customVersion := int32(3) getRespCustom := cdnSdk.GetCustomDomainResponseCertificate{ GetCustomDomainCustomCertificate: &cdnSdk.GetCustomDomainCustomCertificate{ - Type: customType, - Version: customVersion, + Type: customType, + Version: customVersion, + SkipDnsCheck: false, }, } @@ -107,9 +110,38 @@ func TestMapFields(t *testing.T) { IsValid: true, InitialModel: expectedModel(func(m *CustomDomainModel) { m.Certificate = basetypes.NewObjectValueMust(certificateTypes, map[string]attr.Value{ - "certificate": types.StringValue(dummyCert), - "private_key": types.StringValue(dummyKey), - "version": types.Int32Null(), + "certificate": types.StringValue(dummyCert), + "private_key": types.StringValue(dummyKey), + "version": types.Int32Null(), + "skip_dns_check": types.BoolNull(), + }) + }), + }, + "happy_path_custom_cert_skip_dns_check_true": { + Expected: expectedModel(func(m *CustomDomainModel) { + m.Certificate = basetypes.NewObjectValueMust(certificateTypes, map[string]attr.Value{ + "certificate": types.StringValue(dummyCert), + "private_key": types.StringValue(dummyKey), + "version": types.Int32Value(3), + "skip_dns_check": types.BoolValue(true), + }) + }), + Input: customDomainFixture(func(gcdr *cdnSdk.GetCustomDomainResponse) { + gcdr.Certificate = cdnSdk.GetCustomDomainResponseCertificate{ + GetCustomDomainCustomCertificate: &cdnSdk.GetCustomDomainCustomCertificate{ + Type: customType, + Version: customVersion, + SkipDnsCheck: true, + }, + } + }), + IsValid: true, + InitialModel: expectedModel(func(m *CustomDomainModel) { + m.Certificate = basetypes.NewObjectValueMust(certificateTypes, map[string]attr.Value{ + "certificate": types.StringValue(dummyCert), + "private_key": types.StringValue(dummyKey), + "version": types.Int32Null(), + "skip_dns_check": types.BoolValue(true), }) }), }, @@ -134,9 +166,10 @@ func TestMapFields(t *testing.T) { IsValid: true, InitialModel: expectedModel(func(m *CustomDomainModel) { m.Certificate = basetypes.NewObjectValueMust(certificateTypes, map[string]attr.Value{ - "certificate": types.StringValue(dummyCert), - "private_key": types.StringValue(dummyKey), - "version": types.Int32Null(), + "certificate": types.StringValue(dummyCert), + "private_key": types.StringValue(dummyKey), + "version": types.Int32Null(), + "skip_dns_check": types.BoolNull(), }) }), }, @@ -242,9 +275,10 @@ func TestToCertificatePayload(t *testing.T) { Certificate: basetypes.NewObjectValueMust( certificateTypes, map[string]attr.Value{ - "version": types.Int32Null(), - "certificate": types.StringValue(certPEM), - "private_key": types.StringValue(keyPEM), + "version": types.Int32Null(), + "certificate": types.StringValue(certPEM), + "private_key": types.StringValue(keyPEM), + "skip_dns_check": types.BoolNull(), }, ), }, @@ -253,14 +287,57 @@ func TestToCertificatePayload(t *testing.T) { }, expectErr: false, }, + "success_custom_certificate_skip_dns_check_true": { + model: &CustomDomainModel{ + Certificate: basetypes.NewObjectValueMust( + certificateTypes, + map[string]attr.Value{ + "version": types.Int32Null(), + "certificate": types.StringValue(certPEM), + "private_key": types.StringValue(keyPEM), + "skip_dns_check": types.BoolValue(true), + }, + ), + }, + expectedPayload: func() *cdnSdk.PutCustomDomainPayloadCertificate { + cert := cdnSdk.NewPutCustomDomainCustomCertificate(certBase64, keyBase64, "custom") + cert.SetSkipDnsCheck(true) + return &cdnSdk.PutCustomDomainPayloadCertificate{ + PutCustomDomainCustomCertificate: cert, + } + }(), + expectErr: false, + }, + "success_custom_certificate_skip_dns_check_false": { + model: &CustomDomainModel{ + Certificate: basetypes.NewObjectValueMust( + certificateTypes, + map[string]attr.Value{ + "version": types.Int32Null(), + "certificate": types.StringValue(certPEM), + "private_key": types.StringValue(keyPEM), + "skip_dns_check": types.BoolValue(false), + }, + ), + }, + expectedPayload: func() *cdnSdk.PutCustomDomainPayloadCertificate { + cert := cdnSdk.NewPutCustomDomainCustomCertificate(certBase64, keyBase64, "custom") + cert.SetSkipDnsCheck(false) + return &cdnSdk.PutCustomDomainPayloadCertificate{ + PutCustomDomainCustomCertificate: cert, + } + }(), + expectErr: false, + }, "fail_custom_missing_cert_value": { model: &CustomDomainModel{ Certificate: basetypes.NewObjectValueMust( certificateTypes, map[string]attr.Value{ - "version": types.Int32Null(), - "certificate": types.StringValue(""), // Empty certificate - "private_key": types.StringValue(keyPEM), + "version": types.Int32Null(), + "certificate": types.StringValue(""), // Empty certificate + "private_key": types.StringValue(keyPEM), + "skip_dns_check": types.BoolNull(), }, ), }, @@ -273,9 +350,10 @@ func TestToCertificatePayload(t *testing.T) { Certificate: basetypes.NewObjectValueMust( certificateTypes, map[string]attr.Value{ - "version": types.Int32Null(), - "certificate": types.StringNull(), - "private_key": types.StringNull(), + "version": types.Int32Null(), + "certificate": types.StringNull(), + "private_key": types.StringNull(), + "skip_dns_check": types.BoolNull(), }, ), }, From f04373b5a8d0d0a9263293d45afb0780302e6007 Mon Sep 17 00:00:00 2001 From: Anton Pavlov <15091368+pavlov-tony@users.noreply.github.com> Date: Thu, 27 Aug 2026 21:18:51 +0200 Subject: [PATCH 2/2] Execute make generate-docs --- docs/data-sources/cdn_custom_domain.md | 2 +- docs/resources/cdn_custom_domain.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/data-sources/cdn_custom_domain.md b/docs/data-sources/cdn_custom_domain.md index df1ee45fa..33b38abb4 100644 --- a/docs/data-sources/cdn_custom_domain.md +++ b/docs/data-sources/cdn_custom_domain.md @@ -47,5 +47,5 @@ data "stackit_cdn_custom_domain" "example" { Read-Only: -- `skip_dns_check` (Boolean) When true, skips the verification check that the custom domain points to the distribution domain via CNAME or ALIAS. Useful for zero-downtime migrations. +- `skip_dns_check` (Boolean) When true, skips the verification check that the custom domain points to the distribution domain via CNAME. Useful for zero-downtime migrations. - `version` (Number) A version identifier for the certificate. Required for custom certificates. The certificate will be updated if this field is changed. diff --git a/docs/resources/cdn_custom_domain.md b/docs/resources/cdn_custom_domain.md index e1097e81f..e47b39e52 100644 --- a/docs/resources/cdn_custom_domain.md +++ b/docs/resources/cdn_custom_domain.md @@ -54,7 +54,7 @@ Optional: - `certificate` (String, Sensitive) The PEM-encoded TLS certificate. Required for custom certificates. - `private_key` (String, Sensitive) The PEM-encoded private key for the certificate. Required for custom certificates. The certificate will be updated if this field is changed. -- `skip_dns_check` (Boolean) When true, skips the verification check that the custom domain points to the distribution domain via CNAME or ALIAS. Useful for zero-downtime migrations. +- `skip_dns_check` (Boolean) When true, skips the verification check that the custom domain points to the distribution domain via CNAME. Useful for zero-downtime migrations. Read-Only: