Merge "Skips kubernetes service without selector"

This commit is contained in:
Jenkins 2017-07-20 07:28:13 +00:00 committed by Gerrit Code Review
commit b29c54c0f5
2 changed files with 28 additions and 0 deletions

View File

@ -44,6 +44,11 @@ class LBaaSSpecHandler(k8s_base.ResourceEventHandler):
def on_present(self, service):
lbaas_spec = self._get_lbaas_spec(service)
if self._should_ignore(service):
LOG.debug("Skiping Kubernetes service without a selector as "
"Kubernetes does not create an endpoint object for it.")
return
if self._has_lbaas_spec_changes(service, lbaas_spec):
lbaas_spec = self._generate_lbaas_spec(service)
self._set_lbaas_spec(service, lbaas_spec)
@ -53,6 +58,12 @@ class LBaaSSpecHandler(k8s_base.ResourceEventHandler):
if spec.get('type') == 'ClusterIP':
return spec.get('clusterIP')
def _should_ignore(self, service):
return not(self._has_selector(service))
def _has_selector(self, service):
return service['spec'].get('selector')
def _get_subnet_id(self, service, project_id, ip):
subnets_mapping = self._drv_subnets.get_subnets(service, project_id)
subnet_ids = {

View File

@ -55,6 +55,7 @@ class TestLBaaSSpecHandler(test_base.TestCase):
m_handler._get_lbaas_spec.return_value = old_spec
m_handler._has_lbaas_spec_changes.return_value = True
m_handler._generate_lbaas_spec.return_value = new_spec
m_handler._should_ignore.return_value = False
h_lbaas.LBaaSSpecHandler.on_present(m_handler, svc_event)
@ -71,6 +72,7 @@ class TestLBaaSSpecHandler(test_base.TestCase):
m_handler = mock.Mock(spec=h_lbaas.LBaaSSpecHandler)
m_handler._get_lbaas_spec.return_value = old_spec
m_handler._has_lbaas_spec_changes.return_value = False
m_handler._should_ignore.return_value = False
h_lbaas.LBaaSSpecHandler.on_present(m_handler, svc_event)
@ -80,6 +82,21 @@ class TestLBaaSSpecHandler(test_base.TestCase):
m_handler._generate_lbaas_spec.assert_not_called()
m_handler._set_lbaas_spec.assert_not_called()
def test_on_present_no_selector(self):
svc_event = mock.sentinel.svc_event
old_spec = mock.sentinel.old_spec
m_handler = mock.Mock(spec=h_lbaas.LBaaSSpecHandler)
m_handler._get_lbaas_spec.return_value = old_spec
m_handler._should_ignore.return_value = True
h_lbaas.LBaaSSpecHandler.on_present(m_handler, svc_event)
m_handler._get_lbaas_spec.assert_called_once_with(svc_event)
m_handler._has_lbaas_spec_changes.assert_not_called()
m_handler._generate_lbaas_spec.assert_not_called()
m_handler._set_lbaas_spec.assert_not_called()
def test_get_service_ip(self):
svc_body = {'spec': {'type': 'ClusterIP',
'clusterIP': mock.sentinel.cluster_ip}}