Пример #1
0
 def setUp(self):
     super(BaseTestListenerManager, self).setUp()
     self.in_listener = data_models.Listener(id='listener1')
     self.listener2 = data_models.Listener(id='listener2')
     self.in_listener.loadbalancer = self.in_lb
     self.listener2.loadbalancer = self.in_lb
     self.refresh = self.driver.loadbalancer.refresh
 def setUp(self):
     super(TestListenerManager, self).setUp()
     self.in_listener = data_models.Listener(id='listener1')
     self.listener2 = data_models.Listener(id='listener2')
     self.in_lb.listeners = [self.in_listener, self.listener2]
     self.in_listener.loadbalancer = self.in_lb
     self.listener2.loadbalancer = self.in_lb
Пример #3
0
    def setUp(self):
        super(BaseTestEdgeLbaasV2, self).setUp()

        self.context = context.get_admin_context()
        self.edge_driver = lb_driver_v2.EdgeLoadbalancerDriverV2()

        self.lbv2_driver = mock.Mock()
        self.core_plugin = mock.Mock()
        base_mgr.LoadbalancerBaseManager._lbv2_driver = self.lbv2_driver
        base_mgr.LoadbalancerBaseManager._core_plugin = self.core_plugin
        self._patch_lb_plugin(self.lbv2_driver, self._tested_entity)
        self._patch_nsxlib_lb_clients(self.core_plugin)

        self.lb = lb_models.LoadBalancer(LB_ID, LB_TENANT_ID, 'lb1', '',
                                         'some-subnet', 'port-id', LB_VIP)
        self.listener = lb_models.Listener(LISTENER_ID, LB_TENANT_ID,
                                           'listener1', 'Dummy', None, LB_ID,
                                           'HTTP', protocol_port=80,
                                           loadbalancer=self.lb)
        self.https_listener = lb_models.Listener(
            LISTENER_ID, LB_TENANT_ID, 'listener1', '', None, LB_ID,
            'HTTPS', protocol_port=443, loadbalancer=self.lb)
        self.terminated_https_listener = lb_models.Listener(
            LISTENER_ID, LB_TENANT_ID, 'listener1', '', None, LB_ID,
            'TERMINATED_HTTPS', protocol_port=443, loadbalancer=self.lb)
        self.pool = lb_models.Pool(POOL_ID, LB_TENANT_ID, 'pool1', '',
                                   None, 'HTTP', 'ROUND_ROBIN',
                                   loadbalancer_id=LB_ID,
                                   listener=self.listener,
                                   listeners=[self.listener],
                                   loadbalancer=self.lb)
        self.member = lb_models.Member(MEMBER_ID, LB_TENANT_ID, POOL_ID,
                                       MEMBER_ADDRESS, 80, 1, pool=self.pool,
                                       name='member1')
        self.hm = lb_models.HealthMonitor(HM_ID, LB_TENANT_ID, 'PING', 3, 3,
                                          1, pool=self.pool, name='hm1')
        self.l7policy = lb_models.L7Policy(L7POLICY_ID, LB_TENANT_ID,
                                           name='policy-test',
                                           description='policy-desc',
                                           listener_id=LISTENER_ID,
                                           action='REDIRECT_TO_POOL',
                                           redirect_pool_id=POOL_ID,
                                           listener=self.listener,
                                           position=1)
        self.l7rule = lb_models.L7Rule(L7RULE_ID, LB_TENANT_ID,
                                       l7policy_id=L7POLICY_ID,
                                       compare_type='EQUAL_TO',
                                       invert=False,
                                       type='HEADER',
                                       key='key1',
                                       value='val1',
                                       policy=self.l7policy)
 def test_update_listener_failed(self, mlistener):
     loadbalancer = data_models.LoadBalancer(id='1')
     old_listener = data_models.Listener(id=1, loadbalancer_id='1',
                                         loadbalancer=loadbalancer,
                                         protocol_port=80)
     listener = data_models.Listener(id=1, loadbalancer_id='1',
                                     loadbalancer=loadbalancer,
                                     protocol_port=81)
     mlistener.side_effect = [listener, old_listener]
     self.driver_mock.listener.update.side_effect = Exception
     self.mgr.update_listener(mock.Mock(), old_listener, listener)
     self.driver_mock.listener.update.assert_called_once_with(old_listener,
                                                              listener)
     self.update_statuses.assert_called_once_with(listener, error=True)
 def _create_fake_models(self):
     # This id is used for all the entities.
     id = 'test_id'
     lb = data_models.LoadBalancer(id=id)
     sni_container = data_models.SNI(listener_id=id)
     listener = data_models.Listener(id=id,
                                     loadbalancer=lb,
                                     sni_containers=[sni_container])
     pool = data_models.Pool(id=id, loadbalancer=lb)
     member = data_models.Member(id=id, pool=pool)
     hm = data_models.HealthMonitor(id=id, pool=pool)
     l7policy = data_models.L7Policy(
         id=id,
         listener=listener,
         redirect_pool_id=pool.id,
         action=constants.L7_POLICY_ACTION_REDIRECT_TO_POOL)
     l7rule = data_models.L7Rule(
         id=id,
         policy=l7policy,
         type=constants.L7_RULE_TYPE_PATH,
         compare_type=constants.L7_RULE_COMPARE_TYPE_STARTS_WITH,
         value='/api')
     lb.listeners = [listener]
     lb.pools = [pool]
     listener.default_pool = pool
     listener.l7policies = [l7policy]
     l7policy.rules = [l7rule]
     pool.members = [member]
     pool.healthmonitor = hm
     return lb
