diff --git a/kuryr_kubernetes/controller/ingress/ingress_ctl.py b/kuryr_kubernetes/controller/ingress/ingress_ctl.py index 85aabc07e..67ad7abe4 100644 --- a/kuryr_kubernetes/controller/ingress/ingress_ctl.py +++ b/kuryr_kubernetes/controller/ingress/ingress_ctl.py @@ -12,7 +12,6 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. -import eventlet import time @@ -68,7 +67,11 @@ class L7Router(object): # create/verify listeners self._l7_router_listeners = {} listener = self._drv_l7_router.ensure_listener( - self._router_lb, 'HTTP', k_const.KURYR_L7_ROUTER_HTTP_PORT) + self._router_lb, 'HTTP', k_const.KURYR_L7_ROUTER_HTTP_PORT, + service_type=None) + LOG.info("Ingress controller - " + "retrieve HTTP listener details '%s'", listener) + self._l7_router_listeners[k_const.KURYR_L7_ROUTER_HTTP_PORT] = listener def get_router(self): @@ -107,9 +110,9 @@ class IngressCtrlr(object): try: self._status = 'IN_PROGRESS' self._l7_router.ensure_router() - except Exception: + except Exception as e: self._status = 'DOWN' - LOG.error("Ingress controller - failed to get L7 router") + LOG.error("Ingress controller - failed to get L7 router (%s)", e) return self._status = 'ACTIVE' LOG.info("Ingress controller - ACTIVE") @@ -131,10 +134,7 @@ class IngressCtrlr(object): 'Ingress-LB handlers should be enabled, and ' 'l7_router_uuid should be specified') return - # Note(yboaron) Create a new thread for L7 router/LB configuration - # verification, a separate thread is needed since it might be that - # router not created yet and we can't block controller/service thread. - eventlet.spawn(self._start_operation_impl) + self._start_operation_impl() def get_router_and_listener(self): """This function returns L7 router and Listeners details, diff --git a/kuryr_kubernetes/tests/unit/controller/ingress/test_ingress_ctl.py b/kuryr_kubernetes/tests/unit/controller/ingress/test_ingress_ctl.py index 42304ae71..209f5d82f 100644 --- a/kuryr_kubernetes/tests/unit/controller/ingress/test_ingress_ctl.py +++ b/kuryr_kubernetes/tests/unit/controller/ingress/test_ingress_ctl.py @@ -46,27 +46,50 @@ class TestIngressCtrlr(test_base.TestCase): self.assertIsNone(ret_l7router) self.assertIsNone(ret_listener) - @mock.patch('eventlet.spawn') + @mock.patch('kuryr_kubernetes.controller.drivers.base' + '.LBaaSDriver.get_instance') @mock.patch('kuryr_kubernetes.config.CONF') - def test_ingress_ctrlr_router_enabled_k8s(self, m_cfg, m_eventlet): + def test_ingress_ctrlr_router_enabled_k8s(self, m_cfg, m_get_lbaas_drv): m_cfg.kubernetes.enabled_handlers = ['ingresslb'] m_cfg.ingress.l7_router_uuid = '00EE9E11-91C2-41CF-8FD4-7970579E5C4C' + l7_router = obj_lbaas.LBaaSLoadBalancer( + name='TEST_NAME', project_id='TEST_PROJECT', ip='1.2.3.4', + subnet_id='D3FA400A-F543-4B91-9CD3-047AF0CE42D1', + security_groups=[], + id='00EE9E11-91C2-41CF-8FD4-7970579E5C4C') + + m_driver = mock.Mock() + m_driver.get_lb_by_uuid.return_value = l7_router + m_get_lbaas_drv.return_value = m_driver + ing_ctrl = ingress_ctl.IngressCtrlr.get_instance() ing_ctrl.start_operation() self.assertIsNotNone(ing_ctrl) - m_eventlet.assert_called_once() + self.assertEqual(ing_ctrl._status, 'ACTIVE') - @mock.patch('eventlet.spawn') + @mock.patch('kuryr_kubernetes.controller.drivers.base' + '.LBaaSDriver.get_instance') @mock.patch('kuryr_kubernetes.config.CONF') - def test_ingress_ctrlr_router_enabled_ocp(self, m_cfg, m_eventlet): + def test_ingress_ctrlr_router_enabled_ocp(self, m_cfg, m_get_lbaas_drv): m_cfg.kubernetes.enabled_handlers = ['ocproute'] m_cfg.ingress.l7_router_uuid = '00EE9E11-91C2-41CF-8FD4-7970579E5C4C' + + l7_router = obj_lbaas.LBaaSLoadBalancer( + name='TEST_NAME', project_id='TEST_PROJECT', ip='1.2.3.4', + subnet_id='D3FA400A-F543-4B91-9CD3-047AF0CE42D1', + security_groups=[], + id='00EE9E11-91C2-41CF-8FD4-7970579E5C4C') + + m_driver = mock.Mock() + m_driver.get_lb_by_uuid.return_value = l7_router + m_get_lbaas_drv.return_value = m_driver + ing_ctrl = ingress_ctl.IngressCtrlr.get_instance() ing_ctrl.start_operation() self.assertIsNotNone(ing_ctrl) - m_eventlet.assert_called_once() + self.assertEqual(ing_ctrl._status, 'ACTIVE') @mock.patch('kuryr_kubernetes.controller.drivers.base' '.LBaaSDriver.get_instance')