From 9a9530e4ebe848c95951ba4ed868c60ca2d0ddb7 Mon Sep 17 00:00:00 2001 From: Patrick Dillon Date: Thu, 31 Jul 2025 13:42:46 -0400 Subject: [PATCH] CORS-3992: skip dns zone validation with custom DNS 1c9589a21f816b317628b85412acf3fdda3893f6 added validation to require an existing DNS zone matching the base domain before installation. In custom DNS scenarios, it is valid to create the zone after install, so we should relax the validation in those cases. --- pkg/asset/installconfig/gcp/validation.go | 2 +- pkg/asset/installconfig/gcp/validation_test.go | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/pkg/asset/installconfig/gcp/validation.go b/pkg/asset/installconfig/gcp/validation.go index e1c5a550ae7..9283d45af87 100644 --- a/pkg/asset/installconfig/gcp/validation.go +++ b/pkg/asset/installconfig/gcp/validation.go @@ -393,7 +393,7 @@ func validatePreexistingServiceAccount(client API, ic *types.InstallConfig) fiel // checked for any public zone that can be used. func ValidatePreExistingPublicDNS(client API, ic *types.InstallConfig) field.ErrorList { // If this is an internal cluster, this check is not necessary - if ic.Publish == types.InternalPublishingStrategy { + if ic.Publish == types.InternalPublishingStrategy || ic.GCP.UserProvisionedDNS == dnstypes.UserProvisionedDNSEnabled { return nil } allErrs := field.ErrorList{} diff --git a/pkg/asset/installconfig/gcp/validation_test.go b/pkg/asset/installconfig/gcp/validation_test.go index 6ccb5e5b883..fd771407918 100644 --- a/pkg/asset/installconfig/gcp/validation_test.go +++ b/pkg/asset/installconfig/gcp/validation_test.go @@ -26,6 +26,7 @@ import ( "github.com/openshift/installer/pkg/asset/installconfig/gcp/mock" "github.com/openshift/installer/pkg/ipnet" "github.com/openshift/installer/pkg/types" + customDNS "github.com/openshift/installer/pkg/types/dns" "github.com/openshift/installer/pkg/types/gcp" ) @@ -116,6 +117,7 @@ var ( validateXpnSA = func(ic *types.InstallConfig) { ic.ControlPlane.Platform.GCP.ServiceAccount = validXpnSA } invalidateXpnSA = func(ic *types.InstallConfig) { ic.ControlPlane.Platform.GCP.ServiceAccount = invalidXpnSA } invalidateBaseDomain = func(ic *types.InstallConfig) { ic.BaseDomain = invalidBaseDomain } + enableCustomDNS = func(ic *types.InstallConfig) { ic.GCP.UserProvisionedDNS = customDNS.UserProvisionedDNSEnabled } validServiceEndpoint = func(ic *types.InstallConfig) { ic.Publish = types.InternalPublishingStrategy @@ -485,6 +487,12 @@ func TestGCPInstallConfigValidation(t *testing.T) { expectedError: true, expectedErrMsg: `baseDomain: Not found: "invalid.installer.domain."`, }, + { + name: "Custom DNS does not require existing base domain", + edits: editFunctions{enableCustomDNS, invalidateBaseDomain}, + records: []*dns.ResourceRecordSet{}, + expectedError: false, + }, } mockCtrl := gomock.NewController(t) defer mockCtrl.Finish()