Пример #6
0
    def test_update_statuses_pool(self):
        self.update_statuses_patcher.stop()
        pool = data_models.Pool(id='1')
        listener = data_models.Listener(id='1', default_pool=pool)
        lb = data_models.LoadBalancer(id='1', listeners=[listener])
        listener.loadbalancer = lb
        pool.loadbalancer = lb
        self.mgr._update_statuses(pool)
        self.assertEqual(2, self.rpc_mock.update_status.call_count)
        calls = [
            mock.call('pool',
                      pool.id,
                      provisioning_status=constants.ACTIVE,
                      operating_status=lb_const.ONLINE),
            mock.call('loadbalancer',
                      lb.id,
                      provisioning_status=constants.ACTIVE,
                      operating_status=None)
        ]
        self.rpc_mock.update_status.assert_has_calls(calls)

        self.rpc_mock.update_status.reset_mock()
        self.mgr._update_statuses(pool, error=True)
        self.assertEqual(2, self.rpc_mock.update_status.call_count)
        calls = [
            mock.call('pool',
                      pool.id,
                      provisioning_status=constants.ERROR,
                      operating_status=lb_const.OFFLINE),
            mock.call('loadbalancer',
                      lb.id,
                      provisioning_status=constants.ACTIVE,
                      operating_status=None)
        ]
        self.rpc_mock.update_status.assert_has_calls(calls)
