From c9b983b3d0e810a0117249d94421d4deb7187017 Mon Sep 17 00:00:00 2001 From: Nolan Brubaker Date: Wed, 3 Jun 2026 14:27:09 -0400 Subject: [PATCH] Guard against an empty workspace field on vsphere Signed-off-by: Nolan Brubaker --- .../machine/v1beta1/providerconfig/vsphere.go | 5 +++++ .../machine/v1beta1/providerconfig/vsphere_test.go | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/vsphere.go b/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/vsphere.go index ed93719f5..e7d575157 100644 --- a/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/vsphere.go +++ b/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/vsphere.go @@ -168,6 +168,11 @@ func (v VSphereProviderConfig) InjectFailureDomain(fd machinev1.VSphereFailureDo func (v VSphereProviderConfig) ExtractFailureDomain() machinev1.VSphereFailureDomain { //nolint:cyclop workspace := v.providerConfig.Workspace + // If workspace is not set on the CPMS's config, the Machines will have one injected from the Infra object. + if workspace == nil { + return machinev1.VSphereFailureDomain{} + } + if v.infrastructure.Spec.PlatformSpec.Type != configv1.VSpherePlatformType { return machinev1.VSphereFailureDomain{} } diff --git a/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/vsphere_test.go b/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/vsphere_test.go index 45dc71aa9..33f795b8e 100644 --- a/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/vsphere_test.go +++ b/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/vsphere_test.go @@ -300,4 +300,15 @@ var _ = Describe("VSphere Provider Config", Label("vSphereProviderConfig"), func Expect(expected).To(Equal(v1.VSphereFailureDomain{})) }) }) + + Context("no workspace configured in provider spec", func() { + BeforeEach(func() { + providerConfig.providerConfig.Workspace = nil + }) + + It("should return empty failure domain without panicking", func() { + Expect(providerConfig.ExtractFailureDomain()).To(Equal(v1.VSphereFailureDomain{}), + "expected empty failure domain when workspace is nil, but ExtractFailureDomain panicked") + }) + }) })