github.com/hspak/nomad@v0.7.2-0.20180309000617-bc4ae22a39a5/nomad/structs/errors.go (about)

     1  package structs
     2  
     3  import (
     4  	"errors"
     5  	"fmt"
     6  	"strings"
     7  )
     8  
     9  const (
    10  	errNoLeader         = "No cluster leader"
    11  	errNoRegionPath     = "No path to region"
    12  	errTokenNotFound    = "ACL token not found"
    13  	errPermissionDenied = "Permission denied"
    14  	errNoNodeConn       = "No path to node"
    15  	errUnknownMethod    = "Unknown rpc method"
    16  
    17  	// Prefix based errors that are used to check if the error is of a given
    18  	// type. These errors should be created with the associated constructor.
    19  	ErrUnknownAllocationPrefix = "Unknown allocation"
    20  	ErrUnknownNodePrefix       = "Unknown node"
    21  	ErrUnknownJobPrefix        = "Unknown job"
    22  	ErrUnknownEvaluationPrefix = "Unknown evaluation"
    23  	ErrUnknownDeploymentPrefix = "Unknown deployment"
    24  )
    25  
    26  var (
    27  	ErrNoLeader         = errors.New(errNoLeader)
    28  	ErrNoRegionPath     = errors.New(errNoRegionPath)
    29  	ErrTokenNotFound    = errors.New(errTokenNotFound)
    30  	ErrPermissionDenied = errors.New(errPermissionDenied)
    31  	ErrNoNodeConn       = errors.New(errNoNodeConn)
    32  	ErrUnknownMethod    = errors.New(errUnknownMethod)
    33  )
    34  
    35  // IsErrNoLeader returns whether the error is due to there being no leader.
    36  func IsErrNoLeader(err error) bool {
    37  	return err != nil && strings.Contains(err.Error(), errNoLeader)
    38  }
    39  
    40  // IsErrNoRegionPath returns whether the error is due to there being no path to
    41  // the given region.
    42  func IsErrNoRegionPath(err error) bool {
    43  	return err != nil && strings.Contains(err.Error(), errNoRegionPath)
    44  }
    45  
    46  // IsErrTokenNotFound returns whether the error is due to the passed token not
    47  // being resolvable.
    48  func IsErrTokenNotFound(err error) bool {
    49  	return err != nil && strings.Contains(err.Error(), errTokenNotFound)
    50  }
    51  
    52  // IsErrPermissionDenied returns whether the error is due to the operation not
    53  // being allowed due to lack of permissions.
    54  func IsErrPermissionDenied(err error) bool {
    55  	return err != nil && strings.Contains(err.Error(), errPermissionDenied)
    56  }
    57  
    58  // IsErrNoNodeConn returns whether the error is due to there being no path to
    59  // the given node.
    60  func IsErrNoNodeConn(err error) bool {
    61  	return err != nil && strings.Contains(err.Error(), errNoNodeConn)
    62  }
    63  
    64  // IsErrUnknownMethod returns whether the error is due to the operation not
    65  // being allowed due to lack of permissions.
    66  func IsErrUnknownMethod(err error) bool {
    67  	return err != nil && strings.Contains(err.Error(), errUnknownMethod)
    68  }
    69  
    70  // NewErrUnknownAllocation returns a new error caused by the allocation being
    71  // unknown.
    72  func NewErrUnknownAllocation(allocID string) error {
    73  	return fmt.Errorf("%s %q", ErrUnknownAllocationPrefix, allocID)
    74  }
    75  
    76  // NewErrUnknownNode returns a new error caused by the node being unknown.
    77  func NewErrUnknownNode(nodeID string) error {
    78  	return fmt.Errorf("%s %q", ErrUnknownNodePrefix, nodeID)
    79  }
    80  
    81  // NewErrUnknownJob returns a new error caused by the job being unknown.
    82  func NewErrUnknownJob(jobID string) error {
    83  	return fmt.Errorf("%s %q", ErrUnknownJobPrefix, jobID)
    84  }
    85  
    86  // NewErrUnknownEvaluation returns a new error caused by the evaluation being
    87  // unknown.
    88  func NewErrUnknownEvaluation(evaluationID string) error {
    89  	return fmt.Errorf("%s %q", ErrUnknownEvaluationPrefix, evaluationID)
    90  }
    91  
    92  // NewErrUnknownDeployment returns a new error caused by the deployment being
    93  // unknown.
    94  func NewErrUnknownDeployment(deploymentID string) error {
    95  	return fmt.Errorf("%s %q", ErrUnknownDeploymentPrefix, deploymentID)
    96  }
    97  
    98  // IsErrUnknownAllocation returns whether the error is due to an unknown
    99  // allocation.
   100  func IsErrUnknownAllocation(err error) bool {
   101  	return err != nil && strings.Contains(err.Error(), ErrUnknownAllocationPrefix)
   102  }
   103  
   104  // IsErrUnknownNode returns whether the error is due to an unknown
   105  // node.
   106  func IsErrUnknownNode(err error) bool {
   107  	return err != nil && strings.Contains(err.Error(), ErrUnknownNodePrefix)
   108  }
   109  
   110  // IsErrUnknownJob returns whether the error is due to an unknown
   111  // job.
   112  func IsErrUnknownJob(err error) bool {
   113  	return err != nil && strings.Contains(err.Error(), ErrUnknownJobPrefix)
   114  }
   115  
   116  // IsErrUnknownEvaluation returns whether the error is due to an unknown
   117  // evaluation.
   118  func IsErrUnknownEvaluation(err error) bool {
   119  	return err != nil && strings.Contains(err.Error(), ErrUnknownEvaluationPrefix)
   120  }
   121  
   122  // IsErrUnknownDeployment returns whether the error is due to an unknown
   123  // deployment.
   124  func IsErrUnknownDeployment(err error) bool {
   125  	return err != nil && strings.Contains(err.Error(), ErrUnknownDeploymentPrefix)
   126  }