virtualization icon indicating copy to clipboard operation
virtualization copied to clipboard

unplug

Open eofff opened this issue 5 months ago • 7 comments

Description

Why do we need it, and what problem does it solve?

What is the expected result?

Checklist

  • [ ] The code is covered by unit tests.
  • [ ] e2e tests passed.
  • [ ] Documentation updated according to the changes.
  • [ ] Changes were tested in the Kubernetes cluster manually.

Changelog entries

section:
type:
summary:

eofff avatar Oct 08 '25 07:10 eofff

Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Introduces a special case in the provisioning comparator to handle removal of provisioning without requiring a VM restart by emitting an immediate apply change.

Sequence diagram for provisioning removal without VM restart

sequenceDiagram
    participant VMController
    participant "compareProvisioning()"
    participant VM
    VMController->>"compareProvisioning()": Compare current and desired VM specs
    "compareProvisioning()"->>VMController: Return FieldChange with ActionApplyImmediate if provisioning removed
    VMController->>VM: Apply provisioning removal immediately (no restart)

Class diagram for updated compareProvisioning logic

classDiagram
    class VirtualMachineSpec {
        +Provisioning
    }
    class FieldChange {
        +Operation
        +Path
        +CurrentValue
        +DesiredValue
        +ActionRequired
    }
    class compareProvisioning {
        +compareProvisioning(current: VirtualMachineSpec, desired: VirtualMachineSpec): []FieldChange
    }
    VirtualMachineSpec <.. compareProvisioning
    FieldChange <.. compareProvisioning

File-Level Changes

Change Details Files
Handle provisioning removal without restart
  • Added conditional to detect when current provisioning exists and desired provisioning is nil
  • Return a FieldChange with Operation ChangeRemove and ActionApplyImmediate for provisioning removal
images/virtualization-artifact/pkg/controller/vmchange/comparators.go

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an issue from a review comment by replying to it. You can also reply to a review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull request title to generate a title at any time. You can also comment @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in the pull request body to generate a PR summary at any time exactly where you want it. You can also comment @sourcery-ai summary on the pull request to (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the pull request to resolve all Sourcery comments. Useful if you've already addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull request to dismiss all existing Sourcery reviews. Especially useful if you want to start fresh with a new review - don't forget to comment @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

  • Contact our support team for questions or feedback.
  • Visit our documentation for detailed guides and information.
  • Keep in touch with the Sourcery team by following us on X/Twitter, LinkedIn or GitHub.

sourcery-ai[bot] avatar Oct 08 '25 07:10 sourcery-ai[bot]

Workflow has started. Follow the progress here: Workflow Run

The target step completed with status: failure.

deckhouse-BOaTswain avatar Oct 08 '25 08:10 deckhouse-BOaTswain

Workflow has started. Follow the progress here: Workflow Run

The target step completed with status: failure.

deckhouse-BOaTswain avatar Oct 08 '25 11:10 deckhouse-BOaTswain

Workflow has started. Follow the progress here: Workflow Run

The target step completed with status: cancelled.

deckhouse-BOaTswain avatar Oct 09 '25 08:10 deckhouse-BOaTswain

Workflow has started. Follow the progress here: Workflow Run

The target step completed with status: cancelled.

deckhouse-BOaTswain avatar Oct 09 '25 09:10 deckhouse-BOaTswain

Workflow has started. Follow the progress here: Workflow Run

The target step completed with status: failure.

deckhouse-BOaTswain avatar Oct 09 '25 10:10 deckhouse-BOaTswain

Workflow has started. Follow the progress here: Workflow Run

The target step completed with status: cancelled.

deckhouse-BOaTswain avatar Oct 09 '25 10:10 deckhouse-BOaTswain