Merge "Ignore Pod event if Pod is Pending with no Node set"

This commit is contained in:
Zuul 2022-01-24 10:47:58 +00:00 committed by Gerrit Code Review
commit 9939f51132
2 changed files with 27 additions and 1 deletions

View File

@ -1244,7 +1244,16 @@ class MultiVIFPool(base.VIFPoolDriver):
self._vif_drvs[pod_driver] = drv_pool
def request_vif(self, pod, project_id, subnets, security_groups):
pod_vif_type = self._get_pod_vif_type(pod)
pod_info = "%s/%s" % (pod['metadata']['namespace'],
pod['metadata']['name'])
try:
pod_vif_type = self._get_pod_vif_type(pod)
except KeyError:
# NOTE(maysams): No nodeName set. Event should be skipped
LOG.warning("Pod %s has no .spec.nodeName set. This is unexpected "
"as it's supposed to be scheduled. Ignoring event.",
pod_info)
return None
return self._vif_drvs[pod_vif_type].request_vif(
pod, project_id, subnets, security_groups)

View File

@ -141,6 +141,23 @@ class BaseVIFPool(test_base.TestCase):
security_groups)
self.assertIsNone(resp)
def test_request_vif_multi_vif_pod_without_host(self):
cls = vif_pool.MultiVIFPool
m_driver = mock.MagicMock(spec=cls)
pod = get_pod_obj().copy()
del pod['spec']['nodeName']
project_id = str(uuid.uuid4())
subnets = mock.sentinel.subnets
security_groups = [mock.sentinel.security_groups]
m_driver._vif_drvs = {}
m_driver._vif_drvs['nested-vlan'] = 'NestedVIFPool'
m_driver._get_pod_vif_type.side_effect = KeyError
resp = cls.request_vif(m_driver, pod, project_id, subnets,
security_groups)
self.assertIsNone(resp)
@mock.patch('kuryr_kubernetes.clients.get_kubernetes_client')
@mock.patch('time.time', return_value=50)
@ddt.data((neutron_vif.NeutronPodVIFDriver),