ri.fip_ns = mock.Mock()
ri.fip_ns.agent_gateway_port = agent_gw_port
ri.fip_ns.allocate_rule_priority.return_value = FIP_PRI
- ri.rtr_fip_subnet = lla.LinkLocalAddressPair('169.254.30.42/31')
+ subnet = lla.LinkLocalAddressPair('169.254.30.42/31')
+ ri.rtr_fip_subnet = subnet
+ ri.fip_ns.local_subnets = mock.Mock()
+ ri.fip_ns.local_subnets.allocate.return_value = subnet
ri.dist_fip_count = 0
ip_cidr = common_utils.ip_to_cidr(fip['floating_ip_address'])
ri.floating_ip_added_dist(fip, ip_cidr)
mIPRule().rule.add.assert_called_with(ip='192.168.0.1',
table=16,
priority=FIP_PRI)
+ ri.fip_ns.local_subnets.allocate.assert_not_called()
self.assertEqual(1, ri.dist_fip_count)
+
+ # Validate that fip_ns.local_subnets is called when
+ # rtr_fip_subnet is None
+ ri.rtr_fip_subnet = None
+ ri.floating_ip_added_dist(fip, ip_cidr)
+ mIPRule().rule.add.assert_called_with(ip='192.168.0.1',
+ table=16,
+ priority=FIP_PRI)
+ ri.fip_ns.local_subnets.allocate.assert_called_once_with(ri.router_id)
# TODO(mrsmith): add more asserts
@mock.patch.object(ip_lib, 'IPWrapper')
ri.fip_ns.agent_gateway_port = agent_gw_port
s = lla.LinkLocalAddressPair('169.254.30.42/31')
ri.rtr_fip_subnet = s
+ ri.fip_ns.local_subnets = mock.Mock()
ri.floating_ip_removed_dist(fip_cidr)
mIPRule().rule.delete.assert_called_with(
ip=str(netaddr.IPNetwork(fip_cidr).ip), table=16, priority=FIP_PRI)
mIPDevice().route.delete_route.assert_called_with(fip_cidr, str(s.ip))
self.assertFalse(ri.fip_ns.unsubscribe.called)
+ ri.fip_ns.local_subnets.allocate.assert_not_called()
ri.dist_fip_count = 1
- ri.rtr_fip_subnet = lla.LinkLocalAddressPair('15.1.2.3/32')
- _, fip_to_rtr = ri.rtr_fip_subnet.get_pair()
+ s1 = lla.LinkLocalAddressPair('15.1.2.3/32')
+ ri.rtr_fip_subnet = None
+ ri.fip_ns.local_subnets.allocate.return_value = s1
+ _, fip_to_rtr = s1.get_pair()
fip_ns = ri.fip_ns
ri.floating_ip_removed_dist(fip_cidr)
self.assertTrue(fip_ns.destroyed)
mIPDevice().route.delete_gateway.assert_called_once_with(
str(fip_to_rtr.ip), table=16)
fip_ns.unsubscribe.assert_called_once_with(ri.router_id)
+ ri.fip_ns.local_subnets.allocate.assert_called_once_with(ri.router_id)
def _test_add_floating_ip(self, ri, fip, is_failure):
ri._add_fip_addr_to_device = mock.Mock(return_value=is_failure)