From 87bc7415fc1bb4da7726d0ab18b5c2c4727de9c5 Mon Sep 17 00:00:00 2001 From: Marcel Jacek <72880145+marceljk@users.noreply.github.com> Date: Wed, 15 Oct 2025 09:42:22 +0200 Subject: [PATCH] feat(dns): add validation for cname record-sets (#1019) relates to #1014 and STACKITTPR-375 --- stackit/internal/services/dns/recordset/resource.go | 3 +-- stackit/internal/validate/validate.go | 8 ++++++++ stackit/internal/validate/validate_test.go | 10 ++++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/stackit/internal/services/dns/recordset/resource.go b/stackit/internal/services/dns/recordset/resource.go index 0d06449d..b00e67e6 100644 --- a/stackit/internal/services/dns/recordset/resource.go +++ b/stackit/internal/services/dns/recordset/resource.go @@ -5,8 +5,6 @@ import ( "fmt" "strings" - dnsUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/dns/utils" - "github.com/hashicorp/terraform-plugin-framework-validators/int64validator" "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" @@ -23,6 +21,7 @@ import ( "github.com/stackitcloud/stackit-sdk-go/services/dns/wait" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core" + dnsUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/dns/utils" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/validate" ) diff --git a/stackit/internal/validate/validate.go b/stackit/internal/validate/validate.go index 593fad27..0af0f3c6 100644 --- a/stackit/internal/validate/validate.go +++ b/stackit/internal/validate/validate.go @@ -132,6 +132,14 @@ func RecordSet() *Validator { )) } case "CNAME": + name := req.ConfigValue.ValueString() + if name == "" || name[len(name)-1] != '.' { + resp.Diagnostics.Append(validatordiag.InvalidAttributeValueDiagnostic( + req.Path, + "value must be a Fully Qualified Domain Name (FQDN) and end with dot '.'", + req.ConfigValue.ValueString(), + )) + } case "NS": case "MX": case "TXT": diff --git a/stackit/internal/validate/validate_test.go b/stackit/internal/validate/validate_test.go index beb2ed75..3436a7a1 100644 --- a/stackit/internal/validate/validate_test.go +++ b/stackit/internal/validate/validate_test.go @@ -264,8 +264,14 @@ func TestRecordSet(t *testing.T) { false, }, { - "CNAME record", - "some-record", + "CNAME record Not a Fully Qualified Domain Name", + "stackit.de", + "CNAME", + false, + }, + { + "CNAME record ok Fully Qualified Domain Name", + "stackit.de.", "CNAME", true, },