Пример #7
0
    def test_update(self):
        new_listener = lb_models.Listener(LISTENER_ID, LB_TENANT_ID,
                                          'l-name', '', None, LB_ID,
                                          'HTTP', protocol_port=8000,
                                          loadbalancer=self.lb)

        with mock.patch.object(nsxv_db, 'get_nsxv_lbaas_listener_binding'
                               ) as mock_get_listener_binding, \
            mock.patch.object(nsxv_db, 'get_nsxv_lbaas_loadbalancer_binding'
                              ) as mock_get_lb_binding, \
            mock.patch.object(self.edge_driver.vcns, 'update_app_profile'
                              ) as mock_upd_app_prof, \
            mock.patch.object(self.edge_driver.vcns, 'update_vip'
                              ) as mock_upd_vip:
            mock_get_listener_binding.return_value = LISTENER_BINDING
            mock_get_lb_binding.return_value = LB_BINDING

            self.edge_driver.listener.update(
                self.context, self.listener, new_listener)

            mock_upd_app_prof.assert_called_with(LB_EDGE_ID,
                                                 EDGE_APP_PROFILE_ID,
                                                 EDGE_APP_PROF_DEF)

            edge_vip_def = EDGE_VIP_DEF.copy()
            edge_vip_def['port'] = 8000
            mock_upd_vip.assert_called_with(LB_EDGE_ID, EDGE_VIP_ID,
                                            edge_vip_def)
            mock_successful_completion = (
                self.lbv2_driver.listener.successful_completion)
            mock_successful_completion.assert_called_with(self.context,
                                                          new_listener)
    def test_deployable(self):
        # test None
        ret_val = self.driver.deployable(None)
        self.assertFalse(ret_val)

        # test no listeners
        ret_val = self.driver.deployable(self.lb)
        self.assertFalse(ret_val)

        # test no acceptable listeners
        listener = data_models.Listener(
            provisioning_status=constants.PENDING_DELETE, admin_state_up=True)
        self.lb.listeners.append(listener)
        ret_val = self.driver.deployable(self.lb)
        self.assertFalse(ret_val)
        listener.provisioning_status = constants.PENDING_CREATE
        listener.admin_state_up = False
        ret_val = self.driver.deployable(self.lb)
        self.assertFalse(ret_val)

        # test bad lb status
        listener.admin_state_up = True
        self.lb.provisioning_status = constants.PENDING_DELETE
        self.lb.admin_state_up = True
        ret_val = self.driver.deployable(self.lb)
        self.assertFalse(ret_val)
        self.lb.provisioning_status = constants.PENDING_UPDATE
        self.lb.admin_state_up = False
        ret_val = self.driver.deployable(self.lb)
        self.assertFalse(ret_val)

        # test everything good
        self.lb.admin_state_up = True
        ret_val = self.driver.deployable(self.lb)
        self.assertTrue(ret_val)
    def test_update_statuses_healthmonitor(self):
        self.update_statuses_patcher.stop()
        hm = data_models.HealthMonitor(id='1')
        pool = data_models.Pool(id='1', healthmonitor=hm)
        hm.pool = pool
        listener = data_models.Listener(id='1', default_pool=pool)
        lb = data_models.LoadBalancer(id='1', listeners=[listener])
        listener.loadbalancer = lb
        pool.loadbalancer = lb
        self.mgr._update_statuses(hm)
        self.assertEqual(2, self.rpc_mock.update_status.call_count)
        calls = [mock.call('healthmonitor', hm.id,
                           provisioning_status=constants.ACTIVE,
                           operating_status=None),
                 mock.call('loadbalancer', lb.id,
                           provisioning_status=constants.ACTIVE,
                           operating_status=None)]
        self.rpc_mock.update_status.assert_has_calls(calls)

        self.rpc_mock.update_status.reset_mock()
        self.mgr._update_statuses(hm, error=True)
        self.assertEqual(2, self.rpc_mock.update_status.call_count)
        calls = [mock.call('healthmonitor', hm.id,
                           provisioning_status=constants.ERROR,
                           operating_status=None),
                 mock.call('loadbalancer', lb.id,
                           provisioning_status=constants.ACTIVE,
                           operating_status=None)]
        self.rpc_mock.update_status.assert_has_calls(calls)
