virtualization icon indicating copy to clipboard operation
virtualization copied to clipboard

test(vmop): add restore vmop e2e test

Open eofff opened this issue 4 months ago • 1 comments

Description

Add e2e test for VM restore VMOP.

Checklist

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

Changelog entries

section: vmop
type: chore
summary: Add restore vmop e2e test.
impact_level: low

eofff avatar Oct 31 '25 14:10 eofff

Reviewer's Guide

This PR implements a full end-to-end test for VM restore operations via VMOP by extending the test framework with new util and builder helpers, adding a dedicated restore test suite, and updating object constructors to support restore-specific options.

Class diagram for new VM snapshot builder and options

classDiagram
class VirtualMachineSnapshot {
  +TypeMeta
  +ObjectMeta
  +Spec: VirtualMachineSnapshotSpec
}
class VirtualMachineSnapshotSpec {
  +RequiredConsistency: bool
  +KeepIPAddress: KeepIPAddress
  +VirtualMachineName: string
}
class Option {
  <<interface>>
  +apply(vmsnapshot: VirtualMachineSnapshot)
}
VirtualMachineSnapshotSpec <|-- VirtualMachineSnapshot
Option <|.. VirtualMachineSnapshot
VirtualMachineSnapshot "1" *-- "1" VirtualMachineSnapshotSpec

Class diagram for new VMOP restore options

classDiagram
class VirtualMachineOperation {
  +Spec: VirtualMachineOperationSpec
}
class VirtualMachineOperationSpec {
  +Force: bool
  +Restore: VirtualMachineOperationRestoreSpec
}
class VirtualMachineOperationRestoreSpec {
  +Mode: VMOPRestoreMode
  +VirtualMachineSnapshotName: string
}
VirtualMachineOperationSpec <|-- VirtualMachineOperation
VirtualMachineOperationRestoreSpec <|-- VirtualMachineOperationSpec
VirtualMachineOperation "1" *-- "1" VirtualMachineOperationSpec
VirtualMachineOperationSpec "1" *-- "0..1" VirtualMachineOperationRestoreSpec

File-Level Changes

Change Details Files
Add end-to-end VMOP restore test suite
  • Introduce new test file with full restore scenario covering dry-run, best-effort, and strict modes
  • Import the vmop restore suite in the main e2e test harness
test/e2e/vmop/restore.go
test/e2e/e2e_test.go
Extend test utilities for VM, VMOP, VMBDA, VMSnapshot and VD waiting and control
  • Add UntilVMRunning, UntilVirtualMachineStopped, RebootVirtualMachineFromOS, UntilVirtualMachineRebooted to vm util
  • Add UntilVMSnapshotReady, UntilVMOPCompleted, UntilVDReady, UntilVMBDAttached helpers
test/e2e/internal/util/vm.go
test/e2e/internal/util/vmsnapshot.go
test/e2e/internal/util/vmop.go
test/e2e/internal/util/vd.go
test/e2e/internal/util/vmbda.go
Add resource state synchronization method to framework
  • Introduce UpdateFromCluster to refresh Kubernetes objects in-memory from the API server
test/e2e/internal/framework/framework.go
Enhance VirtualDisk builders to accept variadic options
  • Refactor object.New…VDFrom… functions to build base options slice and append custom opts
  • Unify NewGenerated and New constructors signature for VD
test/e2e/internal/object/vd.go
Provide restore-specific builder options for VMOP and new VMSnapshot builder
  • Add WithVMOPRestoreMode and WithVirtualMachineSnapshotName options
  • Implement vmsnapshot builder and its option functions
images/virtualization-artifact/pkg/builder/vmop/option.go
images/virtualization-artifact/pkg/builder/vmsnapshot/vmsnapshot.go
images/virtualization-artifact/pkg/builder/vmsnapshot/option.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 31 '25 14:10 sourcery-ai[bot]

Workflow has started. Follow the progress here: Workflow Run

The target step completed with status: failure.

deckhouse-BOaTswain avatar Dec 04 '25 20:12 deckhouse-BOaTswain