Skip to content

Commit a043349

Browse files
committed
Merge branch 'master' into nojira-old-new-label-fix
2 parents 14ebd0d + f02f784 commit a043349

File tree

6 files changed

+44
-185
lines changed

6 files changed

+44
-185
lines changed

internal/controller/shared_controller.go

Lines changed: 0 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1020,10 +1020,6 @@ func updateStatus[R Reconciler](ctx context.Context, r R, obj client.Object, con
10201020
}
10211021
}
10221022

1023-
func getFinalizerName[O pdoknlv3.WMSWFS](obj O) string {
1024-
return strings.ToLower(string(obj.Type())) + "." + pdoknlv3.GroupVersion.Group + "/finalizer"
1025-
}
1026-
10271023
// TODO fix linting (cyclop,funlen)
10281024
//
10291025
//nolint:cyclop,funlen
@@ -1221,81 +1217,3 @@ func getConfigMap[O pdoknlv3.WMSWFS, R Reconciler](ctx context.Context, obj O, r
12211217
}
12221218
return cm, &or, nil
12231219
}
1224-
1225-
// TODO fix linting (funlen)
1226-
//
1227-
//nolint:funlen
1228-
func deleteAllForWMSWFS[R Reconciler, O pdoknlv3.WMSWFS](ctx context.Context, r R, obj O, ownerInfo *smoothoperatorv1.OwnerInfo) (err error) {
1229-
bareObjects := getSharedBareObjects(obj)
1230-
var objects []client.Object
1231-
1232-
// Remove ConfigMaps as they have hashed names
1233-
for _, object := range bareObjects {
1234-
if _, ok := object.(*corev1.ConfigMap); !ok {
1235-
objects = append(objects, object)
1236-
}
1237-
}
1238-
1239-
// ConfigMap
1240-
cm := getBareConfigMap(obj, MapserverName)
1241-
err = mutateConfigMap(r, obj, cm)
1242-
if err != nil {
1243-
return err
1244-
}
1245-
objects = append(objects, cm)
1246-
1247-
// ConfigMap-MapfileGenerator
1248-
cmMg := getBareConfigMapMapfileGenerator(obj)
1249-
err = mutateConfigMapMapfileGenerator(r, obj, cmMg, ownerInfo)
1250-
if err != nil {
1251-
return err
1252-
}
1253-
objects = append(objects, cmMg)
1254-
1255-
// ConfigMap-CapabilitiesGenerator
1256-
cmCg := getBareConfigMapCapabilitiesGenerator(obj)
1257-
err = mutateConfigMapCapabilitiesGenerator(r, obj, cmCg, ownerInfo)
1258-
if err != nil {
1259-
return err
1260-
}
1261-
objects = append(objects, cmCg)
1262-
1263-
// ConfigMap-BlobDownload
1264-
cmBd := getBareConfigMapBlobDownload(obj)
1265-
err = mutateConfigMapBlobDownload(r, obj, cmBd)
1266-
if err != nil {
1267-
return err
1268-
}
1269-
objects = append(objects, cmBd)
1270-
1271-
if obj.Type() == pdoknlv3.ServiceTypeWMS {
1272-
wms, _ := any(obj).(*pdoknlv3.WMS)
1273-
wmsReconciler := (*WMSReconciler)(r)
1274-
1275-
// ConfigMap-LegendGenerator
1276-
cmLg := getBareConfigMap(wms, LegendGeneratorName)
1277-
err = mutateConfigMapLegendGenerator(wmsReconciler, wms, cmLg)
1278-
if err != nil {
1279-
return err
1280-
}
1281-
objects = append(objects, cmLg)
1282-
1283-
// ConfigMap-FeatureInfo
1284-
cmFi := getBareConfigMap(wms, FeatureInfoGeneratorName)
1285-
err = mutateConfigMapFeatureinfoGenerator(wmsReconciler, wms, cmFi)
1286-
if err != nil {
1287-
return err
1288-
}
1289-
objects = append(objects, cmFi)
1290-
1291-
// ConfigMap-OgcWebserviceProxy
1292-
cmOwp := getBareConfigMap(wms, OgcWebserviceProxyName)
1293-
err = mutateConfigMapOgcWebserviceProxy(wmsReconciler, wms, cmOwp)
1294-
if err != nil {
1295-
return err
1296-
}
1297-
objects = append(objects, cmOwp)
1298-
}
1299-
1300-
return smoothoperatorutils.DeleteObjects(ctx, getReconcilerClient(r), objects)
1301-
}

