fix(vm): handle FailedMapVolume in pod volume error detection#2433
Open
eofff wants to merge 3 commits into
Open
fix(vm): handle FailedMapVolume in pod volume error detection#2433eofff wants to merge 3 commits into
eofff wants to merge 3 commits into
Conversation
added 3 commits
June 15, 2026 16:58
Signed-off-by: Valeriy Khorunzhin <valeriy.khorunzhin@flant.com>
Signed-off-by: Valeriy Khorunzhin <valeriy.khorunzhin@flant.com>
8c3dd4c to
a2d9f11
Compare
Comment on lines
+61
to
+73
| func getVirtualMachineNameFromPodLabels(pod *corev1.Pod) (string, bool) { | ||
| if pod == nil { | ||
| return "", false | ||
| } | ||
|
|
||
| if vmName, hasLabel := pod.GetLabels()[virtv1.VirtualMachineNameLabel]; hasLabel { | ||
| return vmName, true | ||
| } | ||
|
|
||
| return "", false | ||
| } | ||
|
|
||
| func (w *VolumeEventWatcher) resolveVMNameByHotplugStatus(ctx context.Context, pod *corev1.Pod) (string, bool) { |
Contributor
There was a problem hiding this comment.
May be create one function?
| client client.Client | ||
| } | ||
|
|
||
| func getVirtualMachineNameFromPodLabels(pod *corev1.Pod) (string, bool) { |
| "github.com/deckhouse/virtualization/api/core/v1alpha2" | ||
| ) | ||
|
|
||
| var _ = Describe("LifeCycleHandler hotplug pod errors", func() { |
Contributor
There was a problem hiding this comment.
What would I add minimally?
If you don't inflate the tests, I would add 3 cases.:
1. UID mismatch
should ignore hotplug pod when UID does not match KVVMI status
2. Not ContainerCreating
should ignore volume event when pod is not ContainerCreating
3. Non-volume event
should ignore non-volume warning events
These three tests greatly increase confidence.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Added handling for one more pod volume warning reason (
FailedMapVolume) and unified volume-error reason checks in the VM controller.Changes:
ReasonFailedMapVolumeconstant involumeevent_watcher.go;IsVolumeErrorReason(reason string)helper to keep reason filtering in one place;Why do we need it, and what problem does it solve?
Previously, VM pod volume errors were recognized only for
FailedAttachVolumeandFailedMount.In some failure scenarios Kubernetes emits
FailedMapVolume, so the controller could miss relevant warning events and return less informative VM error status.After this change, all key volume-related warning reasons are processed consistently, so users get clearer and more complete diagnostics when VM startup fails due to volume issues.
What is the expected result?
FailedMapVolume(or existingFailedAttachVolume/FailedMount).VMPodVolumeErrorwith the correctReasonandMessage.Checklist
Changelog entries