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 }