mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-06-14 02:43:36 +00:00
cleanup: move internal/rbd/errors.go to internal/rbd/errors pacakge
Signed-off-by: Praveen M <m.praveen@ibm.com>
This commit is contained in:
@ -16,15 +16,9 @@ limitations under the License.
|
||||
|
||||
package util
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/ceph/go-ceph/rados"
|
||||
)
|
||||
import "errors"
|
||||
|
||||
var (
|
||||
// ErrImageNotFound is returned when image name is not found in the cluster on the given pool and/or namespace.
|
||||
ErrImageNotFound = errors.New("image not found")
|
||||
// ErrKeyNotFound is returned when requested key in omap is not found.
|
||||
ErrKeyNotFound = errors.New("key not found")
|
||||
// ErrObjectExists is returned when named omap is already present in rados.
|
||||
@ -41,30 +35,3 @@ var (
|
||||
// ErrMissingConfigForMonitor is returned when clusterID is not found for the mon.
|
||||
ErrMissingConfigForMonitor = errors.New("missing configuration of cluster ID for monitor")
|
||||
)
|
||||
|
||||
// ShouldRetryVolumeGeneration determines whether the process of finding or generating
|
||||
// volumes should continue based on the type of error encountered.
|
||||
//
|
||||
// It checks if the given error matches any of the following known errors:
|
||||
// - util.ErrKeyNotFound: The key required to locate the volume is missing in Rados omap.
|
||||
// - util.ErrPoolNotFound: The rbd pool where the volume/omap is expected doesn't exist.
|
||||
// - ErrImageNotFound: The image doesn't exist in the rbd pool.
|
||||
// - rados.ErrPermissionDenied: Permissions to access the pool is denied.
|
||||
//
|
||||
// If any of these errors are encountered, the function returns `true`, indicating
|
||||
// that the volume search should continue because of known error. Otherwise, it
|
||||
// returns `false`, meaning the search should stop.
|
||||
//
|
||||
// This helper function is used in scenarios where multiple attempts may be made
|
||||
// to retrieve or generate volume information, and we want to gracefully handle
|
||||
// specific failure cases while retrying for others.
|
||||
func ShouldRetryVolumeGeneration(err error) bool {
|
||||
if err == nil {
|
||||
return false // No error, do not retry
|
||||
}
|
||||
// Continue searching for specific known errors
|
||||
return (errors.Is(err, ErrKeyNotFound) ||
|
||||
errors.Is(err, ErrPoolNotFound) ||
|
||||
errors.Is(err, ErrImageNotFound) ||
|
||||
errors.Is(err, rados.ErrPermissionDenied))
|
||||
}
|
||||
|
Reference in New Issue
Block a user