Skip to content

fix set non-empty applied condition reason for invalid profiles#2758

Open
ucpr wants to merge 1 commit intoDataDog:mainfrom
ucpr:fix-dap-condition-reason
Open

fix set non-empty applied condition reason for invalid profiles#2758
ucpr wants to merge 1 commit intoDataDog:mainfrom
ucpr:fix-dap-condition-reason

Conversation

@ucpr
Copy link

@ucpr ucpr commented Mar 15, 2026

What does this PR do?

Fix empty reason field in DatadogAgentProfile status condition that causes Kubernetes API validation errors.

When a profile fails validation, the Applied condition was set with empty Reason and Message fields. Kubernetes requires reason to be at least 1 character, so the status update was rejected.

Motivation

The operator was logging the following error continuously:

{"level":"ERROR","ts":"2026-03-15T15:59:24.713Z","logger":"controllers.DatadogAgent","msg":"unable to update profile status","datadogagentprofile":"system","datadogagentprofile_namespace":"datadog","error":"DatadogAgentProfile.datadoghq.com \"system\" is invalid: status.conditions[1].reason: Invalid value: \"\": conditions[1].reason in body should be at least 1 chars long","stacktrace":"github.com/DataDog/datadog-operator/internal/controller/datadogagent.(*Reconciler).reconcileProfiles\n\t/workspace/internal/controller/datadogagent/profile.go:77\ngithub.com/DataDog/datadog-operator/internal/controller/datadogagent.(*Reconciler).reconcileInstanceV3\n\t/workspace/internal/controller/datadogagent/controller_reconcile_v2.go:96\ngithub.com/DataDog/datadog-operator/internal/controller/datadogagent.(*Reconciler).internalReconcileV2\n\t/workspace/internal/controller/datadogagent/controller_reconcile_v2.go:53\ngithub.com/DataDog/datadog-operator/internal/controller/datadogagent.(*Reconciler).Reconcile\n\t/workspace/internal/controller/datadogagent/controller.go:124\ngithub.com/DataDog/datadog-operator/internal/controller.(*DatadogAgentReconciler).Reconcile\n\t/workspace/internal/controller/datadogagent_controller.go:216\nsigs.k8s.io/controller-runtime/pkg/reconcile.(*objectReconcilerAdapter[...]).Reconcile\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.20.4/pkg/reconcile/reconcile.go:154\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.20.4/pkg/internal/controller/controller.go:119\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.20.4/pkg/internal/controller/controller.go:334\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.20.4/pkg/internal/controller/controller.go:294\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.20.4/pkg/internal/controller/controller.go:255"}

This prevented profile status from being updated when validation failed.

Additional Notes

The fix sets Reason: "Invalid" and Message: "Profile is not valid" for the Applied condition when the profile is invalid, consistent with how other conditions use InvalidConditionReason to indicate the cause.

Minimum Agent Versions

N/A - operator-only change, no agent version requirement.

Describe your test plan

Confirmed that make test passes all tests.

Checklist

  • PR has at least one valid label: bug, enhancement, refactoring, documentation, tooling, and/or dependencies
  • PR has a milestone or the qa/skip-qa label
  • All commits are signed (see: signing commits)

@ucpr ucpr marked this pull request as ready for review March 15, 2026 16:40
@ucpr ucpr requested a review from a team March 15, 2026 16:40
@ucpr ucpr requested a review from a team as a code owner March 15, 2026 16:40
@ucpr
Copy link
Author

ucpr commented Mar 16, 2026

I don't have permission to add labels, so could you please add them for me?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant