Reuse utils.get_lbaas_spec in lb handler
LoadBalancerHandler._get_lbaas_spec is identical to utils.get_lbaas_spec, which is used by LBaaSSpecHandler, so we can reuse the function from utils instead of duplication of code. Note that the passed k8s object is endpoint in case of LoadBalancerHandler and service in case of LBaaSSpecHandler (but same annotation used in both cases, so a common function should be enough) Change-Id: I124109f79bcdefcc4948eb35b4bbb4a9ca87c43b Signed-off-by: Yash Gupta <y.gupta@samsung.com>
This commit is contained in:
parent
ff7b449529
commit
4c3e338273
|
@ -23,6 +23,7 @@ from kuryr_kubernetes.controller.drivers import base as drv_base
|
|||
from kuryr_kubernetes.controller.handlers import lbaas as h_lbaas
|
||||
from kuryr_kubernetes.controller.ingress import ingress_ctl
|
||||
from kuryr_kubernetes.objects import lbaas as obj_lbaas
|
||||
from kuryr_kubernetes import utils
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
@ -55,7 +56,7 @@ class IngressLoadBalancerHandler(h_lbaas.LoadBalancerHandler):
|
|||
LOG.info("No L7 router found - do nothing")
|
||||
return
|
||||
|
||||
lbaas_spec = self._get_lbaas_spec(endpoints)
|
||||
lbaas_spec = utils.get_lbaas_spec(endpoints)
|
||||
if self._should_ignore(endpoints, lbaas_spec):
|
||||
return
|
||||
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
|
||||
from kuryr.lib._i18n import _
|
||||
from oslo_log import log as logging
|
||||
from oslo_serialization import jsonutils
|
||||
|
||||
from kuryr_kubernetes import clients
|
||||
from kuryr_kubernetes import config
|
||||
|
@ -171,7 +170,7 @@ class LoadBalancerHandler(k8s_base.ResourceEventHandler):
|
|||
config.CONF.kubernetes.endpoints_driver_octavia_provider)
|
||||
|
||||
def on_present(self, endpoints):
|
||||
lbaas_spec = self._get_lbaas_spec(endpoints)
|
||||
lbaas_spec = utils.get_lbaas_spec(endpoints)
|
||||
if self._should_ignore(endpoints, lbaas_spec):
|
||||
LOG.debug("Ignoring Kubernetes endpoints %s",
|
||||
endpoints['metadata']['name'])
|
||||
|
@ -622,15 +621,3 @@ class LoadBalancerHandler(k8s_base.ResourceEventHandler):
|
|||
|
||||
lbaas_state.loadbalancer = lb
|
||||
return changed
|
||||
|
||||
def _get_lbaas_spec(self, endpoints):
|
||||
# TODO(ivc): same as '_get_lbaas_state'
|
||||
try:
|
||||
annotations = endpoints['metadata']['annotations']
|
||||
annotation = annotations[k_const.K8S_ANNOTATION_LBAAS_SPEC]
|
||||
except KeyError:
|
||||
return None
|
||||
obj_dict = jsonutils.loads(annotation)
|
||||
obj = obj_lbaas.LBaaSServiceSpec.obj_from_primitive(obj_dict)
|
||||
LOG.debug("Got LBaaSServiceSpec from annotation: %r", obj)
|
||||
return obj
|
||||
|
|
|
@ -33,14 +33,15 @@ class TestIngressLoadBalancerHandler(t_lbaas.TestLoadBalancerHandler):
|
|||
|
||||
self.assertEqual(mock.sentinel.drv_lbaas, handler._drv_lbaas)
|
||||
|
||||
def test_on_present_no_ing_ctrlr(self):
|
||||
@mock.patch('kuryr_kubernetes.utils.get_lbaas_spec')
|
||||
def test_on_present_no_ing_ctrlr(self, m_get_lbaas_spec):
|
||||
endpoints = mock.sentinel.endpoints
|
||||
|
||||
m_handler = mock.Mock(spec=h_ing_lbaas.IngressLoadBalancerHandler)
|
||||
m_handler._l7_router = None
|
||||
h_ing_lbaas.IngressLoadBalancerHandler.on_present(m_handler, endpoints)
|
||||
|
||||
m_handler._get_lbaas_spec.assert_not_called()
|
||||
m_get_lbaas_spec.assert_not_called()
|
||||
m_handler._should_ignore.assert_not_called()
|
||||
|
||||
def test_should_ignore(self):
|
||||
|
|
|
@ -441,9 +441,11 @@ class TestLoadBalancerHandler(test_base.TestCase):
|
|||
self.assertEqual(mock.sentinel.drv_lb_ip, handler._drv_service_pub_ip)
|
||||
self.assertEqual('ovn', handler._lb_provider)
|
||||
|
||||
@mock.patch('kuryr_kubernetes.utils.get_lbaas_spec')
|
||||
@mock.patch('kuryr_kubernetes.utils.set_lbaas_state')
|
||||
@mock.patch('kuryr_kubernetes.utils.get_lbaas_state')
|
||||
def test_on_present(self, m_get_lbaas_state, m_set_lbaas_state):
|
||||
def test_on_present(self, m_get_lbaas_state, m_set_lbaas_state,
|
||||
m_get_lbaas_spec):
|
||||
lbaas_spec = mock.sentinel.lbaas_spec
|
||||
lbaas_spec.type = 'DummyType'
|
||||
lbaas_spec.lb_ip = "1.2.3.4"
|
||||
|
@ -461,7 +463,7 @@ class TestLoadBalancerHandler(test_base.TestCase):
|
|||
m_drv_service_pub_ip.associate_pub_ip.return_value = True
|
||||
|
||||
m_handler = mock.Mock(spec=h_lbaas.LoadBalancerHandler)
|
||||
m_handler._get_lbaas_spec.return_value = lbaas_spec
|
||||
m_get_lbaas_spec.return_value = lbaas_spec
|
||||
m_handler._should_ignore.return_value = False
|
||||
m_get_lbaas_state.return_value = lbaas_state
|
||||
m_handler._sync_lbaas_members.return_value = True
|
||||
|
@ -469,7 +471,7 @@ class TestLoadBalancerHandler(test_base.TestCase):
|
|||
|
||||
h_lbaas.LoadBalancerHandler.on_present(m_handler, endpoints)
|
||||
|
||||
m_handler._get_lbaas_spec.assert_called_once_with(endpoints)
|
||||
m_get_lbaas_spec.assert_called_once_with(endpoints)
|
||||
m_handler._should_ignore.assert_called_once_with(endpoints, lbaas_spec)
|
||||
m_get_lbaas_state.assert_called_once_with(endpoints)
|
||||
m_handler._sync_lbaas_members.assert_called_once_with(
|
||||
|
@ -485,10 +487,11 @@ class TestLoadBalancerHandler(test_base.TestCase):
|
|||
lbaas_state.service_pub_ip_info = None
|
||||
return True
|
||||
|
||||
@mock.patch('kuryr_kubernetes.utils.get_lbaas_spec')
|
||||
@mock.patch('kuryr_kubernetes.utils.set_lbaas_state')
|
||||
@mock.patch('kuryr_kubernetes.utils.get_lbaas_state')
|
||||
def test_on_present_loadbalancer_service(self, m_get_lbaas_state,
|
||||
m_set_lbaas_state):
|
||||
def test_on_present_loadbalancer_service(
|
||||
self, m_get_lbaas_state, m_set_lbaas_state, m_get_lbaas_spec):
|
||||
lbaas_spec = mock.sentinel.lbaas_spec
|
||||
lbaas_spec.type = 'LoadBalancer'
|
||||
lbaas_spec.lb_ip = "1.2.3.4"
|
||||
|
@ -511,7 +514,7 @@ class TestLoadBalancerHandler(test_base.TestCase):
|
|||
m_drv_service_pub_ip.associate_pub_ip.return_value = True
|
||||
|
||||
m_handler = mock.Mock(spec=h_lbaas.LoadBalancerHandler)
|
||||
m_handler._get_lbaas_spec.return_value = lbaas_spec
|
||||
m_get_lbaas_spec.return_value = lbaas_spec
|
||||
m_handler._should_ignore.return_value = False
|
||||
m_get_lbaas_state.return_value = lbaas_state
|
||||
m_handler._sync_lbaas_members = self._fake_sync_lbaas_members
|
||||
|
@ -519,17 +522,18 @@ class TestLoadBalancerHandler(test_base.TestCase):
|
|||
|
||||
h_lbaas.LoadBalancerHandler.on_present(m_handler, endpoints)
|
||||
|
||||
m_handler._get_lbaas_spec.assert_called_once_with(endpoints)
|
||||
m_get_lbaas_spec.assert_called_once_with(endpoints)
|
||||
m_handler._should_ignore.assert_called_once_with(endpoints, lbaas_spec)
|
||||
m_get_lbaas_state.assert_called_once_with(endpoints)
|
||||
m_set_lbaas_state.assert_called_once_with(
|
||||
endpoints, lbaas_state)
|
||||
m_handler._update_lb_status.assert_called()
|
||||
|
||||
@mock.patch('kuryr_kubernetes.utils.get_lbaas_spec')
|
||||
@mock.patch('kuryr_kubernetes.utils.set_lbaas_state')
|
||||
@mock.patch('kuryr_kubernetes.utils.get_lbaas_state')
|
||||
def test_on_present_rollback(self, m_get_lbaas_state,
|
||||
m_set_lbaas_state):
|
||||
m_set_lbaas_state, m_get_lbaas_spec):
|
||||
lbaas_spec = mock.sentinel.lbaas_spec
|
||||
lbaas_spec.type = 'ClusterIp'
|
||||
lbaas_spec.lb_ip = '1.2.3.4'
|
||||
|
@ -546,7 +550,7 @@ class TestLoadBalancerHandler(test_base.TestCase):
|
|||
endpoints = mock.sentinel.endpoints
|
||||
|
||||
m_handler = mock.Mock(spec=h_lbaas.LoadBalancerHandler)
|
||||
m_handler._get_lbaas_spec.return_value = lbaas_spec
|
||||
m_get_lbaas_spec.return_value = lbaas_spec
|
||||
m_handler._should_ignore.return_value = False
|
||||
m_get_lbaas_state.return_value = lbaas_state
|
||||
m_handler._sync_lbaas_members.return_value = True
|
||||
|
@ -555,7 +559,7 @@ class TestLoadBalancerHandler(test_base.TestCase):
|
|||
m_handler._drv_service_pub_ip = m_drv_service_pub_ip
|
||||
h_lbaas.LoadBalancerHandler.on_present(m_handler, endpoints)
|
||||
|
||||
m_handler._get_lbaas_spec.assert_called_once_with(endpoints)
|
||||
m_get_lbaas_spec.assert_called_once_with(endpoints)
|
||||
m_handler._should_ignore.assert_called_once_with(endpoints, lbaas_spec)
|
||||
m_get_lbaas_state.assert_called_once_with(endpoints)
|
||||
m_handler._sync_lbaas_members.assert_called_once_with(
|
||||
|
|
|
@ -242,9 +242,10 @@ def has_kuryr_crd(crd_url):
|
|||
return True
|
||||
|
||||
|
||||
def get_lbaas_spec(service):
|
||||
def get_lbaas_spec(k8s_object):
|
||||
# k8s_object can be service or endpoint
|
||||
try:
|
||||
annotations = service['metadata']['annotations']
|
||||
annotations = k8s_object['metadata']['annotations']
|
||||
annotation = annotations[constants.K8S_ANNOTATION_LBAAS_SPEC]
|
||||
except KeyError:
|
||||
return None
|
||||
|
|
Loading…
Reference in New Issue