""" 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)