Skip to content

Commit 25be5fd

Browse files
committed
shouldProcessSnapshot should return *VolumeSnapshot
Also rename shouldProcessSnapshot to checkAndUpdateSnapshotClass.
1 parent 4f5aec4 commit 25be5fd

File tree

1 file changed

+20
-17
lines changed

1 file changed

+20
-17
lines changed

pkg/controller/snapshot_controller_base.go

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -204,16 +204,17 @@ func (ctrl *csiSnapshotController) snapshotWorker() {
204204
namespace, name, err := cache.SplitMetaNamespaceKey(key)
205205
glog.V(5).Infof("snapshotWorker: snapshot namespace [%s] name [%s]", namespace, name)
206206
if err != nil {
207-
glog.V(4).Infof("error getting namespace & name of snapshot %q to get snapshot from informer: %v", key, err)
207+
glog.Errorf("error getting namespace & name of snapshot %q to get snapshot from informer: %v", key, err)
208208
return false
209209
}
210210
snapshot, err := ctrl.snapshotLister.VolumeSnapshots(namespace).Get(name)
211211
if err == nil {
212212
// The volume snapshot still exists in informer cache, the event must have
213213
// been add/update/sync
214-
if ctrl.shouldProcessSnapshot(snapshot) {
215-
glog.V(4).Infof("should process snapshot")
216-
ctrl.updateSnapshot(snapshot)
214+
newSnapshot, err := ctrl.checkAndUpdateSnapshotClass(snapshot)
215+
if err == nil {
216+
glog.V(5).Infof("passed checkAndUpdateSnapshotClass for snapshot %q", key)
217+
ctrl.updateSnapshot(newSnapshot)
217218
}
218219
return false
219220
}
@@ -238,8 +239,9 @@ func (ctrl *csiSnapshotController) snapshotWorker() {
238239
glog.Errorf("expected vs, got %+v", vsObj)
239240
return false
240241
}
241-
if ctrl.shouldProcessSnapshot(snapshot) {
242-
ctrl.deleteSnapshot(snapshot)
242+
newSnapshot, err := ctrl.checkAndUpdateSnapshotClass(snapshot)
243+
if err == nil {
244+
ctrl.deleteSnapshot(newSnapshot)
243245
}
244246
return false
245247
}
@@ -321,36 +323,37 @@ func (ctrl *csiSnapshotController) contentWorker() {
321323
}
322324
}
323325

324-
// shouldProcessSnapshot detect if snapshotter in the VolumeSnapshotClass is the same as the snapshotter
325-
// in external controller.
326-
func (ctrl *csiSnapshotController) shouldProcessSnapshot(snapshot *crdv1.VolumeSnapshot) bool {
326+
// checkAndUpdateSnapshotClass gets the VolumeSnapshotClass from VolumeSnapshot. If it is not set,
327+
// gets it from default VolumeSnapshotClass and sets it. It also detects if snapshotter in the
328+
// VolumeSnapshotClass is the same as the snapshotter in external controller.
329+
func (ctrl *csiSnapshotController) checkAndUpdateSnapshotClass(snapshot *crdv1.VolumeSnapshot) (*crdv1.VolumeSnapshot, error) {
327330
className := snapshot.Spec.VolumeSnapshotClassName
328331
var class *crdv1.VolumeSnapshotClass
329332
var err error
330333
if className != nil {
331-
glog.V(5).Infof("shouldProcessSnapshot [%s]: VolumeSnapshotClassName [%s]", snapshot.Name, *className)
334+
glog.V(5).Infof("checkAndUpdateSnapshotClass [%s]: VolumeSnapshotClassName [%s]", snapshot.Name, *className)
332335
class, err = ctrl.GetSnapshotClass(*className)
333336
if err != nil {
334-
glog.Errorf("shouldProcessSnapshot failed to getSnapshotClass %s", err)
337+
glog.Errorf("checkAndUpdateSnapshotClass failed to getSnapshotClass %v", err)
335338
ctrl.updateSnapshotErrorStatusWithEvent(snapshot, v1.EventTypeWarning, "GetSnapshotClassFailed", fmt.Sprintf("Failed to get snapshot class with error %v", err))
336-
return false
339+
return nil, err
337340
}
338341
} else {
339-
glog.V(5).Infof("shouldProcessSnapshot [%s]: SetDefaultSnapshotClass", snapshot.Name)
342+
glog.V(5).Infof("checkAndUpdateSnapshotClass [%s]: SetDefaultSnapshotClass", snapshot.Name)
340343
class, snapshot, err = ctrl.SetDefaultSnapshotClass(snapshot)
341344
if err != nil {
342-
glog.Errorf("shouldProcessSnapshot failed to setDefaultClass %s", err)
345+
glog.Errorf("checkAndUpdateSnapshotClass failed to setDefaultClass %v", err)
343346
ctrl.updateSnapshotErrorStatusWithEvent(snapshot, v1.EventTypeWarning, "SetDefaultSnapshotClassFailed", fmt.Sprintf("Failed to set default snapshot class with error %v", err))
344-
return false
347+
return nil, err
345348
}
346349
}
347350

348351
glog.V(5).Infof("VolumeSnapshotClass Snapshotter [%s] Snapshot Controller snapshotterName [%s]", class.Snapshotter, ctrl.snapshotterName)
349352
if class.Snapshotter != ctrl.snapshotterName {
350353
glog.V(4).Infof("Skipping VolumeSnapshot %s for snapshotter [%s] in VolumeSnapshotClass because it does not match with the snapshotter for controller [%s]", snapshotKey(snapshot), class.Snapshotter, ctrl.snapshotterName)
351-
return false
354+
return nil, err
352355
}
353-
return true
356+
return snapshot, nil
354357
}
355358

356359
// updateSnapshot runs in worker thread and handles "snapshot added",

0 commit comments

Comments
 (0)