neutron-lbaas/neutron_lbaas/common/exceptions.py
Nir Magnezi 6ef87fe033 Auto reschedule loadbalancers from dead agents
Similarly to what was done in 'allow_automatic_l3agent_failover'
This patch adds a periodic check to examine the status of all LBaaS
agents with loadbalancers scheduled to them.
If the agent is dead, the loadbalancer will be rescheduled to an alive
agent.

The periodic LBaaS agents status check is invoked by
add_agent_status_check_worker() which was introduced in neutron codebase in
I3a32a95489831f0d862930384309eefdc881d8f6 to allow safe process forking.

Closes-Bug: #1565511

Depends-On: I652ab029b7427c8783e4b2f0443a89ee884bf064
Change-Id: Id8d3218bf1e52722cc10ddcd34e3e734eef90658
2016-12-12 17:18:27 +02:00

57 lines
1.6 KiB
Python

# Copyright 2013 OpenStack Foundation. 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.
#
"""
Neutron Lbaas base exception handling.
"""
from neutron_lib import exceptions
from neutron_lbaas._i18n import _LE
class ModelMapException(exceptions.NeutronException):
message = _LE("Unable to map model class %(target_name)s")
class LbaasException(exceptions.NeutronException):
pass
class TLSException(LbaasException):
pass
class NeedsPassphrase(TLSException):
message = _LE("Passphrase needed to decrypt key but client "
"did not provide one.")
class UnreadableCert(TLSException):
message = _LE("Could not read X509 from PEM")
class MisMatchedKey(TLSException):
message = _LE("Key and x509 certificate do not match")
class CertificateStorageException(TLSException):
message = _LE('Could not store certificate: %(msg)s')
class LoadbalancerReschedulingFailed(exceptions.Conflict):
message = _LE("Failed rescheduling loadbalancer %(loadbalancer_id)s: "
"no eligible lbaas agent found.")