Skip to content

Commit 9d9d932

Browse files
authored
Add structured reporting diff to LoggingLogMetric (#6725)
### BRIEF Change description Fixes #6592 #### WHY do we need this change? Add structured reporting diff to the controller in `pkg/controller/direct/logging/logmetric_controller.go`. The `structuredreporting.ReportDiff` should be used in the `Update` method of the adapter to report which fields are being updated. This helps in debugging reconciliation loops and provides better visibility into what changed. #### Special notes for your reviewer: #### Does this PR add something which needs to be 'release noted'? ```release-note NONE ``` #### Additional documentation e.g., references, usage docs, etc.: ```docs NONE ``` #### Intended Milestone - [ ] Reviewer tagged PR with the actual milestone. ### Tests you have done - [ ] Run `make ready-pr` to ensure this PR is ready for review. - [ ] Perform necessary E2E testing for changed resources.
2 parents 11b9cc7 + 4c77189 commit 9d9d932

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

pkg/controller/direct/logging/logmetric_controller.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333
"github.com/GoogleCloudPlatform/k8s-config-connector/pkg/controller/direct"
3434
"github.com/GoogleCloudPlatform/k8s-config-connector/pkg/controller/direct/directbase"
3535
"github.com/GoogleCloudPlatform/k8s-config-connector/pkg/controller/direct/registry"
36+
"github.com/GoogleCloudPlatform/k8s-config-connector/pkg/structuredreporting"
3637
)
3738

3839
const ctrlName = "logmetric-controller"
@@ -249,18 +250,23 @@ func (a *logMetricAdapter) Update(ctx context.Context, updateOp *directbase.Upda
249250
latest := a.actual
250251

251252
if a.hasChanges(ctx, u) {
253+
report := &structuredreporting.Diff{Object: updateOp.GetUnstructured()}
254+
252255
update := new(api.LogMetric)
253256
*update = *a.actual
254257

255258
if direct.ValueOf(a.desired.Spec.Description) != a.actual.Description {
259+
report.AddField("description", a.actual.Description, direct.ValueOf(a.desired.Spec.Description))
256260
update.Description = direct.ValueOf(a.desired.Spec.Description)
257261
}
258262
if direct.ValueOf(a.desired.Spec.Disabled) != a.actual.Disabled {
263+
report.AddField("disabled", a.actual.Disabled, direct.ValueOf(a.desired.Spec.Disabled))
259264
update.Disabled = direct.ValueOf(a.desired.Spec.Disabled)
260265
}
261266
if a.desired.Spec.Filter != a.actual.Filter {
262267
// todo acpana: revisit UX, err out if filter of desired is empty
263268
if a.desired.Spec.Filter != "" {
269+
report.AddField("filter", a.actual.Filter, a.desired.Spec.Filter)
264270
update.Filter = a.desired.Spec.Filter
265271
} else {
266272
// filter is a REQUIRED field
@@ -270,24 +276,31 @@ func (a *logMetricAdapter) Update(ctx context.Context, updateOp *directbase.Upda
270276

271277
desired := convertKCCtoAPI(&a.desired.Spec)
272278
if !compareMetricDescriptors(desired.MetricDescriptor, a.actual.MetricDescriptor) {
279+
report.AddField("metric_descriptor", a.actual.MetricDescriptor, desired.MetricDescriptor)
273280
update.MetricDescriptor = desired.MetricDescriptor
274281
}
275282

276283
if !reflect.DeepEqual(a.desired.Spec.LabelExtractors, a.actual.LabelExtractors) {
284+
report.AddField("label_extractors", a.actual.LabelExtractors, a.desired.Spec.LabelExtractors)
277285
update.LabelExtractors = a.desired.Spec.LabelExtractors
278286
}
279287

280288
if !compareBucketOptions(a.desired.Spec.BucketOptions, a.actual.BucketOptions) {
289+
report.AddField("bucket_options", a.actual.BucketOptions, a.desired.Spec.BucketOptions)
281290
update.BucketOptions = convertKCCtoAPIForBucketOptions(a.desired.Spec.BucketOptions)
282291
}
283292

284293
if direct.ValueOf(a.desired.Spec.ValueExtractor) != a.actual.ValueExtractor {
294+
report.AddField("value_extractor", a.actual.ValueExtractor, direct.ValueOf(a.desired.Spec.ValueExtractor))
285295
update.ValueExtractor = direct.ValueOf(a.desired.Spec.ValueExtractor)
286296
}
287297
if a.desired.Spec.LoggingLogBucketRef != nil && a.desired.Spec.LoggingLogBucketRef.External != a.actual.BucketName {
298+
report.AddField("bucket_name", a.actual.BucketName, a.desired.Spec.LoggingLogBucketRef.External)
288299
update.BucketName = a.desired.Spec.LoggingLogBucketRef.External
289300
}
290301

302+
structuredreporting.ReportDiff(ctx, report)
303+
291304
diffs, err := ListFieldDiffs(a.actual, update)
292305
if err != nil {
293306
// Don't return an error as we're only logging

0 commit comments

Comments
 (0)