Skip to content

Commit 805b228

Browse files
committed
refactor: Allow other packages to create metallb configuration
1 parent bf63254 commit 805b228

File tree

2 files changed

+29
-29
lines changed

2 files changed

+29
-29
lines changed

pkg/handlers/generic/lifecycle/serviceloadbalancer/metallb/configuration.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,32 +11,32 @@ import (
1111
"github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/api/v1alpha1"
1212
)
1313

14-
func groupVersionKind(kind string) schema.GroupVersionKind {
14+
func GroupVersionKind(kind string) schema.GroupVersionKind {
1515
return schema.GroupVersionKind{
1616
Group: "metallb.io",
1717
Version: "v1beta1",
1818
Kind: kind,
1919
}
2020
}
2121

22-
type configurationInput struct {
23-
name string
24-
namespace string
25-
addressRanges []v1alpha1.AddressRange
22+
type ConfigurationInput struct {
23+
Name string
24+
Namespace string
25+
AddressRanges []v1alpha1.AddressRange
2626
}
2727

28-
func configurationObjects(input *configurationInput) ([]unstructured.Unstructured, error) {
29-
if len(input.addressRanges) == 0 {
30-
return nil, fmt.Errorf("must define one or more addressRanges")
28+
func ConfigurationObjects(input *ConfigurationInput) ([]*unstructured.Unstructured, error) {
29+
if len(input.AddressRanges) == 0 {
30+
return nil, fmt.Errorf("must define one or more AddressRanges")
3131
}
3232

33-
ipAddressPool := unstructured.Unstructured{}
34-
ipAddressPool.SetGroupVersionKind(groupVersionKind("IPAddressPool"))
35-
ipAddressPool.SetName(input.name)
36-
ipAddressPool.SetNamespace(input.namespace)
33+
ipAddressPool := &unstructured.Unstructured{}
34+
ipAddressPool.SetGroupVersionKind(GroupVersionKind("IPAddressPool"))
35+
ipAddressPool.SetName(input.Name)
36+
ipAddressPool.SetNamespace(input.Namespace)
3737

3838
addresses := []string{}
39-
for _, ar := range input.addressRanges {
39+
for _, ar := range input.AddressRanges {
4040
addresses = append(addresses, fmt.Sprintf("%s-%s", ar.Start, ar.End))
4141
}
4242
if err := unstructured.SetNestedStringSlice(
@@ -48,10 +48,10 @@ func configurationObjects(input *configurationInput) ([]unstructured.Unstructure
4848
return nil, fmt.Errorf("failed to set IPAddressPool .spec.addresses: %w", err)
4949
}
5050

51-
l2Advertisement := unstructured.Unstructured{}
52-
l2Advertisement.SetGroupVersionKind(groupVersionKind("L2Advertisement"))
53-
l2Advertisement.SetName(input.name)
54-
l2Advertisement.SetNamespace(input.namespace)
51+
l2Advertisement := &unstructured.Unstructured{}
52+
l2Advertisement.SetGroupVersionKind(GroupVersionKind("L2Advertisement"))
53+
l2Advertisement.SetName(input.Name)
54+
l2Advertisement.SetNamespace(input.Namespace)
5555

5656
if err := unstructured.SetNestedStringSlice(
5757
l2Advertisement.Object,
@@ -64,7 +64,7 @@ func configurationObjects(input *configurationInput) ([]unstructured.Unstructure
6464
return nil, fmt.Errorf("failed to set L2Advertisement .spec.ipAddressPools: %w", err)
6565
}
6666

67-
return []unstructured.Unstructured{
67+
return []*unstructured.Unstructured{
6868
ipAddressPool,
6969
l2Advertisement,
7070
}, nil

pkg/handlers/generic/lifecycle/serviceloadbalancer/metallb/handler.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ import (
2828
)
2929

3030
const (
31-
defaultHelmReleaseName = "metallb"
32-
defaultHelmReleaseNamespace = "metallb-system"
31+
DefaultHelmReleaseName = "metallb"
32+
DefaultHelmReleaseNamespace = "metallb-system"
3333
)
3434

3535
// These labels allow the MetalLB speaker pod to obtain elevated permissions,
@@ -107,14 +107,14 @@ func (n *MetalLB) Apply(
107107
err = handlersutils.EnsureNamespaceWithMetadata(
108108
ctx,
109109
remoteClient,
110-
defaultHelmReleaseNamespace,
110+
DefaultHelmReleaseNamespace,
111111
podSecurityReleaseNamespaceLabels,
112112
nil,
113113
)
114114
if err != nil {
115115
return fmt.Errorf(
116116
"failed to ensure release namespace %q exists: %w",
117-
defaultHelmReleaseName,
117+
DefaultHelmReleaseName,
118118
err,
119119
)
120120
}
@@ -139,8 +139,8 @@ func (n *MetalLB) Apply(
139139
ClusterSelector: metav1.LabelSelector{
140140
MatchLabels: map[string]string{clusterv1.ClusterNameLabel: cluster.Name},
141141
},
142-
ReleaseNamespace: defaultHelmReleaseNamespace,
143-
ReleaseName: defaultHelmReleaseName,
142+
ReleaseNamespace: DefaultHelmReleaseNamespace,
143+
ReleaseName: DefaultHelmReleaseName,
144144
Version: helmChartInfo.Version,
145145
ValuesTemplate: values,
146146
},
@@ -189,10 +189,10 @@ func (n *MetalLB) Apply(
189189
),
190190
)
191191

192-
cos, err := configurationObjects(&configurationInput{
193-
name: defaultHelmReleaseName,
194-
namespace: defaultHelmReleaseNamespace,
195-
addressRanges: slb.Configuration.AddressRanges,
192+
cos, err := ConfigurationObjects(&ConfigurationInput{
193+
Name: DefaultHelmReleaseName,
194+
Namespace: DefaultHelmReleaseNamespace,
195+
AddressRanges: slb.Configuration.AddressRanges,
196196
})
197197
if err != nil {
198198
return fmt.Errorf("failed to generate MetalLB configuration: %w", err)
@@ -206,7 +206,7 @@ func (n *MetalLB) Apply(
206206
true,
207207
func(ctx context.Context) (done bool, err error) {
208208
for i := range cos {
209-
o := &cos[i]
209+
o := cos[i]
210210
if err = client.ServerSideApply(
211211
ctx,
212212
remoteClient,

0 commit comments

Comments
 (0)