| Current File : //opt/cloudlinux/venv/lib64/python3.11/site-packages/xray/internal/exceptions.py |
# -*- coding: utf-8 -*-
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2021 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENSE.TXT
"""
This module contains custom exception classes
"""
import json
import logging
logger = logging.getLogger('exc_logger')
class XRayError(Exception):
"""
X-Ray internal exception class.
Adds an 'error' status and stores information about occurred exception.
Provides JSON encoded info about occurred exception.
"""
def __init__(self, message: str, *, flag: str = 'error',
extra: dict = None, errno: int = None, needs_logging: bool = True):
super().__init__(message)
self.status = 'error'
self.reason = message
self.extra_data = extra
self.type_flag = flag
self.errno = errno
# log the exception automatically
# use needs_logging=False where we already logged event and no need to duplicate it
if needs_logging:
if flag == 'warning':
logger.warning(message, extra=self.extra_data)
else:
logger.error(message, extra=self.extra_data)
def __str__(self) -> 'json str':
if self.type_flag == 'warning':
msg = {
'result': 'success',
'warning': self.reason
}
else:
msg = {
'result': self.reason
}
return json.dumps(msg)
class XRayManagerError(XRayError):
"""
X-Ray Manager exception class.
"""
class XRayAPIError(XRayError):
"""
X-Ray API exception special class.
"""
class XRayAgentError(XRayError):
"""
X-Ray Agent exception class
"""
class XRayMailerError(XRayError):
"""
X-Ray Mailer exception class
"""
class SmartAdvicePluginError(Exception):
"""
Error when something bad happened with Smart Advice plugin
"""