internal/controller/shared_controller_test.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func getHashedConfigMapNameFromClient[O pdoknlv3.WMSWFS](ctx context.Context, ob
3939
return "", fmt.Errorf("configmap %s not found", volumeName)
4040
}
4141

42-
func getExpectedObjects[O pdoknlv3.WMSWFS](ctx context.Context, obj O, includeBlobDownload bool) ([]client.Object, error) {
42+
func getExpectedObjects[O pdoknlv3.WMSWFS](ctx context.Context, obj O, includeBlobDownload bool, includeMapfileGeneratorConfigMap bool) ([]client.Object, error) {
4343
bareObjects := getSharedBareObjects(obj)
4444
var objects []client.Object
4545

@@ -59,13 +59,15 @@ func getExpectedObjects[O pdoknlv3.WMSWFS](ctx context.Context, obj O, includeBl
5959
cm.Name = hashedName
6060
objects = append(objects, cm)
6161

62-
cm = getBareConfigMapMapfileGenerator(obj)
63-
hashedName, err = getHashedConfigMapNameFromClient(ctx, obj, mapserver.ConfigMapMapfileGeneratorVolumeName)
64-
if err != nil {
65-
return objects, err
62+
if includeMapfileGeneratorConfigMap {
63+
cm = getBareConfigMapMapfileGenerator(obj)
64+
hashedName, err = getHashedConfigMapNameFromClient(ctx, obj, mapserver.ConfigMapMapfileGeneratorVolumeName)
65+
if err != nil {
66+
return objects, err
67+
}
68+
cm.Name = hashedName
69+
objects = append(objects, cm)
6670
}
67-
cm.Name = hashedName
68-
objects = append(objects, cm)
6971

7072
cm = getBareConfigMapCapabilitiesGenerator(obj)
7173
hashedName, err = getHashedConfigMapNameFromClient(ctx, obj, mapserver.ConfigMapCapabilitiesGeneratorVolumeName)

internal/controller/wfs_controller.go

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import (
2929

3030
pdoknlv3 "github.com/pdok/mapserver-operator/api/v3"
3131
smoothoperatorv1 "github.com/pdok/smooth-operator/api/v1"
32-
smoothoperatorutils "github.com/pdok/smooth-operator/pkg/util"
3332
apierrors "k8s.io/apimachinery/pkg/api/errors"
3433
"k8s.io/apimachinery/pkg/runtime"
3534
ctrl "sigs.k8s.io/controller-runtime"
@@ -100,17 +99,6 @@ func (r *WFSReconciler) Reconcile(ctx context.Context, req ctrl.Request) (result
10099
return result, client.IgnoreNotFound(err)
101100
}
102101

103-
lgr.Info("Get object full name")
104-
fullName := smoothoperatorutils.GetObjectFullName(r.Client, wfs)
105-
lgr.Info("Finalize if necessary")
106-
shouldContinue, err := smoothoperatorutils.FinalizeIfNecessary(ctx, r.Client, wfs, getFinalizerName(wfs), func() error {
107-
lgr.Info("deleting resources", "name", fullName)
108-
return deleteAllForWMSWFS(ctx, r, wfs, ownerInfo)
109-
})
110-
if !shouldContinue || err != nil {
111-
return result, err
112-
}
113-
114102
lgr.Info("creating resources for wfs", "wfs", wfs)
115103
operationResults, err := createOrUpdateAllForWMSWFS(ctx, r, wfs, ownerInfo)
116104
if err != nil {

internal/controller/wfs_controller_test.go

Lines changed: 17 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ package controller
2828
import (
2929
"context"
3030
_ "embed"
31-
"errors"
3231
"fmt"
3332
"slices"
3433

@@ -73,6 +72,7 @@ var _ = Describe("WFS Controller", func() {
7372
Name: ownerInfoResourceName,
7473
}
7574
ownerInfo := &smoothoperatorv1.OwnerInfo{}
75+
initScripts, includeMapfileGeneratorConfigMap := true, true
7676

7777
BeforeEach(func() {
7878
pdoknlv3.SetHost("localhost")
@@ -121,6 +121,20 @@ var _ = Describe("WFS Controller", func() {
121121

122122
By("Cleanup the specific resource instance OwnerInfo")
123123
Expect(k8sClient.Delete(ctx, ownerInfoResource)).To(Succeed())
124+
125+
// the testEnv does not do garbage collection (https://book.kubebuilder.io/reference/envtest#testing-considerations)
126+
By("Cleaning Owned Resources")
127+
objects, err := getExpectedObjects(ctx, wfs, initScripts, includeMapfileGeneratorConfigMap)
128+
Expect(err).NotTo(HaveOccurred())
129+
for _, o := range objects {
130+
objectKey := client.ObjectKey{
131+
Namespace: o.GetNamespace(),
132+
Name: o.GetName(),
133+
}
134+
err := k8sClient.Get(ctx, objectKey, o)
135+
Expect(err).NotTo(HaveOccurred())
136+
Expect(k8sClient.Delete(ctx, o)).To(Succeed())
137+
}
124138
})
125139

126140
It("Should successfully reconcile the resource", func() {
@@ -130,7 +144,8 @@ var _ = Describe("WFS Controller", func() {
130144
reconcileWFS(controllerReconciler, wfs, typeNamespacedNameWfs)
131145

132146
By("Waiting for the owned resources to be created")
133-
expectedBareObjects, err := getExpectedObjects(ctx, wfs, false)
147+
initScripts = false
148+
expectedBareObjects, err := getExpectedObjects(ctx, wfs, initScripts, includeMapfileGeneratorConfigMap)
134149
Expect(err).NotTo(HaveOccurred())
135150

136151
Eventually(func() error {
@@ -149,32 +164,6 @@ var _ = Describe("WFS Controller", func() {
149164
// TODO fix
150165
Expect(len(wfs.Status.Conditions)).To(BeEquivalentTo(1))
151166
Expect(wfs.Status.Conditions[0].Status).To(BeEquivalentTo(metav1.ConditionTrue))
152-
153-
By("Deleting the WFS")
154-
Expect(k8sClient.Delete(ctx, wfs)).To(Succeed())
155-
156-
By("Reconciling the WFS again")
157-
_, err = controllerReconciler.Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedNameWfs})
158-
Expect(err).NotTo(HaveOccurred())
159-
160-
By("Waiting for the owned resources to be deleted")
161-
Eventually(func() error {
162-
for _, o := range expectedBareObjects {
163-
// TODO make finalizers work in the test environment
164-
if len(o.GetFinalizers()) > 0 {
165-
continue
166-
}
167-
168-
err := k8sClient.Get(ctx, types.NamespacedName{Namespace: namespace, Name: o.GetName()}, o)
169-
if err == nil {
170-
return errors.New("expected " + smoothoperatorutils.GetObjectFullName(k8sClient, o) + " to not be found")
171-
}
172-
if !k8serrors.IsNotFound(err) {
173-
return err
174-
}
175-
}
176-
return nil
177-
}, "10s", "1s").Should(Not(HaveOccurred()))
178167
})
179168

180169
It("Should successfully reconcile after a change in an owned resource", func() {
@@ -672,14 +661,6 @@ func reconcileWFS(r *WFSReconciler, wfs *pdoknlv3.WFS, typeNamespacedNameWfs typ
672661
// Check it's there
673662
err = k8sClient.Get(ctx, typeNamespacedNameWfs, wfs)
674663
Expect(err).NotTo(HaveOccurred())
675-
676-
// Check finalizers
677-
finalizerName := getFinalizerName(wfs)
678-
Expect(wfs.Finalizers).To(ContainElement(finalizerName))
679-
680-
// Reconcile again
681-
_, err = r.Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedNameWfs})
682-
Expect(err).NotTo(HaveOccurred())
683664
}
684665

685666
//go:embed test_manifests/v3_wfs.yaml

internal/controller/wms_controller.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -110,17 +110,6 @@ func (r *WMSReconciler) Reconcile(ctx context.Context, req ctrl.Request) (result
110110
return result, client.IgnoreNotFound(err)
111111
}
112112

113-
lgr.Info("Get object full name")
114-
fullName := smoothoperatorutils.GetObjectFullName(r.Client, wms)
115-
lgr.Info("Finalize if necessary")
116-
shouldContinue, err := smoothoperatorutils.FinalizeIfNecessary(ctx, r.Client, wms, getFinalizerName(wms), func() error {
117-
lgr.Info("deleting resources", "name", fullName)
118-
return deleteAllForWMSWFS(ctx, r, wms, ownerInfo)
119-
})
120-
if !shouldContinue || err != nil {
121-
return result, err
122-
}
123-
124113
lgr.Info("creating resources for wms", "wms", wms)
125114
operationResults, err := createOrUpdateAllForWMSWFS(ctx, r, wms, ownerInfo)
126115
if err != nil {

internal/controller/wms_controller_test.go

Lines changed: 18 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ package controller
2828
import (
2929
"context"
3030
_ "embed"
31-
"errors"
3231
"fmt"
3332
"slices"
3433

@@ -73,6 +72,7 @@ var _ = Describe("WMS Controller", func() {
7372
Name: ownerInfoResourceName,
7473
}
7574
ownerInfo := &smoothoperatorv1.OwnerInfo{}
75+
initScripts, mapfileGenerator := true, true
7676

7777
BeforeEach(func() {
7878
pdoknlv3.SetHost("localhost")
@@ -118,6 +118,20 @@ var _ = Describe("WMS Controller", func() {
118118

119119
By("Cleanup the specific resource instance OwnerInfo")
120120
Expect(k8sClient.Delete(ctx, ownerInfoResource)).To(Succeed())
121+
122+
// the testEnv does not do garbage collection (https://book.kubebuilder.io/reference/envtest#testing-considerations)
123+
By("Cleaning Owned Resources")
124+
objects, err := getExpectedObjects(ctx, wms, initScripts, mapfileGenerator)
125+
Expect(err).NotTo(HaveOccurred())
126+
for _, o := range objects {
127+
objectKey := client.ObjectKey{
128+
Namespace: o.GetNamespace(),
129+
Name: o.GetName(),
130+
}
131+
err := k8sClient.Get(ctx, objectKey, o)
132+
Expect(err).NotTo(HaveOccurred())
133+
Expect(k8sClient.Delete(ctx, o)).To(Succeed())
134+
}
121135
})
122136

123137
It("Should successfully reconcile the resource", func() {
@@ -127,7 +141,8 @@ var _ = Describe("WMS Controller", func() {
127141
reconcileWMS(controllerReconciler, wms, typeNamespacedNameWms)
128142

129143
By("Waiting for the owned resources to be created")
130-
expectedBareObjects, err := getExpectedObjects(ctx, wms, false)
144+
initScripts = false
145+
expectedBareObjects, err := getExpectedObjects(ctx, wms, initScripts, mapfileGenerator)
131146
Expect(err).NotTo(HaveOccurred())
132147

133148
Eventually(func() error {
@@ -146,32 +161,6 @@ var _ = Describe("WMS Controller", func() {
146161

147162
Expect(len(wms.Status.Conditions)).To(BeEquivalentTo(1))
148163
Expect(wms.Status.Conditions[0].Status).To(BeEquivalentTo(metav1.ConditionTrue))
149-
150-
By("Deleting the WMS")
151-
Expect(k8sClient.Delete(ctx, wms)).To(Succeed())
152-
153-
By("Reconciling the WMS again")
154-
_, err = controllerReconciler.Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedNameWms})
155-
Expect(err).NotTo(HaveOccurred())
156-
157-
By("Waiting for the owned resources to be deleted")
158-
Eventually(func() error {
159-
for _, o := range expectedBareObjects {
160-
// TODO make finalizers work in the test environment
161-
if len(o.GetFinalizers()) > 0 {
162-
continue
163-
}
164-
165-
err := k8sClient.Get(ctx, types.NamespacedName{Namespace: namespace, Name: o.GetName()}, o)
166-
if err == nil {
167-
return errors.New("expected " + smoothoperatorutils.GetObjectFullName(k8sClient, o) + " to not be found")
168-
}
169-
if !k8serrors.IsNotFound(err) {
170-
return err
171-
}
172-
}
173-
return nil
174-
}, "10s", "1s").Should(Not(HaveOccurred()))
175164
})
176165

177166
It("Should successfully reconcile after a change in an owned resource", func() {
@@ -930,7 +919,7 @@ var _ = Describe("WMS Controller", func() {
930919
Expect(k8sClient.Get(ctx, typeNamespacedNameWms, wms)).To(Succeed())
931920

932921
controllerReconciler := getWMSReconciler()
933-
922+
mapfileGenerator = false
934923
By("Reconciling the WMS and checking the configMap")
935924
reconcileWMS(controllerReconciler, wms, typeNamespacedNameWms)
936925
deployment := &appsv1.Deployment{}
@@ -986,14 +975,6 @@ func reconcileWMS(r *WMSReconciler, wms *pdoknlv3.WMS, typeNamespacedNameWms typ
986975
// Check it's there
987976
err = k8sClient.Get(ctx, typeNamespacedNameWms, wms)
988977
Expect(err).NotTo(HaveOccurred())
989-
990-
// Check finalizers
991-
finalizerName := getFinalizerName(wms)
992-
Expect(wms.Finalizers).To(ContainElement(finalizerName))
993-
994-
// Reconcile again
995-
_, err = r.Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedNameWms})
996-
Expect(err).NotTo(HaveOccurred())
997978
}
998979

999980
//go:embed test_manifests/v3_wms.yaml

0 commit comments

Comments
 (0)