~themue/juju-core/053-env-more-script-friendly

« back to all changes in this revision

Viewing changes to state/api/error.go

Sequestering server.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
package api
2
2
 
3
3
import (
4
 
        "errors"
5
4
        "launchpad.net/juju-core/rpc"
6
5
        "launchpad.net/juju-core/state"
7
6
)
23
22
 
24
23
var _ rpc.ErrorCoder = (*Error)(nil)
25
24
 
26
 
var (
27
 
        errBadId          = errors.New("id not found")
28
 
        errBadCreds       = errors.New("invalid entity name or password")
29
 
        errPerm           = errors.New("permission denied")
30
 
        errNotLoggedIn    = errors.New("not logged in")
31
 
        errUnknownWatcher = errors.New("unknown watcher id")
32
 
        errStoppedWatcher = errors.New("watcher has been stopped")
33
 
)
34
 
 
35
 
var singletonErrorCodes = map[error]string{
36
 
        state.ErrCannotEnterScopeYet: CodeCannotEnterScopeYet,
37
 
        state.ErrCannotEnterScope:    CodeCannotEnterScope,
38
 
        state.ErrExcessiveContention: CodeExcessiveContention,
39
 
        state.ErrUnitHasSubordinates: CodeUnitHasSubordinates,
40
 
        errBadId:                     CodeNotFound,
41
 
        errBadCreds:                  CodeUnauthorized,
42
 
        errPerm:                      CodeUnauthorized,
43
 
        errNotLoggedIn:               CodeUnauthorized,
44
 
        errUnknownWatcher:            CodeNotFound,
45
 
        errStoppedWatcher:            CodeStopped,
46
 
}
47
 
 
48
25
// The Code constants hold error codes for some kinds of error.
49
26
const (
50
27
        CodeNotFound            = "not found"
57
34
        CodeStopped             = "stopped"
58
35
)
59
36
 
60
 
func serverError(err error) error {
61
 
        code := singletonErrorCodes[err]
62
 
        switch {
63
 
        case code != "":
64
 
        case state.IsUnauthorizedError(err):
65
 
                code = CodeUnauthorized
66
 
        case state.IsNotFound(err):
67
 
                code = CodeNotFound
68
 
        case state.IsNotAssigned(err):
69
 
                code = CodeNotAssigned
70
 
        }
71
 
        if code != "" {
72
 
                return &Error{
73
 
                        Message: err.Error(),
74
 
                        Code:    code,
75
 
                }
76
 
        }
77
 
        return err
 
37
var SingletonErrorCodes = map[error]string{
 
38
        state.ErrCannotEnterScopeYet: CodeCannotEnterScopeYet,
 
39
        state.ErrCannotEnterScope:    CodeCannotEnterScope,
 
40
        state.ErrExcessiveContention: CodeExcessiveContention,
 
41
        state.ErrUnitHasSubordinates: CodeUnitHasSubordinates,
78
42
}
79
43
 
80
44
// ErrCode returns the error code associated with