Пример #10
0
    def setUp(self):
        super(BaseTestEdgeLbaasV2, self).setUp()

        self.context = context.get_admin_context()
        callbacks = mock.Mock()
        callbacks.plugin = mock.Mock()
        self.edge_driver = vcns_driver.VcnsDriver(callbacks)

        self.lbv2_driver = mock.Mock()
        self.core_plugin = mock.Mock()
        base_mgr.EdgeLoadbalancerBaseManager._lbv2_driver = self.lbv2_driver
        base_mgr.EdgeLoadbalancerBaseManager._core_plugin = self.core_plugin
        self._patch_lb_plugin(self.lbv2_driver, self._tested_entity)

        self.lb = lb_models.LoadBalancer(LB_ID, LB_TENANT_ID, 'lb-name', '',
                                         'some-subnet', 'port-id', LB_VIP)
        self.listener = lb_models.Listener(LISTENER_ID, LB_TENANT_ID,
                                           'l-name', '', None, LB_ID,
                                           'HTTP', protocol_port=80,
                                           loadbalancer=self.lb)
        self.pool = lb_models.Pool(POOL_ID, LB_TENANT_ID, 'pool-name', '',
                                   None, 'HTTP', 'ROUND_ROBIN',
                                   listener=self.listener)
        self.member = lb_models.Member(MEMBER_ID, LB_TENANT_ID, POOL_ID,
                                       MEMBER_ADDRESS, 80, 1, pool=self.pool)
        self.hm = lb_models.HealthMonitor(HM_ID, LB_TENANT_ID, 'PING', 3, 3,
                                          1, pool=self.pool)
    def test_is_active(self):
        # test no listeners
        ret_val = self.driver._is_active(self.lb)
        self.assertFalse(ret_val)

        # test bad VIP status
        listener = data_models.Listener(
            provisioning_status=constants.PENDING_CREATE, admin_state_up=True)
        self.lb.listeners.append(listener)
        self.lb.vip_port.status = constants.DOWN
        ret_val = self.driver._is_active(self.lb)
        self.assertFalse(ret_val)
        self.lb.vip_port.status = constants.PENDING_CREATE
        self.lb.vip_port.admin_state_up = False
        ret_val = self.driver._is_active(self.lb)
        self.assertFalse(ret_val)

        # test bad LB status
        self.lb.vip_port.admin_state_up = True
        self.lb.operating_status = 'OFFLINE'
        ret_val = self.driver._is_active(self.lb)
        self.assertFalse(ret_val)

        # test everything good
        self.lb.operating_status = 'ONLINE'
        ret_val = self.driver._is_active(self.lb)
        self.assertTrue(ret_val)
 def test_delete_listener(self, mlistener):
     loadbalancer = data_models.LoadBalancer(id='1')
     listener = data_models.Listener(id=1, loadbalancer_id='1',
                                     loadbalancer=loadbalancer,
                                     protocol_port=80)
     mlistener.return_value = listener
     self.mgr.delete_listener(mock.Mock(), listener.to_dict())
     self.driver_mock.listener.delete.assert_called_once_with(listener)
    def test_create(self):
        self.lb_manager.refresh = mock.Mock()
        self.lb_manager.create(self.in_lb)
        self.assertFalse(self.lb_manager.refresh.called)

        self.lb_manager.refresh.reset_mock()
        self.in_lb.listeners.append(data_models.Listener(id='listener1'))
        self.lb_manager.create(self.in_lb)
        self.lb_manager.refresh.assert_called_once_with(self.in_lb)
Пример #14
0
 def test_delete_pool(self, mpool):
     loadbalancer = data_models.LoadBalancer(id='1')
     listener = data_models.Listener(id=1,
                                     loadbalancer_id='1',
                                     loadbalancer=loadbalancer)
     pool = data_models.Pool(id='1', listener=listener, protocol='HTTPS')
     mpool.return_value = pool
     self.mgr.delete_pool(mock.Mock(), pool.to_dict())
     self.driver_mock.pool.delete.assert_called_once_with(pool)
Пример #15
0
 def test_delete_monitor(self, mmonitor):
     loadbalancer = data_models.LoadBalancer(id='1')
     listener = data_models.Listener(id=1,
                                     loadbalancer_id='1',
                                     loadbalancer=loadbalancer)
     pool = data_models.Pool(id='1', listener=listener, protocol='HTTPS')
     monitor = data_models.HealthMonitor(id='1', pool=pool)
     mmonitor.return_value = monitor
     self.mgr.delete_healthmonitor(mock.Mock(), monitor.to_dict())
     self.driver_mock.healthmonitor.delete.assert_called_once_with(monitor)
