Statistics
| Branch: | Tag: | Revision:

root / kamaki / cli / errors.py @ 017d37ce

History | View | Annotate | Download (3.1 kB)

1
# Copyright 2011 GRNET S.A. All rights reserved.
2
#
3
# Redistribution and use in source and binary forms, with or
4
# without modification, are permitted provided that the following
5
# conditions are met:
6
#
7
#   1. Redistributions of source code must retain the above
8
#      copyright notice, this list of conditions and the following
9
#      disclaimer.
10
#
11
#   2. Redistributions in binary form must reproduce the above
12
#      copyright notice, this list of conditions and the following
13
#      disclaimer in the documentation and/or other materials
14
#      provided with the distribution.
15
#
16
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
# POSSIBILITY OF SUCH DAMAGE.
28
#
29
# The views and conclusions contained in the software and
30
# documentation are those of the authors and should not be
31
# interpreted as representing official policies, either expressed
32
# or implied, of GRNET S.A.
33

    
34
class CLIError(Exception):
35
    def __init__(self, message, status=0, details='', importance=0):
36
        """importance is set by the raiser
37
        0 is the lowest possible importance
38
        Suggested values: 0, 1, 2, 3
39
        """
40
        super(CLIError, self).__init__(message, status, details)
41
        self.message = message
42
        self.status = status
43
        self.details = details
44
        self.importance = importance
45

    
46
    def __unicode__(self):
47
        return unicode(self.message)
48

    
49
class CLISyntaxError(CLIError):
50
        def __init__(self, message='Syntax Error', status=10, details=''):
51
                super(CLISyntaxError, self).__init__(message, status, details, importance=1)
52

    
53
class CLIUnknownCommand(CLIError):
54
        def __init__(self, message='Unknown Command', status=12, details=''):
55
                super(CLIUnknownCommand, self).__init__(message, status, details, importance=0)
56

    
57
class CLICmdSpecError(CLIError):
58
        def __init__(self, message='Command Specification Error', status=13, details='', importance=1):
59
                super(CLICmdSpecError, self).__init__(message, status, details, importance=0)
60

    
61
class CLICmdIncompleteError(CLICmdSpecError):
62
    def __init__(self, message='Incomplete Command Error', status=14, details=''):
63
        super(CLICmdSpecError, self).__init__(message, status, details, importance=1)
64

    
65
def raiseCLIError(err, importance = -1):
66
    if importance < 0:
67
        if err.status <= 0:
68
            importance = 0
69
        elif err.status <= 400:
70
            importance = 1
71
        elif err.status <= 500:
72
            importance = 2
73
        else:
74
            importance = 3
75
    raise CLIError(err.message, err.status, err.details, importance)