def test_apply_on_exit_with_errors(self): try: with ovs_lib.DeferredOVSBridge(self.br) as deferred_br: deferred_br.add_flow(**self.add_flow_dict1) deferred_br.mod_flow(**self.mod_flow_dict1) deferred_br.delete_flows(**self.del_flow_dict1) raise Exception() except Exception: self._verify_mock_call([]) else: self.fail('Exception would be reraised')
def setUp(self, mock_get_port_ofport, mock_set_secure_mode, mock_create_ovs_bridge, mock_setup_base_flows, mock_check_ovs_firewall_restart,): super(TestOVSFirewallDriver, self).setUp() config.register_root_helper(cfg.CONF) cfg.CONF.set_override('security_bridge_mapping', "fake_sec_br:fake_if", 'SECURITYGROUP') mock_get_port_ofport.return_value = 5 self.ovs_firewall = ovs_fw.OVSFirewallDriver() self.ovs_firewall.sg_br = mock.Mock() self.mock_br = ovs_lib.DeferredOVSBridge(self.ovs_firewall.sg_br) self.LOG = ovs_fw.LOG
def test_apply_on_exit(self): expected_calls = [ mock.call('add', [self.add_flow_dict1]), mock.call('mod', [self.mod_flow_dict1]), mock.call('del', [self.del_flow_dict1]), ] with ovs_lib.DeferredOVSBridge(self.br) as deferred_br: deferred_br.add_flow(**self.add_flow_dict1) deferred_br.mod_flow(**self.mod_flow_dict1) deferred_br.delete_flows(**self.del_flow_dict1) self._verify_mock_call([]) self._verify_mock_call(expected_calls)
def test_cookie_passed_to_addmod(self): self.br = ovs_lib.OVSBridge("br-tun") stamp = str(self.br.default_cookie) expected_calls = [ mock.call( 'add-flows', ['-'], 'hard_timeout=0,idle_timeout=0,priority=1,' 'cookie=' + stamp + ',actions=drop'), mock.call('mod-flows', ['-'], 'cookie=' + stamp + ',actions=drop') ] with mock.patch.object(self.br, 'run_ofctl') as f: with ovs_lib.DeferredOVSBridge(self.br) as deferred_br: deferred_br.add_flow(actions='drop') deferred_br.mod_flow(actions='drop') f.assert_has_calls(expected_calls)
def test_apply_order(self): expected_calls = [ mock.call('del', [self.del_flow_dict1, self.del_flow_dict2]), mock.call('mod', [self.mod_flow_dict1, self.mod_flow_dict2]), mock.call('add', [self.add_flow_dict1, self.add_flow_dict2]), ] order = 'del', 'mod', 'add' with ovs_lib.DeferredOVSBridge(self.br, order=order) as deferred_br: deferred_br.add_flow(**self.add_flow_dict1) deferred_br.mod_flow(**self.mod_flow_dict1) deferred_br.delete_flows(**self.del_flow_dict1) deferred_br.delete_flows(**self.del_flow_dict2) deferred_br.add_flow(**self.add_flow_dict2) deferred_br.mod_flow(**self.mod_flow_dict2) self._verify_mock_call(expected_calls)
def test_apply_full_ordered(self): expected_calls = [ mock.call('add', [self.add_flow_dict1], False), mock.call('mod', [self.mod_flow_dict1], False), mock.call('del', [self.del_flow_dict1, self.del_flow_dict2], False), mock.call('add', [self.add_flow_dict2], False), mock.call('mod', [self.mod_flow_dict2], False), ] with ovs_lib.DeferredOVSBridge(self.br, full_ordered=True) as deferred_br: deferred_br.add_flow(**self.add_flow_dict1) deferred_br.mod_flow(**self.mod_flow_dict1) deferred_br.delete_flows(**self.del_flow_dict1) deferred_br.delete_flows(**self.del_flow_dict2) deferred_br.add_flow(**self.add_flow_dict2) deferred_br.mod_flow(**self.mod_flow_dict2) self._verify_mock_call(expected_calls)
def test_apply(self): expected_calls = [ mock.call('add', { 11: [self.add_flow_dict1], 12: [self.add_flow_dict2] }, False), mock.call('mod', {None: [self.mod_flow_dict1]}, False), mock.call('del', {None: [self.del_flow_dict1]}, False), ] with ovs_lib.DeferredOVSBridge(self.br) as deferred_br: deferred_br.add_flow(flow_group_id=11, **self.add_flow_dict1) deferred_br.add_flow(flow_group_id=12, **self.add_flow_dict2) deferred_br.mod_flow(**self.mod_flow_dict1) deferred_br.delete_flows(**self.del_flow_dict1) self._verify_mock_call([]) deferred_br.apply_flows() self._verify_mock_call(expected_calls) self._verify_mock_call(expected_calls)
def setUp(self): super(TestOVSFirewallDriver, self).setUp() config.register_root_helper(cfg.CONF) cfg.CONF.set_override('security_bridge_mapping', "br-fake:fake_if", 'SECURITYGROUP') with contextlib.nested( mock.patch('networking_vsphere.drivers.' 'ovs_firewall.OVSFirewallDriver.' 'setup_base_flows'), mock.patch('neutron.agent.common.ovs_lib.OVSBridge.' 'create'), mock.patch('neutron.agent.common.ovs_lib.OVSBridge.' 'set_secure_mode'), mock.patch( 'neutron.agent.common.ovs_lib.OVSBridge.' 'get_port_ofport', return_value=5)): self.ovs_firewall = ovs_fw.OVSFirewallDriver() self.ovs_firewall.sg_br = mock.Mock() self.mock_br = ovs_lib.DeferredOVSBridge(self.ovs_firewall.sg_br) self.LOG = ovs_fw.LOG
def test_getattr_unallowed_attr_failure(self): with ovs_lib.DeferredOVSBridge(self.br) as deferred_br: self.assertRaises(AttributeError, getattr, deferred_br, 'failure')
def test_getattr_unallowed_attr(self): with ovs_lib.DeferredOVSBridge(self.br) as deferred_br: self.assertEqual(self.br.add_port, deferred_br.add_port)
def filter_defer_apply_on(self): LOG.debug("OFW defer_apply_on") if not self._deferred: self._int_br = ovs_lib.DeferredOVSBridge(self._int_br_not_deferred, full_ordered=True) self._deferred = True
def deferred(self, **kwargs): # NOTE(tmorin): we can't passthrough for deferred() or else the # resulting DeferredOVSBridge apply_flows method would call # the (non-cookie-filtered) do_action_flow of the underlying bridge return ovs_lib.DeferredOVSBridge(self, **kwargs)