Пример #16
0
 def test_delete_member(self, mmember):
     loadbalancer = data_models.LoadBalancer(id='1')
     listener = data_models.Listener(id=1,
                                     loadbalancer_id='1',
                                     loadbalancer=loadbalancer)
     pool = data_models.Pool(id='1', listener=listener, protocol='HTTPS')
     member = data_models.Member(id='1', pool=pool, weight=1)
     mmember.return_value = member
     self.mgr.delete_member(mock.Mock(), member.to_dict())
     self.driver_mock.member.delete.assert_called_once_with(member)
    def test_create_listener(self, mlistener):
        loadbalancer = data_models.LoadBalancer(id='1')
        listener = data_models.Listener(id=1, loadbalancer_id='1',
                                        loadbalancer=loadbalancer)

        self.assertIn(loadbalancer.id, self.mgr.instance_mapping)
        mlistener.return_value = listener
        self.mgr.create_listener(mock.Mock(), listener.to_dict())
        self.driver_mock.listener.create.assert_called_once_with(listener)
        self.update_statuses.assert_called_once_with(listener)
    def setUp(self):
        super(BaseTestEdgeLbaasV2, self).setUp()

        self.context = context.get_admin_context()
        callbacks = mock.Mock()
        callbacks.plugin = mock.Mock()
        self.edge_driver = vcns_driver.VcnsDriver(callbacks)

        self.lbv2_driver = mock.Mock()
        self.core_plugin = mock.Mock()
        base_mgr.LoadbalancerBaseManager._lbv2_driver = self.lbv2_driver
        base_mgr.LoadbalancerBaseManager._core_plugin = self.core_plugin
        self._patch_lb_plugin(self.lbv2_driver, self._tested_entity)

        self.lb = lb_models.LoadBalancer(LB_ID, LB_TENANT_ID, 'lb-name', '',
                                         'some-subnet', 'port-id', LB_VIP)
        self.listener = lb_models.Listener(LISTENER_ID, LB_TENANT_ID,
                                           'l-name', '', None, LB_ID,
                                           'HTTP', protocol_port=80,
                                           loadbalancer=self.lb)
        self.sess_persist = lb_models.SessionPersistence(type='HTTP_COOKIE')
        self.pool = lb_models.Pool(POOL_ID, LB_TENANT_ID, 'pool-name', '',
                                   None, 'HTTP', 'ROUND_ROBIN',
                                   loadbalancer_id=LB_ID,
                                   listener=self.listener,
                                   listeners=[self.listener],
                                   loadbalancer=self.lb,
                                   session_persistence=self.sess_persist)
        self.listener.default_pool = self.pool
        self.member = lb_models.Member(MEMBER_ID, LB_TENANT_ID, POOL_ID,
                                       MEMBER_ADDRESS, 80, 1, pool=self.pool)
        self.hm = lb_models.HealthMonitor(HM_ID, LB_TENANT_ID, 'PING', 3, 3,
                                          1, pool=self.pool)
        self.l7policy = lb_models.L7Policy(L7POL_ID, LB_TENANT_ID,
                                           name='policy-test',
                                           description='policy-desc',
                                           listener_id=LISTENER_ID,
                                           action='REJECT',
                                           listener=self.listener,
                                           position=1)
        self.l7rule1 = lb_models.L7Rule(L7RULE_ID1, LB_TENANT_ID,
                                        l7policy_id=L7POL_ID,
                                        compare_type='EQUAL_TO',
                                        invert=False,
                                        type='HEADER',
                                        key='key1',
                                        value='val1',
                                        policy=self.l7policy)
        self.l7rule2 = lb_models.L7Rule(L7RULE_ID2, LB_TENANT_ID,
                                        l7policy_id=L7POL_ID,
                                        compare_type='STARTS_WITH',
                                        invert=True,
                                        type='PATH',
                                        value='/images',
                                        policy=self.l7policy)
Пример #19
0
    def test_create_pool(self, mpool):
        loadbalancer = data_models.LoadBalancer(id='1')
        listener = data_models.Listener(id=1,
                                        loadbalancer_id='1',
                                        loadbalancer=loadbalancer)
        pool = data_models.Pool(id='1', listener=listener)

        mpool.return_value = pool
        self.mgr.create_pool(mock.Mock(), pool.to_dict())
        self.driver_mock.pool.create.assert_called_once_with(pool)
        self.update_statuses.assert_called_once_with(pool)
Пример #20
0
 def test_update_pool(self, mpool):
     loadbalancer = data_models.LoadBalancer(id='1')
     listener = data_models.Listener(id=1,
                                     loadbalancer_id='1',
                                     loadbalancer=loadbalancer)
     pool = data_models.Pool(id='1', listener=listener, protocol='HTTPS')
     old_pool = data_models.Pool(id='1', listener=listener, protocol='HTTP')
     mpool.side_effect = [pool, old_pool]
     self.mgr.update_pool(mock.Mock(), old_pool.to_dict(), pool.to_dict())
     self.driver_mock.pool.update.assert_called_once_with(old_pool, pool)
     self.update_statuses.assert_called_once_with(pool)
