rtr_2_fip, fip_2_rtr = ri.rtr_fip_subnet.get_pair()
ip_wrapper = ip_lib.IPWrapper(self.root_helper,
namespace=ri.ns_name)
- int_dev = ip_wrapper.add_veth(rtr_2_fip_name,
- fip_2_rtr_name, fip_ns_name)
- self.internal_ns_interface_added(str(rtr_2_fip),
- rtr_2_fip_name, ri.ns_name)
- self.internal_ns_interface_added(str(fip_2_rtr),
- fip_2_rtr_name, fip_ns_name)
- int_dev[0].link.set_up()
- int_dev[1].link.set_up()
+ if not ip_lib.device_exists(rtr_2_fip_name, self.root_helper,
+ namespace=ri.ns_name):
+ int_dev = ip_wrapper.add_veth(rtr_2_fip_name,
+ fip_2_rtr_name, fip_ns_name)
+ self.internal_ns_interface_added(str(rtr_2_fip),
+ rtr_2_fip_name, ri.ns_name)
+ self.internal_ns_interface_added(str(fip_2_rtr),
+ fip_2_rtr_name, fip_ns_name)
+ int_dev[0].link.set_up()
+ int_dev[1].link.set_up()
# add default route for the link local interface
device = ip_lib.IPDevice(rtr_2_fip_name, self.root_helper,
namespace=ri.ns_name)
fip_ns_name = agent.get_fip_ns_name(str(fip['floating_network_id']))
with mock.patch.object(l3_agent.LinkLocalAllocator, '_write'):
+ self.device_exists.return_value = False
agent.create_rtr_2_fip_link(ri, fip['floating_network_id'])
self.mock_ip.add_veth.assert_called_with(rtr_2_fip_name,
fip_2_rtr_name, fip_ns_name)
# TODO(mrsmith): test _create_agent_gateway_port
+ def test_create_rtr_2_fip_link_already_exists(self):
+ agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
+ router = prepare_router_data()
+
+ ri = l3_agent.RouterInfo(router['id'], self.conf.root_helper,
+ router=router)
+ self.device_exists.return_value = True
+ with mock.patch.object(l3_agent.LinkLocalAllocator, '_write'):
+ agent.create_rtr_2_fip_link(ri, {})
+ self.assertFalse(self.mock_ip.add_veth.called)
+
def test_floating_ip_added_dist(self):
agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
router = prepare_router_data()