264 lines
6.1 KiB
Python
264 lines
6.1 KiB
Python
# 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."""
|