@@ -24,6 +24,7 @@ import (
24
24
"sigs.k8s.io/controller-runtime/pkg/client"
25
25
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
26
26
"sigs.k8s.io/controller-runtime/pkg/log"
27
+ "sigs.k8s.io/controller-runtime/pkg/metrics"
27
28
28
29
dnsv1alpha1 "github.com/orange-opensource/powerdns-operator/api/v1alpha1"
29
30
)
@@ -40,6 +41,11 @@ type RRsetReconciler struct {
40
41
PDNSClient PdnsClienter
41
42
}
42
43
44
+ func init () {
45
+ // Register custom metrics with the global prometheus registry
46
+ metrics .Registry .MustRegister (rrsetsStatusesMetric )
47
+ }
48
+
43
49
// +kubebuilder:rbac:groups=dns.cav.enablers.ob,resources=rrsets,verbs=get;list;watch;create;update;patch;delete
44
50
// +kubebuilder:rbac:groups=dns.cav.enablers.ob,resources=rrsets/status,verbs=get;update;patch
45
51
// +kubebuilder:rbac:groups=dns.cav.enablers.ob,resources=rrsets/finalizers,verbs=update
@@ -77,6 +83,8 @@ func (r *RRsetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl
77
83
log .Error (err , "Failed to remove finalizer" )
78
84
return ctrl.Result {}, err
79
85
}
86
+ // Remove resource metrics
87
+ removeRrsetMetrics (rrset .Name , rrset .Namespace )
80
88
}
81
89
// Race condition when creating Zone+RRset at the same time
82
90
// RRset is not created because Zone is not created yet
@@ -119,6 +127,9 @@ func (r *RRsetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl
119
127
log .Error (err , "Failed to remove finalizer" )
120
128
return ctrl.Result {}, err
121
129
}
130
+ // Remove resource metrics
131
+ removeRrsetMetrics (rrset .Name , rrset .Namespace )
132
+
122
133
//nolint:ineffassign
123
134
lastUpdateTime = & metav1.Time {Time : time .Now ().UTC ()}
124
135
}
@@ -129,6 +140,9 @@ func (r *RRsetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl
129
140
130
141
// We cannot exit previously (at the early moments of reconcile), because we have to allow deletion process
131
142
if isInFailedStatus {
143
+ // Update resource metrics
144
+ updateRrsetsMetrics (getRRsetName (rrset ), rrset .Spec .Type , * rrset .Status .SyncStatus , rrset .Name , rrset .Namespace )
145
+
132
146
return ctrl.Result {}, nil
133
147
}
134
148
@@ -151,6 +165,10 @@ func (r *RRsetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl
151
165
log .Error (err , "unable to patch RRSet status" )
152
166
return ctrl.Result {}, err
153
167
}
168
+
169
+ // Update resource metrics
170
+ updateRrsetsMetrics (getRRsetName (rrset ), rrset .Spec .Type , * rrset .Status .SyncStatus , rrset .Name , rrset .Namespace )
171
+
154
172
return ctrl.Result {}, nil
155
173
}
156
174
@@ -195,6 +213,9 @@ func (r *RRsetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl
195
213
return ctrl.Result {}, err
196
214
}
197
215
216
+ // Metrics calculation
217
+ updateRrsetsMetrics (getRRsetName (rrset ), rrset .Spec .Type , * rrset .Status .SyncStatus , rrset .Name , rrset .Namespace )
218
+
198
219
return ctrl.Result {}, nil
199
220
}
200
221
0 commit comments