Skip to content

Commit 08e19a2

Browse files
committed
fixed nestif wms configmaps
1 parent cd2b9db commit 08e19a2

File tree

5 files changed

+62
-98
lines changed

5 files changed

+62
-98
lines changed

internal/controller/shared_controller.go

Lines changed: 46 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,11 @@ const (
5959
)
6060

6161
var (
62-
AppLabelKey = "app"
63-
MapserverName = "mapserver"
62+
AppLabelKey = "app"
63+
MapserverName = "mapserver"
64+
LegendGeneratorName = "legend-generator"
65+
FeatureInfoGeneratorName = "featureinfo-generator"
66+
OgcWebserviceProxyName = "ogc-webservice-proxy"
6467

6568
// Service ports
6669
mapserverPortName = "mapserver"
@@ -126,7 +129,7 @@ func getSharedBareObjects[O pdoknlv3.WMSWFS](obj O) []client.Object {
126129
getBareIngressRoute(obj),
127130
getBareHorizontalPodAutoScaler(obj),
128131
getBareConfigMapBlobDownload(obj),
129-
getBareConfigMap(obj),
132+
getBareConfigMap(obj, MapserverName),
130133
getBareService(obj),
131134
getBareCorsHeadersMiddleware(obj),
132135
getBarePodDisruptionBudget(obj),
@@ -790,7 +793,7 @@ func mutateService[R Reconciler, O pdoknlv3.WMSWFS](r R, obj O, service *corev1.
790793
if obj.Type() == pdoknlv3.ServiceTypeWMS {
791794
if obj.Options().UseWebserviceProxy() {
792795
ports = append(ports, corev1.ServicePort{
793-
Name: "ogc-webservice-proxy",
796+
Name: OgcWebserviceProxyName,
794797
Port: 9111,
795798
})
796799
}
@@ -888,10 +891,10 @@ func mutatePodDisruptionBudget[R Reconciler, O pdoknlv3.WMSWFS](r R, obj O, podD
888891
return ctrl.SetControllerReference(obj, podDisruptionBudget, getReconcilerScheme(r))
889892
}
890893

891-
func getBareConfigMap[O pdoknlv3.WMSWFS](obj O) *corev1.ConfigMap {
894+
func getBareConfigMap[O pdoknlv3.WMSWFS](obj O, name string) *corev1.ConfigMap {
892895
return &corev1.ConfigMap{
893896
ObjectMeta: metav1.ObjectMeta{
894-
Name: getSuffixedName(obj, MapserverName),
897+
Name: getSuffixedName(obj, name),
895898
Namespace: obj.GetNamespace(),
896899
},
897900
}
@@ -1032,7 +1035,7 @@ func createOrUpdateAllForWMSWFS[R Reconciler, O pdoknlv3.WMSWFS](ctx context.Con
10321035

10331036
// region ConfigMap
10341037
{
1035-
configMap := getBareConfigMap(obj)
1038+
configMap := getBareConfigMap(obj, MapserverName)
10361039
if err = mutateConfigMap(r, obj, configMap); err != nil {
10371040
return operationResults, err
10381041
}
@@ -1094,60 +1097,33 @@ func createOrUpdateAllForWMSWFS[R Reconciler, O pdoknlv3.WMSWFS](ctx context.Con
10941097
}
10951098
// end region ConfigMap-BlobDownload
10961099

1097-
// TODO fix linting (nestif)
1098-
//nolint:nestif
10991100
if obj.Type() == pdoknlv3.ServiceTypeWMS {
11001101
wms, _ := any(obj).(*pdoknlv3.WMS)
11011102
wmsReconciler := (*WMSReconciler)(r)
11021103

1103-
// region ConfigMap-LegendGenerator
1104-
{
1105-
configMapLg := getBareConfigMapLegendGenerator(wms)
1106-
if err = mutateConfigMapLegendGenerator(wmsReconciler, wms, configMapLg); err != nil {
1107-
return operationResults, err
1108-
}
1109-
operationResults[smoothoperatorutils.GetObjectFullName(reconcilerClient, configMapLg)], err = controllerutil.CreateOrUpdate(ctx, reconcilerClient, configMapLg, func() error {
1110-
return mutateConfigMapLegendGenerator(wmsReconciler, wms, configMapLg)
1104+
configMaps := make(map[string]func(*WMSReconciler, *pdoknlv3.WMS, *corev1.ConfigMap) error)
1105+
configMaps[LegendGeneratorName] = mutateConfigMapLegendGenerator
1106+
configMaps[FeatureInfoGeneratorName] = mutateConfigMapFeatureinfoGenerator
1107+
configMaps[OgcWebserviceProxyName] = mutateConfigMapOgcWebserviceProxy
1108+
for cmName, mutate := range configMaps {
1109+
cm, or, err := getConfigMap(ctx, wms, wmsReconciler, cmName, func(r *WMSReconciler, w *pdoknlv3.WMS, cm *corev1.ConfigMap) error {
1110+
return mutate(r, w, cm)
11111111
})
1112-
if err != nil {
1113-
return operationResults, fmt.Errorf("unable to create/update resource %s: %w", smoothoperatorutils.GetObjectFullName(reconcilerClient, configMapLg), err)
1114-
}
1115-
hashedConfigMapNames.LegendGenerator = configMapLg.Name
1116-
}
1117-
// end region ConfigMap-LegendGenerator
1118-
1119-
// region ConfigMap-FeatureinfoGenerator
1120-
{
1121-
configMapFig := getBareConfigMapFeatureinfoGenerator(wms)
1122-
if err = mutateConfigMapFeatureinfoGenerator(wmsReconciler, wms, configMapFig); err != nil {
1123-
return operationResults, err
1112+
if or != nil {
1113+
operationResults[smoothoperatorutils.GetObjectFullName(reconcilerClient, cm)] = *or
11241114
}
1125-
operationResults[smoothoperatorutils.GetObjectFullName(reconcilerClient, configMapFig)], err = controllerutil.CreateOrUpdate(ctx, reconcilerClient, configMapFig, func() error {
1126-
return mutateConfigMapFeatureinfoGenerator(wmsReconciler, wms, configMapFig)
1127-
})
11281115
if err != nil {
1129-
return operationResults, fmt.Errorf("unable to create/update resource %s: %w", smoothoperatorutils.GetObjectFullName(reconcilerClient, configMapFig), err)
1130-
}
1131-
hashedConfigMapNames.FeatureInfoGenerator = configMapFig.Name
1132-
}
1133-
1134-
// end region ConfigMap-FeatureinfoGenerator
1135-
1136-
// region ConfigMap-OgcWebserviceProxy
1137-
{
1138-
configMapOwp := getBareConfigMapOgcWebserviceProxy(wms)
1139-
if err = mutateConfigMapOgcWebserviceProxy(wmsReconciler, wms, configMapOwp); err != nil {
11401116
return operationResults, err
11411117
}
1142-
operationResults[smoothoperatorutils.GetObjectFullName(reconcilerClient, configMapOwp)], err = controllerutil.CreateOrUpdate(ctx, reconcilerClient, configMapOwp, func() error {
1143-
return mutateConfigMapOgcWebserviceProxy(wmsReconciler, wms, configMapOwp)
1144-
})
1145-
if err != nil {
1146-
return operationResults, fmt.Errorf("unable to create/update resource %s: %w", smoothoperatorutils.GetObjectFullName(reconcilerClient, configMapOwp), err)
1118+
switch cmName {
1119+
case LegendGeneratorName:
1120+
hashedConfigMapNames.LegendGenerator = cm.Name
1121+
case FeatureInfoGeneratorName:
1122+
hashedConfigMapNames.FeatureInfoGenerator = cm.Name
1123+
case OgcWebserviceProxyName:
1124+
hashedConfigMapNames.OgcWebserviceProxy = cm.Name
11471125
}
1148-
hashedConfigMapNames.OgcWebserviceProxy = configMapOwp.Name
11491126
}
1150-
// end region ConfigMap-OgcWebserviceProxy
11511127
}
11521128

11531129
// region Deployment
@@ -1231,6 +1207,22 @@ func createOrUpdateAllForWMSWFS[R Reconciler, O pdoknlv3.WMSWFS](ctx context.Con
12311207
return operationResults, nil
12321208
}
12331209

1210+
func getConfigMap[O pdoknlv3.WMSWFS, R Reconciler](ctx context.Context, obj O, reconciler R, name string, mutate func(R, O, *corev1.ConfigMap) error) (cm *corev1.ConfigMap, operationResult *controllerutil.OperationResult, err error) {
1211+
reconcilerClient := getReconcilerClient(reconciler)
1212+
cm = getBareConfigMap(obj, name)
1213+
if err = mutate(reconciler, obj, cm); err != nil {
1214+
return cm, nil, err
1215+
}
1216+
or, err := controllerutil.CreateOrUpdate(ctx, reconcilerClient, cm, func() error {
1217+
return mutate(reconciler, obj, cm)
1218+
})
1219+
operationResult = &or
1220+
if err != nil {
1221+
return cm, operationResult, fmt.Errorf("unable to create/update resource %s: %w", smoothoperatorutils.GetObjectFullName(reconcilerClient, cm), err)
1222+
}
1223+
return
1224+
}
1225+
12341226
// TODO fix linting (funlen)
12351227
//
12361228
//nolint:funlen
@@ -1246,7 +1238,7 @@ func deleteAllForWMSWFS[R Reconciler, O pdoknlv3.WMSWFS](ctx context.Context, r
12461238
}
12471239

12481240
// ConfigMap
1249-
cm := getBareConfigMap(obj)
1241+
cm := getBareConfigMap(obj, MapserverName)
12501242
err = mutateConfigMap(r, obj, cm)
12511243
if err != nil {
12521244
return err
@@ -1282,23 +1274,23 @@ func deleteAllForWMSWFS[R Reconciler, O pdoknlv3.WMSWFS](ctx context.Context, r
12821274
wmsReconciler := (*WMSReconciler)(r)
12831275

12841276
// ConfigMap-LegendGenerator
1285-
cmLg := getBareConfigMapLegendGenerator(wms)
1277+
cmLg := getBareConfigMap(wms, LegendGeneratorName)
12861278
err = mutateConfigMapLegendGenerator(wmsReconciler, wms, cmLg)
12871279
if err != nil {
12881280
return err
12891281
}
12901282
objects = append(objects, cmLg)
12911283

12921284
// ConfigMap-FeatureInfo
1293-
cmFi := getBareConfigMapFeatureinfoGenerator(wms)
1285+
cmFi := getBareConfigMap(wms, FeatureInfoGeneratorName)
12941286
err = mutateConfigMapFeatureinfoGenerator(wmsReconciler, wms, cmFi)
12951287
if err != nil {
12961288
return err
12971289
}
12981290
objects = append(objects, cmFi)
12991291

13001292
// ConfigMap-OgcWebserviceProxy
1301-
cmOwp := getBareConfigMapOgcWebserviceProxy(wms)
1293+
cmOwp := getBareConfigMap(wms, OgcWebserviceProxyName)
13021294
err = mutateConfigMapOgcWebserviceProxy(wmsReconciler, wms, cmOwp)
13031295
if err != nil {
13041296
return err

internal/controller/shared_controller_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func getExpectedObjects[O pdoknlv3.WMSWFS](ctx context.Context, obj O, includeBl
5151
}
5252

5353
// Add all ConfigMaps with hashed names
54-
cm := getBareConfigMap(obj)
54+
cm := getBareConfigMap(obj, MapserverName)
5555
hashedName, err := getHashedConfigMapNameFromClient(ctx, obj, mapserver.ConfigMapVolumeName)
5656
if err != nil {
5757
return objects, err
@@ -87,15 +87,15 @@ func getExpectedObjects[O pdoknlv3.WMSWFS](ctx context.Context, obj O, includeBl
8787

8888
if obj.Type() == pdoknlv3.ServiceTypeWMS {
8989
wms, _ := any(obj).(*pdoknlv3.WMS)
90-
cm = getBareConfigMapLegendGenerator(wms)
90+
cm = getBareConfigMap(wms, LegendGeneratorName)
9191
hashedName, err = getHashedConfigMapNameFromClient(ctx, obj, mapserver.ConfigMapLegendGeneratorVolumeName)
9292
if err != nil {
9393
return objects, err
9494
}
9595
cm.Name = hashedName
9696
objects = append(objects, cm)
9797

98-
cm = getBareConfigMapFeatureinfoGenerator(wms)
98+
cm = getBareConfigMap(wms, FeatureInfoGeneratorName)
9999
hashedName, err = getHashedConfigMapNameFromClient(ctx, obj, mapserver.ConfigMapFeatureinfoGeneratorVolumeName)
100100
if err != nil {
101101
return objects, err
@@ -104,7 +104,7 @@ func getExpectedObjects[O pdoknlv3.WMSWFS](ctx context.Context, obj O, includeBl
104104
objects = append(objects, cm)
105105

106106
if obj.Options().UseWebserviceProxy() {
107-
cm = getBareConfigMapOgcWebserviceProxy(wms)
107+
cm = getBareConfigMap(wms, OgcWebserviceProxyName)
108108
hashedName, err = getHashedConfigMapNameFromClient(ctx, obj, mapserver.ConfigMapOgcWebserviceProxyVolumeName)
109109
if err != nil {
110110
return objects, err

internal/controller/wfs_controller_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ var _ = Describe("WFS Controller", func() {
372372
By("Reconciling the WFS and checking the configMap")
373373
reconcileWFS(controllerReconciler, wfs, typeNamespacedNameWfs)
374374

375-
configMap := getBareConfigMap(wfs)
375+
configMap := getBareConfigMap(wfs, MapserverName)
376376
configMapName, err := getHashedConfigMapNameFromClient(ctx, wfs, mapserver.ConfigMapVolumeName)
377377
Expect(err).NotTo(HaveOccurred())
378378
Eventually(func() bool {

internal/controller/wms_controller.go

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import (
3434
smoothoperatorutils "github.com/pdok/smooth-operator/pkg/util"
3535
corev1 "k8s.io/api/core/v1"
3636
apierrors "k8s.io/apimachinery/pkg/api/errors"
37-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3837
"k8s.io/apimachinery/pkg/runtime"
3938
ctrl "sigs.k8s.io/controller-runtime"
4039
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -135,15 +134,6 @@ func (r *WMSReconciler) Reconcile(ctx context.Context, req ctrl.Request) (result
135134
return result, err
136135
}
137136

138-
func getBareConfigMapLegendGenerator(obj *pdoknlv3.WMS) *corev1.ConfigMap {
139-
return &corev1.ConfigMap{
140-
ObjectMeta: metav1.ObjectMeta{
141-
Name: getSuffixedName(obj, "legend-generator"),
142-
Namespace: obj.GetNamespace(),
143-
},
144-
}
145-
}
146-
147137
func mutateConfigMapLegendGenerator(r *WMSReconciler, wms *pdoknlv3.WMS, configMap *corev1.ConfigMap) error {
148138
labels := addCommonLabels(wms, smoothoperatorutils.CloneOrEmptyMap(wms.GetLabels()))
149139
if err := smoothoperatorutils.SetImmutableLabels(r.Client, configMap, labels); err != nil {
@@ -165,15 +155,6 @@ func mutateConfigMapLegendGenerator(r *WMSReconciler, wms *pdoknlv3.WMS, configM
165155

166156
}
167157

168-
func getBareConfigMapFeatureinfoGenerator(obj *pdoknlv3.WMS) *corev1.ConfigMap {
169-
return &corev1.ConfigMap{
170-
ObjectMeta: metav1.ObjectMeta{
171-
Name: getSuffixedName(obj, "featureinfo-generator"),
172-
Namespace: obj.GetNamespace(),
173-
},
174-
}
175-
}
176-
177158
func mutateConfigMapFeatureinfoGenerator(r *WMSReconciler, wms *pdoknlv3.WMS, configMap *corev1.ConfigMap) error {
178159
labels := addCommonLabels(wms, smoothoperatorutils.CloneOrEmptyMap(wms.GetLabels()))
179160
if err := smoothoperatorutils.SetImmutableLabels(r.Client, configMap, labels); err != nil {
@@ -198,15 +179,6 @@ func mutateConfigMapFeatureinfoGenerator(r *WMSReconciler, wms *pdoknlv3.WMS, co
198179
return smoothoperatorutils.AddHashSuffix(configMap)
199180
}
200181

201-
func getBareConfigMapOgcWebserviceProxy(obj *pdoknlv3.WMS) *corev1.ConfigMap {
202-
return &corev1.ConfigMap{
203-
ObjectMeta: metav1.ObjectMeta{
204-
Name: getSuffixedName(obj, "ogc-webservice-proxy"),
205-
Namespace: obj.GetNamespace(),
206-
},
207-
}
208-
}
209-
210182
func mutateConfigMapOgcWebserviceProxy(r *WMSReconciler, wms *pdoknlv3.WMS, configMap *corev1.ConfigMap) error {
211183

212184
labels := addCommonLabels(wms, smoothoperatorutils.CloneOrEmptyMap(wms.GetLabels()))

internal/controller/wms_controller_test.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ var _ = Describe("WMS Controller", func() {
265265
Expect(containerMapserver.StartupProbe.TimeoutSeconds).Should(Equal(int32(10)))
266266

267267
containerOgcWebserviceProxy := deployment.Spec.Template.Spec.Containers[2]
268-
Expect(containerOgcWebserviceProxy.Name).Should(Equal("ogc-webservice-proxy"))
268+
Expect(containerOgcWebserviceProxy.Name).Should(Equal(OgcWebserviceProxyName))
269269
ogcWebserviceProxyCommands := []string{"/ogc-webservice-proxy", "-h=http://127.0.0.1/", "-t=wms", "-s=/input/service-config.yaml", "-v", "-d=15"}
270270
Expect(containerOgcWebserviceProxy.Command).Should(Equal(ogcWebserviceProxyCommands))
271271
Expect(containerOgcWebserviceProxy.Image).Should(Equal(reconcilerImages.OgcWebserviceProxyImage))
@@ -326,19 +326,19 @@ var _ = Describe("WMS Controller", func() {
326326
}
327327
Expect(capabilitiesGeneratorContainer.Env).Should(Equal(env))
328328

329-
featureinfoGeneratorContainer, err := getInitContainer("featureinfo-generator", deployment)
329+
featureinfoGeneratorContainer, err := getInitContainer(FeatureInfoGeneratorName, deployment)
330330
Expect(err).NotTo(HaveOccurred())
331331
Expect(featureinfoGeneratorContainer.Image).Should(Equal(reconcilerImages.FeatureinfoGeneratorImage))
332332
Expect(featureinfoGeneratorContainer.ImagePullPolicy).Should(Equal(corev1.PullIfNotPresent))
333-
Expect(featureinfoGeneratorContainer.Command).Should(Equal([]string{"featureinfo-generator"}))
333+
Expect(featureinfoGeneratorContainer.Command).Should(Equal([]string{FeatureInfoGeneratorName}))
334334
volumeMounts = []corev1.VolumeMount{
335335
{Name: "base", MountPath: "/srv/data", ReadOnly: false},
336336
{Name: mapserver.ConfigMapFeatureinfoGeneratorVolumeName, MountPath: "/input", ReadOnly: true},
337337
}
338338
Expect(featureinfoGeneratorContainer.VolumeMounts).Should(Equal(volumeMounts))
339339
Expect(len(featureinfoGeneratorContainer.Args)).Should(BeNumerically("==", 6))
340340

341-
legendGeneratorContainer, err := getInitContainer("legend-generator", deployment)
341+
legendGeneratorContainer, err := getInitContainer(LegendGeneratorName, deployment)
342342
Expect(err).NotTo(HaveOccurred())
343343
Expect(legendGeneratorContainer.Image).Should(Equal(reconcilerImages.MapserverImage))
344344
Expect(legendGeneratorContainer.ImagePullPolicy).Should(Equal(corev1.PullIfNotPresent))
@@ -473,7 +473,7 @@ var _ = Describe("WMS Controller", func() {
473473
}
474474
Expect(legendFixerContainer.VolumeMounts).Should(Equal(volumeMounts))
475475

476-
configMap := getBareConfigMapLegendGenerator(wms)
476+
configMap := getBareConfigMap(wms, LegendGeneratorName)
477477
configMapName, err := getHashedConfigMapNameFromClient(ctx, wms, mapserver.ConfigMapLegendGeneratorVolumeName)
478478
Expect(err).NotTo(HaveOccurred())
479479
Eventually(func() bool {
@@ -528,7 +528,7 @@ var _ = Describe("WMS Controller", func() {
528528
Expect(err).NotTo(HaveOccurred())
529529

530530
containerOgcWebserviceProxy := deployment.Spec.Template.Spec.Containers[2]
531-
Expect(containerOgcWebserviceProxy.Name).Should(Equal("ogc-webservice-proxy"))
531+
Expect(containerOgcWebserviceProxy.Name).Should(Equal(OgcWebserviceProxyName))
532532
ogcWebserviceProxyCommands := []string{"/ogc-webservice-proxy", "-h=http://127.0.0.1/", "-t=wms", "-s=/input/service-config.yaml", "-d=15"}
533533
Expect(containerOgcWebserviceProxy.Command).Should(Equal(ogcWebserviceProxyCommands))
534534
Expect(containerOgcWebserviceProxy.ImagePullPolicy).Should(Equal(corev1.PullIfNotPresent))
@@ -548,7 +548,7 @@ var _ = Describe("WMS Controller", func() {
548548
By("Reconciling the WMS and checking the configMap")
549549
reconcileWMS(controllerReconciler, wms, typeNamespacedNameWms)
550550

551-
configMap := getBareConfigMap(wms)
551+
configMap := getBareConfigMap(wms, MapserverName)
552552
configMapName, err := getHashedConfigMapNameFromClient(ctx, wms, mapserver.ConfigMapVolumeName)
553553
Expect(err).NotTo(HaveOccurred())
554554
Eventually(func() bool {
@@ -661,7 +661,7 @@ var _ = Describe("WMS Controller", func() {
661661
By("Reconciling the WMS and checking the configMap")
662662
reconcileWMS(controllerReconciler, wms, typeNamespacedNameWms)
663663

664-
configMap := getBareConfigMapLegendGenerator(wms)
664+
configMap := getBareConfigMap(wms, LegendGeneratorName)
665665
configMapName, err := getHashedConfigMapNameFromClient(ctx, wms, mapserver.ConfigMapLegendGeneratorVolumeName)
666666
Expect(err).NotTo(HaveOccurred())
667667
Eventually(func() bool {
@@ -688,7 +688,7 @@ var _ = Describe("WMS Controller", func() {
688688
By("Reconciling the WMS and checking the configMap")
689689
reconcileWMS(controllerReconciler, wms, typeNamespacedNameWms)
690690

691-
configMap := getBareConfigMapFeatureinfoGenerator(wms)
691+
configMap := getBareConfigMap(wms, FeatureInfoGeneratorName)
692692
configMapName, err := getHashedConfigMapNameFromClient(ctx, wms, mapserver.ConfigMapFeatureinfoGeneratorVolumeName)
693693
Expect(err).NotTo(HaveOccurred())
694694
Eventually(func() bool {
@@ -841,7 +841,7 @@ var _ = Describe("WMS Controller", func() {
841841
Protocol: corev1.ProtocolTCP,
842842
},
843843
{
844-
Name: "ogc-webservice-proxy",
844+
Name: OgcWebserviceProxyName,
845845
Port: 9111,
846846
TargetPort: intstr.FromInt32(9111),
847847
Protocol: "TCP",
@@ -943,7 +943,7 @@ var _ = Describe("WMS Controller", func() {
943943
{Name: "mapfile", MountPath: "/srv/data/config/mapfile"},
944944
{Name: mapserver.ConfigMapLegendGeneratorVolumeName, MountPath: "/input", ReadOnly: true},
945945
}
946-
legendGeneratorContainer, _ := getInitContainer("legend-generator", deployment)
946+
legendGeneratorContainer, _ := getInitContainer(LegendGeneratorName, deployment)
947947

948948
Expect(legendGeneratorContainer.VolumeMounts).Should(Equal(volumeMounts))
949949

0 commit comments

Comments
 (0)