You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
All three current mechanisms for configuring Velero server args are full overrides, not additive:
Operator defaults (Layer A) — built from individual DPA spec fields (logLevel, itemOperationSyncFrequency, resourceTimeout, etc.)
spec.configuration.velero.args (Layer B) — replaces ALL Layer A defaults. Code explicitly says "we are overriding args, so recreate args from scratch"
oadp.openshift.io/unsupported-velero-server-args annotation + ConfigMap (Layer C) — replaces everything from both Layer A and Layer B
Customers who need to add a single extra flag (e.g., a custom timeout or debug option) must reproduce the entire default args list in their override, which is fragile and version-dependent. If the operator adds new default flags in an upgrade, the customer's override silently drops them.
This gap was surfaced in OADP-7829 (support case 04410122).
Proposed solution
Add extraArgs field to VeleroConfig (and NodeAgentConfig for symmetry) that appends to the operator-computed defaults rather than replacing them:
Problem
All three current mechanisms for configuring Velero server args are full overrides, not additive:
logLevel,itemOperationSyncFrequency,resourceTimeout, etc.)spec.configuration.velero.args(Layer B) — replaces ALL Layer A defaults. Code explicitly says"we are overriding args, so recreate args from scratch"oadp.openshift.io/unsupported-velero-server-argsannotation + ConfigMap (Layer C) — replaces everything from both Layer A and Layer BCustomers who need to add a single extra flag (e.g., a custom timeout or debug option) must reproduce the entire default args list in their override, which is fragile and version-dependent. If the operator adds new default flags in an upgrade, the customer's override silently drops them.
This gap was surfaced in OADP-7829 (support case 04410122).
Proposed solution
Add
extraArgsfield toVeleroConfig(andNodeAgentConfigfor symmetry) that appends to the operator-computed defaults rather than replacing them:Behavior
extraArgsis applied after all operator defaults (and afterargsif set)extraArgs,extraArgsvalue wins (last-writer-wins dedup by flag name)extraArgsis amap[string]string— keys are flag names (without--prefix), values are flag valuesImplementation scope
ExtraArgs map[string]stringtoVeleroConfigandNodeAgentConfiginapi/v1alpha1/dataprotectionapplication_types.gomergeExtraArgs()helper called at end ofcustomizeVeleroContainer()and node-agent equivalentargsfieldRisks and mitigations
mergeExtraArgsdeduplicates by flag name, extraArgs winsargsfieldextraArgsapplies afterargs, composable. Document precedenceNote
Responses generated with Claude