Пример #21
0
    def test_create_pool_failed(self, mpool):
        loadbalancer = data_models.LoadBalancer(id='1')
        listener = data_models.Listener(id=1,
                                        loadbalancer_id='1',
                                        loadbalancer=loadbalancer)
        pool = data_models.Pool(id='1', listener=listener)

        mpool.return_value = pool
        self.driver_mock.pool.create.side_effect = Exception
        self.mgr.create_pool(mock.Mock(), pool)
        self.driver_mock.pool.create.assert_called_once_with(pool)
        self.update_statuses.assert_called_once_with(pool, error=True)
 def _create_fake_models(self):
     id = 'name-001'
     lb = data_models.LoadBalancer(id=id)
     listener = data_models.Listener(id=id, loadbalancer=lb)
     pool = data_models.Pool(id=id, listener=listener)
     member = data_models.Member(id=id, pool=pool)
     hm = data_models.HealthMonitor(id=id, pool=pool)
     lb.listeners = [listener]
     listener.default_pool = pool
     pool.members = [member]
     pool.healthmonitor = hm
     return lb
Пример #23
0
 def test_create_monitor_failed(self, mmonitor):
     loadbalancer = data_models.LoadBalancer(id='1')
     listener = data_models.Listener(id=1,
                                     loadbalancer_id='1',
                                     loadbalancer=loadbalancer)
     pool = data_models.Pool(id='1', listener=listener, protocol='HTTPS')
     monitor = data_models.HealthMonitor(id='1', pool=pool)
     mmonitor.return_value = monitor
     self.driver_mock.healthmonitor.create.side_effect = Exception
     self.mgr.create_healthmonitor(mock.Mock(), monitor.to_dict())
     self.driver_mock.healthmonitor.create.assert_called_once_with(monitor)
     self.update_statuses.assert_called_once_with(monitor, error=True)
Пример #24
0
    def test_update(self):
        new_listener = lb_models.Listener(LISTENER_ID, LB_TENANT_ID,
                                          'listener1-new', 'new-description',
                                          None, LB_ID, protocol_port=8000,
                                          loadbalancer=self.lb)

        self.edge_driver.listener.update(self.context, self.listener,
                                         new_listener)

        mock_successful_completion = (
            self.lbv2_driver.listener.successful_completion)
        mock_successful_completion.assert_called_with(self.context,
                                                      new_listener)
Пример #25
0
 def test_update_monitor(self, mmonitor):
     loadbalancer = data_models.LoadBalancer(id='1')
     listener = data_models.Listener(id=1,
                                     loadbalancer_id='1',
                                     loadbalancer=loadbalancer)
     pool = data_models.Pool(id='1', listener=listener, protocol='HTTPS')
     monitor = data_models.HealthMonitor(id='1', pool=pool, delay=1)
     old_monitor = data_models.HealthMonitor(id='1', pool=pool, delay=2)
     mmonitor.side_effect = [monitor, old_monitor]
     self.mgr.update_healthmonitor(mock.Mock(), old_monitor.to_dict(),
                                   monitor.to_dict())
     self.driver_mock.healthmonitor.update.assert_called_once_with(
         old_monitor, monitor)
     self.update_statuses.assert_called_once_with(monitor)
Пример #26
0
 def test_update_member(self, mmember):
     loadbalancer = data_models.LoadBalancer(id='1')
     listener = data_models.Listener(id=1,
                                     loadbalancer_id='1',
                                     loadbalancer=loadbalancer)
     pool = data_models.Pool(id='1', listener=listener, protocol='HTTPS')
     member = data_models.Member(id='1', pool=pool, weight=1)
     old_member = data_models.Member(id='1', pool=pool, weight=2)
     mmember.side_effect = [member, old_member]
     self.mgr.update_member(mock.Mock(), old_member.to_dict(),
                            member.to_dict())
     self.driver_mock.member.update.assert_called_once_with(
         old_member, member)
     self.update_statuses.assert_called_once_with(member)
