Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Graduation of VolumeUpdateStrategy and VolumeMigration #13288

Merged
merged 3 commits into from
Jan 16, 2025

Conversation

alicefr
Copy link
Member

@alicefr alicefr commented Nov 19, 2024

What this PR does

Before this PR:
Volume Migration was behind a feature gate

After this PR:
The VolumeUpdateStrategy and VolumeMigration features are consider stable and general available.

The VolumeUpdateStrategy and VolumeMigration feature gates were introduced in v1.3.0 by #11533.

Both feature gates have been present for 2 releases and since then, multiple issues have been reported and fixed.
With the graduation of the two feature gates, we want to indicate to KubeVirt users that the feature will remain and that the API may be considered stable for use.

Release note

Graduation of VolumeUpdateStrategy and VolumeMigration feature gates

@kubevirt-bot kubevirt-bot added the release-note Denotes a PR that will be considered when it comes time to generate release notes. label Nov 19, 2024
@kubevirt-bot kubevirt-bot added the dco-signoff: yes Indicates the PR's author has DCO signed all their commits. label Nov 19, 2024
@dosubot dosubot bot added the kind/api-change Categorizes issue or PR as related to adding, removing, or otherwise changing an API label Nov 19, 2024
@alicefr
Copy link
Member Author

alicefr commented Nov 19, 2024

/cc @awels @mhenriks @aglitke
/uncc @victortoso @iholder101

@kubevirt-bot kubevirt-bot requested review from aglitke, awels and mhenriks and removed request for victortoso and iholder101 November 19, 2024 08:35
@xpivarc
Copy link
Member

xpivarc commented Nov 19, 2024

/hold
I would like to #13112 and related issues being fixed first

@kubevirt-bot kubevirt-bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Nov 19, 2024
@alicefr
Copy link
Member Author

alicefr commented Dec 3, 2024

As discussed offline, we don't consider #13112 since there is a mitigation. If the user notice that they missed data from the source it means that the writes were performed on the destination and the transfer has been successful. Hence, the user can switch and replace the source volume with the destination one.

@mhenriks
Copy link
Member

mhenriks commented Dec 4, 2024

/lgtm

@kubevirt-bot kubevirt-bot added the lgtm Indicates that a PR is ready to be merged. label Dec 4, 2024
@xpivarc
Copy link
Member

xpivarc commented Dec 5, 2024

My understanding after offline discussion is that while there is a risk of split brain/corruption we have a way for users to recover. I would still want this to explicitly noted down for users and an issue that would track fixing this in a proper way. As well we should do some testing, either manual in which case we share the steps so reviewers can verify. A automatic test is preferred.

@alicefr
Copy link
Member Author

alicefr commented Dec 5, 2024

My understanding after offline discussion is that while there is a risk of split brain/corruption we have a way for users to recover. I would still want this to explicitly noted down for users and an issue that would track fixing this in a proper way. As well we should do some testing, either manual in which case we share the steps so reviewers can verify. A automatic test is preferred.

Isn't the #13112 enough?

@kubevirt-bot
Copy link
Contributor

Pull requests that are marked with lgtm should receive a review
from an approver within 1 week.

After that period the bot marks them with the label needs-approver-review.

/label needs-approver-review

@kubevirt-bot kubevirt-bot added the needs-approver-review Indicates that a PR requires a review from an approver. label Dec 12, 2024
@aglitke
Copy link
Member

aglitke commented Jan 6, 2025

@xpivarc I would really like to see this merged. While it's true there is a known issue (#13112) this will be fixed and without needing to break the current API. There is no chance that we will delete this feature. In addition, volume migration is optional functionality that is only used when explicitly requested by a VM owner. Given all of this, I don't see why the community cannot commit to long-term maintenance of this feature by merging this PR.

@alicefr
Copy link
Member Author

alicefr commented Jan 7, 2025

