diff --git a/docs/user/failure-domains.md b/docs/user/failure-domains.md index e5fb44358..589906ef8 100644 --- a/docs/user/failure-domains.md +++ b/docs/user/failure-domains.md @@ -86,8 +86,9 @@ An Azure failure domain will look something like the example below: ## OpenStack -On OpenStack, the failure domains represented in the control plane machine set can be considered analogous to the -OpenStack availability zones (for Nova and Cinder). +On OpenStack, the failure domains represented in the control plane machine set +include the OpenStack Nova availability zone for instance placement, as well as +the Cinder availability zone and the volume type for root volume placement. > OpenStack Availability Zones are an end-user visible logical abstraction for partitioning an OpenStack cloud without > knowing the physical infrastructure. They are used to partition a cloud on arbitrary factors, such as location (country, datacenter, rack), @@ -103,4 +104,5 @@ An OpenStack failure domain will look something like the example below: - availabilityZone: "" rootVolume: availabilityZone: "" + volumeType: "" ``` diff --git a/docs/user/installation.md b/docs/user/installation.md index 57564e457..ce2734adb 100644 --- a/docs/user/installation.md +++ b/docs/user/installation.md @@ -241,8 +241,10 @@ plane machines and you should populate this on both the Machine and the ControlP #### Configuring a control plane machine set on OpenStack -Two fields are supported for now: `availabilityZone` (instance AZ) and `rootVolume.availabilityZone` (root volume AZ). -Gather the existing control plane machines and note the value of the zones of each if they exist. +The OpenStack failureDomain configuration supports three fields: +`availabilityZone` (instance AZ), `rootVolume.availabilityZone` (root volume +AZ) and `rootVolume.volumeType`. +Gather the existing control plane machines and note the value of the properties of each if they differ from each other. Aside from these fields, the remaining in spec the machines should be identical. Copy the value from one of the machines into the `providerSpec.value` (6) on the example above. @@ -253,9 +255,11 @@ For each AZ you have in the cluster, configure a failure domain like below: - availabilityZone: "" rootVolume: availabilityZone: "" + volumeType: "" ``` -With these zones, the complete `failureDomains` (4 and 5) on the example above should look something like below: +OpenStack failure domains may not be empty, however each individual property is optional. +With these zones, the `failureDomains` (4 and 5) on the example above should look something like below: ```yaml failureDomains: platform: OpenStack @@ -275,4 +279,3 @@ Prior to 4.14, if the masters were configured with Availability Zones (AZ), the one ServerGroup in OpenStack (the one initially created for master-0, ending with the name of the AZ) but configure the Machine ProviderSpec with different ServerGroups, one per AZ. So if you upgrade a cluster from a previous release to 4.14, you'll need to follow this [solution](https://access.redhat.com/solutions/7013893). - diff --git a/go.mod b/go.mod index b6a4fb11e..a8f8ba873 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/onsi/gomega v1.27.7 github.com/openshift/api v0.0.0-20230705100138-391aead809e1 github.com/openshift/client-go v0.0.0-20230607134213-3cd0021bbee3 - github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20230622171654-75c6bcfa831c + github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20230706132925-77764237f2e6 github.com/openshift/library-go v0.0.0-20230523150659-ab179469ba38 github.com/spf13/pflag v1.0.5 k8s.io/api v0.27.3 diff --git a/go.sum b/go.sum index 5a70cacae..fa21e7257 100644 --- a/go.sum +++ b/go.sum @@ -449,8 +449,8 @@ github.com/openshift/api v0.0.0-20230705100138-391aead809e1 h1:bNnNrF6qDQemp9DSP github.com/openshift/api v0.0.0-20230705100138-391aead809e1/go.mod h1:yimSGmjsI+XF1mr+AKBs2//fSXIOhhetHGbMlBEfXbs= github.com/openshift/client-go v0.0.0-20230607134213-3cd0021bbee3 h1:uVCq/Sx2y4UZh+qCsCL1BBUJpc3DULHkN4j7XHHgHtw= github.com/openshift/client-go v0.0.0-20230607134213-3cd0021bbee3/go.mod h1:M+VUIcqx5IvgzejcbgmQnxETPrXRYlcufHpw2bAgz9Y= -github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20230622171654-75c6bcfa831c h1:2EpVQ7ZZIvpm3PExUIjrIHknRAfyJBr0xjUJFQjYaxA= -github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20230622171654-75c6bcfa831c/go.mod h1:w4P7zcu7okmBpkjKJK71rl5hp1a8RFm1NraVrxVqiUs= +github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20230706132925-77764237f2e6 h1:6Gq1pKceLaK0EU/tkXLkkqE0DI3bcZoXUB33scvwHUM= +github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20230706132925-77764237f2e6/go.mod h1:w4P7zcu7okmBpkjKJK71rl5hp1a8RFm1NraVrxVqiUs= github.com/openshift/library-go v0.0.0-20230523150659-ab179469ba38 h1:rKEpSwRxeQ6eN915GbcuyikwyWu//V61w5zIUWD9b2U= github.com/openshift/library-go v0.0.0-20230523150659-ab179469ba38/go.mod h1:PJVatR/oS/EaFciwylyAr9hORSqQHrC+5bXf4L0wsBY= github.com/otiai10/copy v1.2.0 h1:HvG945u96iNadPoG2/Ja2+AUJeW5YuFQMixq9yirC+k= diff --git a/pkg/controllers/controlplanemachinesetgenerator/controller_test.go b/pkg/controllers/controlplanemachinesetgenerator/controller_test.go index 6867aa300..8c2f9d43f 100644 --- a/pkg/controllers/controlplanemachinesetgenerator/controller_test.go +++ b/pkg/controllers/controlplanemachinesetgenerator/controller_test.go @@ -2197,21 +2197,21 @@ var _ = Describe("controlplanemachinesetgenerator controller on Nutanix", func() var _ = Describe("controlplanemachinesetgenerator controller on OpenStack", func() { var ( - az1FailureDomainBuilderOpenStack = machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az1").WithRootVolume(machinev1.RootVolume{ + az1FailureDomainBuilderOpenStack = machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az1").WithRootVolume(&machinev1.RootVolume{ AvailabilityZone: "cinder-az1", }) - az2FailureDomainBuilderOpenStack = machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az2").WithRootVolume(machinev1.RootVolume{ + az2FailureDomainBuilderOpenStack = machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az2").WithRootVolume(&machinev1.RootVolume{ AvailabilityZone: "cinder-az2", }) - az3FailureDomainBuilderOpenStack = machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az3").WithRootVolume(machinev1.RootVolume{ + az3FailureDomainBuilderOpenStack = machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az3").WithRootVolume(&machinev1.RootVolume{ AvailabilityZone: "cinder-az3", }) az4FailureDomainBuilderOpenStack = machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az4") - az5FailureDomainBuilderOpenStack = machinev1resourcebuilder.OpenStackFailureDomain().WithRootVolume(machinev1.RootVolume{ + az5FailureDomainBuilderOpenStack = machinev1resourcebuilder.OpenStackFailureDomain().WithRootVolume(&machinev1.RootVolume{ AvailabilityZone: "cinder-az5", }) diff --git a/pkg/controllers/controlplanemachinesetgenerator/openstack.go b/pkg/controllers/controlplanemachinesetgenerator/openstack.go index 429cedb8a..af6740a11 100644 --- a/pkg/controllers/controlplanemachinesetgenerator/openstack.go +++ b/pkg/controllers/controlplanemachinesetgenerator/openstack.go @@ -70,7 +70,7 @@ func generateControlPlaneMachineSetOpenStackSpec(logger logr.Logger, machines [] return machinev1builder.ControlPlaneMachineSetSpecApplyConfiguration{}, fmt.Errorf("failed to build ControlPlaneMachineSet's OpenStack failure domains: %w", err) } - controlPlaneMachineSetMachineSpecApplyConfig, err := buildControlPlaneMachineSetOpenStackMachineSpec(logger, machines) + controlPlaneMachineSetMachineSpecApplyConfig, err := buildControlPlaneMachineSetOpenStackMachineSpec(logger, machines, controlPlaneMachineSetMachineFailureDomainsApplyConfig) if err != nil { return machinev1builder.ControlPlaneMachineSetSpecApplyConfiguration{}, fmt.Errorf("failed to build ControlPlaneMachineSet's OpenStack spec: %w", err) } @@ -84,7 +84,7 @@ func generateControlPlaneMachineSetOpenStackSpec(logger logr.Logger, machines [] } // buildControlPlaneMachineSetOpenStackMachineSpec builds an OpenStack flavored MachineSpec for the ControlPlaneMachineSet. -func buildControlPlaneMachineSetOpenStackMachineSpec(logger logr.Logger, machines []machinev1beta1.Machine) (*machinev1beta1builder.MachineSpecApplyConfiguration, error) { +func buildControlPlaneMachineSetOpenStackMachineSpec(logger logr.Logger, machines []machinev1beta1.Machine, failureDomains *machinev1builder.FailureDomainsApplyConfiguration) (*machinev1beta1builder.MachineSpecApplyConfiguration, error) { // The machines slice is sorted by the creation time. // We want to get the provider config for the newest machine. providerConfig, err := providerconfig.NewProviderConfigFromMachineSpec(logger, machines[0].Spec) @@ -94,11 +94,14 @@ func buildControlPlaneMachineSetOpenStackMachineSpec(logger logr.Logger, machine openStackProviderSpec := providerConfig.OpenStack().Config() - // Remove field related to the failure domain. - openStackProviderSpec.AvailabilityZone = "" + // If there are failure domains, remove the corresponding managed fields from the providerSpec. + if failureDomains != nil && len(failureDomains.OpenStack) > 0 { + openStackProviderSpec.AvailabilityZone = "" - if openStackProviderSpec.RootVolume != nil { - openStackProviderSpec.RootVolume.Zone = "" + if openStackProviderSpec.RootVolume != nil { + openStackProviderSpec.RootVolume.Zone = "" + openStackProviderSpec.RootVolume.VolumeType = "" + } } rawBytes, err := json.Marshal(openStackProviderSpec) diff --git a/pkg/machineproviders/providers/openshift/machine/v1beta1/failuredomain/failuredomain.go b/pkg/machineproviders/providers/openshift/machine/v1beta1/failuredomain/failuredomain.go index 10df2e054..0781e67a3 100644 --- a/pkg/machineproviders/providers/openshift/machine/v1beta1/failuredomain/failuredomain.go +++ b/pkg/machineproviders/providers/openshift/machine/v1beta1/failuredomain/failuredomain.go @@ -20,6 +20,7 @@ import ( "errors" "fmt" "reflect" + "strings" configv1 "github.com/openshift/api/config/v1" machinev1 "github.com/openshift/api/machine/v1" @@ -317,24 +318,29 @@ func gcpFailureDomainToString(fd machinev1.GCPFailureDomain) string { // openstackFailureDomainToString converts the OpenStackFailureDomain into a string. func openstackFailureDomainToString(fd machinev1.OpenStackFailureDomain) string { - displayRootVolume := func(rootVolume machinev1.RootVolume) string { - return fmt.Sprintf("{AvailabilityZone:%s}", rootVolume.AvailabilityZone) + if fd.AvailabilityZone == "" && fd.RootVolume == nil { + return unknownFailureDomain } - // AvailabilityZone only - if fd.AvailabilityZone != "" && fd.RootVolume == nil { - return fmt.Sprintf("OpenStackFailureDomain{AvailabilityZone:%s}", fd.AvailabilityZone) - } + var failureDomain []string - // RootVolume only - if fd.AvailabilityZone == "" && fd.RootVolume != nil { - return fmt.Sprintf("OpenStackFailureDomain{RootVolume:%s}", displayRootVolume(*fd.RootVolume)) + if fd.AvailabilityZone != "" { + failureDomain = append(failureDomain, "AvailabilityZone:"+fd.AvailabilityZone) } - // AvailabilityZone and RootVolume - if fd.AvailabilityZone != "" && fd.RootVolume != nil { - return fmt.Sprintf("OpenStackFailureDomain{AvailabilityZone:%s, RootVolume:%s}", fd.AvailabilityZone, displayRootVolume(*fd.RootVolume)) + if fd.RootVolume != nil { + var rootVolume []string + + if fd.RootVolume.AvailabilityZone != "" { + rootVolume = append(rootVolume, "AvailabilityZone:"+fd.RootVolume.AvailabilityZone) + } + + if fd.RootVolume.VolumeType != "" { + rootVolume = append(rootVolume, "VolumeType:"+fd.RootVolume.VolumeType) + } + + failureDomain = append(failureDomain, "RootVolume:{"+strings.Join(rootVolume, ", ")+"}") } - return unknownFailureDomain + return "OpenStackFailureDomain{" + strings.Join(failureDomain, ", ") + "}" } diff --git a/pkg/machineproviders/providers/openshift/machine/v1beta1/failuredomain/failuredomain_test.go b/pkg/machineproviders/providers/openshift/machine/v1beta1/failuredomain/failuredomain_test.go index 3c31ca9f9..0a9b0c11d 100644 --- a/pkg/machineproviders/providers/openshift/machine/v1beta1/failuredomain/failuredomain_test.go +++ b/pkg/machineproviders/providers/openshift/machine/v1beta1/failuredomain/failuredomain_test.go @@ -196,6 +196,33 @@ var _ = Describe("FailureDomains", func() { }) }) + Context("With OpenStack failure domain configuration with volumeType", func() { + var failureDomains []FailureDomain + var err error + + BeforeEach(func() { + config := machinev1resourcebuilder.OpenStackFailureDomains().WithFailureDomainBuilders( + machinev1resourcebuilder.OpenStackFailureDomainBuilder{AvailabilityZone: "nova-az0", RootVolume: &machinev1.RootVolume{VolumeType: "volume.hostA"}}, + machinev1resourcebuilder.OpenStackFailureDomainBuilder{AvailabilityZone: "nova-az1", RootVolume: &machinev1.RootVolume{VolumeType: "volume.hostB"}}, + machinev1resourcebuilder.OpenStackFailureDomainBuilder{AvailabilityZone: "nova-az2", RootVolume: &machinev1.RootVolume{VolumeType: "volume.hostC"}}, + ).BuildFailureDomains() + + failureDomains, err = NewFailureDomains(config) + }) + + It("should not error", func() { + Expect(err).ToNot(HaveOccurred()) + }) + + It("should construct a list of failure domains", func() { + Expect(failureDomains).To(ConsistOf( + HaveField("String()", "OpenStackFailureDomain{AvailabilityZone:nova-az0, RootVolume:{VolumeType:volume.hostA}}"), + HaveField("String()", "OpenStackFailureDomain{AvailabilityZone:nova-az1, RootVolume:{VolumeType:volume.hostB}}"), + HaveField("String()", "OpenStackFailureDomain{AvailabilityZone:nova-az2, RootVolume:{VolumeType:volume.hostC}}"), + )) + }) + }) + Context("With invalid OpenStack failure domain configuration", func() { var failureDomains []FailureDomain var err error @@ -354,7 +381,7 @@ var _ = Describe("FailureDomains", func() { Context("with a Compute and Storage availability zone", func() { BeforeEach(func() { fd.openstack = machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az0"). - WithRootVolume(filterRootVolume).Build() + WithRootVolume(&filterRootVolume).Build() }) It("returns the Compute and Storage availability zones for String()", func() { @@ -373,7 +400,7 @@ var _ = Describe("FailureDomains", func() { }) Context("with a Storage availability zone only", func() { BeforeEach(func() { - fd.openstack = machinev1resourcebuilder.OpenStackFailureDomain().WithRootVolume(filterRootVolume).Build() + fd.openstack = machinev1resourcebuilder.OpenStackFailureDomain().WithRootVolume(&filterRootVolume).Build() }) It("returns the Storage availability zone for String()", func() { @@ -483,11 +510,11 @@ var _ = Describe("FailureDomains", func() { BeforeEach(func() { fd1 = failureDomain{ platformType: configv1.OpenStackPlatformType, - openstack: machinev1resourcebuilder.OpenStackFailureDomain().WithRootVolume(filterRootVolume).Build(), + openstack: machinev1resourcebuilder.OpenStackFailureDomain().WithRootVolume(&filterRootVolume).Build(), } fd2 = failureDomain{ platformType: configv1.OpenStackPlatformType, - openstack: machinev1resourcebuilder.OpenStackFailureDomain().WithRootVolume(filterRootVolume).Build(), + openstack: machinev1resourcebuilder.OpenStackFailureDomain().WithRootVolume(&filterRootVolume).Build(), } }) diff --git a/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/openstack.go b/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/openstack.go index c3b645ffc..0b910e9cd 100644 --- a/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/openstack.go +++ b/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/openstack.go @@ -42,8 +42,14 @@ func (a OpenStackProviderConfig) InjectFailureDomain(fd machinev1.OpenStackFailu newOpenStackProviderConfig.providerConfig.AvailabilityZone = fd.AvailabilityZone } - if fd.RootVolume != nil && newOpenStackProviderConfig.providerConfig.RootVolume != nil && fd.RootVolume.AvailabilityZone != "" { - newOpenStackProviderConfig.providerConfig.RootVolume.Zone = fd.RootVolume.AvailabilityZone + if fd.RootVolume != nil && newOpenStackProviderConfig.providerConfig.RootVolume != nil { + if fd.RootVolume.AvailabilityZone != "" { + newOpenStackProviderConfig.providerConfig.RootVolume.Zone = fd.RootVolume.AvailabilityZone + } + + if fd.RootVolume.VolumeType != "" { + newOpenStackProviderConfig.providerConfig.RootVolume.VolumeType = fd.RootVolume.VolumeType + } } return newOpenStackProviderConfig @@ -52,20 +58,22 @@ func (a OpenStackProviderConfig) InjectFailureDomain(fd machinev1.OpenStackFailu // ExtractFailureDomain returns an OpenStackFailureDomain based on the failure domain // information stored within the OpenStackProviderConfig. func (a OpenStackProviderConfig) ExtractFailureDomain() machinev1.OpenStackFailureDomain { - rootVolume := func(pc machinev1alpha1.OpenstackProviderSpec) *machinev1.RootVolume { - if pc.RootVolume != nil && pc.RootVolume.Zone != "" { - rootVolume := &machinev1.RootVolume{} - rootVolume.AvailabilityZone = a.providerConfig.RootVolume.Zone - - return rootVolume - } else { - return nil + var failureDomainRootVolume *machinev1.RootVolume + + if a.providerConfig.RootVolume != nil { + // Be liberal in accepting an empty rootVolume in the + // OpenStackFailureDomain. It should count as nil. + if az, vt := a.providerConfig.RootVolume.Zone, a.providerConfig.RootVolume.VolumeType; az != "" || vt != "" { + failureDomainRootVolume = &machinev1.RootVolume{ + AvailabilityZone: az, + VolumeType: vt, + } } } return machinev1.OpenStackFailureDomain{ AvailabilityZone: a.providerConfig.AvailabilityZone, - RootVolume: rootVolume(a.providerConfig), + RootVolume: failureDomainRootVolume, } } diff --git a/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/openstack_test.go b/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/openstack_test.go index 4a23e610e..9f7829bd0 100644 --- a/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/openstack_test.go +++ b/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/openstack_test.go @@ -32,10 +32,12 @@ var _ = Describe("OpenStack Provider Config", func() { var logger testutils.TestLogger var providerConfig OpenStackProviderConfig + var providerConfigWithVolumeType OpenStackProviderConfig novaZone1 := "nova-az1" novaZone2 := "nova-az2" cinderZone1 := "cinder-az1" + volumeType1 := "volumetype-1" machinev1alpha1RootVolume1 := &machinev1alpha1.RootVolume{ Zone: cinderZone1, @@ -44,6 +46,13 @@ var _ = Describe("OpenStack Provider Config", func() { AvailabilityZone: cinderZone1, } + machinev1alpha1RootVolume2 := &machinev1alpha1.RootVolume{ + VolumeType: volumeType1, + } + machinev1RootVolume2 := machinev1.RootVolume{ + VolumeType: volumeType1, + } + BeforeEach(func() { machineProviderConfig := machinev1beta1resourcebuilder.OpenStackProviderSpec(). WithZone(novaZone1). @@ -54,6 +63,19 @@ var _ = Describe("OpenStack Provider Config", func() { providerConfig: *machineProviderConfig, } + providerConfig = OpenStackProviderConfig{ + providerConfig: *machineProviderConfig, + } + + machineProviderConfigWithVolumeType := machinev1beta1resourcebuilder.OpenStackProviderSpec(). + WithZone(novaZone1). + WithRootVolume(machinev1alpha1RootVolume2). + Build() + + providerConfigWithVolumeType = OpenStackProviderConfig{ + providerConfig: *machineProviderConfigWithVolumeType, + } + logger = testutils.NewTestLogger() }) @@ -61,20 +83,48 @@ var _ = Describe("OpenStack Provider Config", func() { It("returns the configured failure domain", func() { expected := machinev1resourcebuilder.OpenStackFailureDomain(). WithComputeAvailabilityZone(novaZone1). - WithRootVolume(machinev1RootVolume1). + WithRootVolume(&machinev1RootVolume1). Build() Expect(providerConfig.ExtractFailureDomain()).To(Equal(expected)) }) }) + Context("ExtractFailureDomainDespiteEmptyRootVolume", func() { + It("returns the configured failure domain", func() { + expected := machinev1resourcebuilder.OpenStackFailureDomain(). + WithComputeAvailabilityZone(novaZone1). + Build() + + providerConfigWithEmptyRootVolume := OpenStackProviderConfig{ + providerConfig: *machinev1beta1resourcebuilder.OpenStackProviderSpec(). + WithZone(novaZone1). + WithRootVolume(&machinev1alpha1.RootVolume{}). + Build(), + } + + Expect(providerConfigWithEmptyRootVolume.ExtractFailureDomain()).To(Equal(expected)) + }) + }) + + Context("ExtractFailureDomainWithVolumeType", func() { + It("returns the configured failure domain", func() { + expected := machinev1resourcebuilder.OpenStackFailureDomain(). + WithComputeAvailabilityZone(novaZone1). + WithRootVolume(&machinev1RootVolume2). + Build() + + Expect(providerConfigWithVolumeType.ExtractFailureDomain()).To(Equal(expected)) + }) + }) + Context("when the failuredomain is changed after initialisation", func() { var changedProviderConfig OpenStackProviderConfig BeforeEach(func() { changedFailureDomain := machinev1resourcebuilder.OpenStackFailureDomain(). WithComputeAvailabilityZone(novaZone2). - WithRootVolume(machinev1RootVolume1). + WithRootVolume(&machinev1RootVolume1). Build() changedProviderConfig = providerConfig.InjectFailureDomain(changedFailureDomain) @@ -84,7 +134,7 @@ var _ = Describe("OpenStack Provider Config", func() { It("returns the changed failure domain from the changed config", func() { expected := machinev1resourcebuilder.OpenStackFailureDomain(). WithComputeAvailabilityZone(novaZone2). - WithRootVolume(machinev1RootVolume1). + WithRootVolume(&machinev1RootVolume1). Build() Expect(changedProviderConfig.ExtractFailureDomain()).To(Equal(expected)) @@ -93,7 +143,7 @@ var _ = Describe("OpenStack Provider Config", func() { It("returns the original failure domain from the original config", func() { expected := machinev1resourcebuilder.OpenStackFailureDomain(). WithComputeAvailabilityZone(novaZone1). - WithRootVolume(machinev1RootVolume1). + WithRootVolume(&machinev1RootVolume1). Build() Expect(providerConfig.ExtractFailureDomain()).To(Equal(expected)) diff --git a/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/providerconfig_test.go b/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/providerconfig_test.go index b17cd0605..70c670bcd 100644 --- a/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/providerconfig_test.go +++ b/pkg/machineproviders/providers/openshift/machine/v1beta1/providerconfig/providerconfig_test.go @@ -279,7 +279,7 @@ var _ = Describe("Provider Config", func() { }, }, failureDomain: failuredomain.NewOpenStackFailureDomain( - machinev1resourcebuilder.OpenStackFailureDomain().WithRootVolume(machinev1.RootVolume{ + machinev1resourcebuilder.OpenStackFailureDomain().WithRootVolume(&machinev1.RootVolume{ AvailabilityZone: "cinder-az1", }).Build(), ), @@ -309,7 +309,7 @@ var _ = Describe("Provider Config", func() { }, }, failureDomain: failuredomain.NewOpenStackFailureDomain( - machinev1resourcebuilder.OpenStackFailureDomain().WithRootVolume(machinev1.RootVolume{ + machinev1resourcebuilder.OpenStackFailureDomain().WithRootVolume(&machinev1.RootVolume{ AvailabilityZone: "cinder-az1", }).Build(), ), @@ -527,7 +527,7 @@ var _ = Describe("Provider Config", func() { }, }, expectedFailureDomain: failuredomain.NewOpenStackFailureDomain( - machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az2").WithRootVolume(machinev1.RootVolume{ + machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az2").WithRootVolume(&machinev1.RootVolume{ AvailabilityZone: "cinder-az2", }).Build(), ), diff --git a/pkg/webhooks/controlplanemachineset/webhooks_test.go b/pkg/webhooks/controlplanemachineset/webhooks_test.go index bf9a283bc..2efc7a5a0 100644 --- a/pkg/webhooks/controlplanemachineset/webhooks_test.go +++ b/pkg/webhooks/controlplanemachineset/webhooks_test.go @@ -714,10 +714,10 @@ var _ = Describe("Webhooks", func() { var filterRootVolumeFour = machinev1.RootVolume{ AvailabilityZone: "cinder-az4", } - var zone1Builder = machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az1").WithRootVolume(filterRootVolumeOne) - var zone2Builder = machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az2").WithRootVolume(filterRootVolumeTwo) - var zone3Builder = machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az3").WithRootVolume(filterRootVolumeThree) - var zone4Builder = machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az4").WithRootVolume(filterRootVolumeFour) + var zone1Builder = machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az1").WithRootVolume(&filterRootVolumeOne) + var zone2Builder = machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az2").WithRootVolume(&filterRootVolumeTwo) + var zone3Builder = machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az3").WithRootVolume(&filterRootVolumeThree) + var zone4Builder = machinev1resourcebuilder.OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az4").WithRootVolume(&filterRootVolumeFour) BeforeEach(func() { providerSpec := machinev1beta1resourcebuilder.OpenStackProviderSpec() diff --git a/vendor/github.com/openshift/cluster-api-actuator-pkg/testutils/resourcebuilder/machine/v1/openstack_failure_domains.go b/vendor/github.com/openshift/cluster-api-actuator-pkg/testutils/resourcebuilder/machine/v1/openstack_failure_domains.go index 902bf13b3..2992942be 100644 --- a/vendor/github.com/openshift/cluster-api-actuator-pkg/testutils/resourcebuilder/machine/v1/openstack_failure_domains.go +++ b/vendor/github.com/openshift/cluster-api-actuator-pkg/testutils/resourcebuilder/machine/v1/openstack_failure_domains.go @@ -29,15 +29,15 @@ import ( func OpenStackFailureDomains() OpenStackFailureDomainsBuilder { return OpenStackFailureDomainsBuilder{[]OpenStackFailureDomainBuilder{ OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az0"). - WithRootVolume(machinev1.RootVolume{ + WithRootVolume(&machinev1.RootVolume{ AvailabilityZone: "cinder-az0", }), OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az1"). - WithRootVolume(machinev1.RootVolume{ + WithRootVolume(&machinev1.RootVolume{ AvailabilityZone: "cinder-az1", }), OpenStackFailureDomain().WithComputeAvailabilityZone("nova-az2"). - WithRootVolume(machinev1.RootVolume{ + WithRootVolume(&machinev1.RootVolume{ AvailabilityZone: "cinder-az2", }), }} @@ -100,7 +100,7 @@ func (a OpenStackFailureDomainBuilder) WithComputeAvailabilityZone(zone string) } // WithRootVolume sets the root volume for the OpenStack failuredomain builder. -func (a OpenStackFailureDomainBuilder) WithRootVolume(rootVolume machinev1.RootVolume) OpenStackFailureDomainBuilder { - a.RootVolume = &rootVolume +func (a OpenStackFailureDomainBuilder) WithRootVolume(rootVolume *machinev1.RootVolume) OpenStackFailureDomainBuilder { + a.RootVolume = rootVolume return a } diff --git a/vendor/github.com/openshift/cluster-api-actuator-pkg/testutils/resourcebuilder/machine/v1beta1/openstack_provider_spec.go b/vendor/github.com/openshift/cluster-api-actuator-pkg/testutils/resourcebuilder/machine/v1beta1/openstack_provider_spec.go index add435810..6db86d8ab 100644 --- a/vendor/github.com/openshift/cluster-api-actuator-pkg/testutils/resourcebuilder/machine/v1beta1/openstack_provider_spec.go +++ b/vendor/github.com/openshift/cluster-api-actuator-pkg/testutils/resourcebuilder/machine/v1beta1/openstack_provider_spec.go @@ -30,7 +30,7 @@ func OpenStackProviderSpec() OpenStackProviderSpecBuilder { return OpenStackProviderSpecBuilder{ flavor: "m1.large", availabilityZone: "", - rootVolume: &machinev1alpha1.RootVolume{}, + rootVolume: nil, serverGroupName: "master", } } diff --git a/vendor/modules.txt b/vendor/modules.txt index 228b76ad7..72982f815 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -542,7 +542,7 @@ github.com/openshift/client-go/config/clientset/versioned/typed/config/v1 github.com/openshift/client-go/machine/applyconfigurations/internal github.com/openshift/client-go/machine/applyconfigurations/machine/v1 github.com/openshift/client-go/machine/applyconfigurations/machine/v1beta1 -# github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20230622171654-75c6bcfa831c +# github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20230706132925-77764237f2e6 ## explicit; go 1.19 github.com/openshift/cluster-api-actuator-pkg/testutils github.com/openshift/cluster-api-actuator-pkg/testutils/resourcebuilder