Get completely rid of contextlib.nested

`contextlib.nested` is deprecated since Python 2.7 and incompatible with
Python 3. This patch removes all its occurences by using the helper
script at [1].

This is a necessary step to allow us running all unit tests with
Python 3 (not just a small subset as it is done now).

[1]: https://github.com/adrienverge/context_unnester

Change-Id: I8d1de09ff38ed0af9fb56f423a2c43476408e0fb
Blueprint: neutron-python3
Closes-Bug: #1428424
This commit is contained in:
Adrien Vergé 2015-05-29 22:54:33 +02:00
parent 880252868b
commit 422588e133
26 changed files with 1276 additions and 1568 deletions

View File

@ -149,19 +149,6 @@ def check_no_contextlib_nested(logical_line, filename):
"docs.python.org/2/library/contextlib.html#contextlib.nested for "
"more information.")
# TODO(ankit): The following check is temporary.
# A series of patches will be submitted to address
# these issues. It should be removed completely
# when bug 1428424 is closed.
ignore_dirs = [
"neutron/tests/unit/db",
"neutron/tests/unit/extensions",
"neutron/tests/unit/plugins",
"neutron/tests/unit/scheduler"]
for directory in ignore_dirs:
if directory in filename:
return
if contextlib_nested.match(logical_line):
yield(0, msg)

View File

@ -167,9 +167,9 @@ class TestMetering(MeteringPluginDbTestCase):
name = 'my label'
description = 'my metering label'
with contextlib.nested(
self.metering_label(name, description),
self.metering_label(name, description)) as metering_label:
with self.metering_label(name, description) as v1,\
self.metering_label(name, description) as v2:
metering_label = (v1, v2)
self._test_list_resources('metering-label', metering_label)
@ -224,15 +224,15 @@ class TestMetering(MeteringPluginDbTestCase):
remote_ip_prefix = '192.168.0.0/24'
excluded = True
with contextlib.nested(
self.metering_label_rule(metering_label_id,
direction,
remote_ip_prefix,
excluded),
self.metering_label_rule(metering_label_id,
'ingress',
remote_ip_prefix,
excluded)) as metering_label_rule:
with self.metering_label_rule(metering_label_id,
direction,
remote_ip_prefix,
excluded) as v1,\
self.metering_label_rule(metering_label_id,
'ingress',
remote_ip_prefix,
excluded) as v2:
metering_label_rule = (v1, v2)
self._test_list_resources('metering-label-rule',
metering_label_rule)
@ -248,15 +248,15 @@ class TestMetering(MeteringPluginDbTestCase):
remote_ip_prefix = '192.168.0.0/24'
excluded = True
with contextlib.nested(
self.metering_label_rule(metering_label_id,
direction,
remote_ip_prefix,
excluded),
self.metering_label_rule(metering_label_id,
direction,
n_consts.IPv4_ANY,
False)) as metering_label_rule:
with self.metering_label_rule(metering_label_id,
direction,
remote_ip_prefix,
excluded) as v1,\
self.metering_label_rule(metering_label_id,
direction,
n_consts.IPv4_ANY,
False) as v2:
metering_label_rule = (v1, v2)
self._test_list_resources('metering-label-rule',
metering_label_rule)
@ -299,15 +299,15 @@ class TestMetering(MeteringPluginDbTestCase):
remote_ip_prefix = '192.168.0.0/24'
excluded = True
with contextlib.nested(
self.metering_label_rule(metering_label_id1,
direction,
remote_ip_prefix,
excluded),
self.metering_label_rule(metering_label_id2,
direction,
remote_ip_prefix,
excluded)) as metering_label_rule:
with self.metering_label_rule(metering_label_id1,
direction,
remote_ip_prefix,
excluded) as v1,\
self.metering_label_rule(metering_label_id2,
direction,
remote_ip_prefix,
excluded) as v2:
metering_label_rule = (v1, v2)
self._test_list_resources('metering-label-rule',
metering_label_rule)

View File