I personally agree with Adam. The sparseness issue (#12876) has been solved and we are working on the remaining bug in #13536 and #13636.

@vladikr what do you think? Could we merge this?

@vladikr
Copy link
Member

vladikr commented Jan 7, 2025

I personally agree with Adam. The sparseness issue (#12876) has been solved and we are working on the remaining bug in #13536 and #13636.

@vladikr what do you think? Could we merge this?

I don't believe that our existing API will need to change. It seems to serve the use case well.
From my side, I'm comfortable with graduating this API.

On the other hand, some bugs are still affecting this feature.
We've repeatedly said we can recover from a volume migration failure. Do we have a test that can demonstrate this?

@kubevirt-bot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: vladikr

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@kubevirt-bot kubevirt-bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jan 14, 2025
@kubevirt-commenter-bot
Copy link

Required labels detected, running phase 2 presubmits:
/test pull-kubevirt-e2e-windows2016
/test pull-kubevirt-e2e-kind-1.30-vgpu
/test pull-kubevirt-e2e-kind-sriov
/test pull-kubevirt-e2e-k8s-1.30-ipv6-sig-network
/test pull-kubevirt-e2e-k8s-1.30-sig-network
/test pull-kubevirt-e2e-k8s-1.30-sig-storage
/test pull-kubevirt-e2e-k8s-1.30-sig-compute
/test pull-kubevirt-e2e-k8s-1.30-sig-operator
/test pull-kubevirt-e2e-k8s-1.31-sig-network
/test pull-kubevirt-e2e-k8s-1.31-sig-storage
/test pull-kubevirt-e2e-k8s-1.31-sig-compute
/test pull-kubevirt-e2e-k8s-1.31-sig-operator

@alicefr
Copy link
Member Author

alicefr commented Jan 14, 2025

/retest

@alicefr
Copy link
Member Author

alicefr commented Jan 14, 2025

/hold cancel
Open points have been solved

@kubevirt-bot kubevirt-bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jan 14, 2025
@alicefr
Copy link
Member Author

alicefr commented Jan 14, 2025

/test pull-kubevirt-e2e-k8s-1.31-sig-performance

@kubevirt-bot kubevirt-bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jan 14, 2025
@kubevirt-bot kubevirt-bot removed lgtm Indicates that a PR is ready to be merged. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. labels Jan 15, 2025
@alicefr
Copy link
Member Author

alicefr commented Jan 15, 2025

Rebased

The VolumeUpdateStrategy and VolumeMigration feature gates were
introduced in v1.3.0 by kubevirt#11533.

Both feature gates have been present for 2 releases and since then
multiple issues have been reported and fixed.
With the graduation of the two feature gates, we want to indicate to
KubeVirt users that the feature will remain and that the API may be
considered stable for use.

Signed-off-by: Alice Frosi <[email protected]>
@@ -78,8 +78,7 @@ var _ = SIGDescribe("Volumes update with migration", decorators.RequiresTwoSched
WorkloadUpdateMethods: []virtv1.WorkloadUpdateMethod{virtv1.WorkloadUpdateMethodLiveMigrate},
}
rolloutStrategy := pointer.P(virtv1.VMRolloutStrategyLiveUpdate)
config.PatchWorkloadUpdateMethodAndRolloutStrategy(originalKv.Name, virtClient, updateStrategy, rolloutStrategy,
[]string{virtconfig.VolumesUpdateStrategy, virtconfig.VolumeMigration})
config.PatchWorkloadUpdateMethodAndRolloutStrategy(originalKv.Name, virtClient, updateStrategy, rolloutStrategy, []string{})
Copy link
Contributor

Choose a reason for hiding this comment

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

Can't we make the tests parallel now?

Copy link
Member Author

Choose a reason for hiding this comment

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

We are still patching kubevirt CR for the rolloutStrategy. But yes, I will investigate this in a separate PR

@@ -78,8 +78,7 @@ var _ = SIGDescribe("Volumes update with migration", decorators.RequiresTwoSched
WorkloadUpdateMethods: []virtv1.WorkloadUpdateMethod{virtv1.WorkloadUpdateMethodLiveMigrate},
}
rolloutStrategy := pointer.P(virtv1.VMRolloutStrategyLiveUpdate)
config.PatchWorkloadUpdateMethodAndRolloutStrategy(originalKv.Name, virtClient, updateStrategy, rolloutStrategy,
[]string{virtconfig.VolumesUpdateStrategy, virtconfig.VolumeMigration})
config.PatchWorkloadUpdateMethodAndRolloutStrategy(originalKv.Name, virtClient, updateStrategy, rolloutStrategy, []string{})

Copy link
Contributor

Choose a reason for hiding this comment

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

different line so this is a separate discussion;
[]string{} won't nil out the feature gates, right?

Copy link
Member Author

Choose a reason for hiding this comment

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

I have, now, inlined the function PatchWorkloadUpdateMethodAndRolloutStrategy since it was only used by the tests in the volume migration

Remove the unused feature gates because of their graduation.

Signed-off-by: Alice Frosi <[email protected]>
Removed feature gates because of the graduation.

Inline the function PatchWorkloadUpdateMethodAndRolloutStrategy since it
is only used by the volume migration tests.

Signed-off-by: Alice Frosi <[email protected]>
Copy link
Contributor

@akalenyu akalenyu left a comment

Choose a reason for hiding this comment

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

Thanks for the great work Alice!

@kubevirt-bot kubevirt-bot added the lgtm Indicates that a PR is ready to be merged. label Jan 15, 2025
@kubevirt-commenter-bot
Copy link

Required labels detected, running phase 2 presubmits:
/test pull-kubevirt-e2e-windows2016
/test pull-kubevirt-e2e-kind-1.30-vgpu
/test pull-kubevirt-e2e-kind-sriov
/test pull-kubevirt-e2e-k8s-1.30-ipv6-sig-network
/test pull-kubevirt-e2e-k8s-1.30-sig-network
/test pull-kubevirt-e2e-k8s-1.30-sig-storage
/test pull-kubevirt-e2e-k8s-1.30-sig-compute
/test pull-kubevirt-e2e-k8s-1.30-sig-operator
/test pull-kubevirt-e2e-k8s-1.31-sig-network
/test pull-kubevirt-e2e-k8s-1.31-sig-storage
/test pull-kubevirt-e2e-k8s-1.31-sig-compute
/test pull-kubevirt-e2e-k8s-1.31-sig-operator

@vladikr vladikr removed the needs-approver-review Indicates that a PR requires a review from an approver. label Jan 15, 2025
@akalenyu
Copy link
Contributor

/test pull-kubevirt-code-lint
timeout
/test pull-kubevirt-unit-test
rare flake

@kubevirt-bot
Copy link
Contributor

@alicefr: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
pull-kubevirt-e2e-k8s-1.32-sig-compute-serial 811a28e link unknown /test pull-kubevirt-e2e-k8s-1.32-sig-compute-serial
pull-kubevirt-e2e-k8s-1.31-sig-performance 811a28e link unknown /test pull-kubevirt-e2e-k8s-1.31-sig-performance

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@kubevirt-commenter-bot
Copy link

/retest-required
This bot automatically retries required jobs that failed/flaked on approved PRs.
Silence the bot with an /lgtm cancel or /hold comment for consistent failures.

@kubevirt-bot kubevirt-bot merged commit d584a9d into kubevirt:main Jan 16, 2025
37 of 39 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. area/controller dco-signoff: yes Indicates the PR's author has DCO signed all their commits. kind/api-change Categorizes issue or PR as related to adding, removing, or otherwise changing an API lgtm Indicates that a PR is ready to be merged. release-note Denotes a PR that will be considered when it comes time to generate release notes. sig/compute sig/storage size/L
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants