99 lines
3.5 KiB
Python
99 lines
3.5 KiB
Python
# All rights reserved.
|
|
#
|
|
# 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.
|
|
|
|
from neutron_lib._i18n import _
|
|
from neutron_lib import exceptions
|
|
|
|
|
|
# L3 Exceptions
|
|
class RouterNotFound(exceptions.NotFound):
|
|
message = _("Router %(router_id)s could not be found")
|
|
|
|
|
|
class RouterInUse(exceptions.InUse):
|
|
message = _("Router %(router_id)s %(reason)s")
|
|
|
|
def __init__(self, **kwargs):
|
|
if 'reason' not in kwargs:
|
|
kwargs['reason'] = "still has ports"
|
|
super(RouterInUse, self).__init__(**kwargs)
|
|
|
|
|
|
class RouterInterfaceNotFound(exceptions.NotFound):
|
|
message = _("Router %(router_id)s does not have "
|
|
"an interface with id %(port_id)s")
|
|
|
|
|
|
class RouterInterfaceNotFoundForSubnet(exceptions.NotFound):
|
|
message = _("Router %(router_id)s has no interface "
|
|
"on subnet %(subnet_id)s")
|
|
|
|
|
|
class RouterInterfaceInUseByFloatingIP(exceptions.InUse):
|
|
message = _("Router interface for subnet %(subnet_id)s on router "
|
|
"%(router_id)s cannot be deleted, as it is required "
|
|
"by one or more floating IPs.")
|
|
|
|
|
|
class FloatingIPNotFound(exceptions.NotFound):
|
|
message = _("Floating IP %(floatingip_id)s could not be found")
|
|
|
|
|
|
class ExternalGatewayForFloatingIPNotFound(exceptions.NotFound):
|
|
message = _("External network %(external_network_id)s is not reachable "
|
|
"from subnet %(subnet_id)s. Therefore, cannot associate "
|
|
"Port %(port_id)s with a Floating IP.")
|
|
|
|
|
|
class FloatingIPPortAlreadyAssociated(exceptions.InUse):
|
|
message = _("Cannot associate floating IP %(floating_ip_address)s "
|
|
"(%(fip_id)s) with port %(port_id)s "
|
|
"using fixed IP %(fixed_ip)s, as that fixed IP already "
|
|
"has a floating IP on external network %(net_id)s.")
|
|
|
|
|
|
class RouterExternalGatewayInUseByFloatingIp(exceptions.InUse):
|
|
message = _("Gateway cannot be updated for router %(router_id)s, since a "
|
|
"gateway to external network %(net_id)s is required by one or "
|
|
"more floating IPs.")
|
|
|
|
|
|
class RouterInterfaceAttachmentConflict(exceptions.Conflict):
|
|
message = _("Error %(reason)s while attempting the operation.")
|
|
|
|
|
|
class RouterNotCompatibleWithAgent(exceptions.NeutronException):
|
|
message = _("Router '%(router_id)s' is not compatible with this agent.")
|
|
|
|
|
|
class RouterNotFoundInRouterFactory(exceptions.NeutronException):
|
|
message = _("Router '%(router_id)s' with features '%(features)s' could "
|
|
"not be found in the router factory.")
|
|
|
|
|
|
class FloatingIpSetupException(exceptions.NeutronException):
|
|
def __init__(self, message=None):
|
|
self.message = message
|
|
super(FloatingIpSetupException, self).__init__()
|
|
|
|
|
|
class AbortSyncRouters(exceptions.NeutronException):
|
|
message = _("Aborting periodic_sync_routers_task due to an error.")
|
|
|
|
|
|
class IpTablesApplyException(exceptions.NeutronException):
|
|
def __init__(self, message=None):
|
|
self.message = message
|
|
super(IpTablesApplyException, self).__init__()
|