Skip to content

Conversation

@eofff
Copy link
Contributor

@eofff eofff commented Oct 31, 2025

Description

Add e2e test for VM restore VMOP.

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: vmop
type: chore
summary: Add restore vmop e2e test.
impact_level: low

@sourcery-ai
Copy link
Contributor

sourcery-ai bot commented Oct 31, 2025

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
Loading

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
Loading

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

@eofff eofff changed the title test: add vmop restore e2e test test(vmop): add vmop restore e2e test Oct 31, 2025
@eofff eofff changed the title test(vmop): add vmop restore e2e test test(vmop): add restore vmop e2e test Oct 31, 2025
@eofff eofff added this to the v1.2.0 milestone Oct 31, 2025
@eofff eofff requested a review from hardcoretime October 31, 2025 14:20
@eofff eofff marked this pull request as ready for review October 31, 2025 14:21
Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey there - I've reviewed your changes - here's some feedback:

  • The vmop/restore.go e2e test is quite large and repetitive; consider breaking it into smaller table-driven subtests or extracting common setup/validation logic into reusable helpers to improve readability and maintainability.
  • In the builder functions wrapping vd.New, you append user-provided options after base options, which can lead to precedence issues; consider documenting the override order clearly or prepending base options so callers can reliably override defaults.
  • You introduced Framework.UpdateFromCluster but most retrievals still use f.Clients.GenericClient(); consolidating on a single pattern for updating objects (either the new helper or the existing client) would reduce confusion and duplication.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The `vmop/restore.go` e2e test is quite large and repetitive; consider breaking it into smaller table-driven subtests or extracting common setup/validation logic into reusable helpers to improve readability and maintainability.
- In the builder functions wrapping `vd.New`, you append user-provided options after base options, which can lead to precedence issues; consider documenting the override order clearly or prepending base options so callers can reliably override defaults.
- You introduced `Framework.UpdateFromCluster` but most retrievals still use `f.Clients.GenericClient()`; consolidating on a single pattern for updating objects (either the new helper or the existing client) would reduce confusion and duplication.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@eofff eofff force-pushed the test/e2e/add-vmop-restore-test branch from ffd1511 to 558e087 Compare November 1, 2025 14:03
@eofff eofff marked this pull request as draft November 4, 2025 23:43
@eofff eofff marked this pull request as ready for review November 5, 2025 00:17
@eofff eofff force-pushed the test/e2e/add-vmop-restore-test branch from 4227e81 to 45e1ed1 Compare November 5, 2025 08:40
@eofff eofff marked this pull request as draft November 9, 2025 21:13
@eofff eofff force-pushed the test/e2e/add-vmop-restore-test branch 2 times, most recently from 73ae2a3 to 33ea848 Compare November 11, 2025 12:38
@eofff eofff marked this pull request as ready for review November 11, 2025 14:21
Valeriy Khorunzhin added 11 commits November 12, 2025 12:06
tmp
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
tmp
Signed-off-by: Valeriy Khorunzhin <[email protected]>
tmp
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
tmp
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Valeriy Khorunzhin added 17 commits November 12, 2025 12:06
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
fix
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
fix
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Signed-off-by: Valeriy Khorunzhin <[email protected]>
@eofff eofff force-pushed the test/e2e/add-vmop-restore-test branch from 472bbc7 to 7bb38ab Compare November 12, 2025 09:06
Signed-off-by: Valeriy Khorunzhin <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants