# Copyright 2018 - The Android Open Source Project # # 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. r"""Custom Exceptions for acloud.""" HTTP_NOT_FOUND_CODE = 404 class DriverError(Exception): """Base Android Gce driver exception.""" class ConfigError(DriverError): """Error related to config.""" class CommandArgError(DriverError): """Error related to command line args.""" class GceOperationTimeoutError(DriverError): """Error raised when a GCE operation timedout.""" class GetGceZoneError(DriverError): """Can't get GCE zones info.""" class HttpError(DriverError): """Error related to http requests.""" def __init__(self, code, message): self.code = code super().__init__(message) @staticmethod def CreateFromHttpError(http_error): """Create from an apiclient.errors.HttpError. Parse the error code from apiclient.errors.HttpError and create an instance of HttpError from this module that has the error code. Args: http_error: An apiclient.errors.HttpError instance. Returns: An HttpError instance from this module. """ return HttpError(http_error.resp.status, str(http_error)) class ResourceNotFoundError(HttpError): """Error raised when a resource is not found.""" class InvalidVirtualDeviceIpError(DriverError): """Invalid virtual device's IP is set. Raise this when the virtual device's IP of an AVD instance is invalid. """ class HasRetriableRequestsError(DriverError): """Raised when some retriable requests fail in a batch execution.""" class AuthenticationError(DriverError): """Raised when authentication fails.""" class DeviceBootError(DriverError): """To catch device boot errors.""" class DownloadArtifactError(DriverError): """To catch download artifact errors.""" class NoSubnetwork(DriverError): """When there is no subnetwork for the GCE.""" class DeviceConnectionError(DriverError): """To catch device connection errors.""" class PortOccupied(DriverError): """Raised when open port fail.""" class DeviceBootTimeoutError(DeviceBootError): """Raised when an AVD defice failed to boot within timeout.""" class SetupError(Exception): """Base Setup cmd exception.""" class OSTypeError(SetupError): """Error related to OS type.""" class NoGoogleSDKDetected(SetupError): """Can't find the SDK path.""" class NoBillingError(SetupError): """Billing account isn't enabled.""" class PackageInstallError(SetupError): """Error related to package installation.""" class RequiredPackageNotInstalledError(SetupError): """Error related to required package not installed.""" class UnableToLocatePkgOnRepositoryError(SetupError): """Error related to unable to locate package.""" class NotSupportedPlatformError(SetupError): """Error related to user using a not supported os.""" class NotSupportedFieldName(SetupError): """Unsupported field name for user config.""" class CreateError(Exception): """Base Create cmd exception.""" class GetAndroidBuildEnvVarError(CreateError): """Can't get Android Build set environment variables.""" class CheckPathError(CreateError): """Path does not exist.""" class CheckGCEZonesQuotaError(CreateError): """There is no zone have enough quota.""" class UnsupportedInstanceImageType(CreateError): """Unsupported create action for given instance/image type.""" class UnsupportedFlavor(CreateError): """Unsupported create action for given flavor name.""" class UnsupportedMultiAdbPort(CreateError): """Unsupported create action for multi AVDs and specify adb port.""" class UnsupportedCreateArgs(CreateError): """Unsupported create arg for a specified AVD type.""" class GetBuildIDError(CreateError): """Can't get build id from Android Build.""" class NotSupportedHWPropertyError(CreateError): """An error to wrap a non-supported property issue.""" class MalformedDictStringError(CreateError): """Error related to unable to convert string to dict.""" class InvalidHWPropertyError(CreateError): """An error to wrap a malformed hw property issue.""" class GetLocalImageError(CreateError): """Can't find the local image.""" class GetRemoteImageError(CreateError): """An error to download the remote image.""" class GetCvdLocalHostPackageError(CreateError): """Can't find the lost host package.""" class GetSdkRepoPackageError(CreateError): """Can't find the local SDK repository package for goldfish.""" class NoCuttlefishCommonInstalled(SetupError): """Can't find cuttlefish_common lib.""" class ImgDoesNotExist(CreateError): """Image does not exist.""" class UnsupportedCompressionFileType(SetupError): """Don't support the compression file type.""" class LaunchCVDFail(CreateError): """Cuttlefish AVD launch failed.""" class SubprocessFail(CreateError): """Subprocess failed.""" class NoExecuteCmd(CreateError): """Can't find execute bin command.""" class ReconnectError(Exception): """Base reconnect cmd exception.""" class NoInstancesFound(ReconnectError): """No instances found.""" class FunctionTimeoutError(Exception): """Timeout error of decorator function.""" class ZipImageError(Exception): """Zip image error.""" class UnknownAvdType(Exception): """Unknown AVD type.""" class UnknownType(Exception): """Unknown type.""" class AdbDisconnectFailed(Exception): """Adb still be alive after disconnect instance.""" class UnsupportedLocalInstanceId(Exception): """Unsupported local instance id.""" class InvalidInstanceDir(Exception): """Invalid instance dir."""