Skip to content

Commit fe92284

Browse files
authored
fix(vd): fix data volume watcher (#2292)
Fix data volume watcher. The data volume entered the WFFC phase, but there was no watcher this event. As a result, the controller didn’t know that the data volume was ready and didn’t transition the disk into the WFFC phase. Signed-off-by: Dmitry Rakitin <dmitry.rakitin@flant.com>
1 parent 06e6b46 commit fe92284

2 files changed

Lines changed: 11 additions & 5 deletions

File tree

images/virtualization-artifact/pkg/controller/vd/internal/watcher/datavolume_watcher.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,11 @@ func (w *DataVolumeWatcher) Watch(mgr manager.Manager, ctr controller.Controller
5353
return true
5454
}
5555

56-
if e.ObjectOld.Status.Phase != e.ObjectNew.Status.Phase && e.ObjectNew.Status.Phase == cdiv1.Succeeded {
57-
return true
56+
if e.ObjectOld.Status.Phase != e.ObjectNew.Status.Phase {
57+
switch e.ObjectNew.Status.Phase {
58+
case cdiv1.Succeeded, cdiv1.WaitForFirstConsumer, cdiv1.PendingPopulation:
59+
return true
60+
}
5861
}
5962

6063
if e.ObjectOld.Status.ClaimName != e.ObjectNew.Status.ClaimName {

images/virtualization-artifact/pkg/controller/vi/internal/watcher/datavolume_watcher.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,16 @@ func (w *DataVolumeWatcher) Watch(mgr manager.Manager, ctr controller.Controller
4949
),
5050
predicate.TypedFuncs[*cdiv1.DataVolume]{
5151
CreateFunc: func(e event.TypedCreateEvent[*cdiv1.DataVolume]) bool { return false },
52-
DeleteFunc: func(e event.TypedDeleteEvent[*cdiv1.DataVolume]) bool { return false },
5352
UpdateFunc: func(e event.TypedUpdateEvent[*cdiv1.DataVolume]) bool {
5453
if e.ObjectOld.Status.Progress != e.ObjectNew.Status.Progress {
5554
return true
5655
}
5756

58-
if e.ObjectOld.Status.Phase != e.ObjectNew.Status.Phase && e.ObjectNew.Status.Phase == cdiv1.Succeeded {
59-
return true
57+
if e.ObjectOld.Status.Phase != e.ObjectNew.Status.Phase {
58+
switch e.ObjectNew.Status.Phase {
59+
case cdiv1.Succeeded, cdiv1.WaitForFirstConsumer, cdiv1.PendingPopulation:
60+
return true
61+
}
6062
}
6163

6264
if e.ObjectOld.Status.ClaimName != e.ObjectNew.Status.ClaimName {
@@ -77,6 +79,7 @@ func (w *DataVolumeWatcher) Watch(mgr manager.Manager, ctr controller.Controller
7779
dvRunning := service.GetDataVolumeCondition(cdiv1.DataVolumeRunning, e.ObjectNew.Status.Conditions)
7880
return dvRunning != nil && dvRunning.Reason == "Error"
7981
},
82+
DeleteFunc: func(e event.TypedDeleteEvent[*cdiv1.DataVolume]) bool { return false },
8083
},
8184
),
8285
); err != nil {

0 commit comments

Comments
 (0)