Skip to content

Commit b524e1a

Browse files
author
Jelle Dijkstra
committed
Status subresource
1 parent fb967b9 commit b524e1a

File tree

10 files changed

+89
-13
lines changed

10 files changed

+89
-13
lines changed

api/v2beta1/shared_conversion.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package v2beta1
22

33
import (
4+
"net/url"
5+
"strings"
6+
47
pdoknlv3 "github.com/pdok/mapserver-operator/api/v3"
58
"github.com/pdok/mapserver-operator/internal/controller/constants"
69
smoothoperatormodel "github.com/pdok/smooth-operator/model"
710
smoothoperatorutils "github.com/pdok/smooth-operator/pkg/util"
8-
"net/url"
9-
"strings"
1011

1112
autoscalingv2 "k8s.io/api/autoscaling/v2"
1213
corev1 "k8s.io/api/core/v1"

config/crd/bases/pdok.nl_wfs.yaml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1142,6 +1142,33 @@ spec:
11421142
type: string
11431143
description: The result of creating or updating of each derived resource for this Atom.
11441144
type: object
1145+
podSummary:
1146+
description: Summary of status of pods that belong to this resource
1147+
items:
1148+
properties:
1149+
available:
1150+
format: int32
1151+
type: integer
1152+
generation:
1153+
format: int32
1154+
type: integer
1155+
ready:
1156+
format: int32
1157+
type: integer
1158+
total:
1159+
format: int32
1160+
type: integer
1161+
unavailable:
1162+
format: int32
1163+
type: integer
1164+
required:
1165+
- available
1166+
- generation
1167+
- ready
1168+
- total
1169+
- unavailable
1170+
type: object
1171+
type: array
11451172
type: object
11461173
required:
11471174
- spec

config/crd/bases/pdok.nl_wms.yaml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1729,6 +1729,33 @@ spec:
17291729
type: string
17301730
description: The result of creating or updating of each derived resource for this Atom.
17311731
type: object
1732+
podSummary:
1733+
description: Summary of status of pods that belong to this resource
1734+
items:
1735+
properties:
1736+
available:
1737+
format: int32
1738+
type: integer
1739+
generation:
1740+
format: int32
1741+
type: integer
1742+
ready:
1743+
format: int32
1744+
type: integer
1745+
total:
1746+
format: int32
1747+
type: integer
1748+
unavailable:
1749+
format: int32
1750+
type: integer
1751+
required:
1752+
- available
1753+
- generation
1754+
- ready
1755+
- total
1756+
- unavailable
1757+
type: object
1758+
type: array
17321759
type: object
17331760
required:
17341761
- spec

config/rbac/role.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@ rules:
3535
- list
3636
- update
3737
- watch
38+
- apiGroups:
39+
- apps
40+
resources:
41+
- replicasets
42+
verbs:
43+
- get
44+
- list
45+
- watch
3846
- apiGroups:
3947
- autoscaling
4048
resources:

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ require (
1313
github.com/pdok/featureinfo-generator v1.4.0
1414
github.com/pdok/ogc-capabilities-generator v1.0.1
1515
github.com/pdok/ogc-specifications v1.0.0
16-
github.com/pdok/smooth-operator v1.0.0
16+
github.com/pdok/smooth-operator v1.1.1
1717
github.com/peterbourgon/ff v1.7.1
1818
github.com/stretchr/testify v1.10.0
1919
github.com/traefik/traefik/v3 v3.4.1
@@ -24,7 +24,7 @@ require (
2424
sigs.k8s.io/yaml v1.4.0
2525
)
2626

27-
replace github.com/pdok/smooth-operator => ../smooth-operator
27+
// replace github.com/pdok/smooth-operator => ../smooth-operator
2828

2929
replace github.com/abbot/go-http-auth => github.com/abbot/go-http-auth v0.4.0 // for github.com/traefik/traefik/v3
3030

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,8 @@ github.com/pdok/ogc-capabilities-generator v1.0.1 h1:7cKgdcWO4y+M9a2hW8ONhmBxGER
152152
github.com/pdok/ogc-capabilities-generator v1.0.1/go.mod h1:Fnq2i1X3Aufjx/ptQ34c9knw1mDMUAQt0MTBscqX0/M=
153153
github.com/pdok/ogc-specifications v1.0.0 h1:YqVqKwgOrPprTuRcNrFJeUuxSHOIeOSQStBcYJZUGcA=
154154
github.com/pdok/ogc-specifications v1.0.0/go.mod h1:YDngwkwrWOfc5MYnEYseiv97K1Y9bZXlVzwi/8EaIl8=
155-
github.com/pdok/smooth-operator v1.0.0 h1:Gp5DG2FQ3uujxWQX/647ZcyVk2EhNZPBD+lMxpLHotI=
156-
github.com/pdok/smooth-operator v1.0.0/go.mod h1:przwM7mBGmNPqabyhImKVZ15WL4zbqLqH4ExbuWKhWE=
155+
github.com/pdok/smooth-operator v1.1.1 h1:nKLXYnZooORpBzDwjl69WplVf+2y4pu8j8qVzvepbJU=
156+
github.com/pdok/smooth-operator v1.1.1/go.mod h1:tqr/CDCXZHNzQzQVlSAnCmsPlx9tWAObsj8hg9mSSEU=
157157
github.com/pelletier/go-toml v1.6.0/go.mod h1:5N711Q9dKgbdkxHL+MEfF31hpT7l0S0s/t2kKREewys=
158158
github.com/peterbourgon/ff v1.7.1 h1:xt1lxTG+Nr2+tFtysY7abFgPoH3Lug8CwYJMOmJRXhk=
159159
github.com/peterbourgon/ff v1.7.1/go.mod h1:fYI5YA+3RDqQRExmFbHnBjEeWzh9TrS8rnRpEq7XIg0=

internal/controller/shared_controller.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ package controller
33
import (
44
"context"
55
"fmt"
6-
ctrl "sigs.k8s.io/controller-runtime"
76
"strconv"
87
"strings"
98
"time"
109

10+
ctrl "sigs.k8s.io/controller-runtime"
11+
1112
"github.com/pkg/errors"
1213

1314
traefikiov1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikio/v1alpha1"
@@ -39,20 +40,25 @@ const (
3940
)
4041

4142
func createControllerManager(mgr ctrl.Manager, obj client.Object) *builder.TypedBuilder[reconcile.Request] {
42-
kind := obj.GetObjectKind().GroupVersionKind().Kind
43+
var kind string
44+
switch any(obj).(type) {
45+
case *pdoknlv3.WMS:
46+
kind = "WMS"
47+
case *pdoknlv3.WFS:
48+
kind = "WFS"
49+
}
4350

4451
controllerMgr := ctrl.NewControllerManagedBy(mgr).For(obj).Named(strings.ToLower(kind))
4552
controllerMgr.Owns(&corev1.ConfigMap{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})).
4653
Owns(&appsv1.Deployment{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})).
47-
WithEventFilter(predicate.Or(predicate.GenerationChangedPredicate{}, predicate.LabelChangedPredicate{})).
4854
Owns(&corev1.Service{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})).
4955
Owns(&traefikiov1alpha1.Middleware{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})).
5056
Owns(&traefikiov1alpha1.IngressRoute{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})).
5157
Owns(&autoscalingv2.HorizontalPodAutoscaler{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})).
5258
Owns(&policyv1.PodDisruptionBudget{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})).
5359
Owns(&smoothoperatorv1.OwnerInfo{}, builder.WithPredicates(predicate.GenerationChangedPredicate{}))
5460

