OLD | NEW |
(Empty) | |
| 1 package apiserver |
| 2 |
| 3 import ( |
| 4 "errors" |
| 5 "launchpad.net/juju-core/state" |
| 6 "launchpad.net/juju-core/state/api" |
| 7 ) |
| 8 |
| 9 var ( |
| 10 errBadId = errors.New("id not found") |
| 11 errBadCreds = errors.New("invalid entity name or password") |
| 12 errPerm = errors.New("permission denied") |
| 13 errNotLoggedIn = errors.New("not logged in") |
| 14 errUnknownWatcher = errors.New("unknown watcher id") |
| 15 errStoppedWatcher = errors.New("watcher has been stopped") |
| 16 ) |
| 17 |
| 18 var singletonErrorCodes = map[error]string{ |
| 19 state.ErrCannotEnterScopeYet: api.CodeCannotEnterScopeYet, |
| 20 state.ErrCannotEnterScope: api.CodeCannotEnterScope, |
| 21 state.ErrExcessiveContention: api.CodeExcessiveContention, |
| 22 state.ErrUnitHasSubordinates: api.CodeUnitHasSubordinates, |
| 23 errBadId: api.CodeNotFound, |
| 24 errBadCreds: api.CodeUnauthorized, |
| 25 errPerm: api.CodeUnauthorized, |
| 26 errNotLoggedIn: api.CodeUnauthorized, |
| 27 errUnknownWatcher: api.CodeNotFound, |
| 28 errStoppedWatcher: api.CodeStopped, |
| 29 } |
| 30 |
| 31 func serverError(err error) error { |
| 32 code := singletonErrorCodes[err] |
| 33 switch { |
| 34 case code != "": |
| 35 case state.IsUnauthorizedError(err): |
| 36 code = api.CodeUnauthorized |
| 37 case state.IsNotFound(err): |
| 38 code = api.CodeNotFound |
| 39 case state.IsNotAssigned(err): |
| 40 code = api.CodeNotAssigned |
| 41 } |
| 42 if code != "" { |
| 43 return &api.Error{ |
| 44 Message: err.Error(), |
| 45 Code: code, |
| 46 } |
| 47 } |
| 48 return err |
| 49 } |
OLD | NEW |