~ubuntu-branches/ubuntu/saucy/juju-core/saucy-proposed

« back to all changes in this revision

Viewing changes to src/launchpad.net/juju-core/state/apiserver/error.go

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2013-07-11 17:18:27 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20130711171827-vjqkg40r0dlf7ys2
Tags: 1.11.2-0ubuntu1
* New upstream release.
* Make juju-core the default juju (LP: #1190634):
  - d/control: Add virtual package juju -> juju-core.
  - d/juju-core.postinst.in: Bump priority of alternatives over that of
    python juju packages.
* Enable for all architectures (LP: #1172505):
  - d/control: Version BD on golang-go to >= 2:1.1.1 to ensure CGO
    support for non-x86 archs, make juju-core Arch: any.
  - d/README.source: Dropped - no longer required.
* d/watch: Updated for new upstream tarball naming.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
 
}