aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/moto/py3/moto/route53/exceptions.py
blob: acf02ad0815532ba205533d4c58a5e13f7940ad9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
"""Exceptions raised by the Route53 service."""
from moto.core.exceptions import RESTError


class Route53ClientError(RESTError):
    """Base class for Route53 errors."""

    def __init__(self, *args, **kwargs):
        kwargs.setdefault("template", "wrapped_single_error")
        super().__init__(*args, **kwargs)


class InvalidInput(Route53ClientError):
    """Malformed ARN for the CloudWatch log group."""

    code = 400

    def __init__(self, message: str):
        super().__init__("InvalidInput", message)


class InvalidCloudWatchArn(InvalidInput):
    def __init__(
        self,
    ):
        message = "The ARN for the CloudWatch Logs log group is invalid"
        super().__init__(message)


class InvalidActionValue(InvalidInput):
    def __init__(self, value: str):
        message = (
            f"Invalid XML ; cvc-enumeration-valid: Value '{value}' is not facet-valid"
            " with respect to enumeration '[CREATE, DELETE, UPSERT]'. It must be a value from the enumeration."
        )
        super().__init__(message)


class InvalidPaginationToken(Route53ClientError):
    """Bad NextToken specified when listing query logging configs."""

    code = 400

    def __init__(self):
        message = (
            "Route 53 can't get the next page of query logging configurations "
            "because the specified value for NextToken is invalid."
        )
        super().__init__("InvalidPaginationToken", message)


class InvalidVPCId(Route53ClientError):
    """Missing/Invalid VPC ID"""

    code = 400

    def __init__(self):
        message = "Invalid or missing VPC Id."
        super().__init__("InvalidVPCId", message)
        self.content_type = "text/xml"


class NoSuchCloudWatchLogsLogGroup(Route53ClientError):
    """CloudWatch LogGroup has a permissions policy, but does not exist."""

    code = 404

    def __init__(self):
        message = "The specified CloudWatch Logs log group doesn't exist."
        super().__init__("NoSuchCloudWatchLogsLogGroup", message)


class NoSuchHostedZone(Route53ClientError):
    """HostedZone does not exist."""

    code = 404

    def __init__(self, host_zone_id):
        message = f"No hosted zone found with ID: {host_zone_id}"
        super().__init__("NoSuchHostedZone", message)
        self.content_type = "text/xml"


class NoSuchHealthCheck(Route53ClientError):
    """HealthCheck does not exist."""

    code = 404

    def __init__(self, health_check_id):
        message = f"A health check with id {health_check_id} does not exist."
        super().__init__("NoSuchHealthCheck", message)
        self.content_type = "text/xml"


class HostedZoneNotEmpty(Route53ClientError):
    """HostedZone does not exist."""

    code = 400

    def __init__(self):
        message = (
            "The hosted zone contains resource records that are not SOA or NS records."
        )
        super().__init__("HostedZoneNotEmpty", message)
        self.content_type = "text/xml"


class PublicZoneVPCAssociation(Route53ClientError):
    """Public hosted zone can't be associated."""

    code = 400

    def __init__(self):
        message = "You're trying to associate a VPC with a public hosted zone. Amazon Route 53 doesn't support associating a VPC with a public hosted zone."
        super().__init__("PublicZoneVPCAssociation", message)
        self.content_type = "text/xml"


class LastVPCAssociation(Route53ClientError):
    """Last VPC can't be disassociate."""

    code = 400

    def __init__(self):
        message = "The VPC that you're trying to disassociate from the private hosted zone is the last VPC that is associated with the hosted zone. Amazon Route 53 doesn't support disassociating the last VPC from a hosted zone."
        super().__init__("LastVPCAssociation", message)
        self.content_type = "text/xml"


class NoSuchQueryLoggingConfig(Route53ClientError):
    """Query log config does not exist."""

    code = 404

    def __init__(self):
        message = "The query logging configuration does not exist"
        super().__init__("NoSuchQueryLoggingConfig", message)


class QueryLoggingConfigAlreadyExists(Route53ClientError):
    """Query log config exists for the hosted zone."""

    code = 409

    def __init__(self):
        message = "A query logging configuration already exists for this hosted zone"
        super().__init__("QueryLoggingConfigAlreadyExists", message)


class InvalidChangeBatch(Route53ClientError):

    code = 400

    def __init__(self):
        message = "Number of records limit of 1000 exceeded."
        super().__init__("InvalidChangeBatch", message)


class NoSuchDelegationSet(Route53ClientError):
    code = 400

    def __init__(self, delegation_set_id):
        super().__init__("NoSuchDelegationSet", delegation_set_id)
        self.content_type = "text/xml"