Use patch for snapshot-controller when there are no finalizers
- Also address PR feedback re: avoid a deepCopy for annotations patch Signed-off-by: Grant Griffiths <ggriffiths@purestorage.com>
This commit is contained in:
@@ -1421,23 +1421,16 @@ func (ctrl *csiSnapshotCommonController) addSnapshotFinalizer(snapshot *crdv1.Vo
|
||||
var updatedSnapshot *crdv1.VolumeSnapshot
|
||||
var err error
|
||||
|
||||
// Must perform an update if no finalizers exist
|
||||
var patches []utils.PatchOp
|
||||
if len(snapshot.ObjectMeta.Finalizers) == 0 {
|
||||
snapshotClone := snapshot.DeepCopy()
|
||||
if addSourceFinalizer {
|
||||
snapshotClone.ObjectMeta.Finalizers = append(snapshotClone.ObjectMeta.Finalizers, utils.VolumeSnapshotAsSourceFinalizer)
|
||||
}
|
||||
if addBoundFinalizer {
|
||||
snapshotClone.ObjectMeta.Finalizers = append(snapshotClone.ObjectMeta.Finalizers, utils.VolumeSnapshotBoundFinalizer)
|
||||
}
|
||||
updatedSnapshot, err = ctrl.clientset.SnapshotV1().VolumeSnapshots(snapshotClone.Namespace).Update(context.TODO(), snapshotClone, metav1.UpdateOptions{})
|
||||
if err != nil {
|
||||
return newControllerUpdateError(utils.SnapshotKey(snapshot), err.Error())
|
||||
}
|
||||
// Replace finalizers with new array if there are no other finalizers
|
||||
patches = append(patches, utils.PatchOp{
|
||||
Op: "add",
|
||||
Path: "/metadata/finalizers",
|
||||
Value: []string{utils.VolumeSnapshotContentFinalizer},
|
||||
})
|
||||
} else {
|
||||
// Otherwise, perform a patch
|
||||
var patches []utils.PatchOp
|
||||
|
||||
if addSourceFinalizer {
|
||||
patches = append(patches, utils.PatchOp{
|
||||
Op: "add",
|
||||
@@ -1452,11 +1445,10 @@ func (ctrl *csiSnapshotCommonController) addSnapshotFinalizer(snapshot *crdv1.Vo
|
||||
Value: utils.VolumeSnapshotBoundFinalizer,
|
||||
})
|
||||
}
|
||||
|
||||
updatedSnapshot, err = utils.PatchVolumeSnapshot(snapshot, patches, ctrl.clientset)
|
||||
if err != nil {
|
||||
return newControllerUpdateError(utils.SnapshotKey(snapshot), err.Error())
|
||||
}
|
||||
}
|
||||
updatedSnapshot, err = utils.PatchVolumeSnapshot(snapshot, patches, ctrl.clientset)
|
||||
if err != nil {
|
||||
return newControllerUpdateError(utils.SnapshotKey(snapshot), err.Error())
|
||||
}
|
||||
|
||||
_, err = ctrl.storeSnapshotUpdate(updatedSnapshot)
|
||||
|
Reference in New Issue
Block a user