samcli/commands/package/exceptions.py (119 lines of code) (raw):
"""
Exceptions that are raised by sam package
"""
from samcli.commands.exceptions import UserException
class InvalidLocalPathError(UserException):
def __init__(self, resource_id, property_name, local_path):
self.resource_id = resource_id
self.property_name = property_name
self.local_path = local_path
message_fmt = (
"Parameter {property_name} of resource {resource_id} refers "
"to a file or folder that does not exist {local_path}"
)
super().__init__(
message=message_fmt.format(
resource_id=self.resource_id, property_name=self.property_name, local_path=self.local_path
)
)
class InvalidTemplateUrlParameterError(UserException):
def __init__(self, resource_id, property_name, template_path):
self.resource_id = resource_id
self.property_name = property_name
self.template_path = template_path
message_fmt = (
"{property_name} parameter of {resource_id} resource is invalid. "
"It must be a S3 URL or path to CloudFormation "
"template file. Actual: {template_path}"
)
super().__init__(
message=message_fmt.format(
property_name=self.property_name, resource_id=self.resource_id, template_path=self.template_path
)
)
class ExportFailedError(UserException):
def __init__(self, resource_id, property_name, property_value, ex):
self.resource_id = resource_id
self.property_name = property_name
self.property_value = property_value
self.ex = ex
message_fmt = (
"Unable to upload artifact {property_value} referenced "
"by {property_name} parameter of {resource_id} resource."
"\n"
"{ex}"
)
super().__init__(
message=message_fmt.format(
property_value=self.property_value,
property_name=self.property_name,
resource_id=self.resource_id,
ex=self.ex,
)
)
class DeleteArtifactFailedError(UserException):
def __init__(self, resource_id, property_name, ex):
self.resource_id = resource_id
self.property_name = property_name
self.ex = ex
message_fmt = (
"Unable to delete artifact referenced "
"by {property_name} parameter of {resource_id} resource."
"\n"
"{ex}"
)
super().__init__(
message=message_fmt.format(
property_name=self.property_name,
resource_id=self.resource_id,
ex=self.ex,
)
)
class ImageNotFoundError(UserException):
def __init__(self, resource_id, property_name, message_fmt):
self.resource_id = resource_id
self.property_name = property_name
super().__init__(
message=message_fmt.format(
property_name=self.property_name,
resource_id=self.resource_id,
)
)
class ECRAuthorizationError(UserException):
def __init__(self, msg):
self.msg = msg
super().__init__(message=self.msg)
class DockerLoginFailedError(UserException):
def __init__(self, msg):
self.msg = msg
super().__init__(message=self.msg)
class DockerPushFailedError(UserException):
def __init__(self, msg):
self.msg = msg
super().__init__(message=self.msg)
class DockerGetLocalImageFailedError(UserException):
def __init__(self, msg):
self.msg = msg
super().__init__(message=self.msg)
class PackageFailedError(UserException):
def __init__(self, template_file, ex):
self.template_file = template_file
self.ex = ex
message_fmt = "Failed to package template: {template_file}. \n {ex}"
super().__init__(message=message_fmt.format(template_file=self.template_file, ex=self.ex))
class NoSuchBucketError(UserException):
def __init__(self, **kwargs):
self.kwargs = kwargs
message_fmt = "\nS3 Bucket does not exist."
super().__init__(message=message_fmt.format(**self.kwargs))
class BucketNotSpecifiedError(UserException):
def __init__(self, **kwargs):
self.kwargs = kwargs
message_fmt = "\nS3 Bucket not specified, use --s3-bucket to specify a bucket name, or use --resolve-s3 \
to create a managed default bucket, or run sam deploy --guided"
super().__init__(message=message_fmt.format(**self.kwargs))
class PackageResolveS3AndS3SetError(UserException):
def __init__(self):
message_fmt = "Cannot use both --resolve-s3 and --s3-bucket parameters. Please use only one."
super().__init__(message=message_fmt)
class PackageResolveS3AndS3NotSetError(UserException):
def __init__(self):
message_fmt = "Cannot skip both --resolve-s3 and --s3-bucket parameters. Please provide one of these arguments."
super().__init__(message=message_fmt)