diff --git a/internal/rbd/rbd_util.go b/internal/rbd/rbd_util.go index 8b02de787..091a7a2e8 100644 --- a/internal/rbd/rbd_util.go +++ b/internal/rbd/rbd_util.go @@ -1923,3 +1923,16 @@ func (rv *rbdVolume) setAllMetadata(parameters map[string]string) error { return nil } + +// unsetAllMetadata unset all the metadata from arg keys on RBD image. +func (rv *rbdVolume) unsetAllMetadata(keys []string) error { + for _, key := range keys { + err := rv.RemoveMetadata(key) + // TODO: replace string comparison with errno. + if err != nil && !strings.Contains(err.Error(), "No such file or directory") { + return fmt.Errorf("failed to unset metadata key %q on %q: %w", key, rv, err) + } + } + + return nil +} diff --git a/internal/util/k8s/parameters.go b/internal/util/k8s/parameters.go index f3d8fe894..2306bcafd 100644 --- a/internal/util/k8s/parameters.go +++ b/internal/util/k8s/parameters.go @@ -69,6 +69,15 @@ func GetVolumeMetadata(parameters map[string]string) map[string]string { return newParam } +// GetVolumeMetadataKeys return volume metadata keys. +func GetVolumeMetadataKeys() []string { + return []string{ + pvcNameKey, + pvcNamespaceKey, + pvNameKey, + } +} + // PrepareVolumeMetadata return PV/PVC/PVCNamespace metadata based on inputs. func PrepareVolumeMetadata(pvcName, pvcNamespace, pvName string) map[string]string { newParam := map[string]string{} @@ -100,3 +109,12 @@ func GetSnapshotMetadata(parameters map[string]string) map[string]string { return newParam } + +// GetSnapshotMetadataKeys return snapshot metadata keys. +func GetSnapshotMetadataKeys() []string { + return []string{ + volSnapNameKey, + volSnapNamespaceKey, + volSnapContentNameKey, + } +}