numaproj / numaplane

Control Plane for Numaproj
Apache License 2.0
12 stars 1 forks source link

Integrate USDE logic into Rollout controllers to support PPND - perform selected strategy for isbsvc fields #248

Closed juliev0 closed 4 weeks ago

juliev0 commented 2 months ago

Summary

Integrate the USDE logic to derive an upgrade strategy into the reconciliation process of the ISBServiceRollout for the purpose of selectively handling different strategies for isbsvc field changes.

Relates to this

Similar to PipelineRolloutController, the ISBServiceRolloutController should have an InProgressManager, so that it can maintain the current strategy that's in Progress (Progressive, PPND, or none) such that if 2 subsequent requests come in, or if the user's preferred strategy changes, it will finish what it's in the middle of doing first.


Message from the maintainers:

If you wish to see this enhancement implemented please add a 👍 reaction to this issue! We often sort issues this way to know what to prioritize.

xdevxy commented 1 month ago

close this as it should be covered by #181

juliev0 commented 1 month ago

@xdevxy we are currently not doing any field-specific checks for isbsvc at all, so that's why this issue is here (because of that, I actually updated the wording of https://github.com/numaproj/numaplane/issues/181 to just be for Pipeline fields (sorry for not mentioning))

juliev0 commented 1 month ago

We want to make the isbservicerollout_controller more similar to pipelinerollout_controller.

The pseudocode should be:

// determine if we're trying to update the ISBService spec, and if so, is it a simple change that would be "direct apply" or is it a non-trivial change that would require PPND or Progressive?
isbServiceNeedsToUpdate, upgradeStrategyType, err := usde.ResourceNeedsUpdating 

Is there currently an in-progress-strategy set for this ISBServiceRollout?
If not, do we need to set it?:
  If the user-prefered strategy is PPND && upgradeStrategyType==PPND: set in-progress-strategy to PPND
  If the user-prefered strategy is Progressive && upgradeStrategyType==Progressive: set in-progress-strategy to Progressive

Now do whatever the in-progress-strategy says to do