Statistics
| Branch: | Tag: | Revision:

root / snf-django-lib / snf_django / lib / api / faults.py @ 420c24ee

History | View | Annotate | Download (2.7 kB)

1 bd40abfa Christos Stavrakakis
# Copyright 2012, 2013 GRNET S.A. All rights reserved.
2 2715ade4 Sofia Papagiannaki
#
3 5635f9ef Antony Chazapis
# Redistribution and use in source and binary forms, with or
4 5635f9ef Antony Chazapis
# without modification, are permitted provided that the following
5 5635f9ef Antony Chazapis
# conditions are met:
6 2715ade4 Sofia Papagiannaki
#
7 5635f9ef Antony Chazapis
#   1. Redistributions of source code must retain the above
8 5635f9ef Antony Chazapis
#      copyright notice, this list of conditions and the following
9 5635f9ef Antony Chazapis
#      disclaimer.
10 2715ade4 Sofia Papagiannaki
#
11 5635f9ef Antony Chazapis
#   2. Redistributions in binary form must reproduce the above
12 5635f9ef Antony Chazapis
#      copyright notice, this list of conditions and the following
13 5635f9ef Antony Chazapis
#      disclaimer in the documentation and/or other materials
14 5635f9ef Antony Chazapis
#      provided with the distribution.
15 2715ade4 Sofia Papagiannaki
#
16 5635f9ef Antony Chazapis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 5635f9ef Antony Chazapis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 5635f9ef Antony Chazapis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 5635f9ef Antony Chazapis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 5635f9ef Antony Chazapis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 5635f9ef Antony Chazapis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 5635f9ef Antony Chazapis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 5635f9ef Antony Chazapis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 5635f9ef Antony Chazapis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 5635f9ef Antony Chazapis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 5635f9ef Antony Chazapis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 5635f9ef Antony Chazapis
# POSSIBILITY OF SUCH DAMAGE.
28 2715ade4 Sofia Papagiannaki
#
29 5635f9ef Antony Chazapis
# The views and conclusions contained in the software and
30 5635f9ef Antony Chazapis
# documentation are those of the authors and should not be
31 5635f9ef Antony Chazapis
# interpreted as representing official policies, either expressed
32 5635f9ef Antony Chazapis
# or implied, of GRNET S.A.
33 5635f9ef Antony Chazapis
34 2715ade4 Sofia Papagiannaki
35 bd40abfa Christos Stavrakakis
"""Common API faults."""
36 bd40abfa Christos Stavrakakis
37 bd40abfa Christos Stavrakakis
38 420c24ee Ilias Tsitsimpis
def camel_case(s):
39 b956618e Antony Chazapis
    return s[0].lower() + s[1:]
40 b956618e Antony Chazapis
41 b956618e Antony Chazapis
42 b956618e Antony Chazapis
class Fault(Exception):
43 b956618e Antony Chazapis
    def __init__(self, message='', details='', name=''):
44 b956618e Antony Chazapis
        Exception.__init__(self, message, details, name)
45 b956618e Antony Chazapis
        self.message = message
46 b956618e Antony Chazapis
        self.details = details
47 420c24ee Ilias Tsitsimpis
        self.name = name or camel_case(self.__class__.__name__)
48 b956618e Antony Chazapis
49 2715ade4 Sofia Papagiannaki
50 bd40abfa Christos Stavrakakis
# 2xx
51 b956618e Antony Chazapis
class NotModified(Fault):
52 b956618e Antony Chazapis
    code = 304
53 b956618e Antony Chazapis
54 2715ade4 Sofia Papagiannaki
55 bd40abfa Christos Stavrakakis
# 4xx
56 b956618e Antony Chazapis
class BadRequest(Fault):
57 b956618e Antony Chazapis
    code = 400
58 b956618e Antony Chazapis
59 2715ade4 Sofia Papagiannaki
60 b956618e Antony Chazapis
class Unauthorized(Fault):
61 b956618e Antony Chazapis
    code = 401
62 b956618e Antony Chazapis
63 2715ade4 Sofia Papagiannaki
64 14983b5d Antony Chazapis
class Forbidden(Fault):
65 b956618e Antony Chazapis
    code = 403
66 b956618e Antony Chazapis
67 2715ade4 Sofia Papagiannaki
68 bd40abfa Christos Stavrakakis
class ResizeNotAllowed(Forbidden):
69 bd40abfa Christos Stavrakakis
    pass
70 bd40abfa Christos Stavrakakis
71 bd40abfa Christos Stavrakakis
72 b956618e Antony Chazapis
class ItemNotFound(Fault):
73 b956618e Antony Chazapis
    code = 404
74 b956618e Antony Chazapis
75 2715ade4 Sofia Papagiannaki
76 b956618e Antony Chazapis
class Conflict(Fault):
77 b956618e Antony Chazapis
    code = 409
78 b956618e Antony Chazapis
79 2715ade4 Sofia Papagiannaki
80 bd40abfa Christos Stavrakakis
class BuildInProgress(Conflict):
81 bd40abfa Christos Stavrakakis
    pass
82 bd40abfa Christos Stavrakakis
83 bd40abfa Christos Stavrakakis
84 b956618e Antony Chazapis
class LengthRequired(Fault):
85 b956618e Antony Chazapis
    code = 411
86 b956618e Antony Chazapis
87 2715ade4 Sofia Papagiannaki
88 b956618e Antony Chazapis
class PreconditionFailed(Fault):
89 b956618e Antony Chazapis
    code = 412
90 b956618e Antony Chazapis
91 2715ade4 Sofia Papagiannaki
92 6d0f82fe Antony Chazapis
class RequestEntityTooLarge(Fault):
93 6d0f82fe Antony Chazapis
    code = 413
94 6d0f82fe Antony Chazapis
95 2715ade4 Sofia Papagiannaki
96 bd40abfa Christos Stavrakakis
class OverLimit(RequestEntityTooLarge):
97 bd40abfa Christos Stavrakakis
    pass
98 bd40abfa Christos Stavrakakis
99 bd40abfa Christos Stavrakakis
100 bd40abfa Christos Stavrakakis
class BadMediaType(Fault):
101 bd40abfa Christos Stavrakakis
    code = 415
102 bd40abfa Christos Stavrakakis
103 bd40abfa Christos Stavrakakis
104 b956618e Antony Chazapis
class RangeNotSatisfiable(Fault):
105 b956618e Antony Chazapis
    code = 416
106 b956618e Antony Chazapis
107 2715ade4 Sofia Papagiannaki
108 bd40abfa Christos Stavrakakis
class NetworkInUse(Fault):
109 bd40abfa Christos Stavrakakis
    code = 421
110 bd40abfa Christos Stavrakakis
111 bd40abfa Christos Stavrakakis
112 b956618e Antony Chazapis
class UnprocessableEntity(Fault):
113 b956618e Antony Chazapis
    code = 422
114 b956618e Antony Chazapis
115 2715ade4 Sofia Papagiannaki
116 bd40abfa Christos Stavrakakis
# 5xx
117 08de868d Antony Chazapis
class InternalServerError(Fault):
118 08de868d Antony Chazapis
    code = 500
119 08de868d Antony Chazapis
120 2715ade4 Sofia Papagiannaki
121 08de868d Antony Chazapis
class NotImplemented(Fault):
122 08de868d Antony Chazapis
    code = 501
123 bd40abfa Christos Stavrakakis
124 bd40abfa Christos Stavrakakis
125 bd40abfa Christos Stavrakakis
class ServiceUnavailable(Fault):
126 bd40abfa Christos Stavrakakis
    code = 503