feat(DPA): Add options.burstable + CPURequestsRemoveLimitsMemoryRequestsAndLimits controlled values#2902
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2902 +/- ##
=======================================
Coverage 41.39% 41.39%
=======================================
Files 331 331
Lines 28911 28911
=======================================
Hits 11969 11969
Misses 16086 16086
Partials 856 856
Flags with carried forward coverage won't be shown. Click here to find out more. Continue to review full report in Codecov by Sentry.
🚀 New features to boost your workflow:
|
|
🎯 Code Coverage (details) 🔗 Commit SHA: 0a338e7 | Docs | Datadog PR Page | Give us feedback! |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c59fc90bbc
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| enum: | ||
| - RequestsAndLimits | ||
| - RequestsOnly | ||
| - CPURequestsRemoveLimitsMemoryRequestsAndLimits |
There was a problem hiding this comment.
Regenerate packaged CRDs for new controlledValues enum
This adds CPURequestsRemoveLimitsMemoryRequestsAndLimits to the source CRD schema, but the distributed CRD artifacts still shipped from this repo (bundle/manifests/datadoghq.com_datadogpodautoscalers.yaml and marketplaces/charts/google-marketplace/chart/datadog-mp/templates/manifests.yaml) still only allow RequestsAndLimits and RequestsOnly. In installs that use those packaged manifests (OLM bundle / marketplace), the new mode will be rejected by CRD validation, so the feature is only partially delivered.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
no need, the bundle files will be updated during the operator release process
…calerContainerControlledValues Introduce a new mixed-mode enum value that applies different strategies per resource type: CPU requests are controlled while any existing CPU limit is removed (to avoid throttling), and memory controls both requests and limits. Also add doc comments to all three enum values to clarify their respective behaviours. Assisted-by: Claude:claude-sonnet-4-6
c59fc90 to
d632536
Compare
Adds spec.options.burstable to DPA and DPACP template, allowing users to explicitly enable burstable mode (removes CPU limits, grants Burstable QoS class). When unset, the effective value is determined by the Cluster Agent setting autoscaling.workload.behavior.burstable and reflected back in status.options.burstable. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
d632536 to
adf7661
Compare
| // granting the pod a Burstable QoS class and allowing it to consume idle node CPU capacity beyond its requests. | ||
| // If not set, the default value is determined by the Cluster Agent setting autoscaling.workload.options.burstable. | ||
| // +optional | ||
| Burstable *bool `json:"burstable,omitempty"` |
There was a problem hiding this comment.
As I already shared, I don't think this option should be exposed, I believe both the naming and the duplication is causing an issue.
| // When not set in the spec, this reflects the default determined by the Cluster Agent | ||
| // setting autoscaling.workload.options.burstable. | ||
| // +optional | ||
| Burstable *bool `json:"burstable,omitempty"` |
There was a problem hiding this comment.
Given that it can be set per-container, I don't believe the option makes sense at all.
Summary
CPURequestsRemoveLimitsMemoryRequestsAndLimitsenum value toDatadogPodAutoscalerContainerControlledValuesburstableoption toDatadogPodAutoscalerOptions(spec) andDatadogPodAutoscalerOptionsStatus(status); when set, removes CPU limits from containers granting Burstable QoS. The Cluster Agent default is controlled by the settingautoscaling.workload.options.burstablemake generateTest plan
burstable: truein spec removes CPU limits and sets Burstable QoSburstableunset in spec falls back to the Cluster Agent settingautoscaling.workload.options.burstable🤖 Assisted-by: Claude:claude-sonnet-4-6 sparse smatch