Skip to content

Commit 8478433

Browse files
fix(AlertRuleGroup): .spec.editable cannot be be disabled (#2276)
* fix(controller/alertrulegroup_controller): set disable provenance header only if editable is true * fix(alertrulegroup): use pointer for disableProvenance to properly control header presence * Update controllers/alertrulegroup_controller.go Co-authored-by: Steffen Baarsgaard <steff.bpoulsen@gmail.com> --------- Co-authored-by: Steffen Baarsgaard <steff.bpoulsen@gmail.com>
1 parent 99b2e72 commit 8478433

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

controllers/alertrulegroup_controller.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,11 @@ func (r *GrafanaAlertRuleGroupReconciler) Reconcile(ctx context.Context, req ctr
118118
return ctrl.Result{}, fmt.Errorf("folder uid not found, alert rule must reference a folder")
119119
}
120120

121-
editable := "true" //nolint:goconst
122-
if group.Spec.Editable != nil && !*group.Spec.Editable {
123-
editable = "false"
121+
var disableProvenance *string
122+
123+
if group.Spec.Editable != nil && *group.Spec.Editable {
124+
trueStr := "true"
125+
disableProvenance = &trueStr
124126
}
125127

126128
mGroup := crToModel(group, folderUID)
@@ -130,7 +132,7 @@ func (r *GrafanaAlertRuleGroupReconciler) Reconcile(ctx context.Context, req ctr
130132
applyErrors := make(map[string]string)
131133

132134
for _, grafana := range instances {
133-
err := r.reconcileWithInstance(ctx, &grafana, group, &mGroup, editable)
135+
err := r.reconcileWithInstance(ctx, &grafana, group, &mGroup, disableProvenance)
134136
if err != nil {
135137
applyErrors[fmt.Sprintf("%s/%s", grafana.Namespace, grafana.Name)] = err.Error()
136138
}
@@ -214,7 +216,7 @@ func crToModel(cr *grafanav1beta1.GrafanaAlertRuleGroup, folderUID string) model
214216
}
215217
}
216218

217-
func (r *GrafanaAlertRuleGroupReconciler) reconcileWithInstance(ctx context.Context, instance *grafanav1beta1.Grafana, group *grafanav1beta1.GrafanaAlertRuleGroup, mGroup *models.AlertRuleGroup, disableProvenance string) error {
219+
func (r *GrafanaAlertRuleGroupReconciler) reconcileWithInstance(ctx context.Context, instance *grafanav1beta1.Grafana, group *grafanav1beta1.GrafanaAlertRuleGroup, mGroup *models.AlertRuleGroup, disableProvenance *string) error {
218220
cl, err := client2.NewGeneratedGrafanaClient(ctx, r.Client, instance)
219221
if err != nil {
220222
return fmt.Errorf("building grafana client: %w", err)
@@ -260,7 +262,7 @@ func (r *GrafanaAlertRuleGroupReconciler) reconcileWithInstance(ctx context.Cont
260262
if !ruleExists {
261263
params := provisioning.NewPostAlertRuleParams().
262264
WithBody(mRule).
263-
WithXDisableProvenance(&disableProvenance)
265+
WithXDisableProvenance(disableProvenance)
264266

265267
_, err = cl.Provisioning.PostAlertRule(params) //nolint:errcheck
266268
if err != nil {
@@ -275,7 +277,7 @@ func (r *GrafanaAlertRuleGroupReconciler) reconcileWithInstance(ctx context.Cont
275277
WithBody(mGroup).
276278
WithGroup(mGroup.Title).
277279
WithFolderUID(folderUID).
278-
WithXDisableProvenance(&disableProvenance)
280+
WithXDisableProvenance(disableProvenance)
279281

280282
_, err = cl.Provisioning.PutAlertRuleGroup(params) //nolint:errcheck
281283
if err != nil {

0 commit comments

Comments
 (0)