github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/caas/kubernetes/provider/errors.go (about)

     1  // Copyright 2019 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package provider
     5  
     6  import (
     7  	"github.com/juju/errors"
     8  	k8serrors "k8s.io/apimachinery/pkg/api/errors"
     9  )
    10  
    11  var (
    12  	errNoNamespace = errors.NotProvisionedf("bootstrap broker or no namespace")
    13  )
    14  
    15  // ClusterQueryError represents an issue when querying a cluster.
    16  type ClusterQueryError struct {
    17  	Message string
    18  }
    19  
    20  func (e ClusterQueryError) Error() string {
    21  	return e.Message
    22  }
    23  
    24  // IsClusterQueryError returns true if err is a ClusterQueryError.
    25  func IsClusterQueryError(err error) bool {
    26  	_, ok := err.(ClusterQueryError)
    27  	return ok
    28  }
    29  
    30  // NoRecommendedStorageError represents when Juju is unable to determine which storage a cluster uses (or should use)
    31  type NoRecommendedStorageError struct {
    32  	Message      string
    33  	ProviderName string
    34  }
    35  
    36  func (e NoRecommendedStorageError) Error() string {
    37  	return e.Message
    38  }
    39  
    40  func (e NoRecommendedStorageError) StorageProvider() string {
    41  	return e.ProviderName
    42  }
    43  
    44  // IsNoRecommendedStorageError returns true if err is a NoRecommendedStorageError
    45  func IsNoRecommendedStorageError(err error) bool {
    46  	_, ok := err.(NoRecommendedStorageError)
    47  	return ok
    48  }
    49  
    50  // MaskError is used to signify that an error
    51  // should not be reported back to the caller.
    52  func MaskError(err error) bool {
    53  	_, ok := errors.Cause(err).(*k8serrors.StatusError)
    54  	return ok
    55  }