@ -1040,15 +1040,14 @@ class TestPortsV2(NeutronDbPluginV2TestCase):
def test_list_ports(self):
# for this test we need to enable overlapping ips
cfg.CONF.set_default('allow_overlapping_ips', True)
with contextlib.nested(self.port(),
self.port(),
self.port()) as ports:
with self.port() as v1, self.port() as v2, self.port() as v3:
ports = (v1, v2, v3)
self._test_list_resources('port', ports)
def test_list_ports_filtered_by_fixed_ip(self):
# for this test we need to enable overlapping ips
cfg.CONF.set_default('allow_overlapping_ips', True)
with contextlib.nested(self.port(), self.port()) as (port1, port2):
with self.port() as port1, self.port():
fixed_ips = port1['port']['fixed_ips'][0]
query_params = """
fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
@ -1061,9 +1060,8 @@ fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
def test_list_ports_public_network(self):
with self.network(shared=True) as network:
with self.subnet(network) as subnet:
with contextlib.nested(self.port(subnet, tenant_id='tenant_1'),
self.port(subnet, tenant_id='tenant_2')
) as (port1, port2):
with self.port(subnet, tenant_id='tenant_1') as port1,\
self.port(subnet, tenant_id='tenant_2') as port2:
# Admin request - must return both ports
self._test_list_resources('port', [port1, port2])
# Tenant_1 request - must return single port
@ -1079,13 +1077,12 @@ fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
if self._skip_native_sorting:
self.skipTest("Skip test for not implemented sorting feature")
cfg.CONF.set_default('allow_overlapping_ips', True)
with contextlib.nested(self.port(admin_state_up='True',
mac_address='00:00:00:00:00:01'),
self.port(admin_state_up='False',
mac_address='00:00:00:00:00:02'),
self.port(admin_state_up='False',
mac_address='00:00:00:00:00:03')
) as (port1, port2, port3):
with self.port(admin_state_up='True',
mac_address='00:00:00:00:00:01') as port1,\
self.port(admin_state_up='False',
mac_address='00:00:00:00:00:02') as port2,\
self.port(admin_state_up='False',
mac_address='00:00:00:00:00:03') as port3:
self._test_list_with_sort('port', (port3, port2, port1),
[('admin_state_up', 'asc'),
('mac_address', 'desc')])
@ -1096,13 +1093,12 @@ fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
new=_fake_get_sorting_helper)
helper_patcher.start()
cfg.CONF.set_default('allow_overlapping_ips', True)
with contextlib.nested(self.port(admin_state_up='True',
mac_address='00:00:00:00:00:01'),
self.port(admin_state_up='False',
mac_address='00:00:00:00:00:02'),
self.port(admin_state_up='False',
mac_address='00:00:00:00:00:03')
) as (port1, port2, port3):
with self.port(admin_state_up='True',
mac_address='00:00:00:00:00:01') as port1,\
self.port(admin_state_up='False',
mac_address='00:00:00:00:00:02') as port2,\
self.port(admin_state_up='False',
mac_address='00:00:00:00:00:03') as port3:
self._test_list_with_sort('port', (port3, port2, port1),
[('admin_state_up', 'asc'),
('mac_address', 'desc')])
@ -1111,10 +1107,9 @@ fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
if self._skip_native_pagination:
self.skipTest("Skip test for not implemented pagination feature")
cfg.CONF.set_default('allow_overlapping_ips', True)
with contextlib.nested(self.port(mac_address='00:00:00:00:00:01'),
self.port(mac_address='00:00:00:00:00:02'),
self.port(mac_address='00:00:00:00:00:03')
) as (port1, port2, port3):
with self.port(mac_address='00:00:00:00:00:01') as port1,\
self.port(mac_address='00:00:00:00:00:02') as port2,\
self.port(mac_address='00:00:00:00:00:03') as port3:
self._test_list_with_pagination('port',
(port1, port2, port3),
('mac_address', 'asc'), 2, 2)
@ -1125,10 +1120,9 @@ fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
new=_fake_get_pagination_helper)
helper_patcher.start()
cfg.CONF.set_default('allow_overlapping_ips', True)
with contextlib.nested(self.port(mac_address='00:00:00:00:00:01'),
self.port(mac_address='00:00:00:00:00:02'),
self.port(mac_address='00:00:00:00:00:03')
) as (port1, port2, port3):
with self.port(mac_address='00:00:00:00:00:01') as port1,\
self.port(mac_address='00:00:00:00:00:02') as port2,\
self.port(mac_address='00:00:00:00:00:03') as port3:
self._test_list_with_pagination('port',
(port1, port2, port3),
('mac_address', 'asc'), 2, 2)
@ -1137,10 +1131,9 @@ fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
if self._skip_native_pagination:
self.skipTest("Skip test for not implemented pagination feature")
cfg.CONF.set_default('allow_overlapping_ips', True)
with contextlib.nested(self.port(mac_address='00:00:00:00:00:01'),
self.port(mac_address='00:00:00:00:00:02'),
self.port(mac_address='00:00:00:00:00:03')
) as (port1, port2, port3):
with self.port(mac_address='00:00:00:00:00:01') as port1,\
self.port(mac_address='00:00:00:00:00:02') as port2,\
self.port(mac_address='00:00:00:00:00:03') as port3:
self._test_list_with_pagination_reverse('port',
(port1, port2, port3),
('mac_address', 'asc'),
@ -1152,10 +1145,9 @@ fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
new=_fake_get_pagination_helper)
helper_patcher.start()
cfg.CONF.set_default('allow_overlapping_ips', True)
with contextlib.nested(self.port(mac_address='00:00:00:00:00:01'),
self.port(mac_address='00:00:00:00:00:02'),
self.port(mac_address='00:00:00:00:00:03')
) as (port1, port2, port3):
with self.port(mac_address='00:00:00:00:00:01') as port1,\
self.port(mac_address='00:00:00:00:00:02') as port2,\
self.port(mac_address='00:00:00:00:00:03') as port3:
self._test_list_with_pagination_reverse('port',
(port1, port2, port3),
('mac_address', 'asc'),
@ -1662,14 +1654,13 @@ fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
def test_requested_subnet_id_v4_and_v6_slaac(self):
with self.network() as network:
with contextlib.nested(
self.subnet(network),
self.subnet(network,
cidr='2607:f0d0:1002:51::/64',
ip_version=6,
gateway_ip='fe80::1',
ipv6_address_mode=constants.IPV6_SLAAC)
) as (subnet, subnet2):
with self.subnet(network) as subnet,\
self.subnet(
network,
cidr='2607:f0d0:1002:51::/64',
ip_version=6,
gateway_ip='fe80::1',
ipv6_address_mode=constants.IPV6_SLAAC) as subnet2:
with self.port(
subnet,
fixed_ips=[{'subnet_id': subnet['subnet']['id']},
@ -1689,13 +1680,12 @@ fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
def test_create_router_port_ipv4_and_ipv6_slaac_no_fixed_ips(self):
with self.network() as network:
# Create an IPv4 and an IPv6 SLAAC subnet on the network
with contextlib.nested(
self.subnet(network),
self.subnet(network,
cidr='2607:f0d0:1002:51::/64',
ip_version=6,
gateway_ip='fe80::1',
ipv6_address_mode=constants.IPV6_SLAAC)):
with self.subnet(network),\
self.subnet(network,
cidr='2607:f0d0:1002:51::/64',
ip_version=6,
gateway_ip='fe80::1',
ipv6_address_mode=constants.IPV6_SLAAC):
# Create a router port without specifying fixed_ips
port = self._make_port(
self.fmt, network['network']['id'],
@ -2144,11 +2134,9 @@ fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
plugin = manager.NeutronManager.get_plugin()
ctx = context.get_admin_context()
with self.subnet() as subnet:
with contextlib.nested(
self.port(subnet=subnet, device_id='owner1'),
self.port(subnet=subnet, device_id='owner1'),
self.port(subnet=subnet, device_id='owner2'),
) as (p1, p2, p3):
with self.port(subnet=subnet, device_id='owner1') as p1,\
self.port(subnet=subnet, device_id='owner1') as p2,\
self.port(subnet=subnet, device_id='owner2') as p3:
network_id = subnet['subnet']['network_id']
plugin.delete_ports_by_device_id(ctx, 'owner1',
network_id)
@ -2162,11 +2150,9 @@ fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
def _test_delete_ports_by_device_id_second_call_failure(self, plugin):
ctx = context.get_admin_context()
with self.subnet() as subnet:
with contextlib.nested(
self.port(subnet=subnet, device_id='owner1'),
self.port(subnet=subnet, device_id='owner1'),
self.port(subnet=subnet, device_id='owner2'),
) as (p1, p2, p3):
with self.port(subnet=subnet, device_id='owner1') as p1,\
self.port(subnet=subnet, device_id='owner1') as p2,\
self.port(subnet=subnet, device_id='owner2') as p3:
orig = plugin.delete_port
with mock.patch.object(plugin, 'delete_port') as del_port:
@ -2194,10 +2180,8 @@ fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
def _test_delete_ports_ignores_port_not_found(self, plugin):
ctx = context.get_admin_context()
with self.subnet() as subnet:
with contextlib.nested(
self.port(subnet=subnet, device_id='owner1'),
mock.patch.object(plugin, 'delete_port')
) as (p, del_port):
with self.port(subnet=subnet, device_id='owner1') as p,\
mock.patch.object(plugin, 'delete_port') as del_port:
del_port.side_effect = n_exc.PortNotFound(
port_id=p['port']['id']
)
@ -2507,21 +2491,16 @@ class TestNetworksV2(NeutronDbPluginV2TestCase):
)
def test_list_networks(self):
with contextlib.nested(self.network(),
self.network(),
self.network()) as networks:
with self.network() as v1, self.network() as v2, self.network() as v3:
networks = (v1, v2, v3)
self._test_list_resources('network', networks)
def test_list_networks_with_sort_native(self):
if self._skip_native_sorting:
self.skipTest("Skip test for not implemented sorting feature")
with contextlib.nested(self.network(admin_status_up=True,
name='net1'),
self.network(admin_status_up=False,
name='net2'),
self.network(admin_status_up=False,
name='net3')
) as (net1, net2, net3):
with self.network(admin_status_up=True, name='net1') as net1,\
self.network(admin_status_up=False, name='net2') as net2,\
self.network(admin_status_up=False, name='net3') as net3:
self._test_list_with_sort('network', (net3, net2, net1),
[('admin_state_up', 'asc'),
('name', 'desc')])
@ -2529,13 +2508,9 @@ class TestNetworksV2(NeutronDbPluginV2TestCase):
def test_list_networks_with_sort_extended_attr_native_returns_400(self):
if self._skip_native_sorting:
self.skipTest("Skip test for not implemented sorting feature")
with contextlib.nested(self.network(admin_status_up=True,
name='net1'),
self.network(admin_status_up=False,
name='net2'),
self.network(admin_status_up=False,
name='net3')
):
with self.network(admin_status_up=True, name='net1'),\
self.network(admin_status_up=False, name='net2'),\
self.network(admin_status_up=False, name='net3'):
req = self.new_list_request(
'networks',
params='sort_key=provider:segmentation_id&sort_dir=asc')
@ -2545,13 +2520,9 @@ class TestNetworksV2(NeutronDbPluginV2TestCase):
def test_list_networks_with_sort_remote_key_native_returns_400(self):
if self._skip_native_sorting:
self.skipTest("Skip test for not implemented sorting feature")
with contextlib.nested(self.network(admin_status_up=True,
name='net1'),
self.network(admin_status_up=False,
name='net2'),
self.network(admin_status_up=False,
name='net3')
):
with self.network(admin_status_up=True, name='net1'),\
self.network(admin_status_up=False, name='net2'),\
self.network(admin_status_up=False, name='net3'):
req = self.new_list_request(
'networks', params='sort_key=subnets&sort_dir=asc')
res = req.get_response(self.api)
@ -2562,13 +2533,9 @@ class TestNetworksV2(NeutronDbPluginV2TestCase):
'neutron.api.v2.base.Controller._get_sorting_helper',
new=_fake_get_sorting_helper)
helper_patcher.start()
with contextlib.nested(self.network(admin_status_up=True,
name='net1'),
self.network(admin_status_up=False,
name='net2'),
self.network(admin_status_up=False,
name='net3')
) as (net1, net2, net3):
with self.network(admin_status_up=True, name='net1') as net1,\
self.network(admin_status_up=False, name='net2') as net2,\
self.network(admin_status_up=False, name='net3') as net3:
self._test_list_with_sort('network', (net3, net2, net1),
[('admin_state_up', 'asc'),
('name', 'desc')])
@ -2576,10 +2543,9 @@ class TestNetworksV2(NeutronDbPluginV2TestCase):
def test_list_networks_with_pagination_native(self):
if self._skip_native_pagination:
self.skipTest("Skip test for not implemented pagination feature")
with contextlib.nested(self.network(name='net1'),
self.network(name='net2'),
self.network(name='net3')
) as (net1, net2, net3):
with self.network(name='net1') as net1,\
self.network(name='net2') as net2,\
self.network(name='net3') as net3:
self._test_list_with_pagination('network',
(net1, net2, net3),
('name', 'asc'), 2, 2)
@ -2589,10 +2555,9 @@ class TestNetworksV2(NeutronDbPluginV2TestCase):
'neutron.api.v2.base.Controller._get_pagination_helper',
new=_fake_get_pagination_helper)
helper_patcher.start()
with contextlib.nested(self.network(name='net1'),
self.network(name='net2'),
self.network(name='net3')
) as (net1, net2, net3):
with self.network(name='net1') as net1,\
self.network(name='net2') as net2,\
self.network(name='net3') as net3:
self._test_list_with_pagination('network',
(net1, net2, net3),
('name', 'asc'), 2, 2)
@ -2602,13 +2567,9 @@ class TestNetworksV2(NeutronDbPluginV2TestCase):
'neutron.api.v2.base.Controller._get_pagination_helper',
new=_fake_get_pagination_helper)
helper_patcher.start()
with contextlib.nested(self.network(name='net1',
shared=True),
self.network(name='net2',
shared=False),
self.network(name='net3',
shared=True)
) as (net1, net2, net3):
with self.network(name='net1', shared=True) as net1,\
self.network(name='net2', shared=False) as net2,\
self.network(name='net3', shared=True) as net3:
self._test_list_with_pagination('network',
(net1, net2, net3),
('name', 'asc'), 2, 2,
@ -2618,10 +2579,9 @@ class TestNetworksV2(NeutronDbPluginV2TestCase):
def test_list_networks_without_pk_in_fields_pagination_native(self):
if self._skip_native_pagination:
self.skipTest("Skip test for not implemented pagination feature")
with contextlib.nested(self.network(name='net1'),
self.network(name='net2'),
self.network(name='net3')
) as (net1, net2, net3):
with self.network(name='net1') as net1,\
self.network(name='net2') as net2,\
self.network(name='net3') as net3:
self._test_list_with_pagination('network',
(net1, net2, net3),
('name', 'asc'), 2, 2,
@ -2631,10 +2591,9 @@ class TestNetworksV2(NeutronDbPluginV2TestCase):
def test_list_networks_with_pagination_reverse_native(self):
if self._skip_native_pagination:
self.skipTest("Skip test for not implemented pagination feature")
with contextlib.nested(self.network(name='net1'),
self.network(name='net2'),
self.network(name='net3')
) as (net1, net2, net3):
with self.network(name='net1') as net1,\
self.network(name='net2') as net2,\
self.network(name='net3') as net3:
self._test_list_with_pagination_reverse('network',
(net1, net2, net3),
('name', 'asc'), 2, 2)
@ -2644,18 +2603,16 @@ class TestNetworksV2(NeutronDbPluginV2TestCase):
'neutron.api.v2.base.Controller._get_pagination_helper',
new=_fake_get_pagination_helper)
helper_patcher.start()
with contextlib.nested(self.network(name='net1'),
self.network(name='net2'),
self.network(name='net3')
) as (net1, net2, net3):
with self.network(name='net1') as net1,\
self.network(name='net2') as net2,\
self.network(name='net3') as net3:
self._test_list_with_pagination_reverse('network',
(net1, net2, net3),
('name', 'asc'), 2, 2)
def test_list_networks_with_parameters(self):
with contextlib.nested(self.network(name='net1',
admin_state_up=False),
self.network(name='net2')) as (net1, net2):
with self.network(name='net1', admin_state_up=False) as net1,\
self.network(name='net2') as net2:
query_params = 'admin_state_up=False'
self._test_list_resources('network', [net1],
query_params=query_params)
@ -2674,25 +2631,23 @@ class TestNetworksV2(NeutronDbPluginV2TestCase):
self.assertIsNone(res['networks'][0].get('id'))
def test_list_networks_with_parameters_invalid_values(self):
with contextlib.nested(self.network(name='net1',
admin_state_up=False),
self.network(name='net2')) as (net1, net2):
with self.network(name='net1', admin_state_up=False),\
self.network(name='net2'):
req = self.new_list_request('networks',
params='admin_state_up=fake')
res = req.get_response(self.api)
self.assertEqual(webob.exc.HTTPClientError.code, res.status_int)
def test_list_shared_networks_with_non_admin_user(self):
with contextlib.nested(self.network(shared=False,
name='net1',
tenant_id='tenant1'),
self.network(shared=True,
name='net2',
tenant_id='another_tenant'),
self.network(shared=False,
name='net3',
tenant_id='another_tenant')
) as (net1, net2, net3):
with self.network(shared=False,
name='net1',
tenant_id='tenant1') as net1,\
self.network(shared=True,
name='net2',
tenant_id='another_tenant') as net2,\
self.network(shared=False,
name='net3',
tenant_id='another_tenant'):
ctx = context.Context(user_id='non_admin',
tenant_id='tenant1',
is_admin=False)
@ -2931,8 +2886,7 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase):
cidr_2 = '10.0.0.0/24'
cfg.CONF.set_override('allow_overlapping_ips', True)
with contextlib.nested(self.subnet(cidr=cidr_1),
self.subnet(cidr=cidr_2)):
with self.subnet(cidr=cidr_1), self.subnet(cidr=cidr_2):
pass
def test_create_2_subnets_overlapping_cidr_not_allowed_returns_400(self):
@ -2941,8 +2895,7 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase):
cfg.CONF.set_override('allow_overlapping_ips', False)
with testlib_api.ExpectedException(
webob.exc.HTTPClientError) as ctx_manager:
with contextlib.nested(self.subnet(cidr=cidr_1),
self.subnet(cidr=cidr_2)):
with self.subnet(cidr=cidr_1), self.subnet(cidr=cidr_2):
pass
self.assertEqual(ctx_manager.exception.code,
webob.exc.HTTPClientError.code)
@ -3100,10 +3053,9 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase):
def test_delete_subnet_with_other_subnet_on_network_still_in_use(self):
with self.network() as network:
with contextlib.nested(
self.subnet(network=network),
self.subnet(network=network, cidr='10.0.1.0/24'),
) as (subnet1, subnet2):
with self.subnet(network=network) as subnet1,\
self.subnet(network=network,
cidr='10.0.1.0/24') as subnet2:
subnet1_id = subnet1['subnet']['id']
subnet2_id = subnet2['subnet']['id']
with self.port(
@ -3219,16 +3171,15 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase):
set_context=False)
def test_create_subnet_nonzero_cidr(self):
with contextlib.nested(
self.subnet(cidr='10.129.122.5/8'),
self.subnet(cidr='11.129.122.5/15'),
self.subnet(cidr='12.129.122.5/16'),
self.subnet(cidr='13.129.122.5/18'),
self.subnet(cidr='14.129.122.5/22'),
self.subnet(cidr='15.129.122.5/24'),
self.subnet(cidr='16.129.122.5/28'),
self.subnet(cidr='17.129.122.5/32', enable_dhcp=False)
) as subs:
with self.subnet(cidr='10.129.122.5/8') as v1,\
self.subnet(cidr='11.129.122.5/15') as v2,\
self.subnet(cidr='12.129.122.5/16') as v3,\
self.subnet(cidr='13.129.122.5/18') as v4,\
self.subnet(cidr='14.129.122.5/22') as v5,\
self.subnet(cidr='15.129.122.5/24') as v6,\
self.subnet(cidr='16.129.122.5/28') as v7,\
self.subnet(cidr='17.129.122.5/32', enable_dhcp=False) as v8:
subs = (v1, v2, v3, v4, v5, v6, v7, v8)
# the API should accept and correct these for users
self.assertEqual(subs[0]['subnet']['cidr'], '10.0.0.0/8')
self.assertEqual(subs[1]['subnet']['cidr'], '11.128.0.0/15')
@ -4218,15 +4169,16 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase):
def test_list_subnets(self):
with self.network() as network:
with contextlib.nested(self.subnet(network=network,
gateway_ip='10.0.0.1',
cidr='10.0.0.0/24'),
self.subnet(network=network,
gateway_ip='10.0.1.1',
cidr='10.0.1.0/24'),
self.subnet(network=network,
gateway_ip='10.0.2.1',
cidr='10.0.2.0/24')) as subnets:
with self.subnet(network=network,
gateway_ip='10.0.0.1',
cidr='10.0.0.0/24') as v1,\
self.subnet(network=network,
gateway_ip='10.0.1.1',
cidr='10.0.1.0/24') as v2,\
self.subnet(network=network,
gateway_ip='10.0.2.1',
cidr='10.0.2.0/24') as v3:
subnets = (v1, v2, v3)
self._test_list_resources('subnet', subnets)
def test_list_subnets_shared(self):
@ -4253,13 +4205,13 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase):
def test_list_subnets_with_parameter(self):
with self.network() as network:
with contextlib.nested(self.subnet(network=network,
gateway_ip='10.0.0.1',
cidr='10.0.0.0/24'),
self.subnet(network=network,
gateway_ip='10.0.1.1',
cidr='10.0.1.0/24')
) as subnets:
with self.subnet(network=network,
gateway_ip='10.0.0.1',
cidr='10.0.0.0/24') as v1,\
self.subnet(network=network,
gateway_ip='10.0.1.1',
cidr='10.0.1.0/24') as v2:
subnets = (v1, v2)
query_params = 'ip_version=4&ip_version=6'
self._test_list_resources('subnet', subnets,
query_params=query_params)
@ -4270,13 +4222,9 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase):
def test_list_subnets_with_sort_native(self):
if self._skip_native_sorting:
self.skipTest("Skip test for not implemented sorting feature")
with contextlib.nested(self.subnet(enable_dhcp=True,
cidr='10.0.0.0/24'),
self.subnet(enable_dhcp=False,
cidr='11.0.0.0/24'),
self.subnet(enable_dhcp=False,
cidr='12.0.0.0/24')
) as (subnet1, subnet2, subnet3):
with self.subnet(enable_dhcp=True, cidr='10.0.0.0/24') as subnet1,\
self.subnet(enable_dhcp=False, cidr='11.0.0.0/24') as subnet2,\
self.subnet(enable_dhcp=False, cidr='12.0.0.0/24') as subnet3:
self._test_list_with_sort('subnet', (subnet3, subnet2, subnet1),
[('enable_dhcp', 'asc'),
('cidr', 'desc')])
@ -4286,13 +4234,9 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase):
'neutron.api.v2.base.Controller._get_sorting_helper',
new=_fake_get_sorting_helper)
helper_patcher.start()
with contextlib.nested(self.subnet(enable_dhcp=True,
cidr='10.0.0.0/24'),
self.subnet(enable_dhcp=False,
cidr='11.0.0.0/24'),
self.subnet(enable_dhcp=False,
cidr='12.0.0.0/24')
) as (subnet1, subnet2, subnet3):
with self.subnet(enable_dhcp=True, cidr='10.0.0.0/24') as subnet1,\
self.subnet(enable_dhcp=False, cidr='11.0.0.0/24') as subnet2,\
self.subnet(enable_dhcp=False, cidr='12.0.0.0/24') as subnet3:
self._test_list_with_sort('subnet', (subnet3,
subnet2,
subnet1),
@ -4302,10 +4246,9 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase):
def test_list_subnets_with_pagination_native(self):
if self._skip_native_pagination:
self.skipTest("Skip test for not implemented sorting feature")
with contextlib.nested(self.subnet(cidr='10.0.0.0/24'),
self.subnet(cidr='11.0.0.0/24'),
self.subnet(cidr='12.0.0.0/24')
) as (subnet1, subnet2, subnet3):
with self.subnet(cidr='10.0.0.0/24') as subnet1,\
self.subnet(cidr='11.0.0.0/24') as subnet2,\
self.subnet(cidr='12.0.0.0/24') as subnet3:
self._test_list_with_pagination('subnet',
(subnet1, subnet2, subnet3),
('cidr', 'asc'), 2, 2)
@ -4315,10 +4258,9 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase):
'neutron.api.v2.base.Controller._get_pagination_helper',
new=_fake_get_pagination_helper)
helper_patcher.start()
with contextlib.nested(self.subnet(cidr='10.0.0.0/24'),
self.subnet(cidr='11.0.0.0/24'),
self.subnet(cidr='12.0.0.0/24')
) as (subnet1, subnet2, subnet3):
with self.subnet(cidr='10.0.0.0/24') as subnet1,\
self.subnet(cidr='11.0.0.0/24') as subnet2,\
self.subnet(cidr='12.0.0.0/24') as subnet3:
self._test_list_with_pagination('subnet',
(subnet1, subnet2, subnet3),
('cidr', 'asc'), 2, 2)
@ -4326,10 +4268,9 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase):
def test_list_subnets_with_pagination_reverse_native(self):
if self._skip_native_sorting:
self.skipTest("Skip test for not implemented sorting feature")
with contextlib.nested(self.subnet(cidr='10.0.0.0/24'),
self.subnet(cidr='11.0.0.0/24'),
self.subnet(cidr='12.0.0.0/24')
) as (subnet1, subnet2, subnet3):
with self.subnet(cidr='10.0.0.0/24') as subnet1,\
self.subnet(cidr='11.0.0.0/24') as subnet2,\
self.subnet(cidr='12.0.0.0/24') as subnet3:
self._test_list_with_pagination_reverse('subnet',
(subnet1, subnet2,
subnet3),
@ -4340,10 +4281,9 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase):
'neutron.api.v2.base.Controller._get_pagination_helper',
new=_fake_get_pagination_helper)
helper_patcher.start()
with contextlib.nested(self.subnet(cidr='10.0.0.0/24'),
self.subnet(cidr='11.0.0.0/24'),
self.subnet(cidr='12.0.0.0/24')
) as (subnet1, subnet2, subnet3):
with self.subnet(cidr='10.0.0.0/24') as subnet1,\
self.subnet(cidr='11.0.0.0/24') as subnet2,\
self.subnet(cidr='12.0.0.0/24') as subnet3:
self._test_list_with_pagination_reverse('subnet',
(subnet1, subnet2,
subnet3),
@ -4599,9 +4539,8 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase):
self.assertEqual(res.status_int, webob.exc.HTTPNoContent.code)
def test_delete_subnet_with_callback(self):
with contextlib.nested(
self.subnet(),
mock.patch.object(registry, 'notify')) as (subnet, notify):
with self.subnet() as subnet,\
mock.patch.object(registry, 'notify') as notify:
errors = [
exceptions.NotificationError(
@ -5557,18 +5496,11 @@ class NeutronDbPluginV2AsMixinTestCase(NeutronDbPluginV2TestCase,
def test_get_user_allocation_for_dhcp_port_returns_none(self):
plugin = manager.NeutronManager.get_plugin()
with contextlib.nested(
self.network(),
self.network()
) as (net, net1):
with contextlib.nested(
self.subnet(network=net, cidr='10.0.0.0/24'),
self.subnet(network=net1, cidr='10.0.1.0/24')
) as (subnet, subnet1):
with contextlib.nested(
self.port(subnet=subnet, device_owner='network:dhcp'),
self.port(subnet=subnet1)
) as (p, p2):
with self.network() as net, self.network() as net1:
with self.subnet(network=net, cidr='10.0.0.0/24') as subnet,\
self.subnet(network=net1, cidr='10.0.1.0/24') as subnet1:
with self.port(subnet=subnet, device_owner='network:dhcp'),\
self.port(subnet=subnet1):
# check that user allocations on another network don't
# affect _subnet_get_user_allocation method
res = plugin._subnet_get_user_allocation(

View File

@ -13,7 +13,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import contextlib
import mock
from neutron.common import constants as l3_const
@ -205,12 +204,11 @@ class L3DvrTestCase(testlib_api.SqlTestCase):
router_db = self._create_router(router)
router_id = router_db['id']
self.assertTrue(router_db.extra_attributes.distributed)
with contextlib.nested(
mock.patch.object(l3_dvr_db.l3_db.L3_NAT_db_mixin,
'_create_gw_port'),
mock.patch.object(self.mixin,
'_create_snat_intf_ports_if_not_exists')
) as (cw, cs):
with mock.patch.object(l3_dvr_db.l3_db.L3_NAT_db_mixin,
'_create_gw_port'),\
mock.patch.object(
self.mixin,
'_create_snat_intf_ports_if_not_exists') as cs:
self.mixin._create_gw_port(
self.ctx, router_id, router_db, mock.ANY,
mock.ANY)
@ -228,16 +226,15 @@ class L3DvrTestCase(testlib_api.SqlTestCase):
'fixed_port_id': _uuid(),
'floating_network_id': _uuid()
}
with contextlib.nested(
mock.patch.object(l3_dvr_db.l3_db.L3_NAT_db_mixin,
'_get_floatingip'),
mock.patch.object(self.mixin,
'_get_vm_port_hostid'),
mock.patch.object(self.mixin,
'_check_fips_availability_on_host_ext_net'),
mock.patch.object(self.mixin,
'_delete_floatingip_agent_gateway_port')
) as (gfips, gvm, cfips, dfips):
with mock.patch.object(l3_dvr_db.l3_db.L3_NAT_db_mixin,
'_get_floatingip') as gfips,\
mock.patch.object(self.mixin, '_get_vm_port_hostid') as gvm,\
mock.patch.object(
self.mixin,
'_check_fips_availability_on_host_ext_net') as cfips,\
mock.patch.object(
self.mixin,
'_delete_floatingip_agent_gateway_port') as dfips:
gfips.return_value = floatingip
gvm.return_value = 'my-host'
cfips.return_value = True
@ -254,10 +251,9 @@ class L3DvrTestCase(testlib_api.SqlTestCase):
'network_id': 'ext_network_id',
'device_owner': l3_const.DEVICE_OWNER_AGENT_GW
}
with contextlib.nested(
mock.patch.object(manager.NeutronManager, 'get_plugin'),
mock.patch.object(self.mixin,
'_get_vm_port_hostid')) as (gp, vm_host):
with mock.patch.object(manager.NeutronManager, 'get_plugin') as gp,\
mock.patch.object(self.mixin,
'_get_vm_port_hostid') as vm_host:
plugin = mock.Mock()
gp.return_value = plugin
plugin.get_ports.return_value = [port]
@ -271,23 +267,20 @@ class L3DvrTestCase(testlib_api.SqlTestCase):
def _delete_floatingip_test_setup(self, floatingip):
fip_id = floatingip['id']
with contextlib.nested(
mock.patch.object(l3_dvr_db.l3_db.L3_NAT_db_mixin,
'_get_floatingip'),
mock.patch.object(self.mixin,
'_clear_unused_fip_agent_gw_port'),
mock.patch.object(l3_dvr_db.l3_db.L3_NAT_db_mixin,
'delete_floatingip')) as (gf, vf, df):
with mock.patch.object(l3_dvr_db.l3_db.L3_NAT_db_mixin,
'_get_floatingip') as gf,\
mock.patch.object(self.mixin,
'_clear_unused_fip_agent_gw_port') as vf,\
mock.patch.object(l3_dvr_db.l3_db.L3_NAT_db_mixin,
'delete_floatingip'):
gf.return_value = floatingip
self.mixin.delete_floatingip(self.ctx, fip_id)
return vf
def _disassociate_floatingip_setup(self, port_id=None, floatingip=None):
with contextlib.nested(
mock.patch.object(self.mixin, '_get_floatingip_on_port'),
mock.patch.object(self.mixin,
'_clear_unused_fip_agent_gw_port'),
) as (gf, vf):
with mock.patch.object(self.mixin, '_get_floatingip_on_port') as gf,\
mock.patch.object(self.mixin,
'_clear_unused_fip_agent_gw_port') as vf:
gf.return_value = floatingip
self.mixin.disassociate_floatingips(
self.ctx, port_id, do_notify=False)
@ -386,14 +379,11 @@ class L3DvrTestCase(testlib_api.SqlTestCase):
'router_id': 'foo_router_id'
}
router = {'id': 'foo_router_id', 'distributed': True}
with contextlib.nested(
mock.patch.object(self.mixin,
'get_router'),
mock.patch.object(self.mixin,
'_clear_unused_fip_agent_gw_port'),
mock.patch.object(l3_dvr_db.l3_db.L3_NAT_db_mixin,
'_update_fip_assoc'),
) as (grtr, vf, cf):
with mock.patch.object(self.mixin, 'get_router') as grtr,\
mock.patch.object(self.mixin,
'_clear_unused_fip_agent_gw_port') as vf,\
mock.patch.object(l3_dvr_db.l3_db.L3_NAT_db_mixin,
'_update_fip_assoc'):
grtr.return_value = router
self.mixin._update_fip_assoc(
self.ctx, fip, floatingip, mock.ANY)
@ -407,18 +397,15 @@ class L3DvrTestCase(testlib_api.SqlTestCase):
'network_id': 'external_net'
}
with contextlib.nested(
mock.patch.object(self.mixin,
'get_router'),
mock.patch.object(self.mixin,
'_get_vm_port_hostid'),
mock.patch.object(self.mixin,
'_clear_unused_fip_agent_gw_port'),
mock.patch.object(self.mixin,
'create_fip_agent_gw_port_if_not_exists'),
mock.patch.object(l3_dvr_db.l3_db.L3_NAT_db_mixin,
'_update_fip_assoc'),
) as (grtr, vmp, d_fip, c_fip, up_fip):
with mock.patch.object(self.mixin, 'get_router') as grtr,\
mock.patch.object(self.mixin, '_get_vm_port_hostid') as vmp,\
mock.patch.object(self.mixin,
'_clear_unused_fip_agent_gw_port') as d_fip,\
mock.patch.object(
self.mixin,
'create_fip_agent_gw_port_if_not_exists') as c_fip,\
mock.patch.object(l3_dvr_db.l3_db.L3_NAT_db_mixin,
'_update_fip_assoc'):
grtr.return_value = router_db
vmp.return_value = 'my-host'
self.mixin._update_fip_assoc(
@ -502,23 +489,19 @@ class L3DvrTestCase(testlib_api.SqlTestCase):
return_value=False)
plugin.remove_router_from_l3_agent = mock.Mock(
return_value=None)
with contextlib.nested(
mock.patch.object(self.mixin,
'_get_router'),
mock.patch.object(self.mixin,
'_get_device_owner'),
mock.patch.object(self.mixin,
'_remove_interface_by_subnet'),
mock.patch.object(self.mixin,
'delete_csnat_router_interface_ports'),
mock.patch.object(manager.NeutronManager,
'get_service_plugins'),
mock.patch.object(self.mixin,
'_make_router_interface_info'),
mock.patch.object(self.mixin,
'notify_router_interface_action'),
) as (grtr, gdev, rmintf, delintf, gplugin,
mkintf, notify):
with mock.patch.object(self.mixin, '_get_router') as grtr,\
mock.patch.object(self.mixin, '_get_device_owner') as gdev,\
mock.patch.object(self.mixin,
'_remove_interface_by_subnet') as rmintf,\
mock.patch.object(
self.mixin,
'delete_csnat_router_interface_ports') as delintf,\
mock.patch.object(manager.NeutronManager,
'get_service_plugins') as gplugin,\
mock.patch.object(self.mixin,
'_make_router_interface_info') as mkintf,\
mock.patch.object(self.mixin,
'notify_router_interface_action') as notify:
grtr.return_value = router
gdev.return_value = mock.Mock()
rmintf.return_value = (mock.MagicMock(), mock.MagicMock())

View File

@ -11,7 +11,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import contextlib
import mock
import testtools
@ -45,11 +44,10 @@ class SecurityGroupDbMixinTestCase(testlib_api.SqlTestCase):
self.mixin.create_security_group(self.ctx, secgroup)
def test_delete_security_group_in_use(self):
with contextlib.nested(
mock.patch.object(self.mixin, '_get_port_security_group_bindings'),
mock.patch.object(self.mixin, '_get_security_group'),
mock.patch.object(registry, "notify"),
) as (_, _, mock_notify):
with mock.patch.object(self.mixin,
'_get_port_security_group_bindings'),\
mock.patch.object(self.mixin, '_get_security_group'),\
mock.patch.object(registry, "notify") as mock_notify:
mock_notify.side_effect = exceptions.CallbackFailure(Exception())
with testtools.ExpectedException(
securitygroup.SecurityGroupInUse):

View File

@ -13,7 +13,6 @@
# License for the specific language governing permissions and limitations
# under the License.
import contextlib
import itertools
import mock
@ -90,8 +89,7 @@ class ExtNetDBTestCase(test_db_base_plugin_v2.NeutronDbPluginV2TestCase):
def test_list_nets_external_pagination(self):
if self._skip_native_pagination:
self.skipTest("Skip test for not implemented pagination feature")
with contextlib.nested(self.network(name='net1'),
self.network(name='net3')) as (n1, n3):
with self.network(name='net1') as n1, self.network(name='net3') as n3:
self._set_net_external(n1['network']['id'])
self._set_net_external(n3['network']['id'])
with self.network(name='net2') as n2:

View File

@ -13,8 +13,6 @@
# License for the specific language governing permissions and limitations
# under the License.
import contextlib
from oslo_config import cfg
from oslo_log import log as logging
from webob import exc
@ -146,13 +144,10 @@ class ExtraRouteDBTestCaseBase(object):
'nexthop': '10.0.0.3'}]
routes2 = [{'destination': '12.0.0.0/8',
'nexthop': '10.0.0.4'}]
with contextlib.nested(
self.router(),
self.router(),
self.subnet(cidr='10.0.0.0/24')) as (r1, r2, s):
with contextlib.nested(
self.port(subnet=s),
self.port(subnet=s)) as (p1, p2):
with self.router() as r1,\
self.router() as r2,\
self.subnet(cidr='10.0.0.0/24') as s:
with self.port(subnet=s) as p1, self.port(subnet=s) as p2:
body = self._routes_update_prepare(r1['router']['id'],
None, p1['port']['id'],
routes1)
@ -427,27 +422,24 @@ class ExtraRouteDBTestCaseBase(object):
self.assertIsNone(gw_info)
def test_router_list_with_sort(self):
with contextlib.nested(self.router(name='router1'),
self.router(name='router2'),
self.router(name='router3')
) as (router1, router2, router3):
with self.router(name='router1') as router1,\
self.router(name='router2') as router2,\
self.router(name='router3') as router3:
self._test_list_with_sort('router', (router3, router2, router1),
[('name', 'desc')])
def test_router_list_with_pagination(self):
with contextlib.nested(self.router(name='router1'),
self.router(name='router2'),
self.router(name='router3')
) as (router1, router2, router3):
with self.router(name='router1') as router1,\
self.router(name='router2') as router2,\
self.router(name='router3') as router3:
self._test_list_with_pagination('router',
(router1, router2, router3),
('name', 'asc'), 2, 2)
def test_router_list_with_pagination_reverse(self):
with contextlib.nested(self.router(name='router1'),
self.router(name='router2'),
self.router(name='router3')
) as (router1, router2, router3):
with self.router(name='router1') as router1,\
self.router(name='router2') as router2,\
self.router(name='router3') as router3:
self._test_list_with_pagination_reverse('router',
(router1, router2,
router3),

View File

@ -620,11 +620,10 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
def test_router_create_with_gwinfo_ext_ip_subnet(self):
with self.network() as n:
with contextlib.nested(
self.subnet(network=n),
self.subnet(network=n, cidr='1.0.0.0/24'),
self.subnet(network=n, cidr='2.0.0.0/24'),
) as subnets:
with self.subnet(network=n) as v1,\
self.subnet(network=n, cidr='1.0.0.0/24') as v2,\
self.subnet(network=n, cidr='2.0.0.0/24') as v3:
subnets = (v1, v2, v3)
self._set_net_external(n['network']['id'])
for s in subnets:
ext_info = {
@ -658,16 +657,13 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
self.assertEqual(res.status_int, exc.HTTPForbidden.code)
def test_router_list(self):
with contextlib.nested(self.router(),
self.router(),
self.router()
) as routers:
with self.router() as v1, self.router() as v2, self.router() as v3:
routers = (v1, v2, v3)
self._test_list_resources('router', routers)
def test_router_list_with_parameters(self):
with contextlib.nested(self.router(name='router1'),
self.router(name='router2'),
) as (router1, router2):
with self.router(name='router1') as router1,\
self.router(name='router2') as router2:
query_params = 'name=router1'
self._test_list_resources('router', [router1],
query_params=query_params)
@ -679,27 +675,24 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
query_params=query_params)
def test_router_list_with_sort(self):
with contextlib.nested(self.router(name='router1'),
self.router(name='router2'),
self.router(name='router3')
) as (router1, router2, router3):
with self.router(name='router1') as router1,\
self.router(name='router2') as router2,\
self.router(name='router3') as router3:
self._test_list_with_sort('router', (router3, router2, router1),
[('name', 'desc')])
def test_router_list_with_pagination(self):
with contextlib.nested(self.router(name='router1'),
self.router(name='router2'),
self.router(name='router3')
) as (router1, router2, router3):
with self.router(name='router1') as router1,\
self.router(name='router2') as router2,\
self.router(name='router3') as router3:
self._test_list_with_pagination('router',
(router1, router2, router3),
('name', 'asc'), 2, 2)
def test_router_list_with_pagination_reverse(self):
with contextlib.nested(self.router(name='router1'),
self.router(name='router2'),
self.router(name='router3')
) as (router1, router2, router3):
with self.router(name='router1') as router1,\
self.router(name='router2') as router2,\
self.router(name='router3') as router3:
self._test_list_with_pagination_reverse('router',
(router1, router2,
router3),
@ -767,11 +760,9 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
expected_code=exc.HTTPBadRequest.code)
def test_router_update_gateway_with_invalid_external_subnet(self):
with contextlib.nested(
self.subnet(),
self.subnet(cidr='1.0.0.0/24'),
self.router()
) as (s1, s2, r):
with self.subnet() as s1,\
self.subnet(cidr='1.0.0.0/24') as s2,\
self.router() as r:
self._set_net_external(s1['subnet']['network_id'])
self._add_external_gateway_to_router(
r['router']['id'],
@ -782,11 +773,9 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
def test_router_update_gateway_with_different_external_subnet(self):
with self.network() as n:
with contextlib.nested(
self.subnet(network=n),
self.subnet(network=n, cidr='1.0.0.0/24'),
self.router()
) as (s1, s2, r):
with self.subnet(network=n) as s1,\
self.subnet(network=n, cidr='1.0.0.0/24') as s2,\
self.router() as r:
self._set_net_external(n['network']['id'])
res1 = self._add_external_gateway_to_router(
r['router']['id'],
@ -998,7 +987,7 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
'address_mode': stateless}]
for uc in use_cases:
fake_notifier.reset()
with contextlib.nested(self.router(), self.network()) as (r, n):
with self.router() as r, self.network() as n:
with self.subnet(network=n, cidr='fd00::1/64',
gateway_ip='fd00::1', ip_version=6,
ipv6_ra_mode=uc['ra_mode'],
@ -1106,7 +1095,7 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
'ra_mode': None,
'address_mode': l3_constants.DHCPV6_STATELESS}]
for uc in use_cases:
with contextlib.nested(self.router(), self.network()) as (r, n):
with self.router() as r, self.network() as n:
with self.subnet(network=n, cidr='fd00::1/64',
gateway_ip='fd00::1', ip_version=6,
ipv6_ra_mode=uc['ra_mode'],
@ -1163,13 +1152,11 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
def test_router_add_interface_subnet_with_port_from_other_tenant(self):
tenant_id = _uuid()
other_tenant_id = _uuid()
with contextlib.nested(
self.router(tenant_id=tenant_id),
self.network(tenant_id=tenant_id),
self.network(tenant_id=other_tenant_id)) as (r, n1, n2):
with contextlib.nested(
self.subnet(network=n1, cidr='10.0.0.0/24'),
self.subnet(network=n2, cidr='10.1.0.0/24')) as (s1, s2):
with self.router(tenant_id=tenant_id) as r,\
self.network(tenant_id=tenant_id) as n1,\
self.network(tenant_id=other_tenant_id) as n2:
with self.subnet(network=n1, cidr='10.0.0.0/24') as s1,\
self.subnet(network=n2, cidr='10.1.0.0/24') as s2:
body = self._router_interface_action(
'add',
r['router']['id'],
@ -1594,10 +1581,9 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
expected_code=exc.HTTPConflict.code)
def test_router_remove_interface_callback_failure_returns_409(self):
with contextlib.nested(
self.router(),
self.subnet(),
mock.patch.object(registry, 'notify')) as (r, s, notify):
with self.router() as r,\
self.subnet() as s,\
mock.patch.object(registry, 'notify') as notify:
errors = [
exceptions.NotificationError(
'foo_callback_id', n_exc.InUse()),
@ -1619,10 +1605,9 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
exc.HTTPConflict.code)
def test_router_clear_gateway_callback_failure_returns_409(self):
with contextlib.nested(
self.router(),
self.subnet(),
mock.patch.object(registry, 'notify')) as (r, s, notify):
with self.router() as r,\
self.subnet() as s,\
mock.patch.object(registry, 'notify') as notify:
errors = [
exceptions.NotificationError(
'foo_callback_id', n_exc.InUse()),
@ -1980,11 +1965,9 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
def test_floatingip_update_different_router(self):
# Create subnet with different CIDRs to account for plugins which
# do not support overlapping IPs
with contextlib.nested(self.subnet(cidr='10.0.0.0/24'),
self.subnet(cidr='10.0.1.0/24')) as (
s1, s2):
with contextlib.nested(self.port(subnet=s1),
self.port(subnet=s2)) as (p1, p2):
with self.subnet(cidr='10.0.0.0/24') as s1,\
self.subnet(cidr='10.0.1.0/24') as s2:
with self.port(subnet=s1) as p1, self.port(subnet=s2) as p2:
private_sub1 = {'subnet':
{'id':
p1['port']['fixed_ips'][0]['subnet_id']}}
@ -1992,12 +1975,12 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
{'id':
p2['port']['fixed_ips'][0]['subnet_id']}}
with self.subnet(cidr='12.0.0.0/24') as public_sub:
with contextlib.nested(
with self.floatingip_no_assoc_with_public_sub(
private_sub1,
public_sub=public_sub) as (fip1, r1),\
self.floatingip_no_assoc_with_public_sub(
private_sub1, public_sub=public_sub),
self.floatingip_no_assoc_with_public_sub(
private_sub2, public_sub=public_sub)) as (
(fip1, r1), (fip2, r2)):
private_sub2,
public_sub=public_sub) as (fip2, r2):
def assert_no_assoc(fip):
body = self._show('floatingips',
@ -2160,10 +2143,9 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
self.assertEqual(res.status_int, 400)
def test_floatingip_list_with_sort(self):
with contextlib.nested(self.subnet(cidr="10.0.0.0/24"),
self.subnet(cidr="11.0.0.0/24"),
self.subnet(cidr="12.0.0.0/24")
) as (s1, s2, s3):
with self.subnet(cidr="10.0.0.0/24") as s1,\
self.subnet(cidr="11.0.0.0/24") as s2,\
self.subnet(cidr="12.0.0.0/24") as s3:
network_id1 = s1['subnet']['network_id']
network_id2 = s2['subnet']['network_id']
network_id3 = s3['subnet']['network_id']
@ -2186,10 +2168,9 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
self.assertEqual(len(res['floatingips']), 0)
def test_floatingip_list_with_pagination(self):
with contextlib.nested(self.subnet(cidr="10.0.0.0/24"),
self.subnet(cidr="11.0.0.0/24"),
self.subnet(cidr="12.0.0.0/24")
) as (s1, s2, s3):
with self.subnet(cidr="10.0.0.0/24") as s1,\
self.subnet(cidr="11.0.0.0/24") as s2,\
self.subnet(cidr="12.0.0.0/24") as s3:
network_id1 = s1['subnet']['network_id']
network_id2 = s2['subnet']['network_id']
network_id3 = s3['subnet']['network_id']
@ -2204,10 +2185,9 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
('floating_ip_address', 'asc'), 2, 2)
def test_floatingip_list_with_pagination_reverse(self):
with contextlib.nested(self.subnet(cidr="10.0.0.0/24"),
self.subnet(cidr="11.0.0.0/24"),
self.subnet(cidr="12.0.0.0/24")
) as (s1, s2, s3):
with self.subnet(cidr="10.0.0.0/24") as s1,\
self.subnet(cidr="11.0.0.0/24") as s2,\
self.subnet(cidr="12.0.0.0/24") as s3:
network_id1 = s1['subnet']['network_id']
network_id2 = s2['subnet']['network_id']
network_id3 = s3['subnet']['network_id']
@ -2222,21 +2202,19 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
('floating_ip_address', 'asc'), 2, 2)
def test_floatingip_multi_external_one_internal(self):
with contextlib.nested(self.subnet(cidr="10.0.0.0/24"),
self.subnet(cidr="11.0.0.0/24"),
self.subnet(cidr="12.0.0.0/24")
) as (exs1, exs2, ins1):
with self.subnet(cidr="10.0.0.0/24") as exs1,\
self.subnet(cidr="11.0.0.0/24") as exs2,\
self.subnet(cidr="12.0.0.0/24") as ins1:
network_ex_id1 = exs1['subnet']['network_id']
network_ex_id2 = exs2['subnet']['network_id']
self._set_net_external(network_ex_id1)
self._set_net_external(network_ex_id2)
r2i_fixed_ips = [{'ip_address': '12.0.0.2'}]
with contextlib.nested(self.router(no_delete=True),
self.router(no_delete=True),
self.port(subnet=ins1,
fixed_ips=r2i_fixed_ips)
) as (r1, r2, r2i_port):
with self.router(no_delete=True) as r1,\
self.router(no_delete=True) as r2,\
self.port(subnet=ins1,
fixed_ips=r2i_fixed_ips) as r2i_port:
self._add_external_gateway_to_router(
r1['router']['id'],
network_ex_id1)
@ -2589,9 +2567,7 @@ class L3NatDBIntAgentSchedulingTestCase(L3BaseForIntTests,
self.assertEqual(agents[0]['host'], agent_host)
def test_update_gateway_agent_exists_supporting_network(self):
with contextlib.nested(self.router(),
self.subnet(),
self.subnet()) as (r, s1, s2):
with self.router() as r, self.subnet() as s1, self.subnet() as s2:
self._set_net_external(s1['subnet']['network_id'])
l3_rpc_cb = l3_rpc.L3RpcCallback()
helpers.register_l3_agent(
@ -2616,9 +2592,7 @@ class L3NatDBIntAgentSchedulingTestCase(L3BaseForIntTests,
self._assert_router_on_agent(r['router']['id'], 'host2')
def test_update_gateway_agent_exists_supporting_multiple_network(self):
with contextlib.nested(self.router(),
self.subnet(),
self.subnet()) as (r, s1, s2):
with self.router() as r, self.subnet() as s1, self.subnet() as s2:
self._set_net_external(s1['subnet']['network_id'])
l3_rpc_cb = l3_rpc.L3RpcCallback()
helpers.register_l3_agent(

View File

@ -373,51 +373,36 @@ class TestSecurityGroups(SecurityGroupDBTestCase):
self.assertEqual(res.status_int, webob.exc.HTTPConflict.code)
def test_list_security_groups(self):
with contextlib.nested(self.security_group(name='sg1',
description='sg'),
self.security_group(name='sg2',
description='sg'),
self.security_group(name='sg3',
description='sg')
) as security_groups:
with self.security_group(name='sg1', description='sg') as v1,\
self.security_group(name='sg2', description='sg') as v2,\
self.security_group(name='sg3', description='sg') as v3:
security_groups = (v1, v2, v3)
self._test_list_resources('security-group',
security_groups,
query_params='description=sg')
def test_list_security_groups_with_sort(self):
with contextlib.nested(self.security_group(name='sg1',
description='sg'),
self.security_group(name='sg2',
description='sg'),
self.security_group(name='sg3',
description='sg')
) as (sg1, sg2, sg3):
with self.security_group(name='sg1', description='sg') as sg1,\
self.security_group(name='sg2', description='sg') as sg2,\
self.security_group(name='sg3', description='sg') as sg3:
self._test_list_with_sort('security-group',
(sg3, sg2, sg1),
[('name', 'desc')],
query_params='description=sg')
def test_list_security_groups_with_pagination(self):
with contextlib.nested(self.security_group(name='sg1',
description='sg'),
self.security_group(name='sg2',
description='sg'),
self.security_group(name='sg3',
description='sg')
) as (sg1, sg2, sg3):
with self.security_group(name='sg1', description='sg') as sg1,\
self.security_group(name='sg2', description='sg') as sg2,\
self.security_group(name='sg3', description='sg') as sg3:
self._test_list_with_pagination('security-group',
(sg1, sg2, sg3),
('name', 'asc'), 2, 2,
query_params='description=sg')
def test_list_security_groups_with_pagination_reverse(self):
with contextlib.nested(self.security_group(name='sg1',
description='sg'),
self.security_group(name='sg2',
description='sg'),
self.security_group(name='sg3',
description='sg')
) as (sg1, sg2, sg3):
with self.security_group(name='sg1', description='sg') as sg1,\
self.security_group(name='sg2', description='sg') as sg2,\
self.security_group(name='sg3', description='sg') as sg3:
self._test_list_with_pagination_reverse(
'security-group', (sg1, sg2, sg3), ('name', 'asc'), 2, 2,
query_params='description=sg')
@ -1069,19 +1054,18 @@ class TestSecurityGroups(SecurityGroupDBTestCase):
def test_list_security_group_rules(self):
with self.security_group(name='sg') as sg:
security_group_id = sg['security_group']['id']
with contextlib.nested(self.security_group_rule(security_group_id,
direction='egress',
port_range_min=22,
port_range_max=22),
self.security_group_rule(security_group_id,
direction='egress',
port_range_min=23,
port_range_max=23),
self.security_group_rule(security_group_id,
direction='egress',
port_range_min=24,
port_range_max=24)
) as (sgr1, sgr2, sgr3):
with self.security_group_rule(security_group_id,
direction='egress',
port_range_min=22,
port_range_max=22) as sgr1,\
self.security_group_rule(security_group_id,
direction='egress',
port_range_min=23,
port_range_max=23) as sgr2,\
self.security_group_rule(security_group_id,
direction='egress',
port_range_min=24,
port_range_max=24) as sgr3:
# Delete default rules as they would fail the following
# assertion at the end.
@ -1096,19 +1080,18 @@ class TestSecurityGroups(SecurityGroupDBTestCase):
def test_list_security_group_rules_with_sort(self):
with self.security_group(name='sg') as sg:
security_group_id = sg['security_group']['id']
with contextlib.nested(self.security_group_rule(security_group_id,
direction='egress',
port_range_min=22,
port_range_max=22),
self.security_group_rule(security_group_id,
direction='egress',
port_range_min=23,
port_range_max=23),
self.security_group_rule(security_group_id,
direction='egress',
port_range_min=24,
port_range_max=24)
) as (sgr1, sgr2, sgr3):
with self.security_group_rule(security_group_id,
direction='egress',
port_range_min=22,
port_range_max=22) as sgr1,\
self.security_group_rule(security_group_id,
direction='egress',
port_range_min=23,
port_range_max=23) as sgr2,\
self.security_group_rule(security_group_id,
direction='egress',
port_range_min=24,
port_range_max=24) as sgr3:
# Delete default rules as they would fail the following
# assertion at the end.
@ -1124,19 +1107,18 @@ class TestSecurityGroups(SecurityGroupDBTestCase):
def test_list_security_group_rules_with_pagination(self):
with self.security_group(name='sg') as sg:
security_group_id = sg['security_group']['id']
with contextlib.nested(self.security_group_rule(security_group_id,
direction='egress',
port_range_min=22,
port_range_max=22),
self.security_group_rule(security_group_id,
direction='egress',
port_range_min=23,
port_range_max=23),
self.security_group_rule(security_group_id,
direction='egress',
port_range_min=24,
port_range_max=24)
) as (sgr1, sgr2, sgr3):
with self.security_group_rule(security_group_id,
direction='egress',
port_range_min=22,
port_range_max=22) as sgr1,\
self.security_group_rule(security_group_id,
direction='egress',
port_range_min=23,
port_range_max=23) as sgr2,\
self.security_group_rule(security_group_id,
direction='egress',
port_range_min=24,
port_range_max=24) as sgr3:
# Delete default rules as they would fail the following
# assertion at the end.
@ -1152,19 +1134,18 @@ class TestSecurityGroups(SecurityGroupDBTestCase):
def test_list_security_group_rules_with_pagination_reverse(self):
with self.security_group(name='sg') as sg:
security_group_id = sg['security_group']['id']
with contextlib.nested(self.security_group_rule(security_group_id,
direction='egress',
port_range_min=22,
port_range_max=22),
self.security_group_rule(security_group_id,
direction='egress',
port_range_min=23,
port_range_max=23),
self.security_group_rule(security_group_id,
direction='egress',
port_range_min=24,
port_range_max=24)
) as (sgr1, sgr2, sgr3):
with self.security_group_rule(security_group_id,
direction='egress',
port_range_min=22,
port_range_max=22) as sgr1,\
self.security_group_rule(security_group_id,
direction='egress',
port_range_min=23,
port_range_max=23) as sgr2,\
self.security_group_rule(security_group_id,
direction='egress',
port_range_min=24,
port_range_max=24) as sgr3:
self._test_list_with_pagination_reverse(
'security-group-rule', (sgr3, sgr2, sgr1),
('port_range_max', 'desc'), 2, 2,

View File

@ -14,8 +14,6 @@
# License for the specific language governing permissions and limitations
# under the License.
import contextlib
import mock
from oslo_config import cfg
@ -67,13 +65,12 @@ class TestSdnveNeutronAgent(base.BaseTestCase):
def start(self, interval=0):
self.f()
with contextlib.nested(
mock.patch('neutron.plugins.ibm.agent.sdnve_neutron_agent.'
'SdnveNeutronAgent.setup_integration_br',
return_value=mock.Mock()),
mock.patch('neutron.openstack.common.loopingcall.'
'FixedIntervalLoopingCall',
new=MockFixedIntervalLoopingCall)):
with mock.patch('neutron.plugins.ibm.agent.sdnve_neutron_agent.'
'SdnveNeutronAgent.setup_integration_br',
return_value=mock.Mock()),\
mock.patch('neutron.openstack.common.loopingcall.'
'FixedIntervalLoopingCall',
new=MockFixedIntervalLoopingCall):
self.agent = sdnve_neutron_agent.SdnveNeutronAgent(**kwargs)
def test_setup_physical_interfaces(self):

View File

@ -15,7 +15,6 @@
# under the License.
import contextlib
import mock
from neutron.extensions import portbindings
@ -71,13 +70,10 @@ class MockKeystoneClient(object):
class IBMPluginV2TestCase(test_plugin.NeutronDbPluginV2TestCase):
def setUp(self):
with contextlib.nested(
mock.patch('neutron.plugins.ibm.sdnve_api.'
'KeystoneClient',
new=MockKeystoneClient),
mock.patch('neutron.plugins.ibm.sdnve_api.'
'Client',
new=MockClient)):
with mock.patch('neutron.plugins.ibm.sdnve_api.' 'KeystoneClient',
new=MockKeystoneClient),\
mock.patch('neutron.plugins.ibm.sdnve_api.' 'Client',
new=MockClient):
super(IBMPluginV2TestCase, self).setUp(plugin=_plugin_name)
@ -114,13 +110,10 @@ class TestIBMPortBinding(IBMPluginV2TestCase,
class IBMPluginRouterTestCase(test_l3.L3NatDBIntTestCase):
def setUp(self):
with contextlib.nested(
mock.patch('neutron.plugins.ibm.sdnve_api.'
'KeystoneClient',
new=MockKeystoneClient),
mock.patch('neutron.plugins.ibm.sdnve_api.'
'Client',
new=MockClient)):
with mock.patch('neutron.plugins.ibm.sdnve_api.' 'KeystoneClient',
new=MockKeystoneClient),\
mock.patch('neutron.plugins.ibm.sdnve_api.' 'Client',
new=MockClient):
super(IBMPluginRouterTestCase, self).setUp(plugin=_plugin_name)
def test_floating_port_status_not_applicable(self):

View File

@ -12,7 +12,6 @@
# License for the specific language governing permissions and limitations
# under the License.
import contextlib
import os
import mock
@ -106,10 +105,10 @@ class TestLinuxBridgeAgent(base.BaseTestCase):
def test_treat_devices_removed_with_existed_device(self):
agent = self.agent
devices = [DEVICE_1]
with contextlib.nested(
mock.patch.object(agent.plugin_rpc, "update_device_down"),
mock.patch.object(agent.sg_agent, "remove_devices_filter")
) as (fn_udd, fn_rdf):
with mock.patch.object(agent.plugin_rpc,
"update_device_down") as fn_udd,\
mock.patch.object(agent.sg_agent,
"remove_devices_filter") as fn_rdf:
fn_udd.return_value = {'device': DEVICE_1,
'exists': True}
with mock.patch.object(linuxbridge_neutron_agent.LOG,
@ -123,10 +122,10 @@ class TestLinuxBridgeAgent(base.BaseTestCase):
def test_treat_devices_removed_with_not_existed_device(self):
agent = self.agent
devices = [DEVICE_1]
with contextlib.nested(
mock.patch.object(agent.plugin_rpc, "update_device_down"),
mock.patch.object(agent.sg_agent, "remove_devices_filter")
) as (fn_udd, fn_rdf):
with mock.patch.object(agent.plugin_rpc,
"update_device_down") as fn_udd,\
mock.patch.object(agent.sg_agent,
"remove_devices_filter") as fn_rdf:
fn_udd.return_value = {'device': DEVICE_1,
'exists': False}
with mock.patch.object(linuxbridge_neutron_agent.LOG,
@ -140,10 +139,10 @@ class TestLinuxBridgeAgent(base.BaseTestCase):
def test_treat_devices_removed_failed(self):
agent = self.agent
devices = [DEVICE_1]
with contextlib.nested(
mock.patch.object(agent.plugin_rpc, "update_device_down"),
mock.patch.object(agent.sg_agent, "remove_devices_filter")
) as (fn_udd, fn_rdf):
with mock.patch.object(agent.plugin_rpc,
"update_device_down") as fn_udd,\
mock.patch.object(agent.sg_agent,
"remove_devices_filter") as fn_rdf:
fn_udd.side_effect = Exception()
with mock.patch.object(linuxbridge_neutron_agent.LOG,
'debug') as log:
@ -387,11 +386,9 @@ class TestLinuxBridgeManager(base.BaseTestCase):
self.assertTrue(listdir_fn.called)
def test_get_interfaces_on_bridge(self):
with contextlib.nested(
mock.patch.object(utils, 'execute'),
mock.patch.object(os, 'listdir'),
mock.patch.object(ip_lib, 'device_exists', return_value=True)
) as (exec_fn, listdir_fn, dev_exists_fn):
with mock.patch.object(utils, 'execute'),\
mock.patch.object(os, 'listdir') as listdir_fn,\
mock.patch.object(ip_lib, 'device_exists', return_value=True):
listdir_fn.return_value = ["qbr1"]
self.assertEqual(self.lbm.get_interfaces_on_bridge("br0"),
["qbr1"])
@ -408,10 +405,8 @@ class TestLinuxBridgeManager(base.BaseTestCase):
self.assertEqual(self.lbm.get_tap_devices_count('br0'), 0)
def test_get_interface_by_ip(self):
with contextlib.nested(
mock.patch.object(ip_lib.IPWrapper, 'get_devices'),
mock.patch.object(ip_lib.IpAddrCommand, 'list')
) as (get_dev_fn, ip_list_fn):
with mock.patch.object(ip_lib.IPWrapper, 'get_devices') as get_dev_fn,\
mock.patch.object(ip_lib.IpAddrCommand, 'list') as ip_list_fn:
device = mock.Mock()
device.name = 'dev_name'
get_dev_fn.return_value = [device]
@ -420,10 +415,10 @@ class TestLinuxBridgeManager(base.BaseTestCase):
'dev_name')
def test_get_bridge_for_tap_device(self):
with contextlib.nested(
mock.patch.object(self.lbm, "get_all_neutron_bridges"),
mock.patch.object(self.lbm, "get_interfaces_on_bridge")
) as (get_all_qbr_fn, get_if_fn):
with mock.patch.object(self.lbm,
"get_all_neutron_bridges") as get_all_qbr_fn,\
mock.patch.object(self.lbm,
"get_interfaces_on_bridge") as get_if_fn:
get_all_qbr_fn.return_value = ["br-int", "br-ex"]
get_if_fn.return_value = ["tap1", "tap2", "tap3"]
self.assertEqual(self.lbm.get_bridge_for_tap_device("tap1"),
@ -440,10 +435,9 @@ class TestLinuxBridgeManager(base.BaseTestCase):
)
def test_get_interface_details(self):
with contextlib.nested(
mock.patch.object(ip_lib.IpAddrCommand, 'list'),
mock.patch.object(ip_lib.IpRouteCommand, 'get_gateway')
) as (list_fn, getgw_fn):
with mock.patch.object(ip_lib.IpAddrCommand, 'list') as list_fn,\
mock.patch.object(ip_lib.IpRouteCommand,
'get_gateway') as getgw_fn:
gwdict = dict(gateway='1.1.1.1')
getgw_fn.return_value = gwdict
ipdict = dict(cidr='1.1.1.1/24',
@ -459,10 +453,9 @@ class TestLinuxBridgeManager(base.BaseTestCase):
self.assertEqual(ret, (ipdict, gwdict))
def test_ensure_flat_bridge(self):
with contextlib.nested(
mock.patch.object(ip_lib.IpAddrCommand, 'list'),
mock.patch.object(ip_lib.IpRouteCommand, 'get_gateway')
) as (list_fn, getgw_fn):
with mock.patch.object(ip_lib.IpAddrCommand, 'list') as list_fn,\
mock.patch.object(ip_lib.IpRouteCommand,
'get_gateway') as getgw_fn:
gwdict = dict(gateway='1.1.1.1')
getgw_fn.return_value = gwdict
ipdict = dict(cidr='1.1.1.1/24',
@ -482,11 +475,10 @@ class TestLinuxBridgeManager(base.BaseTestCase):
ipdict, gwdict)
def test_ensure_vlan_bridge(self):
with contextlib.nested(
mock.patch.object(self.lbm, 'ensure_vlan'),
mock.patch.object(self.lbm, 'ensure_bridge'),
mock.patch.object(self.lbm, 'get_interface_details'),
) as (ens_vl_fn, ens, get_int_det_fn):
with mock.patch.object(self.lbm, 'ensure_vlan') as ens_vl_fn,\
mock.patch.object(self.lbm, 'ensure_bridge') as ens,\
mock.patch.object(self.lbm,
'get_interface_details') as get_int_det_fn:
ens_vl_fn.return_value = "eth0.1"
get_int_det_fn.return_value = (None, None)
self.assertEqual(self.lbm.ensure_vlan_bridge("123", "eth0", "1"),
@ -549,19 +541,17 @@ class TestLinuxBridgeManager(base.BaseTestCase):
scope='global',
ip_version=4,
dynamic=False)
with contextlib.nested(
mock.patch.object(ip_lib.IpAddrCommand, 'add'),
mock.patch.object(ip_lib.IpAddrCommand, 'delete')
) as (add_fn, del_fn):
with mock.patch.object(ip_lib.IpAddrCommand, 'add') as add_fn,\
mock.patch.object(ip_lib.IpAddrCommand, 'delete') as del_fn:
self.lbm.update_interface_ip_details("br0", "eth0",
[ipdict], None)
self.assertTrue(add_fn.called)
self.assertTrue(del_fn.called)
with contextlib.nested(
mock.patch.object(ip_lib.IpRouteCommand, 'add_gateway'),
mock.patch.object(ip_lib.IpRouteCommand, 'delete_gateway')
) as (addgw_fn, delgw_fn):
with mock.patch.object(ip_lib.IpRouteCommand,
'add_gateway') as addgw_fn,\
mock.patch.object(ip_lib.IpRouteCommand,
'delete_gateway') as delgw_fn:
self.lbm.update_interface_ip_details("br0", "eth0",
None, gwdict)
self.assertTrue(addgw_fn.called)
@ -578,14 +568,16 @@ class TestLinuxBridgeManager(base.BaseTestCase):
self.assertFalse(self.lbm._bridge_exists_and_ensure_up("br0"))
def test_ensure_bridge(self):
with contextlib.nested(
mock.patch.object(self.lbm, '_bridge_exists_and_ensure_up'),
mock.patch.object(utils, 'execute'),
mock.patch.object(self.lbm, 'update_interface_ip_details'),
mock.patch.object(self.lbm, 'interface_exists_on_bridge'),
mock.patch.object(self.lbm, 'is_device_on_bridge'),
mock.patch.object(self.lbm, 'get_bridge_for_tap_device'),
) as (de_fn, exec_fn, upd_fn, ie_fn, if_br_fn, get_if_br_fn):
with mock.patch.object(self.lbm,
'_bridge_exists_and_ensure_up') as de_fn,\
mock.patch.object(utils, 'execute') as exec_fn,\
mock.patch.object(self.lbm,
'update_interface_ip_details') as upd_fn,\
mock.patch.object(self.lbm,
'interface_exists_on_bridge') as ie_fn,\
mock.patch.object(self.lbm, 'is_device_on_bridge'),\
mock.patch.object(self.lbm,
'get_bridge_for_tap_device') as get_if_br_fn:
de_fn.return_value = False
exec_fn.return_value = False
self.assertEqual(self.lbm.ensure_bridge("br0", None), "br0")
@ -652,11 +644,10 @@ class TestLinuxBridgeManager(base.BaseTestCase):
)
de_fn.return_value = True
with contextlib.nested(
mock.patch.object(self.lbm, "ensure_local_bridge"),
mock.patch.object(utils, "execute"),
mock.patch.object(self.lbm, "get_bridge_for_tap_device")
) as (en_fn, exec_fn, get_br):
with mock.patch.object(self.lbm, "ensure_local_bridge") as en_fn,\
mock.patch.object(utils, "execute") as exec_fn,\
mock.patch.object(self.lbm,
"get_bridge_for_tap_device") as get_br:
exec_fn.return_value = False
get_br.return_value = True
self.assertTrue(self.lbm.add_tap_interface("123",
@ -672,11 +663,12 @@ class TestLinuxBridgeManager(base.BaseTestCase):
"physnet1", None,
"tap1"))
with contextlib.nested(
mock.patch.object(self.lbm, "ensure_physical_in_bridge"),
mock.patch.object(self.lbm, "ensure_tap_mtu"),
mock.patch.object(self.lbm, "get_bridge_for_tap_device")
) as (ens_fn, en_mtu_fn, get_br):
with mock.patch.object(self.lbm,
"ensure_physical_in_bridge") as ens_fn,\
mock.patch.object(self.lbm,
"ensure_tap_mtu") as en_mtu_fn,\
mock.patch.object(self.lbm,
"get_bridge_for_tap_device") as get_br:
ens_fn.return_value = False
self.assertFalse(self.lbm.add_tap_interface("123",
p_const.TYPE_VLAN,
@ -697,16 +689,16 @@ class TestLinuxBridgeManager(base.BaseTestCase):
"1", "tap234")
def test_delete_vlan_bridge(self):
with contextlib.nested(
mock.patch.object(ip_lib, "device_exists"),
mock.patch.object(self.lbm, "get_interfaces_on_bridge"),
mock.patch.object(self.lbm, "remove_interface"),
mock.patch.object(self.lbm, "get_interface_details"),
mock.patch.object(self.lbm, "update_interface_ip_details"),
mock.patch.object(self.lbm, "delete_vxlan"),
mock.patch.object(utils, "execute")
) as (de_fn, getif_fn, remif_fn, if_det_fn,
updif_fn, del_vxlan, exec_fn):
with mock.patch.object(ip_lib, "device_exists") as de_fn,\
mock.patch.object(self.lbm,
"get_interfaces_on_bridge") as getif_fn,\
mock.patch.object(self.lbm, "remove_interface"),\
mock.patch.object(self.lbm,
"get_interface_details") as if_det_fn,\
mock.patch.object(self.lbm,
"update_interface_ip_details") as updif_fn,\
mock.patch.object(self.lbm, "delete_vxlan") as del_vxlan,\
mock.patch.object(utils, "execute") as exec_fn:
de_fn.return_value = False
self.lbm.delete_vlan_bridge("br0")
self.assertFalse(getif_fn.called)
@ -720,16 +712,16 @@ class TestLinuxBridgeManager(base.BaseTestCase):
del_vxlan.assert_called_with("vxlan-1002")
def test_delete_vlan_bridge_with_ip(self):
with contextlib.nested(
mock.patch.object(ip_lib, "device_exists"),
mock.patch.object(self.lbm, "get_interfaces_on_bridge"),
mock.patch.object(self.lbm, "remove_interface"),
mock.patch.object(self.lbm, "get_interface_details"),
mock.patch.object(self.lbm, "update_interface_ip_details"),
mock.patch.object(self.lbm, "delete_vlan"),
mock.patch.object(utils, "execute")
) as (de_fn, getif_fn, remif_fn, if_det_fn,
updif_fn, del_vlan, exec_fn):
with mock.patch.object(ip_lib, "device_exists") as de_fn,\
mock.patch.object(self.lbm,
"get_interfaces_on_bridge") as getif_fn,\
mock.patch.object(self.lbm, "remove_interface"),\
mock.patch.object(self.lbm,
"get_interface_details") as if_det_fn,\
mock.patch.object(self.lbm,
"update_interface_ip_details") as updif_fn,\
mock.patch.object(self.lbm, "delete_vlan") as del_vlan,\
mock.patch.object(utils, "execute") as exec_fn:
de_fn.return_value = True
getif_fn.return_value = ["eth0", "eth1.1"]
if_det_fn.return_value = ("ips", "gateway")
@ -739,16 +731,16 @@ class TestLinuxBridgeManager(base.BaseTestCase):
self.assertFalse(del_vlan.called)
def test_delete_vlan_bridge_no_ip(self):
with contextlib.nested(
mock.patch.object(ip_lib, "device_exists"),
mock.patch.object(self.lbm, "get_interfaces_on_bridge"),
mock.patch.object(self.lbm, "remove_interface"),
mock.patch.object(self.lbm, "get_interface_details"),
mock.patch.object(self.lbm, "update_interface_ip_details"),
mock.patch.object(self.lbm, "delete_vlan"),
mock.patch.object(utils, "execute")
) as (de_fn, getif_fn, remif_fn, if_det_fn,
updif_fn, del_vlan, exec_fn):
with mock.patch.object(ip_lib, "device_exists") as de_fn,\
mock.patch.object(self.lbm,
"get_interfaces_on_bridge") as getif_fn,\
mock.patch.object(self.lbm, "remove_interface"),\
mock.patch.object(self.lbm,
"get_interface_details") as if_det_fn,\
mock.patch.object(self.lbm,
"update_interface_ip_details") as updif_fn,\
mock.patch.object(self.lbm, "delete_vlan") as del_vlan,\
mock.patch.object(utils, "execute") as exec_fn:
de_fn.return_value = True
getif_fn.return_value = ["eth0", "eth1.1"]
exec_fn.return_value = False
@ -764,13 +756,12 @@ class TestLinuxBridgeManager(base.BaseTestCase):
lbm = linuxbridge_neutron_agent.LinuxBridgeManager(
interface_mappings)
with contextlib.nested(
mock.patch.object(ip_lib, "device_exists"),
mock.patch.object(lbm, "get_interfaces_on_bridge"),
mock.patch.object(lbm, "remove_interface"),
mock.patch.object(lbm, "delete_vxlan"),
mock.patch.object(utils, "execute")
) as (de_fn, getif_fn, remif_fn, del_vxlan, exec_fn):
with mock.patch.object(ip_lib, "device_exists") as de_fn,\
mock.patch.object(lbm,
"get_interfaces_on_bridge") as getif_fn,\
mock.patch.object(lbm, "remove_interface"),\
mock.patch.object(lbm, "delete_vxlan") as del_vxlan,\
mock.patch.object(utils, "execute") as exec_fn:
de_fn.return_value = False
lbm.delete_vlan_bridge("br0")
self.assertFalse(getif_fn.called)
@ -787,20 +778,18 @@ class TestLinuxBridgeManager(base.BaseTestCase):
def tap_count_side_effect(*args):
return 0 if args[0] == 'brqnet1' else 1
with contextlib.nested(
mock.patch.object(self.lbm, "delete_vlan_bridge"),
mock.patch.object(self.lbm, "get_tap_devices_count",
side_effect=tap_count_side_effect),
) as (del_br_fn, count_tap_fn):
with mock.patch.object(self.lbm, "delete_vlan_bridge") as del_br_fn,\
mock.patch.object(self.lbm,
"get_tap_devices_count",
side_effect=tap_count_side_effect):
self.lbm.remove_empty_bridges()
del_br_fn.assert_called_once_with('brqnet1')
def test_remove_interface(self):
with contextlib.nested(
mock.patch.object(ip_lib, "device_exists"),
mock.patch.object(self.lbm, "is_device_on_bridge"),
mock.patch.object(utils, "execute")
) as (de_fn, isdev_fn, exec_fn):
with mock.patch.object(ip_lib, "device_exists") as de_fn,\
mock.patch.object(self.lbm,
"is_device_on_bridge") as isdev_fn,\
mock.patch.object(utils, "execute") as exec_fn:
de_fn.return_value = False
self.assertFalse(self.lbm.remove_interface("br0", "eth0"))
self.assertFalse(isdev_fn.called)
@ -817,10 +806,8 @@ class TestLinuxBridgeManager(base.BaseTestCase):
self.assertTrue(self.lbm.remove_interface("br0", "eth0"))
def test_delete_vlan(self):
with contextlib.nested(
mock.patch.object(ip_lib, "device_exists"),
mock.patch.object(utils, "execute")
) as (de_fn, exec_fn):
with mock.patch.object(ip_lib, "device_exists") as de_fn,\
mock.patch.object(utils, "execute") as exec_fn:
de_fn.return_value = False
self.lbm.delete_vlan("eth1.1")
self.assertFalse(exec_fn.called)
@ -832,11 +819,12 @@ class TestLinuxBridgeManager(base.BaseTestCase):
def _check_vxlan_support(self, expected, vxlan_ucast_supported,
vxlan_mcast_supported):
with contextlib.nested(
mock.patch.object(self.lbm, 'vxlan_ucast_supported',
return_value=vxlan_ucast_supported),
mock.patch.object(self.lbm, 'vxlan_mcast_supported',
return_value=vxlan_mcast_supported)):
with mock.patch.object(self.lbm,
'vxlan_ucast_supported',
return_value=vxlan_ucast_supported),\
mock.patch.object(self.lbm,
'vxlan_mcast_supported',
return_value=vxlan_mcast_supported):
if expected == lconst.VXLAN_NONE:
self.assertRaises(exceptions.VxlanNetworkUnsupported,
self.lbm.check_vxlan_support)
@ -863,17 +851,20 @@ class TestLinuxBridgeManager(base.BaseTestCase):
def _check_vxlan_ucast_supported(
self, expected, l2_population, iproute_arg_supported, fdb_append):
cfg.CONF.set_override('l2_population', l2_population, 'VXLAN')
with contextlib.nested(
with mock.patch.object(ip_lib, 'device_exists', return_value=False),\
mock.patch.object(self.lbm,
'delete_vxlan',
return_value=None),\
mock.patch.object(self.lbm,
'ensure_vxlan',
return_value=None),\
mock.patch.object(
ip_lib, 'device_exists', return_value=False),
mock.patch.object(self.lbm, 'delete_vxlan', return_value=None),
mock.patch.object(self.lbm, 'ensure_vxlan', return_value=None),
mock.patch.object(
utils, 'execute',
side_effect=None if fdb_append else RuntimeError()),
mock.patch.object(
ip_lib, 'iproute_arg_supported',
return_value=iproute_arg_supported)):
utils,
'execute',
side_effect=None if fdb_append else RuntimeError()),\
mock.patch.object(ip_lib,
'iproute_arg_supported',
return_value=iproute_arg_supported):
self.assertEqual(expected, self.lbm.vxlan_ucast_supported())
def test_vxlan_ucast_supported(self):
@ -940,10 +931,10 @@ class TestLinuxBridgeRpcCallbacks(base.BaseTestCase):
)
def test_network_delete(self):
with contextlib.nested(
mock.patch.object(self.lb_rpc.agent.br_mgr, "get_bridge_name"),
mock.patch.object(self.lb_rpc.agent.br_mgr, "delete_vlan_bridge")
) as (get_br_fn, del_fn):
with mock.patch.object(self.lb_rpc.agent.br_mgr,
"get_bridge_name") as get_br_fn,\
mock.patch.object(self.lb_rpc.agent.br_mgr,
"delete_vlan_bridge") as del_fn:
get_br_fn.return_value = "br0"
self.lb_rpc.network_delete("anycontext", network_id="123")
get_br_fn.assert_called_with("123")

View File

@ -13,7 +13,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import contextlib
import mock
from six import moves
import testtools
@ -237,10 +236,10 @@ class TunnelRpcCallbackTestMixin(object):
self.driver = self.DRIVER_CLASS()
def _test_tunnel_sync(self, kwargs, delete_tunnel=False):
with contextlib.nested(
mock.patch.object(self.notifier, 'tunnel_update'),
mock.patch.object(self.notifier, 'tunnel_delete')
) as (tunnel_update, tunnel_delete):
with mock.patch.object(self.notifier,
'tunnel_update') as tunnel_update,\
mock.patch.object(self.notifier,
'tunnel_delete') as tunnel_delete:
details = self.callbacks.tunnel_sync('fake_context', **kwargs)
tunnels = details['tunnels']
for tunnel in tunnels:
@ -253,10 +252,10 @@ class TunnelRpcCallbackTestMixin(object):
self.assertFalse(tunnel_delete.called)
def _test_tunnel_sync_raises(self, kwargs):
with contextlib.nested(
mock.patch.object(self.notifier, 'tunnel_update'),
mock.patch.object(self.notifier, 'tunnel_delete')
) as (tunnel_update, tunnel_delete):
with mock.patch.object(self.notifier,
'tunnel_update') as tunnel_update,\
mock.patch.object(self.notifier,
'tunnel_delete') as tunnel_delete:
self.assertRaises(exc.InvalidInput,
self.callbacks.tunnel_sync,
'fake_context', **kwargs)

View File

@ -13,7 +13,6 @@
# License for the specific language governing permissions and limitations
# under the License.
import contextlib
import testtools
import mock
@ -791,13 +790,11 @@ class TestL2PopulationRpcTestCase(test_plugin.Ml2PluginV2TestCase):
l2pop_mech = l2pop_mech_driver.L2populationMechanismDriver()
l2pop_mech.L2PopulationAgentNotify = mock.Mock()
l2pop_mech.rpc_ctx = mock.Mock()
with contextlib.nested(
mock.patch.object(l2pop_mech,
'_update_port_down',
return_value=None),
with mock.patch.object(l2pop_mech,
'_update_port_down',
return_value=None) as upd_port_down,\
mock.patch.object(l2pop_mech.L2PopulationAgentNotify,
'remove_fdb_entries')) as (upd_port_down,
rem_fdb_entries):
'remove_fdb_entries'):
l2pop_mech.delete_port_postcommit(mock.Mock())
self.assertTrue(upd_port_down.called)
@ -836,16 +833,15 @@ class TestL2PopulationMechDriver(base.BaseTestCase):
def agent_ip_side_effect(agent):
return agent_ips[agent]
with contextlib.nested(
mock.patch.object(l2pop_db.L2populationDbMixin,
'get_agent_ip',
side_effect=agent_ip_side_effect),
with mock.patch.object(l2pop_db.L2populationDbMixin,
'get_agent_ip',
side_effect=agent_ip_side_effect),\
mock.patch.object(l2pop_db.L2populationDbMixin,
'get_nondvr_active_network_ports',
new=fdb_network_ports_query),
new=fdb_network_ports_query),\
mock.patch.object(l2pop_db.L2populationDbMixin,
'get_dvr_active_network_ports',
new=tunnel_network_ports_query)):
new=tunnel_network_ports_query):
session = mock.Mock()
agent = mock.Mock()
agent.host = HOST

View File

@ -10,7 +10,6 @@
# License for the specific language governing permissions and limitations
# under the License.
import contextlib
import mock
from neutron import context
@ -86,13 +85,11 @@ class ExtensionDriverTestCase(test_plugin.Ml2PluginV2TestCase):
self.assertEqual('Test_Port_Extension_Update_update', val)
def test_extend_network_dict(self):
with contextlib.nested(
mock.patch.object(ext_test.TestExtensionDriver,
'process_update_network'),
mock.patch.object(ext_test.TestExtensionDriver,
'extend_network_dict'),
self.network()
) as (ext_update_net, ext_net_dict, network):
with mock.patch.object(ext_test.TestExtensionDriver,
'process_update_network') as ext_update_net,\
mock.patch.object(ext_test.TestExtensionDriver,
'extend_network_dict') as ext_net_dict,\
self.network() as network:
net_id = network['network']['id']
net_data = {'network': {'id': net_id}}
self._plugin.update_network(self._ctxt, net_id, net_data)
@ -100,13 +97,11 @@ class ExtensionDriverTestCase(test_plugin.Ml2PluginV2TestCase):
self.assertTrue(ext_net_dict.called)
def test_extend_subnet_dict(self):
with contextlib.nested(
mock.patch.object(ext_test.TestExtensionDriver,
'process_update_subnet'),
mock.patch.object(ext_test.TestExtensionDriver,
'extend_subnet_dict'),
self.subnet()
) as (ext_update_subnet, ext_subnet_dict, subnet):
with mock.patch.object(ext_test.TestExtensionDriver,
'process_update_subnet') as ext_update_subnet,\
mock.patch.object(ext_test.TestExtensionDriver,
'extend_subnet_dict') as ext_subnet_dict,\
self.subnet() as subnet:
subnet_id = subnet['subnet']['id']
subnet_data = {'subnet': {'id': subnet_id}}
self._plugin.update_subnet(self._ctxt, subnet_id, subnet_data)
@ -114,13 +109,11 @@ class ExtensionDriverTestCase(test_plugin.Ml2PluginV2TestCase):
self.assertTrue(ext_subnet_dict.called)
def test_extend_port_dict(self):
with contextlib.nested(
mock.patch.object(ext_test.TestExtensionDriver,
'process_update_port'),
mock.patch.object(ext_test.TestExtensionDriver,
'extend_port_dict'),
self.port()
) as (ext_update_port, ext_port_dict, port):
with mock.patch.object(ext_test.TestExtensionDriver,
'process_update_port') as ext_update_port,\
mock.patch.object(ext_test.TestExtensionDriver,
'extend_port_dict') as ext_port_dict,\
self.port() as port:
port_id = port['port']['id']
port_data = {'port': {'id': port_id}}
self._plugin.update_port(self._ctxt, port_id, port_data)

View File

@ -13,7 +13,6 @@
# License for the specific language governing permissions and limitations
# under the License.
import contextlib
import functools
import mock
import six
@ -461,13 +460,11 @@ class TestMl2PortsV2(test_plugin.TestPortsV2, Ml2PluginV2TestCase):
def test_create_ports_bulk_with_sec_grp(self):
ctx = context.get_admin_context()
plugin = manager.NeutronManager.get_plugin()
with contextlib.nested(
self.network(),
mock.patch.object(plugin.notifier,
'security_groups_member_updated'),
mock.patch.object(plugin.notifier,
'security_groups_provider_updated')
) as (net, m_upd, p_upd):
with self.network() as net,\
mock.patch.object(plugin.notifier,
'security_groups_member_updated') as m_upd,\
mock.patch.object(plugin.notifier,
'security_groups_provider_updated') as p_upd:
res = self._create_port_bulk(self.fmt, 3, net['network']['id'],
'test', True, context=ctx)
@ -479,13 +476,11 @@ class TestMl2PortsV2(test_plugin.TestPortsV2, Ml2PluginV2TestCase):
def test_create_ports_bulk_with_sec_grp_member_provider_update(self):
ctx = context.get_admin_context()
plugin = manager.NeutronManager.get_plugin()
with contextlib.nested(
self.network(),
mock.patch.object(plugin.notifier,
'security_groups_member_updated'),
mock.patch.object(plugin.notifier,
'security_groups_provider_updated')
) as (net, m_upd, p_upd):
with self.network() as net,\
mock.patch.object(plugin.notifier,
'security_groups_member_updated') as m_upd,\
mock.patch.object(plugin.notifier,
'security_groups_provider_updated') as p_upd:
net_id = net['network']['id']
data = [{
@ -520,14 +515,16 @@ class TestMl2PortsV2(test_plugin.TestPortsV2, Ml2PluginV2TestCase):
fake_prefix = '2001:db8::/64'
fake_gateway = 'fe80::1'
with self.network() as net:
with contextlib.nested(
self.subnet(net, gateway_ip=fake_gateway,
cidr=fake_prefix, ip_version=6),
mock.patch.object(
plugin.notifier, 'security_groups_member_updated'),
mock.patch.object(
plugin.notifier, 'security_groups_provider_updated')
) as (snet_v6, m_upd, p_upd):
with self.subnet(net,
gateway_ip=fake_gateway,
cidr=fake_prefix,
ip_version=6) as snet_v6,\
mock.patch.object(
plugin.notifier,
'security_groups_member_updated') as m_upd,\
mock.patch.object(
plugin.notifier,
'security_groups_provider_updated') as p_upd:
net_id = net['network']['id']
data = [{
@ -547,11 +544,11 @@ class TestMl2PortsV2(test_plugin.TestPortsV2, Ml2PluginV2TestCase):
plugin = manager.NeutronManager.get_plugin()
l3plugin = manager.NeutronManager.get_service_plugins().get(
p_const.L3_ROUTER_NAT)
with contextlib.nested(
self.port(),
mock.patch.object(l3plugin, 'disassociate_floatingips'),
mock.patch.object(registry, 'notify')
) as (port, disassociate_floatingips, notify):
with self.port() as port,\
mock.patch.object(
l3plugin,
'disassociate_floatingips') as disassociate_floatingips,\
mock.patch.object(registry, 'notify') as notify:
port_id = port['port']['id']
plugin.delete_port(ctx, port_id)
@ -662,18 +659,18 @@ class TestMl2DvrPortsV2(TestMl2PortsV2):
if floating_ip:
fip_set.add(ns_to_delete['router_id'])
with contextlib.nested(
mock.patch.object(manager.NeutronManager,
'get_service_plugins',
return_value=self.service_plugins),
self.port(device_owner=device_owner),
mock.patch.object(registry, 'notify'),
mock.patch.object(self.l3plugin, 'disassociate_floatingips',
return_value=fip_set),
mock.patch.object(self.l3plugin, 'dvr_deletens_if_no_port',
return_value=[ns_to_delete]),
) as (get_service_plugin, port, notify, disassociate_floatingips,
dvr_delns_ifno_port):
with mock.patch.object(manager.NeutronManager,
'get_service_plugins',
return_value=self.service_plugins),\
self.port(device_owner=device_owner) as port,\
mock.patch.object(registry, 'notify') as notify,\
mock.patch.object(self.l3plugin,
'disassociate_floatingips',
return_value=fip_set),\
mock.patch.object(
self.l3plugin,
'dvr_deletens_if_no_port',
return_value=[ns_to_delete]) as dvr_delns_ifno_port:
port_id = port['port']['id']
self.plugin.delete_port(self.context, port_id)
@ -790,12 +787,11 @@ class TestMl2PortBinding(Ml2PluginV2TestCase,
plugin, self.context, port['port'],
plugin.get_network(self.context, port['port']['network_id']),
binding, None)
with contextlib.nested(
mock.patch('neutron.plugins.ml2.plugin.'
'db.get_locked_port_and_binding',
return_value=(None, None)),
mock.patch('neutron.plugins.ml2.plugin.Ml2Plugin._make_port_dict')
) as (glpab_mock, mpd_mock):
with mock.patch(
'neutron.plugins.ml2.plugin.' 'db.get_locked_port_and_binding',
return_value=(None, None)) as glpab_mock,\
mock.patch('neutron.plugins.ml2.plugin.Ml2Plugin.'
'_make_port_dict') as mpd_mock:
plugin._bind_port_if_needed(mech_context)
# called during deletion to get port
self.assertTrue(glpab_mock.mock_calls)
@ -1489,10 +1485,9 @@ class TestMl2PluginCreateUpdateDeletePort(base.BaseTestCase):
return plugin
def test_create_port_rpc_outside_transaction(self):
with contextlib.nested(
mock.patch.object(ml2_plugin.Ml2Plugin, '__init__'),
mock.patch.object(base_plugin.NeutronDbPluginV2, 'create_port'),
) as (init, super_create_port):
with mock.patch.object(ml2_plugin.Ml2Plugin, '__init__') as init,\
mock.patch.object(base_plugin.NeutronDbPluginV2,
'create_port'):
init.return_value = None
new_host_port = mock.Mock()
@ -1505,10 +1500,9 @@ class TestMl2PluginCreateUpdateDeletePort(base.BaseTestCase):
plugin, **kwargs)
def test_update_port_rpc_outside_transaction(self):
with contextlib.nested(
mock.patch.object(ml2_plugin.Ml2Plugin, '__init__'),
mock.patch.object(base_plugin.NeutronDbPluginV2, 'update_port'),
) as (init, super_update_port):
with mock.patch.object(ml2_plugin.Ml2Plugin, '__init__') as init,\
mock.patch.object(base_plugin.NeutronDbPluginV2,
'update_port'):
init.return_value = None
new_host_port = mock.Mock()
plugin = self._create_plugin_for_create_update_port(new_host_port)
@ -1531,13 +1525,12 @@ class TestMl2PluginCreateUpdateDeletePort(base.BaseTestCase):
'router', constants.L3_AGENT_SCHEDULER_EXT_ALIAS,
constants.L3_DISTRIBUTED_EXT_ALIAS
]
with contextlib.nested(
mock.patch.object(ml2_plugin.Ml2Plugin, '__init__',
return_value=None),
mock.patch.object(manager.NeutronManager,
'get_service_plugins',
return_value={'L3_ROUTER_NAT': l3plugin}),
):
with mock.patch.object(ml2_plugin.Ml2Plugin,
'__init__',
return_value=None),\
mock.patch.object(manager.NeutronManager,
'get_service_plugins',
return_value={'L3_ROUTER_NAT': l3plugin}):
plugin = self._create_plugin_for_create_update_port(mock.Mock())
# deleting the port will call registry.notify, which will
# run the transaction balancing function defined in this test

View File

@ -18,7 +18,6 @@ Unit Tests for ml2 rpc
"""
import collections
import contextlib
import mock
from oslo_config import cfg
@ -202,12 +201,8 @@ class RpcApiTestCase(base.BaseTestCase):
expected_version = kwargs.pop('version', None)
fanout = kwargs.pop('fanout', False)
with contextlib.nested(
mock.patch.object(rpcapi.client, rpc_method),
mock.patch.object(rpcapi.client, 'prepare'),
) as (
rpc_mock, prepare_mock
):
with mock.patch.object(rpcapi.client, rpc_method) as rpc_mock,\
mock.patch.object(rpcapi.client, 'prepare') as prepare_mock:
prepare_mock.return_value = rpcapi.client
rpc_mock.return_value = expected_retval
retval = getattr(rpcapi, method)(ctxt, **kwargs)

