コード例 #1
0
    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 = uuidutils.generate_uuid()
        subnet_id = uuidutils.generate_uuid()
        current_ip = '1.1.1.1'
        current_targets = {'1.1.1.101': (1001, 10001)}
        expected_ip = '1.1.1.1'
        expected_targets = {'1.1.1.101': (1201, 10001)}
        endpoints = self._generate_endpoints(expected_targets)
        state = self._generate_lbaas_state(current_ip, current_targets,
                                           project_id, subnet_id)
        spec = self._generate_lbaas_spec(expected_ip, expected_targets,
                                         project_id, subnet_id)

        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_lbaas.LoadBalancerHandler()

        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(endpoints, state, spec)

        self.assertEqual(expected_ip, str(state.loadbalancer.ip))
        m_drv_lbaas.release_pool.assert_called_once()
コード例 #2
0
    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())
        current_ip = '1.1.1.1'
        current_targets = {
            '1.1.1.101': (1001, 10001),
            '1.1.1.111': (1001, 10001),
            '1.1.1.201': (2001, 20001)}
        expected_ip = '2.2.2.2'
        expected_targets = {
            '2.2.2.101': (1201, 12001),
            '2.2.2.111': (1201, 12001),
            '2.2.2.201': (2201, 22001)}
        endpoints = self._generate_endpoints(expected_targets)
        state = self._generate_lbaas_state(
            current_ip, current_targets, project_id, subnet_id)
        spec = self._generate_lbaas_spec(expected_ip, expected_targets,
                                         project_id, subnet_id, 'UDP')

        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_lbaas.LoadBalancerHandler()
        member_added = handler._add_new_members(endpoints, state, spec)

        self.assertEqual(member_added, False)
        m_drv_lbaas.ensure_member.assert_not_called()
コード例 #3
0
    def _sync_lbaas_members_impl(self, m_get_drv_lbaas, m_get_drv_project,
                                 m_get_drv_subnets, subnet_id, project_id,
                                 endpoints, state, spec):
        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_lbaas.LoadBalancerHandler()

        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(endpoints, state, spec)

        lsnrs = {lsnr.id: lsnr for lsnr in state.listeners}
        pools = {pool.id: pool for pool in state.pools}
        observed_targets = sorted(
            (str(member.ip), (lsnrs[pools[member.pool_id].listener_id].port,
                              member.port)) for member in state.members)
        return observed_targets
コード例 #4
0
    def test_init(self, m_get_drv_lbaas, m_get_drv_project, m_get_drv_subnets):
        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

        handler = h_lbaas.LoadBalancerHandler()

        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)
コード例 #5
0
    def __init__(self):
        super(KuryrK8sService, self).__init__()

        objects.register_locally_defined_vifs()
        pipeline = h_pipeline.ControllerPipeline(self.tg)
        self.watcher = watcher.Watcher(pipeline, self.tg)
        # TODO(ivc): pluggable resource/handler registration
        for resource in ["pods", "services", "endpoints"]:
            self.watcher.add("%s/%s" % (constants.K8S_API_BASE, resource))
        pipeline.register(h_vif.VIFHandler())
        pipeline.register(h_lbaas.LBaaSSpecHandler())
        pipeline.register(h_lbaas.LoadBalancerHandler())
コード例 #6
0
    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_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_cfg.kubernetes.endpoints_driver_octavia_provider = 'default'
        handler = h_lbaas.LoadBalancerHandler()

        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)
コード例 #7
0
    def test_sync_lbaas_members(self, m_get_drv_lbaas, m_get_drv_project,
                                m_get_drv_subnets):
        # REVISIT(ivc): test methods separately and verify ensure/release
        project_id = uuidutils.generate_uuid()
        subnet_id = uuidutils.generate_uuid()
        current_ip = '1.1.1.1'
        current_targets = {
            '1.1.1.101': (1001, 10001),
            '1.1.1.111': (1001, 10001),
            '1.1.1.201': (2001, 20001)
        }
        expected_ip = '2.2.2.2'
        expected_targets = {
            '2.2.2.101': (1201, 12001),
            '2.2.2.111': (1201, 12001),
            '2.2.2.201': (2201, 22001)
        }
        endpoints = self._generate_endpoints(expected_targets)
        state = self._generate_lbaas_state(current_ip, current_targets,
                                           project_id, subnet_id)
        spec = self._generate_lbaas_spec(expected_ip, expected_targets,
                                         project_id, subnet_id)

        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_lbaas.LoadBalancerHandler()

        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(endpoints, state, spec)

        lsnrs = {lsnr.id: lsnr for lsnr in state.listeners}
        pools = {pool.id: pool for pool in state.pools}
        observed_targets = sorted(
            (str(member.ip), (lsnrs[pools[member.pool_id].listener_id].port,
                              member.port)) for member in state.members)
        self.assertEqual(sorted(expected_targets.items()), observed_targets)
        self.assertEqual(expected_ip, str(state.loadbalancer.ip))
コード例 #8
0
ファイル: test_lbaas.py プロジェクト: ragilsetian/kuryr-k8s
    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_cleanup_leftover_lbaas,
                               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 = 'ovn'
        handler = h_lbaas.LoadBalancerHandler()

        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_svc_project, handler._drv_project)
        self.assertEqual(mock.sentinel.drv_sg, handler._drv_sg)
        self.assertEqual('ovn', handler._lb_provider)