Пример #27
0
 def _create_fake_models(self):
     # This id is used for all the entities.
     id = 'test_id'
     lb = data_models.LoadBalancer(id=id)
     sni_container = data_models.SNI(listener_id=id)
     listener = data_models.Listener(id=id,
                                     loadbalancer=lb,
                                     sni_containers=[sni_container])
     pool = data_models.Pool(id=id, listener=listener)
     member = data_models.Member(id=id, pool=pool)
     hm = data_models.HealthMonitor(id=id, pool=pool)
     lb.listeners = [listener]
     listener.default_pool = pool
     pool.members = [member]
     pool.healthmonitor = hm
     return lb
Пример #28
0
    def _create_fake_models(self, children=True, graph=False):
        # This id is used for all the entities.
        id = 'test_id'
        lb = data_models.LoadBalancer(id=id)
        if not children:
            return lb
        sni_container = data_models.SNI(listener_id=id)
        listener = data_models.Listener(id=id,
                                        loadbalancer=lb,
                                        sni_containers=[sni_container])
        pool = data_models.Pool(id=id, loadbalancer=lb)
        member = data_models.Member(id=id, pool=pool)
        hm = data_models.HealthMonitor(id=id, pool=pool)
        sp = data_models.SessionPersistence(pool_id=pool.id, pool=pool)
        l7policy = data_models.L7Policy(
            id=id,
            listener=listener,
            listener_id=listener.id,
            action=constants.L7_POLICY_ACTION_REDIRECT_TO_POOL)
        l7rule = data_models.L7Rule(
            id=id,
            policy=l7policy,
            type=constants.L7_RULE_TYPE_PATH,
            compare_type=constants.L7_RULE_COMPARE_TYPE_STARTS_WITH,
            value='/api')
        lb.listeners = [listener]
        lb.pools = [pool]
        if graph:
            r_pool = data_models.Pool(id=id, loadbalancer=lb)
            r_member = data_models.Member(id=id, pool=r_pool)
            r_pool.members = [r_member]
            l7policy.redirect_pool = r_pool
            l7policy.redirect_pool_id = r_pool.id
            lb.pools.append(r_pool)
        else:
            l7policy.redirect_pool = pool
            l7policy.redirect_pool_id = pool.id
        listener.default_pool = pool
        listener.l7_policies = [l7policy]
        l7policy.rules = [l7rule]
        pool.members = [member]
        pool.session_persistence = sp
        pool.healthmonitor = hm

        return lb
Пример #29
0
    def _get_faked_model(obj):
        lb = data_models.LoadBalancer(id='test_lb')
        if obj == 'lbaas/loadbalancer':
            return lb

        pool = data_models.Pool(id='test_pool_id', loadbalancer=lb)
        if obj == 'lbaas/pool':
            return pool

        listener = data_models.Listener(id='test_listener_id', loadbalancer=lb)
        if obj == 'lbaas/listener':
            return listener

        member = data_models.Member(id='test_member_id', pool=pool)
        if obj == 'lbaas/member':
            return member

        hm = data_models.HealthMonitor(id='test_health_monitor_id', pool=pool)

        return hm
Пример #30
0
    def test_update(self):
        new_listener = lb_models.Listener(LISTENER_ID, LB_TENANT_ID,
                                          'listener1-new', 'new-description',
                                          None, LB_ID, protocol_port=80,
                                          loadbalancer=self.lb)
        with mock.patch.object(self.core_plugin, 'get_floatingips'
                               ) as mock_get_floatingips, \
            mock.patch.object(nsx_db, 'get_nsx_lbaas_listener_binding'
                              ) as mock_get_listener_binding:
            mock_get_floatingips.return_value = []
            mock_get_listener_binding.return_value = LISTENER_BINDING

            self.edge_driver.listener.update(self.context, self.listener,
                                             new_listener)

            mock_successful_completion = (
                self.lbv2_driver.listener.successful_completion)
            mock_successful_completion.assert_called_with(self.context,
                                                          new_listener,
                                                          delete=False)