¡@

Home 

OpenStack Study: exceptions.py

OpenStack Index

**** CubicPower OpenStack Study ****

# Copyright (c) 2010-2012 OpenStack Foundation

#

# Licensed under the Apache License, Version 2.0 (the "License");

# you may not use this file except in compliance with the License.

# You may obtain a copy of the License at

#

# http://www.apache.org/licenses/LICENSE-2.0

#

# Unless required by applicable law or agreed to in writing, software

# distributed under the License is distributed on an "AS IS" BASIS,

# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

# implied.

# See the License for the specific language governing permissions and

# limitations under the License.

from eventlet import Timeout

**** CubicPower OpenStack Study ****

class MessageTimeout(Timeout):

**** CubicPower OpenStack Study ****

    def __init__(self, seconds=None, msg=None):

        Timeout.__init__(self, seconds=seconds)

        self.msg = msg

**** CubicPower OpenStack Study ****

    def __str__(self):

        return '%s: %s' % (Timeout.__str__(self), self.msg)

**** CubicPower OpenStack Study ****

class SwiftException(Exception):

pass

**** CubicPower OpenStack Study ****

class DiskFileError(SwiftException):

pass

**** CubicPower OpenStack Study ****

class DiskFileNotOpen(DiskFileError):

pass

**** CubicPower OpenStack Study ****

class DiskFileQuarantined(DiskFileError):

pass

**** CubicPower OpenStack Study ****

class DiskFileCollision(DiskFileError):

pass

**** CubicPower OpenStack Study ****

class DiskFileNotExist(DiskFileError):

pass

**** CubicPower OpenStack Study ****

class DiskFileDeleted(DiskFileNotExist):

**** CubicPower OpenStack Study ****

    def __init__(self, metadata=None):

        self.metadata = metadata or {}

        self.timestamp = self.metadata.get('X-Timestamp', 0)

**** CubicPower OpenStack Study ****

class DiskFileExpired(DiskFileDeleted):

pass

**** CubicPower OpenStack Study ****

class DiskFileNoSpace(DiskFileError):

pass

**** CubicPower OpenStack Study ****

class DiskFileDeviceUnavailable(DiskFileError):

pass

**** CubicPower OpenStack Study ****

class PathNotDir(OSError):

pass

**** CubicPower OpenStack Study ****

class ChunkReadTimeout(Timeout):

pass

**** CubicPower OpenStack Study ****

class ChunkWriteTimeout(Timeout):

pass

**** CubicPower OpenStack Study ****

class ConnectionTimeout(Timeout):

pass

**** CubicPower OpenStack Study ****

class DriveNotMounted(SwiftException):

pass

**** CubicPower OpenStack Study ****

class LockTimeout(MessageTimeout):

pass

**** CubicPower OpenStack Study ****

class RingBuilderError(SwiftException):

pass

**** CubicPower OpenStack Study ****

class RingValidationError(RingBuilderError):

pass

**** CubicPower OpenStack Study ****

class EmptyRingError(RingBuilderError):

pass

**** CubicPower OpenStack Study ****

class DuplicateDeviceError(RingBuilderError):

pass

**** CubicPower OpenStack Study ****

class ListingIterError(SwiftException):

pass

**** CubicPower OpenStack Study ****

class ListingIterNotFound(ListingIterError):

pass

**** CubicPower OpenStack Study ****

class ListingIterNotAuthorized(ListingIterError):

**** CubicPower OpenStack Study ****

    def __init__(self, aresp):

        self.aresp = aresp

**** CubicPower OpenStack Study ****

class SegmentError(SwiftException):

pass

**** CubicPower OpenStack Study ****

class ReplicationException(Exception):

pass

**** CubicPower OpenStack Study ****

class ReplicationLockTimeout(LockTimeout):

pass

**** CubicPower OpenStack Study ****

class ClientException(Exception):

**** CubicPower OpenStack Study ****

    def __init__(self, msg, http_scheme='', http_host='', http_port='',

                 http_path='', http_query='', http_status=0, http_reason='',

                 http_device='', http_response_content=''):

        Exception.__init__(self, msg)

        self.msg = msg

        self.http_scheme = http_scheme

        self.http_host = http_host

        self.http_port = http_port

        self.http_path = http_path

        self.http_query = http_query

        self.http_status = http_status

        self.http_reason = http_reason

        self.http_device = http_device

        self.http_response_content = http_response_content

**** CubicPower OpenStack Study ****

    def __str__(self):

        a = self.msg

        b = ''

        if self.http_scheme:

            b += '%s://' % self.http_scheme

        if self.http_host:

            b += self.http_host

        if self.http_port:

            b += ':%s' % self.http_port

        if self.http_path:

            b += self.http_path

        if self.http_query:

            b += '?%s' % self.http_query

        if self.http_status:

            if b:

                b = '%s %s' % (b, self.http_status)

            else:

                b = str(self.http_status)

        if self.http_reason:

            if b:

                b = '%s %s' % (b, self.http_reason)

            else:

                b = '- %s' % self.http_reason

        if self.http_device:

            if b:

                b = '%s: device %s' % (b, self.http_device)

            else:

                b = 'device %s' % self.http_device

        if self.http_response_content:

            if len(self.http_response_content) <= 60:

                b += '   %s' % self.http_response_content

            else:

                b += '  [first 60 chars of response] %s' \

                    % self.http_response_content[:60]

        return b and '%s: %s' % (a, b) or a