Skip to content

Commit

Permalink
refactor: better handle nil virtualIPProvider
Browse files Browse the repository at this point in the history
Currently a virtualIPProvider will always be passed in to the handler,
but refactoring to use a builder pattern makes the code more flexible.
  • Loading branch information
dkoshkin committed Apr 24, 2024
1 parent 91fa82f commit b95ddc3
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 6 deletions.
16 changes: 12 additions & 4 deletions pkg/handlers/nutanix/mutation/controlplaneendpoint/inject.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,27 +36,31 @@ type nutanixControlPlaneEndpoint struct {
variableFieldPath []string
}

func NewPatch(virtualIPProvider virtualip.Provider) *nutanixControlPlaneEndpoint {
func NewPatch() *nutanixControlPlaneEndpoint {
return newNutanixControlPlaneEndpoint(
virtualIPProvider,
clusterconfig.MetaVariableName,
v1alpha1.NutanixVariableName,
VariableName,
)
}

func newNutanixControlPlaneEndpoint(
virtualIPProvider virtualip.Provider,
variableName string,
variableFieldPath ...string,
) *nutanixControlPlaneEndpoint {
return &nutanixControlPlaneEndpoint{
virtualIPProvider: virtualIPProvider,
variableName: variableName,
variableFieldPath: variableFieldPath,
}
}

func (h *nutanixControlPlaneEndpoint) WithVirtualIPProvider(
virtualIPProvider virtualip.Provider,
) *nutanixControlPlaneEndpoint {
h.virtualIPProvider = virtualIPProvider
return h
}

func (h *nutanixControlPlaneEndpoint) Mutate(
ctx context.Context,
obj *unstructured.Unstructured,
Expand Down Expand Up @@ -98,6 +102,10 @@ func (h *nutanixControlPlaneEndpoint) Mutate(
selectors.ControlPlane(),
log,
func(obj *controlplanev1.KubeadmControlPlaneTemplate) error {
if h.virtualIPProvider == nil {
return nil
}

virtualIPProviderFile, virtualIPProviderErr := h.virtualIPProvider.GetFile(ctx, controlPlaneEndpointVar)
if virtualIPProviderErr != nil {
return virtualIPProviderErr
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,11 @@ var _ = Describe("Generate Nutanix ControlPlane endpoint patches", func() {

func testPatchGenerator(virtualIPProvider virtualip.Provider) func() mutation.GeneratePatches {
return func() mutation.GeneratePatches {
return mutation.NewMetaGeneratePatchesHandler("", helpers.TestEnv.Client, NewPatch(virtualIPProvider)).(mutation.GeneratePatches)
return mutation.NewMetaGeneratePatchesHandler(
"",
helpers.TestEnv.Client,
NewPatch().WithVirtualIPProvider(virtualIPProvider),
).(mutation.GeneratePatches)
}
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/handlers/nutanix/mutation/metapatch_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import (
func MetaPatchHandler(mgr manager.Manager, virtualIPProvider virtualip.Provider) handlers.Named {
patchHandlers := append(
[]mutation.MetaMutator{
controlplaneendpoint.NewPatch(virtualIPProvider),
controlplaneendpoint.NewPatch().WithVirtualIPProvider(virtualIPProvider),
prismcentralendpoint.NewPatch(),
machinedetails.NewControlPlanePatch(),
},
Expand Down

0 comments on commit b95ddc3

Please sign in to comment.