⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.184
Server IP:
65.21.180.239
Server:
Linux gowhm.eplangoweb.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
Server Software:
Apache
PHP Version:
8.0.30
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
lib
/
mysqlsh
/
lib
/
python3.8
/
site-packages
/
oci
/
View File Name :
exceptions.py
# coding: utf-8 # Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved. # This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. import platform import oci.util from .version import __version__ from oci._vendor.requests.exceptions import RequestException as BaseRequestException from oci._vendor.requests.exceptions import ConnectTimeout as BaseConnectTimeout CLIENT_VERSION = f"Oracle-PythonSDK/{__version__}" OS_VERSION = platform.platform() UPLOAD_MANAGER_DEBUG_INFORMATION_LOG = f"Client Version: {CLIENT_VERSION}, OS Version: {OS_VERSION}, See https://docs.oracle.com/iaas/Content/API/Concepts/sdk_troubleshooting.htm for common issues and steps to resolve them. If you need to contact support, or file a GitHub issue, please include this full error message." class ServiceError(Exception): """The service returned an error response.""" def __init__(self, status, code, headers, message, **kwargs): self.status = status self.code = code self.headers = headers self.message = message self.original_request = kwargs.get('original_request') self.request_id = self._get_opc_request_id() self.operation_name = kwargs.get('operation_name') self.api_reference_link = kwargs.get('api_reference_link') self.target_service = kwargs.get('target_service') self.request_endpoint = kwargs.get('request_endpoint') self.client_version = kwargs.get('client_version') self.timestamp = kwargs.get('timestamp') api_errors_info = f"See https://docs.oracle.com/iaas/Content/API/References/apierrors.htm#apierrors_{str(self.status)}__{str(self.status)}_{str(code).lower()} for more information about resolving this error." contact_info = f"If you are unable to resolve this {self.target_service} issue, please contact Oracle support and provide them this full error message." if not message: message = "The service returned error code %s" % self.status error_details = { "target_service": self.target_service, "status": status, "code": code, "opc-request-id": self.request_id, "message": message, "operation_name": self.operation_name, "timestamp": self.timestamp, "client_version": self.client_version, "request_endpoint": self.request_endpoint, "logging_tips": "To get more info on the failing request, refer to https://docs.oracle.com/en-us/iaas/tools/python/latest/logging.html for ways to log the request/response details." } if self.api_reference_link: error_details['troubleshooting_tips'] = f"{api_errors_info} Also see {self.api_reference_link} for details on this operation's requirements. {contact_info}" else: error_details['troubleshooting_tips'] = f"{api_errors_info} {contact_info}" if isinstance(kwargs.get('deserialized_data'), dict): # convert the Keys of the dictionary to snake case deserialized_data = oci.util.camel_to_snake_keys(kwargs.get('deserialized_data')) for key, value in deserialized_data.items(): # Skip adding duplicate keys in error_details if key not in (error_details): error_details[key] = value super(ServiceError, self).__init__(error_details) def _get_opc_request_id(self): if self.headers.get("opc-request-id"): return self.headers.get("opc-request-id") elif self.original_request and self.original_request.header_params: return self.original_request.header_params.get("opc-request-id") else: return None class TransientServiceError(ServiceError): """A transient service error occurred""" class ClientError(Exception): """A client-side error occurred..""" class ConfigFileNotFound(ClientError): """Config file not be found.""" class InvalidConfig(ClientError): """The config object is missing required keys or contains malformed values. For example: .. code-block:: python raise InvalidConfig({ "region": "missing", "key_id": "malformed' }) """ def __init__(self, errors): """:param errors: {config key: error code}""" self.errors = errors def __str__(self): return str(self.errors) class InvalidAlloyConfig(ClientError): """Alloy config is invalid, or is blocking a service""" class InvalidResourcePrincipalArguments(ClientError): """The ResourceId is missing.""" class InvalidPrivateKey(ClientError): """The provided key is not a private key, or the provided passphrase is incorrect.""" class MissingPrivateKeyPassphrase(InvalidPrivateKey): """The provided key requires a passphrase.""" class InvalidKeyFilePath(ClientError): """The value is expected to be a file name but it's not a valid key_file path.""" class ProfileNotFound(ClientError): """The specified profile was not found in the config file.""" class WaitUntilNotSupported(ClientError): """wait_until is not supported by this response.""" class MaximumWaitTimeExceeded(ClientError): """Maximum wait time has been exceeded.""" class MultipartUploadError(Exception): """ Exception thrown when an error with a multipart upload occurs. As multipart uploads can be parallelised, this error contains a collection of errors which caused individual part uploads to fail """ def __init__(self, **kwargs): """ :param queue error_causes_queue: A queue containing errors which occured during the multipart upload """ self.error_causes = [] if 'error_causes_queue' in kwargs: while not kwargs['error_causes_queue'].empty(): self.error_causes.append(kwargs['error_causes_queue'].get()) self.message = f"MultipartUploadError exception has occurred. {UPLOAD_MANAGER_DEBUG_INFORMATION_LOG}" super(Exception, self).__init__(self.message) class CompositeOperationError(Exception): """ An exception occurred during a composite operation (e.g. launching an instance and waiting for state) but part of the composite operation succeeded. This exception has the following attributes: :var list partial_results: Any partial results which are available (e.g. if the :py:meth:`~oci.core.ComputeClient.launch_instance` succeeded and the waiting for state failed then this will contain the :py:meth:`~oci.core.ComputeClient.launch_instance` result) :var Exception cause: The exception which caused the composite operation to fail """ def __init__(self, partial_results=[], cause=None): self.partial_results = partial_results self.cause = cause class RequestException(BaseRequestException): """An exception occurred when making the request""" class ConnectTimeout(BaseConnectTimeout): """The request timed out while trying to connect to the remote server. Requests that produced this error are safe to retry. """ class MissingEndpointForNonRegionalServiceClientError(ValueError): """No endpoint value was provided when trying to create a non-regional service client. """ class DownloadTerminated(Exception): """ This exception is raised by DownloadManager.get_object_to_path and DownloadManager.get_object_to_stream when a download is terminated in between. This is generally raised when the download manager's state is changed to -1, indicating that the download is to be terminated. """ pass class ResumableDownloadException(Exception): """ This exception is raised when in a multipart download some parts failed. """ def __init__(self, namespace_name, bucket_name, object_name, failed_parts): self.namespace_name = namespace_name self.bucket_name = bucket_name self.object_name = object_name self.failed_parts = failed_parts class DownloadFailedIncorrectDownloadSize(Exception): """ This exception is raised when the final integrity check (comparing the actual bytes downloaded with the object size in bytes) fails. """ def __init__(self, actual_bytes_downloaded, object_size): self.actual_bytes_downloaded = actual_bytes_downloaded self.object_size = object_size self.message = (f"The downloaded file didn't match the object size in bytes: expected {object_size}, " f"got {actual_bytes_downloaded}")