55-
return controllerMgr.Watches(&appsv1.ReplicaSet{}, smoothoperatorstatus.GetReplicaSetEventHandlerForObj(mgr, obj))
61+
return controllerMgr.Watches(&appsv1.ReplicaSet{}, smoothoperatorstatus.GetReplicaSetEventHandlerForObj(mgr, kind))
5662
}
5763

5864
func ttlExpired[O pdoknlv3.WMSWFS](obj O) bool {

internal/controller/status.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ package controller
22

33
import (
44
"context"
5-
smoothoperatorstatus "github.com/pdok/smooth-operator/pkg/status"
65
"time"
76

7+
smoothoperatorstatus "github.com/pdok/smooth-operator/pkg/status"
8+
89
pdoknlv3 "github.com/pdok/mapserver-operator/api/v3"
910
smoothoperatormodel "github.com/pdok/smooth-operator/model"
1011
"k8s.io/apimachinery/pkg/api/equality"
@@ -72,14 +73,17 @@ func updateStatus[R Reconciler](ctx context.Context, r R, obj client.Object, con
7273
status = &any(obj).(*pdoknlv3.WMS).Status
7374
}
7475

75-
ps, err := smoothoperatorstatus.GetPodSummary(ctx, obj)
76+
podSummary, err := smoothoperatorstatus.GetPodSummary(ctx, getReconcilerClient(r), obj)
7677
if err != nil {
7778
lgr.Error(err, "unable to get pod summary for status update")
7879
return
7980
}
80-
status.PodSummary = ps
8181

8282
changed := false
83+
if !equality.Semantic.DeepEqual(status.PodSummary, podSummary) {
84+
status.PodSummary = podSummary
85+
changed = true
86+
}
8387
for _, condition := range conditions {
8488
if meta.SetStatusCondition(&status.Conditions, condition) {
8589
changed = true

internal/controller/wfs_controller.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ package controller
2626

2727
import (
2828
"context"
29+
2930
"github.com/pdok/mapserver-operator/internal/controller/types"
3031

3132
pdoknlv3 "github.com/pdok/mapserver-operator/api/v3"
@@ -50,6 +51,7 @@ type WFSReconciler struct {
5051
// +kubebuilder:rbac:groups=pdok.nl,resources=ownerinfo,verbs=get;list;watch
5152
// +kubebuilder:rbac:groups=pdok.nl,resources=ownerinfo/status,verbs=get
5253
// +kubebuilder:rbac:groups=apps,resources=deployments,verbs=get;list;watch;create;update;delete
54+
// +kubebuilder:rbac:groups=apps,resources=replicasets,verbs=get;list;watch
5355
// +kubebuilder:rbac:groups=core,resources=configmaps;services,verbs=watch;create;get;update;list;delete
5456
// +kubebuilder:rbac:groups=core,resources=secrets,verbs=watch;list;get
5557
// +kubebuilder:rbac:groups=autoscaling,resources=horizontalpodautoscalers,verbs=watch;create;get;update;list;delete

internal/controller/wms_controller.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ type WMSReconciler struct {
6262
// +kubebuilder:rbac:groups=pdok.nl,resources=ownerinfo,verbs=get;list;watch
6363
// +kubebuilder:rbac:groups=pdok.nl,resources=ownerinfo/status,verbs=
6464
// +kubebuilder:rbac:groups=apps,resources=deployments,verbs=get;list;watch;create;update;delete
65+
// +kubebuilder:rbac:groups=apps,resources=replicasets,verbs=get;list;watch
6566
// +kubebuilder:rbac:groups=core,resources=configmaps;services,verbs=watch;create;get;update;list;delete
6667
// +kubebuilder:rbac:groups=core,resources=secrets,verbs=watch;list;get
6768
// +kubebuilder:rbac:groups=traefik.io,resources=ingressroutes;middlewares,verbs=get;list;watch;create;update;delete

0 commit comments

Comments
 (0)