Merge "Add RouterPort binding to ha interface creation"
This commit is contained in:
commit
f496af4d4e
@ -36,6 +36,7 @@ from neutron.common import utils as n_utils
|
|||||||
from neutron.db import agents_db
|
from neutron.db import agents_db
|
||||||
from neutron.db.availability_zone import router as router_az_db
|
from neutron.db.availability_zone import router as router_az_db
|
||||||
from neutron.db import common_db_mixin
|
from neutron.db import common_db_mixin
|
||||||
|
from neutron.db import l3_db
|
||||||
from neutron.db import l3_dvr_db
|
from neutron.db import l3_dvr_db
|
||||||
from neutron.db.l3_dvr_db import is_distributed_router
|
from neutron.db.l3_dvr_db import is_distributed_router
|
||||||
from neutron.db import model_base
|
from neutron.db import model_base
|
||||||
@ -340,6 +341,10 @@ class L3_HA_NAT_db_mixin(l3_dvr_db.L3_NAT_with_dvr_db_mixin,
|
|||||||
def _create_ha_port_binding(self, context, router_id, port_id):
|
def _create_ha_port_binding(self, context, router_id, port_id):
|
||||||
try:
|
try:
|
||||||
with context.session.begin():
|
with context.session.begin():
|
||||||
|
routerportbinding = l3_db.RouterPort(
|
||||||
|
port_id=port_id, router_id=router_id,
|
||||||
|
port_type=constants.DEVICE_OWNER_ROUTER_HA_INTF)
|
||||||
|
context.session.add(routerportbinding)
|
||||||
portbinding = L3HARouterAgentPortBinding(port_id=port_id,
|
portbinding = L3HARouterAgentPortBinding(port_id=port_id,
|
||||||
router_id=router_id)
|
router_id=router_id)
|
||||||
context.session.add(portbinding)
|
context.session.add(portbinding)
|
||||||
@ -584,6 +589,12 @@ class L3_HA_NAT_db_mixin(l3_dvr_db.L3_NAT_with_dvr_db_mixin,
|
|||||||
if ha_network:
|
if ha_network:
|
||||||
self._delete_vr_id_allocation(
|
self._delete_vr_id_allocation(
|
||||||
context, ha_network, router_db.extra_attributes.ha_vr_id)
|
context, ha_network, router_db.extra_attributes.ha_vr_id)
|
||||||
|
# NOTE(kevinbenton): normally the ha interfaces should have
|
||||||
|
# been automatically removed by the super delete_router call.
|
||||||
|
# However, that only applies to interfaces created after fix
|
||||||
|
# Ifd3e007aaf2a2ed8123275aa3a9f540838e3c003 which added the
|
||||||
|
# RouterPort relationship to ha interfaces. Legacy interfaces
|
||||||
|
# will be cleaned up by this.
|
||||||
self._delete_ha_interfaces(context, router_db.id)
|
self._delete_ha_interfaces(context, router_db.id)
|
||||||
|
|
||||||
# always attempt to cleanup the network as the router is
|
# always attempt to cleanup the network as the router is
|
||||||
|
@ -807,6 +807,15 @@ class L3HATestCase(L3HATestFramework):
|
|||||||
self.plugin.get_number_of_agents_for_scheduling,
|
self.plugin.get_number_of_agents_for_scheduling,
|
||||||
self.admin_ctx)
|
self.admin_ctx)
|
||||||
|
|
||||||
|
def test_ha_ports_deleted_in_parent_router_removal(self):
|
||||||
|
router1 = self._create_router()
|
||||||
|
# router cleanup should no longer depend on this function for
|
||||||
|
# newly created routers.
|
||||||
|
self.plugin._delete_ha_interfaces = mock.Mock()
|
||||||
|
self.plugin.delete_router(self.admin_ctx, router1['id'])
|
||||||
|
self.assertEqual([], self.core_plugin.get_ports(
|
||||||
|
self.admin_ctx, filters={'device_id': [router1['id']]}))
|
||||||
|
|
||||||
def test_ha_network_deleted_if_no_ha_router_present_two_tenants(self):
|
def test_ha_network_deleted_if_no_ha_router_present_two_tenants(self):
|
||||||
# Create two routers in different tenants.
|
# Create two routers in different tenants.
|
||||||
router1 = self._create_router()
|
router1 = self._create_router()
|
||||||
|
Loading…
Reference in New Issue
Block a user