summaryrefslogtreecommitdiffstats
path: root/glustolibs-gluster/glustolibs/gluster/exceptions.py
blob: 8ee443841c4033dcb7e7cf25124c78916bc1a7cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/usr/bin/env python
#  Copyright (C) 2018 Red Hat, Inc. <http://www.redhat.com>
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License along
#  with this program; if not, write to the Free Software Foundation, Inc.,
#  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""Exceptions for Gluster libraries and tests"""


class GlusterError(Exception):
    """Base Gluster exception class."""
    def __init__(self, arg):
        Exception.__init__(self, arg)
        self.msg = arg


class TransportEndpointNotConnectedError(GlusterError):
    """Exception for transport endpoint not connected error."""
    def __init__(self, arg):
        GlusterError.__init__(self, arg)
        self.msg = arg


class NoSuchFileOrDirectoryError(GlusterError):
    """Exception for no such file or directory error."""
    def __init__(self, arg):
        GlusterError.__init__(self, arg)
        self.msg = arg


class AttributesDoNotMatchError(GlusterError):
    """Attributes do not match exception."""
    def __init__(self, arg):
        GlusterError.__init__(self, arg)
        self.msg = arg


class LayoutIsNotCompleteError(GlusterError):
    """Exception raised when the layout of a file is not complete."""
    def __init__(self, arg):
        GlusterError.__init__(self, arg)
        self.msg = arg


class LayoutIsNotBalancedError(GlusterError):
    """Exception raised when the layout of a file is not balanced."""
    def __init__(self, arg):
        GlusterError.__init__(self, arg)
        self.msg = arg


class LayoutHasHolesError(GlusterError):
    """Exception raised when the layout of a file has holes."""
    def __init__(self, arg):
        GlusterError.__init__(self, arg)
        self.msg = arg


class LayoutHasOverlapsError(GlusterError):
    """Exception raised when the layout of a file has overlaps."""
    def __init__(self, arg):
        GlusterError.__init__(self, arg)
        self.msg = arg


class FileDoesNotExistOnHashedBricksError(GlusterError):
    """Exception raised when a file/dir does not exist where it is hashed."""
    def __init__(self, arg):
        GlusterError.__init__(self, arg)
        self.msg = arg


class ConfigError(Exception):
    '''
    Custom exception thrown when there is an unrecoverable configuration error.
    For example, a required configuration key is not found.
    '''
    pass


class ExecutionError(Exception):
    '''
    Custom exception thrown when a command executed by Glusto results in an
    unrecoverable error.

    For example, all hosts are not in peer state or a volume canot be setup.

    '''
    pass


class ExecutionParseError(Exception):
    '''
    Custom exception thrown when parsing a command executed by Glusto
    results in an unexpected error.

    For example, the output of a command when has to be parsed, can have three
    states. First, the output was as expected. Second, didn't get the expected
    output after the parsing result and Third, didn't get the expected result
    as the command itself failed.

    '''
    pass