def test_sync_lbaas_members_svc_listener_port_edit(self, m_get_drv_lbaas,
                                                       m_get_drv_project,
                                                       m_get_drv_subnets):
        # REVISIT(ivc): test methods separately and verify ensure/release
        project_id = str(uuid.uuid4())
        subnet_id = str(uuid.uuid4())
        expected_ip = '1.2.3.4'
        crd = get_lb_crd()

        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_lb.KuryrLoadBalancerHandler()

        with mock.patch.object(handler, '_get_pod_subnet') as m_get_pod_subnet:
            m_get_pod_subnet.return_value = subnet_id
            handler._sync_lbaas_members(crd)

        self.assertEqual(expected_ip, str(crd['status']['loadbalancer']['ip']))
    def _sync_lbaas_members_impl(self, m_get_drv_lbaas, m_get_drv_project,
                                 m_get_drv_subnets, subnet_id, project_id,
                                 crd):
        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_lb.KuryrLoadBalancerHandler()

        with mock.patch.object(handler, '_get_pod_subnet') as m_get_pod_subnet:
            m_get_pod_subnet.return_value = subnet_id
            handler._sync_lbaas_members(crd)

        lsnrs = {lsnr['id']: lsnr for lsnr in crd['status']['listeners']}
        pools = {pool['id']: pool for pool in crd['status']['pools']}
        observed_targets = sorted(
            (str(member['ip']),
             (lsnrs[pools[member['pool_id']]['listener_id']]['port'],
              member['port'])) for member in crd['status']['members'])
        return observed_targets
Esempio n. 3
0
    def test_init_provider_ovn(self, m_get_drv_lbaas, m_get_drv_project,
                               m_get_drv_subnets, m_get_drv_service_pub_ip,
                               m_cfg, m_get_svc_sg_drv, m_get_svc_drv_project):
        m_get_drv_lbaas.return_value = mock.sentinel.drv_lbaas
        m_get_drv_project.return_value = mock.sentinel.drv_project
        m_get_drv_subnets.return_value = mock.sentinel.drv_subnets
        m_get_drv_service_pub_ip.return_value = mock.sentinel.drv_lb_ip
        m_get_svc_drv_project.return_value = mock.sentinel.drv_svc_project
        m_get_svc_sg_drv.return_value = mock.sentinel.drv_sg
        handler = h_lb.KuryrLoadBalancerHandler()

        self.assertEqual(mock.sentinel.drv_lbaas, handler._drv_lbaas)
        self.assertEqual(mock.sentinel.drv_project, handler._drv_pod_project)
        self.assertEqual(mock.sentinel.drv_subnets, handler._drv_pod_subnets)
        self.assertEqual(mock.sentinel.drv_lb_ip, handler._drv_service_pub_ip)
    def test_init(self, m_get_drv_lbaas, m_get_drv_project, m_get_drv_subnets,
                  m_get_drv_service_pub_ip, m_cfg, m_get_svc_sg_drv,
                  m_get_svc_drv_project):
        m_get_drv_lbaas.return_value = mock.sentinel.drv_lbaas
        m_get_drv_project.return_value = mock.sentinel.drv_project
        m_get_drv_subnets.return_value = mock.sentinel.drv_subnets
        m_get_drv_service_pub_ip.return_value = mock.sentinel.drv_lb_ip
        m_get_svc_drv_project.return_value = mock.sentinel.drv_svc_project
        m_get_svc_sg_drv.return_value = mock.sentinel.drv_sg
        m_cfg.kubernetes.endpoints_driver_octavia_provider = 'default'
        handler = h_lb.KuryrLoadBalancerHandler()

        self.assertEqual(mock.sentinel.drv_lbaas, handler._drv_lbaas)
        self.assertEqual(mock.sentinel.drv_project, handler._drv_pod_project)
        self.assertEqual(mock.sentinel.drv_subnets, handler._drv_pod_subnets)
        self.assertEqual(mock.sentinel.drv_lb_ip, handler._drv_service_pub_ip)
        self.assertIsNone(handler._lb_provider)
    def test_init(self, m_get_drv_node_subnets, m_get_drv_lbaas,
                  m_get_drv_project, m_get_drv_subnets,
                  m_get_drv_service_pub_ip, m_cfg, m_get_svc_sg_drv,
                  m_get_svc_drv_project, m_get_cidr):
        m_get_drv_lbaas.return_value = mock.sentinel.drv_lbaas
        m_get_drv_project.return_value = mock.sentinel.drv_project
        m_get_drv_subnets.return_value = mock.sentinel.drv_subnets
        m_get_cidr.return_value = '10.0.0.128/26'
        m_get_drv_service_pub_ip.return_value = mock.sentinel.drv_lb_ip
        m_get_svc_drv_project.return_value = mock.sentinel.drv_svc_project
        m_get_svc_sg_drv.return_value = mock.sentinel.drv_sg
        m_get_drv_node_subnets.return_value = mock.sentinel.drv_node_subnets
        handler = h_lb.KuryrLoadBalancerHandler()

        self.assertEqual(mock.sentinel.drv_lbaas, handler._drv_lbaas)
        self.assertEqual(mock.sentinel.drv_project, handler._drv_pod_project)
        self.assertEqual(mock.sentinel.drv_subnets, handler._drv_pod_subnets)
        self.assertEqual(mock.sentinel.drv_lb_ip, handler._drv_service_pub_ip)
        self.assertEqual(mock.sentinel.drv_node_subnets,
                         handler._drv_nodes_subnets)
    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())
        crd = get_lb_crd()

        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_lb.KuryrLoadBalancerHandler()
        member_added = handler._add_new_members(crd)

        self.assertEqual(member_added, False)
        m_drv_lbaas.ensure_member.assert_not_called()