View File

@ -14,7 +14,6 @@
# License for the specific language governing permissions and limitations
# under the License.
import contextlib
import math
import mock
@ -110,12 +109,11 @@ class TestMl2SecurityGroups(Ml2SecurityGroupsTestCase,
max_ports_per_query = 5
ports_to_query = 73
for max_ports_per_query in (1, 2, 5, 7, 9, 31):
with contextlib.nested(
mock.patch('neutron.plugins.ml2.db.MAX_PORTS_PER_QUERY',
new=max_ports_per_query),
mock.patch('neutron.plugins.ml2.db.get_sg_ids_grouped_by_port',
return_value={}),
) as (max_mock, get_mock):
with mock.patch('neutron.plugins.ml2.db.MAX_PORTS_PER_QUERY',
new=max_ports_per_query),\
mock.patch(
'neutron.plugins.ml2.db.get_sg_ids_grouped_by_port',
return_value={}) as get_mock:
plugin.get_ports_from_devices(self.ctx,
['%s%s' % (const.TAP_DEVICE_PREFIX, i)
for i in range(ports_to_query)])
@ -139,10 +137,8 @@ class TestMl2SecurityGroups(Ml2SecurityGroupsTestCase,
plugin = manager.NeutronManager.get_plugin()
# when full UUIDs are provided, the _or statement should only
# have one matching 'IN' critiera for all of the IDs
with contextlib.nested(
mock.patch('neutron.plugins.ml2.db.or_'),
mock.patch('sqlalchemy.orm.Session.query')
) as (or_mock, qmock):
with mock.patch('neutron.plugins.ml2.db.or_') as or_mock,\
mock.patch('sqlalchemy.orm.Session.query') as qmock:
fmock = qmock.return_value.outerjoin.return_value.filter
# return no ports to exit the method early since we are mocking
# the query

View File

@ -12,7 +12,6 @@
# License for the specific language governing permissions and limitations
# under the License.
import contextlib
import time
import mock
@ -37,10 +36,8 @@ class TestOneConvergenceAgentBase(base.BaseTestCase):
cfg.CONF.set_default('firewall_driver',
'neutron.agent.firewall.NoopFirewallDriver',
group='SECURITYGROUP')
with contextlib.nested(
mock.patch('neutron.openstack.common.loopingcall.'
'FixedIntervalLoopingCall'),
) as (loopingcall):
with mock.patch('neutron.openstack.common.loopingcall.'
'FixedIntervalLoopingCall') as loopingcall:
kwargs = {'integ_br': 'integration_bridge',
'polling_interval': 5}
context = mock.Mock()
@ -56,10 +53,10 @@ class TestOneConvergenceAgentBase(base.BaseTestCase):
class TestOneConvergenceAgentCallback(TestOneConvergenceAgentBase):
def test_port_update(self):
with contextlib.nested(
mock.patch.object(ovs_lib.OVSBridge, 'get_vif_port_by_id'),
mock.patch.object(self.sg_agent, 'refresh_firewall')
) as (get_vif_port_by_id, refresh_firewall):
with mock.patch.object(ovs_lib.OVSBridge,
'get_vif_port_by_id') as get_vif_port_by_id,\
mock.patch.object(self.sg_agent,
'refresh_firewall') as refresh_firewall:
context = mock.Mock()
vifport = ovs_lib.VifPort('port1', '1', 'id-1', 'mac-1',
self.agent.int_br)
@ -129,13 +126,17 @@ class TestNVSDAgent(TestOneConvergenceAgentBase):
[] for _i in moves.range(DAEMON_LOOP_COUNT -
len(self.vif_ports_scenario)))
with contextlib.nested(
mock.patch.object(time, 'sleep', side_effect=sleep_mock),
mock.patch.object(ovs_lib.OVSBridge, 'get_vif_port_set'),
mock.patch.object(self.agent.sg_agent, 'prepare_devices_filter'),
mock.patch.object(self.agent.sg_agent, 'remove_devices_filter')
) as (sleep, get_vif_port_set, prepare_devices_filter,
remove_devices_filter):
with mock.patch.object(time,
'sleep',
side_effect=sleep_mock) as sleep,\
mock.patch.object(ovs_lib.OVSBridge,
'get_vif_port_set') as get_vif_port_set,\
mock.patch.object(
self.agent.sg_agent,
'prepare_devices_filter') as prepare_devices_filter,\
mock.patch.object(
self.agent.sg_agent,
'remove_devices_filter') as remove_devices_filter:
get_vif_port_set.side_effect = self.vif_ports_scenario
with testtools.ExpectedException(RuntimeError):
@ -158,11 +159,11 @@ class TestNVSDAgent(TestOneConvergenceAgentBase):
class TestOneConvergenceAgentMain(base.BaseTestCase):
def test_main(self):
with contextlib.nested(
mock.patch.object(nvsd_neutron_agent, 'NVSDNeutronAgent'),
mock.patch.object(nvsd_neutron_agent, 'common_config'),
mock.patch.object(nvsd_neutron_agent, 'config')
) as (agent, common_config, config):
with mock.patch.object(nvsd_neutron_agent,
'NVSDNeutronAgent') as agent,\
mock.patch.object(nvsd_neutron_agent,
'common_config') as common_config,\
mock.patch.object(nvsd_neutron_agent, 'config') as config:
config.AGENT.integration_bridge = 'br-int-dummy'
config.AGENT.polling_interval = 5

View File

@ -15,7 +15,6 @@
"""Test Library for OneConvergencePlugin."""
import contextlib
import uuid
import mock
@ -79,7 +78,7 @@ class TestOneConvergencePluginPortsV2(test_plugin.TestPortsV2,
def test_ports_vif_details(self):
cfg.CONF.set_default('allow_overlapping_ips', True)
plugin = manager.NeutronManager.get_plugin()
with contextlib.nested(self.port(), self.port()) as (port1, port2):
with self.port(), self.port():
ctx = context.get_admin_context()
ports = plugin.get_ports(ctx)
self.assertEqual(len(ports), 2)

View File

@ -13,7 +13,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import contextlib
import datetime
import mock
@ -272,8 +271,7 @@ class OvsAgentSchedulerTestCase(OvsAgentSchedulerTestCaseBase):
def test_network_auto_schedule_with_disabled(self):
cfg.CONF.set_override('allow_overlapping_ips', True)
with contextlib.nested(self.subnet(),
self.subnet()):
with self.subnet(), self.subnet():
dhcp_rpc_cb = dhcp_rpc.DhcpRpcCallback()
self._register_agent_states()
hosta_id = self._get_agent_id(constants.AGENT_TYPE_DHCP,
@ -293,8 +291,7 @@ class OvsAgentSchedulerTestCase(OvsAgentSchedulerTestCaseBase):
def test_network_auto_schedule_with_no_dhcp(self):
cfg.CONF.set_override('allow_overlapping_ips', True)
with contextlib.nested(self.subnet(enable_dhcp=False),
self.subnet(enable_dhcp=False)):
with self.subnet(enable_dhcp=False), self.subnet(enable_dhcp=False):
dhcp_rpc_cb = dhcp_rpc.DhcpRpcCallback()
self._register_agent_states()
hosta_id = self._get_agent_id(constants.AGENT_TYPE_DHCP,
@ -314,8 +311,7 @@ class OvsAgentSchedulerTestCase(OvsAgentSchedulerTestCaseBase):
def test_network_auto_schedule_with_multiple_agents(self):
cfg.CONF.set_override('dhcp_agents_per_network', 2)
cfg.CONF.set_override('allow_overlapping_ips', True)
with contextlib.nested(self.subnet(),
self.subnet()):
with self.subnet(), self.subnet():
dhcp_rpc_cb = dhcp_rpc.DhcpRpcCallback()
self._register_agent_states()
hosta_id = self._get_agent_id(constants.AGENT_TYPE_DHCP,
@ -345,8 +341,7 @@ class OvsAgentSchedulerTestCase(OvsAgentSchedulerTestCaseBase):
def test_network_auto_schedule_with_hosted(self):
# one agent hosts all the networks, other hosts none
cfg.CONF.set_override('allow_overlapping_ips', True)
with contextlib.nested(self.subnet(),
self.subnet()) as (sub1, sub2):
with self.subnet() as sub1, self.subnet():
dhcp_rpc_cb = dhcp_rpc.DhcpRpcCallback()
self._register_agent_states()
dhcp_rpc_cb.get_active_networks(self.adminContext, host=DHCP_HOSTA)
@ -474,10 +469,8 @@ class OvsAgentSchedulerTestCase(OvsAgentSchedulerTestCaseBase):
is_eligible_agent = ('neutron.db.agentschedulers_db.'
'AgentSchedulerDbMixin.is_eligible_agent')
dhcp_mixin = agentschedulers_db.DhcpAgentSchedulerDbMixin()
with contextlib.nested(
mock.patch(agent_startup),
mock.patch(is_eligible_agent)
) as (startup, elig):
with mock.patch(agent_startup) as startup,\
mock.patch(is_eligible_agent) as elig:
tests = [(True, True),
(True, False),
(False, True),
@ -698,7 +691,7 @@ class OvsAgentSchedulerTestCase(OvsAgentSchedulerTestCaseBase):
service_constants.L3_ROUTER_NAT)
l3_rpc_cb = l3_rpc.L3RpcCallback()
self._register_agent_states()
with contextlib.nested(self.router(), self.router()) as (r1, r2):
with self.router() as r1, self.router() as r2:
# schedule the routers to host A
l3_rpc_cb.sync_routers(self.adminContext, host=L3_HOSTA)
@ -823,8 +816,7 @@ class OvsAgentSchedulerTestCase(OvsAgentSchedulerTestCaseBase):
self.assertEqual(L3_HOSTB, l3_agents_2['agents'][0]['host'])
def test_router_auto_schedule_with_disabled(self):
with contextlib.nested(self.router(),
self.router()):
with self.router(), self.router():
l3_rpc_cb = l3_rpc.L3RpcCallback()
self._register_agent_states()
hosta_id = self._get_agent_id(constants.AGENT_TYPE_L3,
@ -844,8 +836,7 @@ class OvsAgentSchedulerTestCase(OvsAgentSchedulerTestCaseBase):
self.assertEqual(0, num_hosta_routers)
def test_router_auto_schedule_with_candidates(self):
with contextlib.nested(self.router(),
self.router()) as (router1, router2):
with self.router() as router1, self.router() as router2:
l3_rpc_cb = l3_rpc.L3RpcCallback()
agent = helpers.register_l3_agent(
host=L3_HOSTA, router_id=router1['router']['id'])
@ -869,9 +860,8 @@ class OvsAgentSchedulerTestCase(OvsAgentSchedulerTestCaseBase):
ret_a = l3_rpc_cb.sync_routers(self.adminContext, host=L3_HOSTA)
self.assertEqual(0, len(ret_a))
with contextlib.nested(self.router(),
self.router(),
self.router()) as routers:
with self.router() as v1, self.router() as v2, self.router() as v3:
routers = (v1, v2, v3)
router_ids = [r['router']['id'] for r in routers]
# Get all routers
@ -915,8 +905,11 @@ class OvsAgentSchedulerTestCase(OvsAgentSchedulerTestCaseBase):
self._register_agent_states()
hosta_id = self._get_agent_id(constants.AGENT_TYPE_L3, L3_HOSTA)
with contextlib.nested(self.router(), self.router(),
self.router(), self.router()) as routers:
with self.router() as v1,\
self.router() as v2,\
self.router() as v3,\
self.router() as v4:
routers = (v1, v2, v3, v4)
router_ids = [r['router']['id'] for r in routers]
# Sync router1 (router1 is scheduled)
_sync_router_with_ids([router_ids[0]], 1, 1, hosta_id)
@ -931,13 +924,10 @@ class OvsAgentSchedulerTestCase(OvsAgentSchedulerTestCaseBase):
_sync_router_with_ids(router_ids, 4, 4, hosta_id)
def test_router_schedule_with_candidates(self):
with contextlib.nested(self.router(),
self.router(),
self.subnet(),
self.subnet(cidr='10.0.3.0/24')) as (router1,
router2,
subnet1,
subnet2):
with self.router() as router1,\
self.router() as router2,\
self.subnet() as subnet1,\
self.subnet(cidr='10.0.3.0/24') as subnet2:
agent = helpers.register_l3_agent(
host=L3_HOSTA, router_id=router1['router']['id'])
self._router_interface_action('add',
@ -986,11 +976,9 @@ class OvsAgentSchedulerTestCase(OvsAgentSchedulerTestCaseBase):
self.assertEqual(0, len(l3agents))
def test_router_sync_data(self):
with contextlib.nested(
self.subnet(),
self.subnet(cidr='10.0.2.0/24'),
self.subnet(cidr='10.0.3.0/24')
) as (s1, s2, s3):
with self.subnet() as s1,\
self.subnet(cidr='10.0.2.0/24') as s2,\
self.subnet(cidr='10.0.3.0/24') as s3:
self._register_agent_states()
self._set_net_external(s1['subnet']['network_id'])
data = {'router': {'tenant_id': uuidutils.generate_uuid()}}
@ -1287,15 +1275,13 @@ class OvsDhcpAgentNotifierTestCase(test_l3.L3NatTestCaseMixin,
def _is_schedule_network_called(self, device_id):
plugin = manager.NeutronManager.get_plugin()
notifier = plugin.agent_notifiers[constants.AGENT_TYPE_DHCP]
with contextlib.nested(
self.subnet(),
mock.patch.object(plugin,
'get_dhcp_agents_hosting_networks',
return_value=[]),
mock.patch.object(notifier,
'_schedule_network',
return_value=[])
) as (subnet, _, mock_sched):
with self.subnet() as subnet,\
mock.patch.object(plugin,
'get_dhcp_agents_hosting_networks',
return_value=[]),\
mock.patch.object(notifier,
'_schedule_network',
return_value=[]) as mock_sched:
with self.port(subnet=subnet, device_id=device_id):
return mock_sched.called
@ -1347,14 +1333,12 @@ class OvsL3AgentNotifierTestCase(test_l3.L3NatTestCaseMixin,
l3_plugin = (manager.NeutronManager.get_service_plugins()
[service_constants.L3_ROUTER_NAT])
l3_notifier = l3_plugin.agent_notifiers[constants.AGENT_TYPE_L3]
with contextlib.nested(
mock.patch.object(l3_notifier.client, 'prepare',
return_value=l3_notifier.client),
mock.patch.object(l3_notifier.client, 'cast'),
self.router(),
) as (
mock_prepare, mock_cast, router1
):
with mock.patch.object(
l3_notifier.client,
'prepare',
return_value=l3_notifier.client) as mock_prepare,\
mock.patch.object(l3_notifier.client, 'cast') as mock_cast,\
self.router() as router1:
self._register_agent_states()
hosta_id = self._get_agent_id(constants.AGENT_TYPE_L3,
L3_HOSTA)
@ -1372,14 +1356,12 @@ class OvsL3AgentNotifierTestCase(test_l3.L3NatTestCaseMixin,
l3_plugin = (manager.NeutronManager.get_service_plugins()
[service_constants.L3_ROUTER_NAT])
l3_notifier = l3_plugin.agent_notifiers[constants.AGENT_TYPE_L3]
with contextlib.nested(
mock.patch.object(l3_notifier.client, 'prepare',
return_value=l3_notifier.client),
mock.patch.object(l3_notifier.client, 'cast'),
self.router(),
) as (
mock_prepare, mock_cast, router1
):
with mock.patch.object(
l3_notifier.client,
'prepare',
return_value=l3_notifier.client) as mock_prepare,\
mock.patch.object(l3_notifier.client, 'cast') as mock_cast,\
self.router() as router1:
self._register_agent_states()
hosta_id = self._get_agent_id(constants.AGENT_TYPE_L3,
L3_HOSTA)
@ -1399,13 +1381,11 @@ class OvsL3AgentNotifierTestCase(test_l3.L3NatTestCaseMixin,
l3_plugin = (manager.NeutronManager.get_service_plugins()
[service_constants.L3_ROUTER_NAT])
l3_notifier = l3_plugin.agent_notifiers[constants.AGENT_TYPE_L3]
with contextlib.nested(
mock.patch.object(l3_notifier.client, 'prepare',
return_value=l3_notifier.client),
mock.patch.object(l3_notifier.client, 'cast'),
) as (
mock_prepare, mock_cast
):
with mock.patch.object(
l3_notifier.client,
'prepare',
return_value=l3_notifier.client) as mock_prepare,\
mock.patch.object(l3_notifier.client, 'cast') as mock_cast:
agent_id = helpers.register_l3_agent(L3_HOSTA).id
self._disable_agent(agent_id, admin_state_up=False)

View File

@ -14,7 +14,6 @@
# under the License.
#
import contextlib
import time
import mock
@ -495,19 +494,18 @@ class TunnelTest(object):
self.ovs_bridges[self.INT_BRIDGE].check_canary_table.return_value = \
constants.OVS_NORMAL
with contextlib.nested(
mock.patch.object(log.KeywordArgumentAdapter, 'exception'),
mock.patch.object(self.mod_agent.OVSNeutronAgent,
'scan_ports'),
mock.patch.object(self.mod_agent.OVSNeutronAgent,
'process_network_ports'),
mock.patch.object(self.mod_agent.OVSNeutronAgent,
'tunnel_sync'),
mock.patch.object(time, 'sleep'),
mock.patch.object(self.mod_agent.OVSNeutronAgent,
'update_stale_ofport_rules')
) as (log_exception, scan_ports, process_network_ports,
ts, time_sleep, update_stale):
with mock.patch.object(log.KeywordArgumentAdapter,
'exception') as log_exception,\
mock.patch.object(self.mod_agent.OVSNeutronAgent,
'scan_ports') as scan_ports,\
mock.patch.object(
self.mod_agent.OVSNeutronAgent,
'process_network_ports') as process_network_ports,\
mock.patch.object(self.mod_agent.OVSNeutronAgent,
'tunnel_sync'),\
mock.patch.object(time, 'sleep'),\
mock.patch.object(self.mod_agent.OVSNeutronAgent,
'update_stale_ofport_rules') as update_stale:
log_exception.side_effect = Exception(
'Fake exception to get out of the loop')
scan_ports.side_effect = [reply2, reply3]

View File

@ -14,7 +14,6 @@
# limitations under the License.
import contextlib
import os
import mock
@ -33,28 +32,23 @@ class TestCreateESwitchManager(base.BaseTestCase):
def test_create_eswitch_mgr_fail(self):
device_mappings = {'physnet1': 'p6p1'}
with contextlib.nested(
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.scan_vf_devices",
side_effect=exc.InvalidDeviceError(dev_name="p6p1",
reason="device"
" not found")),
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.is_assigned_vf",
return_value=True)):
with mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.scan_vf_devices",
side_effect=exc.InvalidDeviceError(
dev_name="p6p1", reason="device" " not found")),\
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.is_assigned_vf", return_value=True):
with testtools.ExpectedException(exc.InvalidDeviceError):
esm.ESwitchManager(device_mappings, None)
def test_create_eswitch_mgr_ok(self):
device_mappings = {'physnet1': 'p6p1'}
with contextlib.nested(
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.scan_vf_devices",
return_value=self.SCANNED_DEVICES),
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.is_assigned_vf",
return_value=True)):
with mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.scan_vf_devices",
return_value=self.SCANNED_DEVICES),\
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.is_assigned_vf", return_value=True):
esm.ESwitchManager(device_mappings, None)
@ -72,13 +66,11 @@ class TestESwitchManagerApi(base.BaseTestCase):
def setUp(self):
super(TestESwitchManagerApi, self).setUp()
device_mappings = {'physnet1': 'p6p1'}
with contextlib.nested(
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.scan_vf_devices",
return_value=self.SCANNED_DEVICES),
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.is_assigned_vf",
return_value=True)):
with mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.scan_vf_devices",
return_value=self.SCANNED_DEVICES),\
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.is_assigned_vf", return_value=True):
self.eswitch_mgr = esm.ESwitchManager(device_mappings, None)
def test_get_assigned_devices(self):
@ -89,37 +81,32 @@ class TestESwitchManagerApi(base.BaseTestCase):
self.assertEqual(set([self.ASSIGNED_MAC]), result)
def test_get_device_status_true(self):
with contextlib.nested(
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.get_pci_device",
return_value=self.ASSIGNED_MAC),
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.get_device_state",
return_value=True)):
with mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.get_pci_device",
return_value=self.ASSIGNED_MAC),\
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.get_device_state", return_value=True):
result = self.eswitch_mgr.get_device_state(self.ASSIGNED_MAC,
self.PCI_SLOT)
self.assertTrue(result)
def test_get_device_status_false(self):
with contextlib.nested(
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.get_pci_device",
return_value=self.ASSIGNED_MAC),
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.get_device_state",
return_value=False)):
with mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.get_pci_device",
return_value=self.ASSIGNED_MAC),\
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.get_device_state",
return_value=False):
result = self.eswitch_mgr.get_device_state(self.ASSIGNED_MAC,
self.PCI_SLOT)
self.assertFalse(result)
def test_get_device_status_mismatch(self):
with contextlib.nested(
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.get_pci_device",
return_value=self.ASSIGNED_MAC),
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.get_device_state",
return_value=True)):
with mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.get_pci_device",
return_value=self.ASSIGNED_MAC),\
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.get_device_state", return_value=True):
with mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"LOG.warning") as log_mock:
result = self.eswitch_mgr.get_device_state(self.WRONG_MAC,
@ -131,22 +118,20 @@ class TestESwitchManagerApi(base.BaseTestCase):
self.assertFalse(result)
def test_set_device_status(self):
with contextlib.nested(
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.get_pci_device",
return_value=self.ASSIGNED_MAC),
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.set_device_state")):
with mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.get_pci_device",
return_value=self.ASSIGNED_MAC),\
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.set_device_state"):
self.eswitch_mgr.set_device_state(self.ASSIGNED_MAC,
self.PCI_SLOT, True)
def test_set_device_status_mismatch(self):
with contextlib.nested(
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.get_pci_device",
return_value=self.ASSIGNED_MAC),
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.set_device_state")):
with mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.get_pci_device",
return_value=self.ASSIGNED_MAC),\
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"EmbSwitch.set_device_state"):
with mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"LOG.warning") as log_mock:
self.eswitch_mgr.set_device_state(self.WRONG_MAC,
@ -209,13 +194,11 @@ class TestEmbSwitch(base.BaseTestCase):
exclude_devices)
def test_get_assigned_devices(self):
with contextlib.nested(
mock.patch("neutron.plugins.sriovnicagent.pci_lib."
"PciDeviceIPWrapper.get_assigned_macs",
return_value=[self.ASSIGNED_MAC]),
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.is_assigned_vf",
return_value=True)):
with mock.patch("neutron.plugins.sriovnicagent.pci_lib."
"PciDeviceIPWrapper.get_assigned_macs",
return_value=[self.ASSIGNED_MAC]),\
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.is_assigned_vf", return_value=True):
result = self.emb_switch.get_assigned_devices()
self.assertEqual([self.ASSIGNED_MAC], result)
@ -257,24 +240,20 @@ class TestEmbSwitch(base.BaseTestCase):
self.WRONG_PCI_SLOT, True)
def test_get_pci_device(self):
with contextlib.nested(
mock.patch("neutron.plugins.sriovnicagent.pci_lib."
"PciDeviceIPWrapper.get_assigned_macs",
return_value=[self.ASSIGNED_MAC]),
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.is_assigned_vf",
return_value=True)):
with mock.patch("neutron.plugins.sriovnicagent.pci_lib."
"PciDeviceIPWrapper.get_assigned_macs",
return_value=[self.ASSIGNED_MAC]),\
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.is_assigned_vf", return_value=True):
result = self.emb_switch.get_pci_device(self.PCI_SLOT)
self.assertEqual(self.ASSIGNED_MAC, result)
def test_get_pci_device_fail(self):
with contextlib.nested(
mock.patch("neutron.plugins.sriovnicagent.pci_lib."
"PciDeviceIPWrapper.get_assigned_macs",
return_value=[self.ASSIGNED_MAC]),
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.is_assigned_vf",
return_value=True)):
with mock.patch("neutron.plugins.sriovnicagent.pci_lib."
"PciDeviceIPWrapper.get_assigned_macs",
return_value=[self.ASSIGNED_MAC]),\
mock.patch("neutron.plugins.sriovnicagent.eswitch_manager."
"PciOsWrapper.is_assigned_vf", return_value=True):
result = self.emb_switch.get_pci_device(self.WRONG_PCI_SLOT)
self.assertIsNone(result)
@ -313,15 +292,10 @@ class TestPciOsWrapper(base.BaseTestCase):
file_name = os.path.basename(file_path)
return self.LINKS[file_name]
with contextlib.nested(
mock.patch("os.path.isdir",
return_value=True),
mock.patch("os.listdir",
return_value=self.DIR_CONTENTS),
mock.patch("os.path.islink",
return_value=True),
mock.patch("os.readlink",
side_effect=_get_link),):
with mock.patch("os.path.isdir", return_value=True),\
mock.patch("os.listdir", return_value=self.DIR_CONTENTS),\
mock.patch("os.path.islink", return_value=True),\
mock.patch("os.readlink", side_effect=_get_link):
result = esm.PciOsWrapper.scan_vf_devices(self.DEV_NAME)
self.assertEqual(self.PCI_SLOTS, result)
@ -332,21 +306,16 @@ class TestPciOsWrapper(base.BaseTestCase):
self.DEV_NAME)
def test_scan_vf_devices_no_content(self):
with contextlib.nested(
mock.patch("os.path.isdir",
return_value=True),
mock.patch("os.listdir",
return_value=[])):
with mock.patch("os.path.isdir", return_value=True),\
mock.patch("os.listdir", return_value=[]):
self.assertRaises(exc.InvalidDeviceError,
esm.PciOsWrapper.scan_vf_devices,
self.DEV_NAME)
def test_scan_vf_devices_no_match(self):
with contextlib.nested(
mock.patch("os.path.isdir",
return_value=True),
mock.patch("os.listdir",
return_value=self.DIR_CONTENTS_NO_MATCH)):
with mock.patch("os.path.isdir", return_value=True),\
mock.patch("os.listdir",
return_value=self.DIR_CONTENTS_NO_MATCH):
self.assertRaises(exc.InvalidDeviceError,
esm.PciOsWrapper.scan_vf_devices,
self.DEV_NAME)
@ -368,11 +337,8 @@ class TestPciOsWrapper(base.BaseTestCase):
def _glob(file_path):
return ["upper_macvtap0"] if macvtap_exists else []
with contextlib.nested(
mock.patch("os.path.isdir",
return_value=True),
mock.patch("glob.glob",
side_effect=_glob)):
with mock.patch("os.path.isdir", return_value=True),\
mock.patch("glob.glob", side_effect=_glob):
result = esm.PciOsWrapper.is_assigned_vf(self.DEV_NAME,
self.VF_INDEX)
self.assertEqual(macvtap_exists, result)

