Include proper log when Kuryr cannot reach Octavia API
This is not the proper way of informing user that Octavia returns 503, we should have a nice message or we'll start getting bug reports on us Closes-bug: 1918708 Change-Id: I871c3998edb5b1d594067b60e908c453ad122dde
This commit is contained in:
parent
1260af7022
commit
d0331abc38
|
@ -29,6 +29,7 @@ from kuryr_kubernetes.controller.drivers import base
|
|||
from kuryr_kubernetes import exceptions as k_exc
|
||||
from kuryr_kubernetes import utils
|
||||
|
||||
|
||||
CONF = cfg.CONF
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
@ -118,7 +119,10 @@ class LBaaSv2Driver(base.LBaaSDriver):
|
|||
# won't assume this dict is sorted.
|
||||
max_ver = 0, 0
|
||||
for version in versions:
|
||||
v_tuple = versionutils.convert_version_to_tuple(version['version'])
|
||||
if version.get('version') is None:
|
||||
raise k_exc.UnreachableOctavia('Unable to reach Octavia API')
|
||||
v_tuple = versionutils.convert_version_to_tuple(
|
||||
version['version'])
|
||||
if v_tuple > max_ver:
|
||||
max_ver = v_tuple
|
||||
|
||||
|
|
|
@ -116,3 +116,14 @@ class CNIBindingFailure(Exception):
|
|||
"""Exception indicates a binding/unbinding VIF failure in CNI"""
|
||||
def __init__(self, message):
|
||||
super(CNIBindingFailure, self).__init__(message)
|
||||
|
||||
|
||||
class UnreachableOctavia(Exception):
|
||||
"""Exception indicates Octavia API failure and can not be reached
|
||||
|
||||
This exception is raised when Kuryr can not reach Octavia. The Octavia
|
||||
API call returns 'None' on the version field and we need to properly log
|
||||
a message informing the user
|
||||
"""
|
||||
def __init__(self, message):
|
||||
super(UnreachableOctavia, self).__init__(message)
|
||||
|
|
|
@ -57,6 +57,20 @@ OCTAVIA_VERSIONS = {
|
|||
},
|
||||
}
|
||||
|
||||
BAD_OCTAVIA_VERSIONS = {
|
||||
'regionOne': {
|
||||
'public': {
|
||||
'load-balancer': [
|
||||
{
|
||||
'status': 'CURRENT',
|
||||
'version': None,
|
||||
'raw_status': u'CURRENT',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
class TestLBaaSv2Driver(test_base.TestCase):
|
||||
@mock.patch('kuryr_kubernetes.controller.drivers.lbaasv2.LBaaSv2Driver.'
|
||||
|
@ -110,6 +124,12 @@ class TestLBaaSv2Driver(test_base.TestCase):
|
|||
self.assertEqual((2, 2),
|
||||
d_lbaasv2.LBaaSv2Driver.get_octavia_version(None))
|
||||
|
||||
def test_get_octavia_version_is_none(self):
|
||||
lbaas = self.useFixture(k_fix.MockLBaaSClient()).client
|
||||
lbaas.get_all_version_data.return_value = BAD_OCTAVIA_VERSIONS
|
||||
self.assertRaises(k_exc.UnreachableOctavia,
|
||||
d_lbaasv2.LBaaSv2Driver.get_octavia_version, None)
|
||||
|
||||
def test_ensure_loadbalancer(self):
|
||||
os_net = self.useFixture(k_fix.MockNetworkClient()).client
|
||||
cls = d_lbaasv2.LBaaSv2Driver
|
||||
|
|
Loading…
Reference in New Issue