Add missing key check while lbaas member add
Add check for missing key during member addition for lbaas. Since lbaasv2.0 API does not support UDP and dns seems to attempt to add it, it fails readyness and liveness checks for controller pod. This happens for k8s-service with a mix of UDP and TCP ports. In future (Stein release) when UDP LB is supported, it should not be a problem. Closes-Bug: 1792367 Change-Id: I73d26c43e924438c2eeba0ced185639f28731fea
This commit is contained in:
parent
124d2422ce
commit
5e44d17e87
|
@ -371,7 +371,11 @@ class LoadBalancerHandler(k8s_base.ResourceEventHandler):
|
|||
if (target_ip, target_port) in current_targets:
|
||||
continue
|
||||
port_name = subset_port.get('name')
|
||||
pool = pool_by_tgt_name[port_name]
|
||||
try:
|
||||
pool = pool_by_tgt_name[port_name]
|
||||
except KeyError:
|
||||
LOG.debug("No pool found for port: %r", port_name)
|
||||
continue
|
||||
# TODO(apuimedo): Do not pass subnet_id at all when in
|
||||
# L3 mode once old neutron-lbaasv2 is not supported, as
|
||||
# octavia does not require it
|
||||
|
|
|
@ -900,3 +900,45 @@ class TestLoadBalancerHandler(test_base.TestCase):
|
|||
def test_set_lbaas_state(self):
|
||||
self.skipTest("skipping until generalised annotation handling is "
|
||||
"implemented")
|
||||
|
||||
@mock.patch('kuryr_kubernetes.controller.drivers.base'
|
||||
'.PodSubnetsDriver.get_instance')
|
||||
@mock.patch('kuryr_kubernetes.controller.drivers.base'
|
||||
'.PodProjectDriver.get_instance')
|
||||
@mock.patch('kuryr_kubernetes.controller.drivers.base'
|
||||
'.LBaaSDriver.get_instance')
|
||||
def test_add_new_members_udp(self, m_get_drv_lbaas,
|
||||
m_get_drv_project, m_get_drv_subnets):
|
||||
project_id = str(uuid.uuid4())
|
||||
subnet_id = str(uuid.uuid4())
|
||||
current_ip = '1.1.1.1'
|
||||
current_targets = {
|
||||
'1.1.1.101': (1001, 10001),
|
||||
'1.1.1.111': (1001, 10001),
|
||||
'1.1.1.201': (2001, 20001)}
|
||||
expected_ip = '2.2.2.2'
|
||||
expected_targets = {
|
||||
'2.2.2.101': (1201, 12001),
|
||||
'2.2.2.111': (1201, 12001),
|
||||
'2.2.2.201': (2201, 22001)}
|
||||
endpoints = self._generate_endpoints(expected_targets)
|
||||
state = self._generate_lbaas_state(
|
||||
current_ip, current_targets, project_id, subnet_id)
|
||||
spec = self._generate_lbaas_spec(expected_ip, expected_targets,
|
||||
project_id, subnet_id, 'UDP')
|
||||
|
||||
m_drv_lbaas = mock.Mock(wraps=FakeLBaaSDriver())
|
||||
m_drv_project = mock.Mock()
|
||||
m_drv_project.get_project.return_value = project_id
|
||||
m_drv_subnets = mock.Mock()
|
||||
m_drv_subnets.get_subnets.return_value = {
|
||||
subnet_id: mock.sentinel.subnet}
|
||||
m_get_drv_lbaas.return_value = m_drv_lbaas
|
||||
m_get_drv_project.return_value = m_drv_project
|
||||
m_get_drv_subnets.return_value = m_drv_subnets
|
||||
|
||||
handler = h_lbaas.LoadBalancerHandler()
|
||||
member_added = handler._add_new_members(endpoints, state, spec)
|
||||
|
||||
self.assertEqual(member_added, False)
|
||||
m_drv_lbaas.ensure_member.assert_not_called()
|
||||
|
|
Loading…
Reference in New Issue