View File

@ -13,8 +13,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import contextlib
import mock
from oslo_config import cfg
from oslo_utils import importutils
@ -185,13 +183,14 @@ class TestNetworksFailover(TestDhcpSchedulerBaseTestCase,
self._test_schedule_bind_network([agents[0]], self.network_id)
self._save_networks(["foo-network-2"])
self._test_schedule_bind_network([agents[1]], "foo-network-2")
with contextlib.nested(
mock.patch.object(self, 'remove_network_from_dhcp_agent'),
mock.patch.object(self, 'schedule_network',
return_value=[agents[1]]),
mock.patch.object(self, 'get_network', create=True,
return_value={'id': self.network_id})
) as (rn, sch, getn):
with mock.patch.object(self, 'remove_network_from_dhcp_agent') as rn,\
mock.patch.object(self,
'schedule_network',
return_value=[agents[1]]) as sch,\
mock.patch.object(self,
'get_network',
create=True,
return_value={'id': self.network_id}):
notifier = mock.MagicMock()
self.agent_notifiers[constants.AGENT_TYPE_DHCP] = notifier
self.remove_networks_from_down_agents()
@ -204,15 +203,16 @@ class TestNetworksFailover(TestDhcpSchedulerBaseTestCase,
def _test_failed_rescheduling(self, rn_side_effect=None):
agents = self._create_and_set_agents_down(['host-a'], 1)
self._test_schedule_bind_network([agents[0]], self.network_id)
with contextlib.nested(
mock.patch.object(
self, 'remove_network_from_dhcp_agent',
side_effect=rn_side_effect),
mock.patch.object(self, 'schedule_network',
return_value=None),
mock.patch.object(self, 'get_network', create=True,
return_value={'id': self.network_id})
) as (rn, sch, getn):
with mock.patch.object(self,
'remove_network_from_dhcp_agent',
side_effect=rn_side_effect) as rn,\
mock.patch.object(self,
'schedule_network',
return_value=None) as sch,\
mock.patch.object(self,
'get_network',
create=True,
return_value={'id': self.network_id}):
notifier = mock.MagicMock()
self.agent_notifiers[constants.AGENT_TYPE_DHCP] = notifier
self.remove_networks_from_down_agents()

View File

@ -128,10 +128,10 @@ class L3SchedulerBaseTestCase(base.BaseTestCase):
def test_auto_schedule_routers(self):
self.plugin.get_enabled_agent_on_host.return_value = [mock.ANY]
with contextlib.nested(
mock.patch.object(self.scheduler, '_get_routers_to_schedule'),
mock.patch.object(self.scheduler, '_get_routers_can_schedule')
) as (gs, gr):
with mock.patch.object(self.scheduler,
'_get_routers_to_schedule') as gs,\
mock.patch.object(self.scheduler,
'_get_routers_can_schedule') as gr:
result = self.scheduler.auto_schedule_routers(
self.plugin, mock.ANY, mock.ANY, mock.ANY)
self.assertTrue(self.plugin.get_enabled_agent_on_host.called)
@ -159,10 +159,12 @@ class L3SchedulerBaseTestCase(base.BaseTestCase):
def test_auto_schedule_routers_no_target_routers(self):
self.plugin.get_enabled_agent_on_host.return_value = [mock.ANY]
with contextlib.nested(
mock.patch.object(self.scheduler, '_get_routers_to_schedule'),
mock.patch.object(self.scheduler, '_get_routers_can_schedule')
) as (mock_unscheduled_routers, mock_target_routers):
with mock.patch.object(
self.scheduler,
'_get_routers_to_schedule') as mock_unscheduled_routers,\
mock.patch.object(
self.scheduler,
'_get_routers_can_schedule') as mock_target_routers:
mock_unscheduled_routers.return_value = mock.ANY
mock_target_routers.return_value = None
result = self.scheduler.auto_schedule_routers(
@ -250,12 +252,11 @@ class L3SchedulerBaseTestCase(base.BaseTestCase):
def _test__bind_routers_ha(self, has_binding):
routers = [{'id': 'foo_router', 'ha': True, 'tenant_id': '42'}]
agent = agents_db.Agent(id='foo_agent')
with contextlib.nested(
mock.patch.object(self.scheduler, '_router_has_binding',
return_value=has_binding),
mock.patch.object(self.scheduler, '_create_ha_router_binding')
) as (
mock_has_binding, mock_bind):
with mock.patch.object(self.scheduler,
'_router_has_binding',
return_value=has_binding) as mock_has_binding,\
mock.patch.object(self.scheduler,
'_create_ha_router_binding') as mock_bind:
self.scheduler._bind_routers(mock.ANY, mock.ANY, routers, agent)
mock_has_binding.assert_called_once_with(mock.ANY, 'foo_router',
'foo_agent')
@ -336,12 +337,11 @@ class L3SchedulerTestBaseMixin(object):
router['router']['external_gateway_info'] = external_gw
if already_scheduled:
self._test_schedule_bind_router(agent, router)
with contextlib.nested(
mock.patch.object(self, "validate_agent_router_combination"),
mock.patch.object(self, "create_router_to_agent_binding"),
mock.patch('neutron.db.l3_db.L3_NAT_db_mixin.get_router',
return_value=router['router'])
) as (valid, auto_s, gr):
with mock.patch.object(self, "validate_agent_router_combination"),\
mock.patch.object(self,
"create_router_to_agent_binding") as auto_s,\
mock.patch('neutron.db.l3_db.L3_NAT_db_mixin.get_router',
return_value=router['router']):
self.add_router_to_l3_agent(self.adminContext, agent_id,
router['router']['id'])
self.assertNotEqual(already_scheduled, auto_s.called)
@ -377,10 +377,9 @@ class L3SchedulerTestBaseMixin(object):
expected_exception=None):
router = self._create_router_for_l3_agent_dvr_test(
distributed=distributed, external_gw=external_gw)
with contextlib.nested(
mock.patch.object(self, "create_router_to_agent_binding"),
mock.patch('neutron.db.l3_db.L3_NAT_db_mixin.get_router',
return_value=router['router'])):
with mock.patch.object(self, "create_router_to_agent_binding"),\
mock.patch('neutron.db.l3_db.L3_NAT_db_mixin.get_router',
return_value=router['router']):
self.assertRaises(expected_exception,
self.add_router_to_l3_agent,
self.adminContext, agent_id,
@ -416,12 +415,12 @@ class L3SchedulerTestBaseMixin(object):
router = self._create_router_for_l3_agent_dvr_test(
distributed=True,
external_gw=external_gw_info)
with contextlib.nested(
mock.patch.object(self, "validate_agent_router_combination"),
mock.patch.object(self, "create_router_to_agent_binding"),
mock.patch('neutron.db.l3_db.L3_NAT_db_mixin.get_router',
return_value=router['router'])
) as (valid_agent_rtr, rtr_agent_binding, get_rtr):
with mock.patch.object(self, "validate_agent_router_combination"),\
mock.patch.object(
self,
"create_router_to_agent_binding") as rtr_agent_binding,\
mock.patch('neutron.db.l3_db.L3_NAT_db_mixin.get_router',
return_value=router['router']):
self.add_router_to_l3_agent(self.adminContext, agent_id,
router['router']['id'])
@ -470,10 +469,10 @@ class L3SchedulerTestBaseMixin(object):
'distributed': True
}
plugin.get_router.return_value = sync_router
with contextlib.nested(
mock.patch.object(scheduler, 'bind_router'),
mock.patch.object(
plugin, 'get_snat_bindings', return_value=False)):
with mock.patch.object(scheduler, 'bind_router'),\
mock.patch.object(plugin,
'get_snat_bindings',
return_value=False):
scheduler._schedule_router(
plugin, self.adminContext, 'foo_router_id', None)
expected_calls = [
@ -954,15 +953,16 @@ class L3DvrSchedulerTestCase(testlib_api.SqlTestCase):
'distributed': True,
}
with contextlib.nested(
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2'
'.get_ports', return_value=[dvr_port]),
mock.patch('neutron.manager.NeutronManager.get_service_plugins',
return_value=mock.Mock()),
mock.patch('neutron.db.l3_db.L3_NAT_db_mixin.get_router',
return_value=r1),
mock.patch('neutron.api.rpc.agentnotifiers.l3_rpc_agent_api'
'.L3AgentNotifyAPI')):
with mock.patch(
'neutron.db.db_base_plugin_v2.NeutronDbPluginV2' '.get_ports',
return_value=[dvr_port]),\
mock.patch(
'neutron.manager.NeutronManager.get_service_plugins',
return_value=mock.Mock()),\
mock.patch('neutron.db.l3_db.L3_NAT_db_mixin.get_router',
return_value=r1),\
mock.patch('neutron.api.rpc.agentnotifiers.l3_rpc_agent_api'
'.L3AgentNotifyAPI'):
self.dut.dvr_update_router_addvm(self.adminContext, port)
def test_get_dvr_routers_by_portid(self):
@ -982,11 +982,11 @@ class L3DvrSchedulerTestCase(testlib_api.SqlTestCase):
'distributed': True,
}
with contextlib.nested(
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2'
'.get_port', return_value=dvr_port),
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2'
'.get_ports', return_value=[dvr_port])):
with mock.patch(
'neutron.db.db_base_plugin_v2.NeutronDbPluginV2' '.get_port',
return_value=dvr_port),\
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2'
'.get_ports', return_value=[dvr_port]):
router_id = self.dut.get_dvr_routers_by_portid(self.adminContext,
dvr_port['id'])
self.assertEqual(router_id.pop(), r1['id'])
@ -1008,9 +1008,9 @@ class L3DvrSchedulerTestCase(testlib_api.SqlTestCase):
'distributed': True,
}
with contextlib.nested(
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2'
'.get_ports', return_value=[dvr_port])):
with mock.patch(
'neutron.db.db_base_plugin_v2.NeutronDbPluginV2' '.get_ports',
return_value=[dvr_port]):
sub_ids = self.dut.get_subnet_ids_on_router(self.adminContext,
r1['id'])
self.assertEqual(sub_ids.pop(),
@ -1034,15 +1034,16 @@ class L3DvrSchedulerTestCase(testlib_api.SqlTestCase):
'id': 'r1',
'distributed': True,
}
with contextlib.nested(
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2'
'.get_ports', return_value=[dvr_port]),
mock.patch('neutron.manager.NeutronManager.get_service_plugins',
return_value=mock.Mock()),
mock.patch('neutron.db.l3_db.L3_NAT_db_mixin.get_router',
return_value=r1),
mock.patch('neutron.api.rpc.agentnotifiers.l3_rpc_agent_api'
'.L3AgentNotifyAPI')):
with mock.patch(
'neutron.db.db_base_plugin_v2.NeutronDbPluginV2' '.get_ports',
return_value=[dvr_port]),\
mock.patch(
'neutron.manager.NeutronManager.get_service_plugins',
return_value=mock.Mock()),\
mock.patch('neutron.db.l3_db.L3_NAT_db_mixin.get_router',
return_value=r1),\
mock.patch('neutron.api.rpc.agentnotifiers.l3_rpc_agent_api'
'.L3AgentNotifyAPI'):
sub_ids = self.dut.get_subnet_ids_on_router(self.adminContext,
r1['id'])
result = self.dut.check_ports_active_on_host_and_subnet(
@ -1109,16 +1110,16 @@ class L3DvrSchedulerTestCase(testlib_api.SqlTestCase):
vm_port_id = vm_port['id']
fakePortDB = FakePortDB([vm_port])
with contextlib.nested(
mock.patch.object(my_context, 'elevated',
return_value=self.adminContext),
mock.patch('neutron.plugins.ml2.db.'
'get_port_binding_host', return_value=vm_port_host),
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2.'
'get_ports', side_effect=fakePortDB.get_ports),
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2.'
'get_port', return_value=vm_port)) as (
_, mock_get_port_binding_host, _, _):
with mock.patch.object(my_context,
'elevated',
return_value=self.adminContext),\
mock.patch(
'neutron.plugins.ml2.db.get_port_binding_host',
return_value=vm_port_host) as mock_get_port_binding_host,\
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2.'
'get_ports', side_effect=fakePortDB.get_ports),\
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2.'
'get_port', return_value=vm_port):
routers = self.dut.dvr_deletens_if_no_port(my_context, vm_port_id)
self.assertEqual([], routers)
@ -1155,20 +1156,21 @@ class L3DvrSchedulerTestCase(testlib_api.SqlTestCase):
'host': vm_port_host
}
with contextlib.nested(
mock.patch.object(my_context, 'elevated',
return_value=self.adminContext),
mock.patch('neutron.plugins.ml2.db.get_port_binding_host',
return_value=vm_port_host),
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2.'
'get_port', side_effect=fakePortDB.get_port),
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2.'
'get_ports', side_effect=fakePortDB.get_ports),
mock.patch('neutron.plugins.ml2.db.get_dvr_port_binding_by_host',
return_value=vm_port_binding)) as (_,
mock_get_port_binding_host, _,
mock_get_ports,
mock_get_dvr_port_binding_by_host):
with mock.patch.object(my_context,
'elevated',
return_value=self.adminContext),\
mock.patch(
'neutron.plugins.ml2.db.get_port_binding_host',
return_value=vm_port_host) as mock_get_port_binding_host,\
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2.'
'get_port', side_effect=fakePortDB.get_port),\
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2.'
'get_ports', side_effect=fakePortDB.get_ports) as\
mock_get_ports,\
mock.patch('neutron.plugins.ml2.db.'
'get_dvr_port_binding_by_host',
return_value=vm_port_binding) as\
mock_get_dvr_port_binding_by_host:
routers = self.dut.dvr_deletens_if_no_port(
my_context, deleted_vm_port_id)
@ -1220,24 +1222,24 @@ class L3DvrSchedulerTestCase(testlib_api.SqlTestCase):
vm_port_host,
constants.AGENT_TYPE_L3)
with contextlib.nested(
mock.patch.object(my_context, 'elevated',
return_value=self.adminContext),
mock.patch('neutron.plugins.ml2.db.get_port_binding_host',
return_value=vm_port_host),
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2.'
'get_port', side_effect=fakePortDB.get_port),
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2.'
'get_ports', side_effect=fakePortDB.get_ports),
mock.patch('neutron.plugins.ml2.db.get_dvr_port_binding_by_host',
return_value=dvr_port_binding),
mock.patch('neutron.db.agents_db.AgentDbMixin.'
'_get_agent_by_type_and_host',
return_value=l3_agent_on_vm_host)) as (_,
mock_get_port_binding_host, _,
mock_get_ports,
mock_get_dvr_port_binding_by_host,
mock__get_agent_by_type_and_host):
with mock.patch.object(my_context,
'elevated',
return_value=self.adminContext),\
mock.patch(
'neutron.plugins.ml2.db.get_port_binding_host',
return_value=vm_port_host) as mock_get_port_binding_host,\
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2.'
'get_port', side_effect=fakePortDB.get_port),\
mock.patch('neutron.db.db_base_plugin_v2.NeutronDbPluginV2.'
'get_ports', side_effect=fakePortDB.get_ports) as\
mock_get_ports,\
mock.patch('neutron.plugins.ml2.db.'
'get_dvr_port_binding_by_host',
return_value=dvr_port_binding) as\
mock_get_dvr_port_binding_by_host,\
mock.patch('neutron.db.agents_db.AgentDbMixin.'
'_get_agent_by_type_and_host',
return_value=l3_agent_on_vm_host):
routers = self.dut.dvr_deletens_if_no_port(
my_context, deleted_vm_port_id)
@ -1299,25 +1301,30 @@ class L3DvrSchedulerTestCase(testlib_api.SqlTestCase):
def test_schedule_snat_router_duplicate_entry(self):
self._prepare_schedule_snat_tests()
with contextlib.nested(
mock.patch.object(self.dut, 'get_l3_agents'),
mock.patch.object(self.dut, 'get_snat_candidates'),
mock.patch.object(self.dut, 'bind_snat_servicenode',
side_effect=db_exc.DBDuplicateEntry()),
mock.patch.object(self.dut, 'bind_dvr_router_servicenode')
) as (mock_gl3, mock_snat_canidates, mock_bind_snat, mock_bind_dvr):
with mock.patch.object(self.dut, 'get_l3_agents'),\
mock.patch.object(self.dut, 'get_snat_candidates'),\
mock.patch.object(
self.dut,
'bind_snat_servicenode',
side_effect=db_exc.DBDuplicateEntry()) as mock_bind_snat,\
mock.patch.object(
self.dut,
'bind_dvr_router_servicenode') as mock_bind_dvr:
self.dut.schedule_snat_router(self.adminContext, 'foo', 'bar')
self.assertTrue(mock_bind_snat.called)
self.assertFalse(mock_bind_dvr.called)
def test_schedule_snat_router_return_value(self):
agent, router = self._prepare_schedule_snat_tests()
with contextlib.nested(
mock.patch.object(self.dut, 'get_l3_agents'),
mock.patch.object(self.dut, 'get_snat_candidates'),
mock.patch.object(self.dut, 'bind_snat_servicenode'),
mock.patch.object(self.dut, 'bind_dvr_router_servicenode')
) as (mock_gl3, mock_snat_canidates, mock_bind_snat, mock_bind_dvr):
with mock.patch.object(self.dut, 'get_l3_agents'),\
mock.patch.object(
self.dut,
'get_snat_candidates') as mock_snat_canidates,\
mock.patch.object(self.dut,
'bind_snat_servicenode') as mock_bind_snat,\
mock.patch.object(
self.dut,
'bind_dvr_router_servicenode') as mock_bind_dvr:
mock_snat_canidates.return_value = [agent]
mock_bind_snat.return_value = [agent]
mock_bind_dvr.return_value = [agent]
@ -1330,11 +1337,11 @@ class L3DvrSchedulerTestCase(testlib_api.SqlTestCase):
'id': 'foo_router_id',
'distributed': True
}
with contextlib.nested(
mock.patch.object(self.dut, 'get_router'),
mock.patch.object(self.dut, 'get_snat_bindings'),
mock.patch.object(self.dut, 'unbind_snat_servicenode')
) as (mock_rd, mock_snat_bind, mock_unbind):
with mock.patch.object(self.dut, 'get_router') as mock_rd,\
mock.patch.object(self.dut,
'get_snat_bindings') as mock_snat_bind,\
mock.patch.object(self.dut,
'unbind_snat_servicenode') as mock_unbind:
mock_rd.return_value = router
mock_snat_bind.return_value = False
self.dut.schedule_snat_router(
@ -1343,15 +1350,14 @@ class L3DvrSchedulerTestCase(testlib_api.SqlTestCase):
def test_schedule_snat_router_with_snat_candidates(self):
agent, router = self._prepare_schedule_snat_tests()
with contextlib.nested(
mock.patch.object(query.Query, 'first'),
mock.patch.object(self.dut, 'get_l3_agents'),
mock.patch.object(self.dut, 'get_snat_candidates'),
mock.patch.object(self.dut, 'get_router'),
mock.patch.object(self.dut, 'bind_dvr_router_servicenode'),
mock.patch.object(self.dut, 'bind_snat_servicenode')) as (
mock_query, mock_agents,
mock_candidates, mock_rd, mock_dvr, mock_bind):
with mock.patch.object(query.Query, 'first') as mock_query,\
mock.patch.object(self.dut, 'get_l3_agents') as mock_agents,\
mock.patch.object(self.dut,
'get_snat_candidates') as mock_candidates,\
mock.patch.object(self.dut, 'get_router') as mock_rd,\
mock.patch.object(self.dut, 'bind_dvr_router_servicenode'),\
mock.patch.object(self.dut,
'bind_snat_servicenode') as mock_bind:
mock_rd.return_value = router
mock_query.return_value = []
mock_agents.return_value = [agent]
@ -1373,12 +1379,13 @@ class L3DvrSchedulerTestCase(testlib_api.SqlTestCase):
binding = l3_dvrscheduler_db.CentralizedSnatL3AgentBinding(
router_id=router_id, l3_agent_id='foo_l3_agent_id',
l3_agent=agents_db.Agent())
with contextlib.nested(
mock.patch.object(query.Query, 'one'),
mock.patch.object(self.adminContext.session, 'delete'),
mock.patch.object(query.Query, 'delete'),
mock.patch.object(self.dut, 'get_subnet_ids_on_router')) as (
mock_query, mock_session, mock_delete, mock_get_subnets):
with mock.patch.object(query.Query, 'one') as mock_query,\
mock.patch.object(self.adminContext.session,
'delete') as mock_session,\
mock.patch.object(query.Query, 'delete') as mock_delete,\
mock.patch.object(
self.dut,
'get_subnet_ids_on_router') as mock_get_subnets:
mock_query.return_value = binding
mock_get_subnets.return_value = ['foo_subnet_id']
self.dut.unbind_snat_servicenode(self.adminContext, router_id)