@ -65,7 +65,19 @@ from neutron.tests.unit.plugins.ml2 import test_security_group
OVN_PROFILE = ovn_const . OVN_PORT_BINDING_PROFILE
class TestOVNMechanismDriverBase ( test_plugin . Ml2PluginV2TestCase ) :
class MechDriverSetupBase :
def setUp ( self ) :
super ( ) . setUp ( )
mm = directory . get_plugin ( ) . mechanism_manager
self . mech_driver = mm . mech_drivers [ ' ovn ' ] . obj
self . mech_driver . nb_ovn = fakes . FakeOvsdbNbOvnIdl ( )
self . mech_driver . sb_ovn = fakes . FakeOvsdbSbOvnIdl ( )
self . mech_driver . _post_fork_event . set ( )
self . mech_driver . _ovn_client . _qos_driver = mock . Mock ( )
class TestOVNMechanismDriverBase ( MechDriverSetupBase ,
test_plugin . Ml2PluginV2TestCase ) :
_mechanism_drivers = [ ' logger ' , ' ovn ' ]
_extension_drivers = [ ' port_security ' , ' dns ' ]
@ -87,18 +99,13 @@ class TestOVNMechanismDriverBase(test_plugin.Ml2PluginV2TestCase):
cfg . CONF . set_override ( ' vlan_transparent ' , True )
mock . patch . object ( impl_idl_ovn . Backend , ' schema_helper ' ) . start ( )
super ( ) . setUp ( )
mm = directory . get_plugin ( ) . mechanism_manager
self . mech_driver = mm . mech_drivers [ ' ovn ' ] . obj
neutron_agent . AgentCache ( self . mech_driver )
# Because AgentCache is a singleton and we get a new mech_driver each
# setUp(), override the AgentCache driver.
neutron_agent . AgentCache ( ) . driver = self . mech_driver
self . mech_driver . _nb_ovn = fakes . FakeOvsdbNbOvnIdl ( )
self . mech_driver . _sb_ovn = fakes . FakeOvsdbSbOvnIdl ( )
self . mech_driver . _ovn_client . _qos_driver = mock . Mock ( )
self . nb_ovn = self . mech_driver . _nb_ovn
self . sb_ovn = self . mech_driver . _sb_ovn
self . nb_ovn = self . mech_driver . nb_ovn
self . sb_ovn = self . mech_driver . sb_ovn
self . fake_subnet = fakes . FakeSubnet . create_one_subnet ( ) . info ( )
@ -166,15 +173,15 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
self . assertEqual ( 2 , m_ovsdb_api . get_port_group . call_count )
def test__get_max_tunid_no_key_set ( self ) :
self . mech_driver . _ nb_ovn. nb_global . options . get . return_value = None
self . mech_driver . nb_ovn. nb_global . options . get . return_value = None
self . assertIsNone ( self . mech_driver . _get_max_tunid ( ) )
def test__get_max_tunid_wrong_key_value ( self ) :
self . mech_driver . _ nb_ovn. nb_global . options . get . return_value = ' 11wrong '
self . mech_driver . nb_ovn. nb_global . options . get . return_value = ' 11wrong '
self . assertIsNone ( self . mech_driver . _get_max_tunid ( ) )
def test__get_max_tunid_key_set ( self ) :
self . mech_driver . _ nb_ovn. nb_global . options . get . return_value = ' 100 '
self . mech_driver . nb_ovn. nb_global . options . get . return_value = ' 100 '
self . assertEqual ( 100 , self . mech_driver . _get_max_tunid ( ) )
def _test__validate_network_segments_id_succeed ( self , val ) :
@ -183,7 +190,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
" segmentation_id " : val ,
" physical_network " : " physnet1 " ,
}
self . mech_driver . _ nb_ovn. nb_global . options . get . return_value = ' 200 '
self . mech_driver . nb_ovn. nb_global . options . get . return_value = ' 200 '
self . mech_driver . _validate_network_segments ( [ segment ] )
def test__validate_network_segments_id_below_max_limit ( self ) :
@ -1261,7 +1268,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
self . assertEqual ( call_get_dhcp_opts , get_opts . called )
self . assertEqual (
call_add_dhcp_opts ,
self . mech_driver . _ nb_ovn. add_dhcp_options . called )
self . mech_driver . nb_ovn. add_dhcp_options . called )
def test_add_subnet_dhcp_options_in_ovn ( self ) :
subnet = { ' ip_version ' : const . IP_VERSION_4 }
@ -1299,7 +1306,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
' gateway_ip ' : ' 10.0.0.1 ' , ' enable_dhcp ' : True ,
' dns_nameservers ' : [ ] , ' host_routes ' : [ ] }
network = { ' id ' : ' network-id ' , ' mtu ' : 1000 }
txn = self . mech_driver . _ nb_ovn. transaction ( ) . __enter__ . return_value
txn = self . mech_driver . nb_ovn. transaction ( ) . __enter__ . return_value
dhcp_option_command = mock . Mock ( )
txn . add . return_value = dhcp_option_command
@ -1342,8 +1349,8 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
' subnet-id ' , port_id = port_dhcp_options [ ' external_ids ' ] [ ' port_id ' ] ,
* * port_dhcp_options ) for port_dhcp_options in ports_dhcp_options ] )
self . assertEqual ( len ( add_dhcp_calls ) ,
self . mech_driver . _ nb_ovn. add_dhcp_options . call_count )
self . mech_driver . _ nb_ovn. add_dhcp_options . assert_has_calls (
self . mech_driver . nb_ovn. add_dhcp_options . call_count )
self . mech_driver . nb_ovn. add_dhcp_options . assert_has_calls (
add_dhcp_calls , any_order = True )
# Check setting lport rows
@ -1354,8 +1361,8 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
mock . call ( lport_name = ' port-id-3 ' ,
dhcpv4_options = dhcp_option_command ) ]
self . assertEqual ( len ( set_lsp_calls ) ,
self . mech_driver . _ nb_ovn. set_lswitch_port . call_count )
self . mech_driver . _ nb_ovn. set_lswitch_port . assert_has_calls (
self . mech_driver . nb_ovn. set_lswitch_port . call_count )
self . mech_driver . nb_ovn. set_lswitch_port . assert_has_calls (
set_lsp_calls , any_order = True )
@mock.patch.object ( db_base_plugin_v2 . NeutronDbPluginV2 , ' get_ports ' )
@ -1378,7 +1385,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
' ipv6_address_mode ' : ' dhcpv6-stateless ' ,
' dns_nameservers ' : [ ] , ' host_routes ' : [ ] }
network = { ' id ' : ' network-id ' , ' mtu ' : 1000 }
txn = self . mech_driver . _ nb_ovn. transaction ( ) . __enter__ . return_value
txn = self . mech_driver . nb_ovn. transaction ( ) . __enter__ . return_value
dhcp_option_command = mock . Mock ( )
txn . add . return_value = dhcp_option_command
@ -1410,8 +1417,8 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
' subnet-id ' , port_id = port_dhcp_options [ ' external_ids ' ] [ ' port_id ' ] ,
* * port_dhcp_options ) for port_dhcp_options in ports_dhcp_options ] )
self . assertEqual ( len ( add_dhcp_calls ) ,
self . mech_driver . _ nb_ovn. add_dhcp_options . call_count )
self . mech_driver . _ nb_ovn. add_dhcp_options . assert_has_calls (
self . mech_driver . nb_ovn. add_dhcp_options . call_count )
self . mech_driver . nb_ovn. add_dhcp_options . assert_has_calls (
add_dhcp_calls , any_order = True )
# Check setting lport rows
@ -1422,8 +1429,8 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
mock . call ( lport_name = ' port-id-3 ' ,
dhcpv6_options = dhcp_option_command ) ]
self . assertEqual ( len ( set_lsp_calls ) ,
self . mech_driver . _ nb_ovn. set_lswitch_port . call_count )
self . mech_driver . _ nb_ovn. set_lswitch_port . assert_has_calls (
self . mech_driver . nb_ovn. set_lswitch_port . call_count )
self . mech_driver . nb_ovn. set_lswitch_port . assert_has_calls (
set_lsp_calls , any_order = True )
def test_enable_subnet_dhcp_options_in_ovn_ipv6_slaac ( self ) :
@ -1433,13 +1440,13 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
self . mech_driver . _ovn_client . _enable_subnet_dhcp_options (
subnet , network , mock . Mock ( ) )
self . mech_driver . _ nb_ovn. add_dhcp_options . assert_not_called ( )
self . mech_driver . _ nb_ovn. set_lswitch_port . assert_not_called ( )
self . mech_driver . nb_ovn. add_dhcp_options . assert_not_called ( )
self . mech_driver . nb_ovn. set_lswitch_port . assert_not_called ( )
def _test_remove_subnet_dhcp_options_in_ovn ( self , ip_version ) :
opts = { ' subnet ' : { ' uuid ' : ' subnet-uuid ' } ,
' ports ' : [ { ' uuid ' : ' port1-uuid ' } ] }
self . mech_driver . _ nb_ovn. get_subnet_dhcp_options . return_value = opts
self . mech_driver . nb_ovn. get_subnet_dhcp_options . return_value = opts
self . mech_driver . _ovn_client . _remove_subnet_dhcp_options (
' subnet-id ' , mock . Mock ( ) )
@ -1447,8 +1454,8 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
delete_dhcp_calls = [ mock . call ( ' subnet-uuid ' ) , mock . call ( ' port1-uuid ' ) ]
self . assertEqual (
len ( delete_dhcp_calls ) ,
self . mech_driver . _ nb_ovn. delete_dhcp_options . call_count )
self . mech_driver . _ nb_ovn. delete_dhcp_options . assert_has_calls (
self . mech_driver . nb_ovn. delete_dhcp_options . call_count )
self . mech_driver . nb_ovn. delete_dhcp_options . assert_has_calls (
delete_dhcp_calls , any_order = True )
def test_remove_subnet_dhcp_options_in_ovn_ipv4 ( self ) :
@ -1472,7 +1479,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
' dns_server ' : ' {8.8.8.8} ' ,
' lease_time ' : str ( 12 * 60 * 60 ) ,
' mtu ' : str ( 1000 ) } } , ' ports ' : [ ] }
self . mech_driver . _ nb_ovn. get_subnet_dhcp_options . return_value = \
self . mech_driver . nb_ovn. get_subnet_dhcp_options . return_value = \
orignal_options
self . mech_driver . _ovn_client . _update_subnet_dhcp_options (
@ -1487,7 +1494,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
' server_mac ' : ' 01:02:03:04:05:06 ' ,
' lease_time ' : str ( 12 * 60 * 60 ) ,
' mtu ' : str ( 1000 ) } }
self . mech_driver . _ nb_ovn. add_dhcp_options . assert_called_once_with (
self . mech_driver . nb_ovn. add_dhcp_options . assert_called_once_with (
subnet [ ' id ' ] , * * new_options )
def test_update_subnet_dhcp_options_in_ovn_ipv4_not_change ( self ) :
@ -1505,12 +1512,12 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
' dns_server ' : ' {8.8.8.8} ' ,
' lease_time ' : str ( 12 * 60 * 60 ) ,
' mtu ' : str ( 1000 ) } } , ' ports ' : [ ] }
self . mech_driver . _ nb_ovn. get_subnet_dhcp_options . return_value = \
self . mech_driver . nb_ovn. get_subnet_dhcp_options . return_value = \
orignal_options
self . mech_driver . _ovn_client . _update_subnet_dhcp_options (
subnet , network , mock . Mock ( ) )
self . mech_driver . _ nb_ovn. add_dhcp_options . assert_not_called ( )
self . mech_driver . nb_ovn. add_dhcp_options . assert_not_called ( )
def test_update_subnet_dhcp_options_in_ovn_ipv6 ( self ) :
subnet = { ' id ' : ' subnet-id ' , ' ip_version ' : 6 , ' cidr ' : ' 10::0/64 ' ,
@ -1524,7 +1531,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
' cidr ' : subnet [ ' cidr ' ] , ' options ' : {
' dhcpv6_stateless ' : ' true ' ,
' server_id ' : ' 01:02:03:04:05:06 ' } } , ' ports ' : [ ] }
self . mech_driver . _ nb_ovn. get_subnet_dhcp_options . return_value = \
self . mech_driver . nb_ovn. get_subnet_dhcp_options . return_value = \
orignal_options
self . mech_driver . _ovn_client . _update_subnet_dhcp_options (
subnet , network , mock . Mock ( ) )
@ -1536,7 +1543,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
' dhcpv6_stateless ' : ' true ' ,
' dns_server ' : ' { 10::3} ' ,
' server_id ' : ' 01:02:03:04:05:06 ' } }
self . mech_driver . _ nb_ovn. add_dhcp_options . assert_called_once_with (
self . mech_driver . nb_ovn. add_dhcp_options . assert_called_once_with (
subnet [ ' id ' ] , * * new_options )
def test_update_subnet_dhcp_options_in_ovn_ipv6_not_change ( self ) :
@ -1550,12 +1557,12 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
' cidr ' : subnet [ ' cidr ' ] , ' options ' : {
' dhcpv6_stateless ' : ' true ' ,
' server_id ' : ' 01:02:03:04:05:06 ' } } , ' ports ' : [ ] }
self . mech_driver . _ nb_ovn. get_subnet_dhcp_options . return_value = \
self . mech_driver . nb_ovn. get_subnet_dhcp_options . return_value = \
orignal_options
self . mech_driver . _ovn_client . _update_subnet_dhcp_options (
subnet , network , mock . Mock ( ) )
self . mech_driver . _ nb_ovn. add_dhcp_options . assert_not_called ( )
self . mech_driver . nb_ovn. add_dhcp_options . assert_not_called ( )
def test_update_subnet_dhcp_options_in_ovn_ipv6_slaac ( self ) :
subnet = { ' id ' : ' subnet-id ' , ' ip_version ' : 6 , ' enable_dhcp ' : True ,
@ -1563,8 +1570,8 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
network = { ' id ' : ' network-id ' }
self . mech_driver . _ovn_client . _update_subnet_dhcp_options (
subnet , network , mock . Mock ( ) )
self . mech_driver . _ nb_ovn. get_subnet_dhcp_options . assert_not_called ( )
self . mech_driver . _ nb_ovn. add_dhcp_options . assert_not_called ( )
self . mech_driver . nb_ovn. get_subnet_dhcp_options . assert_not_called ( )
self . mech_driver . nb_ovn. add_dhcp_options . assert_not_called ( )
def test_update_subnet_postcommit_ovn_do_nothing ( self ) :
context = fakes . FakeSubnetContext (
@ -1610,7 +1617,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
umd . assert_called_once_with ( mock . ANY , ' id ' , subnet_id = ' subnet_id ' )
def test_update_subnet_postcommit_disable_dhcp ( self ) :
self . mech_driver . _ nb_ovn. get_subnet_dhcp_options . return_value = {
self . mech_driver . nb_ovn. get_subnet_dhcp_options . return_value = {
' subnet ' : mock . sentinel . subnet , ' ports ' : [ ] }
context = fakes . FakeSubnetContext (
subnet = { ' enable_dhcp ' : False , ' id ' : ' subnet_id ' , ' ip_version ' : 4 ,
@ -1627,7 +1634,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
umd . assert_called_once_with ( mock . ANY , ' id ' , subnet_id = ' subnet_id ' )
def test_update_subnet_postcommit_update_dhcp ( self ) :
self . mech_driver . _ nb_ovn. get_subnet_dhcp_options . return_value = {
self . mech_driver . nb_ovn. get_subnet_dhcp_options . return_value = {
' subnet ' : mock . sentinel . subnet , ' ports ' : [ ] }
context = fakes . FakeSubnetContext (
subnet = { ' enable_dhcp ' : True , ' ip_version ' : 4 , ' network_id ' : ' id ' ,
@ -1798,7 +1805,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
chassis_private = self . _add_chassis ( 5 )
for agent_type in ( ovn_const . OVN_CONTROLLER_AGENT ,
ovn_const . OVN_METADATA_AGENT ) :
self . mech_driver . _ nb_ovn. nb_global . nb_cfg = 5
self . mech_driver . nb_ovn. nb_global . nb_cfg = 5
agent = self . _add_chassis_agent ( 5 , agent_type , chassis_private )
self . assertTrue ( agent . alive , " Agent of type %s alive= %s " %
( agent . agent_type , agent . alive ) )
@ -1810,7 +1817,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
chassis_private = self . _add_chassis ( nb_cfg )
for agent_type in ( ovn_const . OVN_CONTROLLER_AGENT ,
ovn_const . OVN_METADATA_AGENT ) :
self . mech_driver . _ nb_ovn. nb_global . nb_cfg = nb_cfg + 1
self . mech_driver . nb_ovn. nb_global . nb_cfg = nb_cfg + 1
now = timeutils . utcnow ( )
updated_at = now - datetime . timedelta ( cfg . CONF . agent_down_time + 1 )
agent = self . _add_chassis_agent ( nb_cfg , agent_type ,
@ -1823,7 +1830,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
chassis_private = self . _add_chassis ( nb_cfg )
for agent_type in ( ovn_const . OVN_CONTROLLER_AGENT ,
ovn_const . OVN_METADATA_AGENT ) :
self . mech_driver . _ nb_ovn. nb_global . nb_cfg = nb_cfg + 2
self . mech_driver . nb_ovn. nb_global . nb_cfg = nb_cfg + 2
agent = self . _add_chassis_agent ( nb_cfg , agent_type ,
chassis_private )
self . assertTrue ( agent . alive , " Agent of type %s alive= %s " %
@ -1834,7 +1841,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
chassis_private = self . _add_chassis ( nb_cfg )
for agent_type in ( ovn_const . OVN_CONTROLLER_AGENT ,
ovn_const . OVN_METADATA_AGENT ) :
self . mech_driver . _ nb_ovn. nb_global . nb_cfg = nb_cfg + 2
self . mech_driver . nb_ovn. nb_global . nb_cfg = nb_cfg + 2
now = timeutils . utcnow ( with_timezone = True )
updated_at = now - datetime . timedelta ( cfg . CONF . agent_down_time + 1 )
agent = self . _add_chassis_agent ( nb_cfg , agent_type ,
@ -2035,7 +2042,8 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
self . _test_should_post_fork_initialize ( enabled , disabled )
class OVNMechanismDriverTestCase ( test_plugin . Ml2PluginV2TestCase ) :
class OVNMechanismDriverTestCase ( MechDriverSetupBase ,
test_plugin . Ml2PluginV2TestCase ) :
_mechanism_drivers = [ ' logger ' , ' ovn ' ]
def setUp ( self ) :
@ -2059,13 +2067,6 @@ class OVNMechanismDriverTestCase(test_plugin.Ml2PluginV2TestCase):
self . driver . node_uuid = node_uuid
self . driver . hash_ring_group = ' fake_hash_ring_group '
mm = directory . get_plugin ( ) . mechanism_manager
self . mech_driver = mm . mech_drivers [ ' ovn ' ] . obj
nb_ovn = fakes . FakeOvsdbNbOvnIdl ( )
sb_ovn = fakes . FakeOvsdbSbOvnIdl ( )
self . mech_driver . _nb_ovn = nb_ovn
self . mech_driver . _sb_ovn = sb_ovn
self . mech_driver . _ovn_client . _qos_driver = mock . Mock ( )
self . mech_driver . _insert_port_provisioning_block = mock . Mock ( )
p = mock . patch . object ( ovn_utils , ' get_revision_number ' , return_value = 1 )
p . start ( )
@ -2193,19 +2194,13 @@ class TestOVNMechanismDriverPortSecurity(
pass
class TestOVNMechanismDriverSegment ( test_segment . HostSegmentMappingTestCase ) :
class TestOVNMechanismDriverSegment ( MechDriverSetupBase ,
test_segment . HostSegmentMappingTestCase ) :
_mechanism_drivers = [ ' logger ' , ' ovn ' ]
def setUp ( self ) :
mock . patch . object ( impl_idl_ovn . Backend , ' schema_helper ' ) . start ( )
super ( TestOVNMechanismDriverSegment , self ) . setUp ( )
mm = directory . get_plugin ( ) . mechanism_manager
self . mech_driver = mm . mech_drivers [ ' ovn ' ] . obj
nb_ovn = fakes . FakeOvsdbNbOvnIdl ( )
sb_ovn = fakes . FakeOvsdbSbOvnIdl ( )
self . mech_driver . _nb_ovn = nb_ovn
self . mech_driver . _sb_ovn = sb_ovn
self . mech_driver . _ovn_client . _qos_driver = mock . Mock ( )
p = mock . patch . object ( ovn_utils , ' get_revision_number ' , return_value = 1 )
p . start ( )
self . addCleanup ( p . stop )
@ -2261,7 +2256,7 @@ class TestOVNMechanismDriverSegment(test_segment.HostSegmentMappingTestCase):
def test_update_segment_host_mapping_with_new_segment ( self ) :
hostname_with_physnets = { ' hostname1 ' : [ ' phys_net1 ' , ' phys_net2 ' ] ,
' hostname2 ' : [ ' phys_net1 ' ] }
ovn_sb_api = self . mech_driver . _ sb_ovn
ovn_sb_api = self . mech_driver . sb_ovn
ovn_sb_api . get_chassis_hostname_and_physnets . return_value = (
hostname_with_physnets )
self . mech_driver . subscribe ( )
@ -2278,7 +2273,7 @@ class TestOVNMechanismDriverSegment(test_segment.HostSegmentMappingTestCase):
self . assertFalse ( set ( segments_host_db2 ) )
def test_create_segment_create_localnet_port ( self ) :
ovn_nb_api = self . mech_driver . _ nb_ovn
ovn_nb_api = self . mech_driver . nb_ovn
with self . network ( ) as network :
net = network [ ' network ' ]
new_segment = self . _test_create_segment (
@ -2313,7 +2308,7 @@ class TestOVNMechanismDriverSegment(test_segment.HostSegmentMappingTestCase):
self . assertEqual ( len ( segments ) , 3 )
def test_delete_segment_delete_localnet_port ( self ) :
ovn_nb_api = self . mech_driver . _ nb_ovn
ovn_nb_api = self . mech_driver . nb_ovn
with self . network ( ) as network :
net = network [ ' network ' ]
segment = self . _test_create_segment (
@ -2325,7 +2320,7 @@ class TestOVNMechanismDriverSegment(test_segment.HostSegmentMappingTestCase):
lswitch_name = ovn_utils . ovn_name ( net [ ' id ' ] ) )
def test_delete_segment_delete_localnet_port_compat_name ( self ) :
ovn_nb_api = self . mech_driver . _ nb_ovn
ovn_nb_api = self . mech_driver . nb_ovn
with self . network ( ) as network :
net = network [ ' network ' ]
seg_1 = self . _test_create_segment (
@ -2381,7 +2376,7 @@ class TestOVNMechanismDriverSegment(test_segment.HostSegmentMappingTestCase):
def test_create_segments_subnet_metadata_ip_allocation ( self ) :
self . _test_segments_helper ( )
ovn_nb_api = self . mech_driver . _ nb_ovn
ovn_nb_api = self . mech_driver . nb_ovn
# Assert that metadata address has been allocated from previously
# created subnet.
@ -2434,7 +2429,7 @@ class TestOVNMechanismDriverSegment(test_segment.HostSegmentMappingTestCase):
def test_create_delete_segment_distributed_service_port_not_touched ( self ) :
self . _test_segments_helper ( )
ovn_nb_api = self . mech_driver . _ nb_ovn
ovn_nb_api = self . mech_driver . nb_ovn
# Delete second subnet
self . _delete ( ' subnets ' , self . sub_2 [ ' subnet ' ] [ ' id ' ] )
@ -2808,11 +2803,11 @@ class TestOVNMechanismDriverDHCPOptions(OVNMechanismDriverTestCase):
' options ' : { ' server_id ' : ' 01:02:03:04:05:06 ' ,
' domain_search ' : ' foo-domain ' } }
self . mech_driver . _ nb_ovn. add_dhcp_options . return_value = ' foo-val '
self . mech_driver . nb_ovn. add_dhcp_options . return_value = ' foo-val '
dhcp_options = self . mech_driver . _ovn_client . _get_port_dhcp_options (
port , ip_version )
self . assertEqual ( { ' cmd ' : ' foo-val ' } , dhcp_options )
self . mech_driver . _ nb_ovn. add_dhcp_options . assert_called_once_with (
self . mech_driver . nb_ovn. add_dhcp_options . assert_called_once_with (
' foo-subnet ' , port_id = ' foo-port ' , * * expected_dhcp_options )
def test__get_port_dhcp_options_port_dhcp_opts_set_v4 ( self ) :
@ -2856,7 +2851,7 @@ class TestOVNMechanismDriverDHCPOptions(OVNMechanismDriverTestCase):
# Since the port has no extra DHCPv4/v6 options defined, no new
# DHCP_Options row should be created and logical switch port DHCPv4/v6
# options should point to the subnet DHCPv4/v6 options.
self . mech_driver . _ nb_ovn. add_dhcp_options . assert_not_called ( )
self . mech_driver . nb_ovn. add_dhcp_options . assert_not_called ( )
def test__get_port_dhcp_options_port_dhcp_opts_not_set_v4 ( self ) :
self . _test__get_port_dhcp_options_port_dhcp_opts_not_set ( ip_version = 4 )
@ -2893,7 +2888,7 @@ class TestOVNMechanismDriverDHCPOptions(OVNMechanismDriverTestCase):
1 ,
self . mech_driver . _ovn_client . _get_subnet_dhcp_options_for_port .
call_count )
self . mech_driver . _ nb_ovn. add_dhcp_options . assert_not_called ( )
self . mech_driver . nb_ovn. add_dhcp_options . assert_not_called ( )
# Set dhcp_disabled with ip_version specified by this test case to
# true, no dhcp options will be get since it's dhcp_disabled now for
@ -2909,7 +2904,7 @@ class TestOVNMechanismDriverDHCPOptions(OVNMechanismDriverTestCase):
0 ,
self . mech_driver . _ovn_client . _get_subnet_dhcp_options_for_port .
call_count )
self . mech_driver . _ nb_ovn. add_dhcp_options . assert_not_called ( )
self . mech_driver . nb_ovn. add_dhcp_options . assert_not_called ( )
# Set dhcp_disabled with ip_version specified by this test case to
# false, and set dhcp_disabled with ip_version not in test to true.
@ -2926,7 +2921,7 @@ class TestOVNMechanismDriverDHCPOptions(OVNMechanismDriverTestCase):
1 ,
self . mech_driver . _ovn_client . _get_subnet_dhcp_options_for_port .
call_count )
self . mech_driver . _ nb_ovn. add_dhcp_options . assert_not_called ( )
self . mech_driver . nb_ovn. add_dhcp_options . assert_not_called ( )
def test__get_port_dhcp_options_port_dhcp_disabled_v4 ( self ) :
self . _test__get_port_dhcp_options_port_dhcp_disabled ( ip_version = 4 )
@ -2960,7 +2955,7 @@ class TestOVNMechanismDriverDHCPOptions(OVNMechanismDriverTestCase):
ovn_const . DHCPV6_STATELESS_OPT : ' true ' } } }
return [ fake_rows [ row ] for row in fake_rows if row in subnets ]
self . mech_driver . _ nb_ovn. get_subnets_dhcp_options . side_effect = fake
self . mech_driver . nb_ovn. get_subnets_dhcp_options . side_effect = fake
if ip_version == 4 :
expected_opts = ' foo ' if enable_dhcp else None
@ -2988,7 +2983,7 @@ class TestOVNMechanismDriverDHCPOptions(OVNMechanismDriverTestCase):
enable_dhcp = False )
class TestOVNMechanismDriverSecurityGroup (
class TestOVNMechanismDriverSecurityGroup ( MechDriverSetupBase ,
test_security_group . Ml2SecurityGroupsTestCase ) :
# This set of test cases is supplement to test_acl.py, the purpose is to
# test acl methods invoking. Content correctness of args of acl methods
@ -3001,13 +2996,6 @@ class TestOVNMechanismDriverSecurityGroup(
cfg . CONF . set_override ( ' dns_servers ' , [ ' 8.8.8.8 ' ] , group = ' ovn ' )
mock . patch . object ( impl_idl_ovn . Backend , ' schema_helper ' ) . start ( )
super ( TestOVNMechanismDriverSecurityGroup , self ) . setUp ( )
mm = directory . get_plugin ( ) . mechanism_manager
self . mech_driver = mm . mech_drivers [ ' ovn ' ] . obj
nb_ovn = fakes . FakeOvsdbNbOvnIdl ( )
sb_ovn = fakes . FakeOvsdbSbOvnIdl ( )
self . mech_driver . _nb_ovn = nb_ovn
self . mech_driver . _sb_ovn = sb_ovn
self . mech_driver . _ovn_client . _qos_driver = mock . Mock ( )
self . ctx = context . get_admin_context ( )
revision_plugin . RevisionPlugin ( )
@ -3053,7 +3041,7 @@ class TestOVNMechanismDriverSecurityGroup(
external_ids = { ' neutron:security_group_id ' : sg [ ' id ' ] } ,
name = expected_pg_name ) ,
]
self . mech_driver . _ nb_ovn. pg_add . assert_has_calls (