diff options
author | Jelmer Vernooij <jelmer@jelmer.uk> | 2016-07-03 20:40:01 +0000 |
---|---|---|
committer | Jelmer Vernooij <jelmer@jelmer.uk> | 2016-07-03 20:40:01 +0000 |
commit | 2e526af1098f8f188ef780296dc0a504c539fafe (patch) | |
tree | b824e921bbd66c14825ae32d3413c8335032147c /src/etcd/__init__.py | |
parent | df6caa92770eb49429bf6ee23f6cebebfe44b9e5 (diff) | |
parent | d29eabf0d798aadfcf7cb881d3f9ad403c99542b (diff) |
Imported Upstream version 0.4.3
Diffstat (limited to 'src/etcd/__init__.py')
-rw-r--r-- | src/etcd/__init__.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/etcd/__init__.py b/src/etcd/__init__.py index b532be6..f52852c 100644 --- a/src/etcd/__init__.py +++ b/src/etcd/__init__.py @@ -200,6 +200,20 @@ class EtcdConnectionFailed(EtcdException): self.cause = cause +class EtcdInsufficientPermissions(EtcdException): + """ + Request failed because of insufficient permissions. + """ + pass + + +class EtcdWatchTimedOut(EtcdConnectionFailed): + """ + A watch timed out without returning a result. + """ + pass + + class EtcdWatcherCleared(EtcdException): """ Watcher is cleared due to etcd recovery. @@ -246,6 +260,7 @@ class EtcdError(object): 107: EtcdRootReadOnly, 108: EtcdDirNotEmpty, # 109: Non-public: existing peer addr. + 110: EtcdInsufficientPermissions, 200: EtcdValueError, 201: EtcdValueError, @@ -277,6 +292,13 @@ class EtcdError(object): message = payload.get("message") cause = payload.get("cause") msg = '{} : {}'.format(message, cause) + status = payload.get("status") + # Some general status handling, as + # not all endpoints return coherent error messages + if status == 404: + error_code = 100 + elif status == 401: + error_code = 110 exc = cls.error_exceptions.get(error_code, EtcdException) if issubclass(exc, EtcdException): raise exc(msg, payload) |