/
opt
/
cloudlinux
/
venv
/
lib
/
python3.11
/
site-packages
/
xray
/
internal
/
Upload Filee
HOME
# -*- 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 import os import sys from typing import Optional from xray import gettext as _ 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, context: Optional[dict] = None) -> None: super().__init__(message) self.status = 'error' self.reason = message self.extra_data = extra self.type_flag = flag self.errno = errno self.context = context def __str__(self) -> str: if self.type_flag == 'warning': msg = { 'result': 'success', 'warning': self.reason } else: msg = { 'result': self.reason } if self.context is not None: msg['context'] = self.context return json.dumps(msg) class XRayManagerError(XRayError): """ X-Ray Manager exception class. """ class XRayManagerExit(XRayManagerError): """ Raised when we want to exit the X-Ray Manager with given exitcode and message. This error and it's subclasses are not sent to sentry. """ def __init__(self, message, exitcode=1, **kwargs): self.exitcode = exitcode super().__init__(message=message, **kwargs) class XRayManagerExitPHPUnsupported(XRayManagerExit): """ Raised when given php version is not supported by x-ray tool. """ def __init__(self, url: str, php_version: str): self.url = url self.php_version = php_version super().__init__( message=_('%(url)s is served by %(real_php_version)s, ' 'which is unsupported by X-Ray'), context=dict(url=url, real_php_version=php_version)) class TaskNotFoundError(XRayManagerExit): """ X-Ray API reports about missing task """ def __init__(self, task_id: str): self.task_id = task_id super().__init__( message=_("Task with id %(task_id)s not found in database"), context=dict( task_id=task_id )) class XRayAPIError(XRayError): """ X-Ray API exception special class. """ class XRayAPIEmptyResponse(XRayAPIError): """ Happens when API returns empty response """ def __init__(self, result: dict, message: Optional[str] = None, **kwargs): self.result = result super().__init__( message=message or _('Received empty result: %s') % str(result), extra=dict(result=result), **kwargs ) class XRayAgentError(XRayError): """ X-Ray Agent exception class """ class XRayMailerError(XRayError): """ X-Ray Mailer exception class """ class XRayMissingDomain(XRayManagerExit): """ Missing domain exception class """ def __init__(self, domain_name: str, message=_("Domain '%(domain_name)s' does not exist on this server")): self.domain_name = domain_name super().__init__( message=message, exitcode=1, context=dict(domain_name=domain_name) ) class SmartAdvicePluginError(Exception): """ Error when something bad happened with Smart Advice plugin """