Merge "VMware NSX: Fix DVR operations" into stable/juno
This commit is contained in:
commit
ea19d8b5b5
@ -23,7 +23,6 @@ from neutron.api.v2 import attributes
|
|||||||
from neutron.common import constants as const
|
from neutron.common import constants as const
|
||||||
from neutron.common import exceptions as ntn_exc
|
from neutron.common import exceptions as ntn_exc
|
||||||
from neutron.db import db_base_plugin_v2
|
from neutron.db import db_base_plugin_v2
|
||||||
from neutron.db import l3_db
|
|
||||||
from neutron.db import models_v2
|
from neutron.db import models_v2
|
||||||
from neutron.openstack.common import log as logging
|
from neutron.openstack.common import log as logging
|
||||||
from neutron.plugins.vmware.api_client import exception as api_exc
|
from neutron.plugins.vmware.api_client import exception as api_exc
|
||||||
@ -96,7 +95,8 @@ def handle_router_metadata_access(plugin, context, router_id, interface=None):
|
|||||||
return
|
return
|
||||||
ctx_elevated = context.elevated()
|
ctx_elevated = context.elevated()
|
||||||
device_filter = {'device_id': [router_id],
|
device_filter = {'device_id': [router_id],
|
||||||
'device_owner': [l3_db.DEVICE_OWNER_ROUTER_INTF]}
|
'device_owner': [const.DEVICE_OWNER_DVR_INTERFACE,
|
||||||
|
const.DEVICE_OWNER_ROUTER_INTF]}
|
||||||
# Retrieve ports calling database plugin
|
# Retrieve ports calling database plugin
|
||||||
ports = db_base_plugin_v2.NeutronDbPluginV2.get_ports(
|
ports = db_base_plugin_v2.NeutronDbPluginV2.get_ports(
|
||||||
plugin, ctx_elevated, filters=device_filter)
|
plugin, ctx_elevated, filters=device_filter)
|
||||||
|
@ -83,6 +83,8 @@ NSX_NOSNAT_RULES_ORDER = 10
|
|||||||
NSX_FLOATINGIP_NAT_RULES_ORDER = 224
|
NSX_FLOATINGIP_NAT_RULES_ORDER = 224
|
||||||
NSX_EXTGW_NAT_RULES_ORDER = 255
|
NSX_EXTGW_NAT_RULES_ORDER = 255
|
||||||
NSX_DEFAULT_NEXTHOP = '1.1.1.1'
|
NSX_DEFAULT_NEXTHOP = '1.1.1.1'
|
||||||
|
ROUTER_INTERFACE_OWNERS = [constants.DEVICE_OWNER_DVR_INTERFACE,
|
||||||
|
constants.DEVICE_OWNER_ROUTER_INTF]
|
||||||
|
|
||||||
|
|
||||||
class NsxPluginV2(addr_pair_db.AllowedAddressPairsMixin,
|
class NsxPluginV2(addr_pair_db.AllowedAddressPairsMixin,
|
||||||
@ -1663,6 +1665,26 @@ class NsxPluginV2(addr_pair_db.AllowedAddressPairsMixin,
|
|||||||
{'subnet_id': subnet_id, 'router_id': router_id})
|
{'subnet_id': subnet_id, 'router_id': router_id})
|
||||||
return router_iface_info
|
return router_iface_info
|
||||||
|
|
||||||
|
def get_l3_agents_hosting_routers(self, context, routers):
|
||||||
|
# This method is just a stub added because is required by the l3 dvr
|
||||||
|
# mixin. That's so much for a management layer which is plugin
|
||||||
|
# agnostic
|
||||||
|
return []
|
||||||
|
|
||||||
|
def create_snat_intf_ports_if_not_exists(self, context, router):
|
||||||
|
# VMware plugins do not need SNAT interface ports
|
||||||
|
return []
|
||||||
|
|
||||||
|
def add_csnat_router_interface_port(self, context, router, network_id,
|
||||||
|
subnet_id, do_pop=True):
|
||||||
|
# VMware plugins do not need SNAT interface ports
|
||||||
|
return
|
||||||
|
|
||||||
|
def delete_csnat_router_interface_ports(self, context, router,
|
||||||
|
subnet_id=None):
|
||||||
|
# VMware plugins do not need SNAT interface ports
|
||||||
|
return
|
||||||
|
|
||||||
def remove_router_interface(self, context, router_id, interface_info):
|
def remove_router_interface(self, context, router_id, interface_info):
|
||||||
# The code below is duplicated from base class, but comes handy
|
# The code below is duplicated from base class, but comes handy
|
||||||
# as we need to retrieve the router port id before removing the port
|
# as we need to retrieve the router port id before removing the port
|
||||||
@ -1674,7 +1696,7 @@ class NsxPluginV2(addr_pair_db.AllowedAddressPairsMixin,
|
|||||||
port = self._get_port(context, port_id)
|
port = self._get_port(context, port_id)
|
||||||
if port.get('fixed_ips'):
|
if port.get('fixed_ips'):
|
||||||
subnet_id = port['fixed_ips'][0]['subnet_id']
|
subnet_id = port['fixed_ips'][0]['subnet_id']
|
||||||
if not (port['device_owner'] == l3_db.DEVICE_OWNER_ROUTER_INTF and
|
if not (port['device_owner'] in ROUTER_INTERFACE_OWNERS and
|
||||||
port['device_id'] == router_id):
|
port['device_id'] == router_id):
|
||||||
raise l3.RouterInterfaceNotFound(router_id=router_id,
|
raise l3.RouterInterfaceNotFound(router_id=router_id,
|
||||||
port_id=port_id)
|
port_id=port_id)
|
||||||
@ -1684,8 +1706,8 @@ class NsxPluginV2(addr_pair_db.AllowedAddressPairsMixin,
|
|||||||
rport_qry = context.session.query(models_v2.Port)
|
rport_qry = context.session.query(models_v2.Port)
|
||||||
ports = rport_qry.filter_by(
|
ports = rport_qry.filter_by(
|
||||||
device_id=router_id,
|
device_id=router_id,
|
||||||
device_owner=l3_db.DEVICE_OWNER_ROUTER_INTF,
|
network_id=subnet['network_id']).filter(
|
||||||
network_id=subnet['network_id'])
|
models_v2.Port.device_owner.in_(ROUTER_INTERFACE_OWNERS))
|
||||||
for p in ports:
|
for p in ports:
|
||||||
if p['fixed_ips'][0]['subnet_id'] == subnet_id:
|
if p['fixed_ips'][0]['subnet_id'] == subnet_id:
|
||||||
port_id = p['id']
|
port_id = p['id']
|
||||||
|
Loading…
x
Reference in New Issue
Block a user