use l3 api def from neutron-lib

Commit I81748aa0e48b1275df3e1ea41b1d36a117d0097d added the l3 extension
API definition to neutron-lib, commit
I2324a3a02789c798248cab41c278a2d9981d24be rehomed the l3 exceptions and
Ifd79eb1a92853e49bd4ef028e7a7bd89811c6957 shims the l3 exceptions in
neutron.

This patch consumes the l3 API definition from neutron-lib
in prep for If2e66e06b83e15ee2851ea2bc3b64ad366e675dd

Change-Id: I56409beb595c69f2ecaac5349dea35bee14a26ce
This commit is contained in:
Boden R 2017-10-31 15:20:46 -06:00
parent 53ad625179
commit 17213439c9
7 changed files with 32 additions and 29 deletions

View File

@ -19,6 +19,7 @@ import random
from neutron_lib import constants from neutron_lib import constants
from neutron_lib import context as n_context from neutron_lib import context as n_context
from neutron_lib import exceptions from neutron_lib import exceptions
from neutron_lib.exceptions import l3 as l3_exc
from oslo_log import log from oslo_log import log
from oslo_serialization import jsonutils from oslo_serialization import jsonutils
from oslo_service import loopingcall from oslo_service import loopingcall
@ -30,7 +31,6 @@ from neutron.db import api as db_api
from neutron.db.models import external_net as external_net_db from neutron.db.models import external_net as external_net_db
from neutron.db.models import l3 as l3_db from neutron.db.models import l3 as l3_db
from neutron.db import models_v2 from neutron.db import models_v2
from neutron.extensions import l3
from vmware_nsx._i18n import _ from vmware_nsx._i18n import _
from vmware_nsx.api_client import exception as api_exc from vmware_nsx.api_client import exception as api_exc
@ -388,7 +388,7 @@ class NsxSynchronizer(object):
try: try:
router = self._plugin._get_router(context, router = self._plugin._get_router(context,
neutron_router_data['id']) neutron_router_data['id'])
except l3.RouterNotFound: except l3_exc.RouterNotFound:
pass pass
else: else:
router.status = status router.status = status

View File

@ -24,6 +24,7 @@ from neutron_lib import constants
from neutron_lib import context as q_context from neutron_lib import context as q_context
from neutron_lib import exceptions as n_exc from neutron_lib import exceptions as n_exc
from neutron_lib.exceptions import allowedaddresspairs as addr_exc from neutron_lib.exceptions import allowedaddresspairs as addr_exc
from neutron_lib.exceptions import l3 as l3_exc
from neutron_lib.exceptions import port_security as psec_exc from neutron_lib.exceptions import port_security as psec_exc
from oslo_concurrency import lockutils from oslo_concurrency import lockutils
from oslo_config import cfg from oslo_config import cfg
@ -59,7 +60,6 @@ from neutron.db import portbindings_db
from neutron.db import portsecurity_db from neutron.db import portsecurity_db
from neutron.db import quota_db # noqa from neutron.db import quota_db # noqa
from neutron.db import securitygroups_db from neutron.db import securitygroups_db
from neutron.extensions import l3
from neutron.extensions import multiprovidernet as mpnet from neutron.extensions import multiprovidernet as mpnet
from neutron.extensions import providernet from neutron.extensions import providernet
from neutron.extensions import securitygroup as ext_sg from neutron.extensions import securitygroup as ext_sg
@ -1766,8 +1766,8 @@ class NsxPluginV2(addr_pair_db.AllowedAddressPairsMixin,
subnet_id = port['fixed_ips'][0]['subnet_id'] subnet_id = port['fixed_ips'][0]['subnet_id']
if not (port['device_owner'] in constants.ROUTER_INTERFACE_OWNERS if not (port['device_owner'] in constants.ROUTER_INTERFACE_OWNERS
and port['device_id'] == router_id): and port['device_id'] == router_id):
raise l3.RouterInterfaceNotFound(router_id=router_id, raise l3_exc.RouterInterfaceNotFound(
port_id=port_id) router_id=router_id, port_id=port_id)
elif 'subnet_id' in interface_info: elif 'subnet_id' in interface_info:
subnet_id = interface_info['subnet_id'] subnet_id = interface_info['subnet_id']
subnet = self._get_subnet(context, subnet_id) subnet = self._get_subnet(context, subnet_id)
@ -1782,8 +1782,8 @@ class NsxPluginV2(addr_pair_db.AllowedAddressPairsMixin,
port_id = p['id'] port_id = p['id']
break break
else: else:
raise l3.RouterInterfaceNotFoundForSubnet(router_id=router_id, raise l3_exc.RouterInterfaceNotFoundForSubnet(
subnet_id=subnet_id) router_id=router_id, subnet_id=subnet_id)
# Finally remove the data from the Neutron DB # Finally remove the data from the Neutron DB
# This will also destroy the port on the logical switch # This will also destroy the port on the logical switch
info = super(NsxPluginV2, self).remove_router_interface( info = super(NsxPluginV2, self).remove_router_interface(

View File

@ -22,6 +22,7 @@ from neutron_lib.api.definitions import allowedaddresspairs as addr_apidef
from neutron_lib.api.definitions import availability_zone as az_def from neutron_lib.api.definitions import availability_zone as az_def
from neutron_lib.api.definitions import external_net as extnet_apidef from neutron_lib.api.definitions import external_net as extnet_apidef
from neutron_lib.api.definitions import extra_dhcp_opt as ext_edo from neutron_lib.api.definitions import extra_dhcp_opt as ext_edo
from neutron_lib.api.definitions import l3 as l3_apidef
from neutron_lib.api.definitions import network as net_def from neutron_lib.api.definitions import network as net_def
from neutron_lib.api.definitions import port as port_def from neutron_lib.api.definitions import port as port_def
from neutron_lib.api.definitions import port_security as psec from neutron_lib.api.definitions import port_security as psec
@ -37,6 +38,7 @@ from neutron_lib import context as n_context
from neutron_lib.db import constants as db_const from neutron_lib.db import constants as db_const
from neutron_lib import exceptions as n_exc from neutron_lib import exceptions as n_exc
from neutron_lib.exceptions import allowedaddresspairs as addr_exc from neutron_lib.exceptions import allowedaddresspairs as addr_exc
from neutron_lib.exceptions import l3 as l3_exc
from neutron_lib.exceptions import port_security as psec_exc from neutron_lib.exceptions import port_security as psec_exc
from neutron_lib.plugins import constants as plugin_const from neutron_lib.plugins import constants as plugin_const
from neutron_lib.plugins import directory from neutron_lib.plugins import directory
@ -77,7 +79,6 @@ from neutron.db import quota_db # noqa
from neutron.db import securitygroups_db from neutron.db import securitygroups_db
from neutron.db import vlantransparent_db from neutron.db import vlantransparent_db
from neutron.extensions import flavors from neutron.extensions import flavors
from neutron.extensions import l3
from neutron.extensions import multiprovidernet as mpnet from neutron.extensions import multiprovidernet as mpnet
from neutron.extensions import providernet from neutron.extensions import providernet
from neutron.extensions import securitygroup as ext_sg from neutron.extensions import securitygroup as ext_sg
@ -453,7 +454,7 @@ class NsxVPluginV2(addr_pair_db.AllowedAddressPairsMixin,
r["router_type"] = router_type r["router_type"] = router_type
@staticmethod @staticmethod
@resource_extend.extends([l3.ROUTERS]) @resource_extend.extends([l3_apidef.ROUTERS])
def _extend_nsx_router_dict(router_res, router_db): def _extend_nsx_router_dict(router_res, router_db):
router_type_obj = rt_rtr.RouterType_mixin() router_type_obj = rt_rtr.RouterType_mixin()
router_type_obj._extend_nsx_router_dict( router_type_obj._extend_nsx_router_dict(
@ -3172,14 +3173,14 @@ class NsxVPluginV2(addr_pair_db.AllowedAddressPairsMixin,
fips = self.get_floatingips_count(context.elevated(), fips = self.get_floatingips_count(context.elevated(),
filters=router_filter) filters=router_filter)
if fips: if fips:
raise l3.RouterInUse(router_id=router_id) raise l3_exc.RouterInUse(router_id=router_id)
device_filter = {'device_id': [router_id], device_filter = {'device_id': [router_id],
'device_owner': [l3_db.DEVICE_OWNER_ROUTER_INTF]} 'device_owner': [l3_db.DEVICE_OWNER_ROUTER_INTF]}
ports = self.get_ports_count(context.elevated(), ports = self.get_ports_count(context.elevated(),
filters=device_filter) filters=device_filter)
if ports: if ports:
raise l3.RouterInUse(router_id=router_id) raise l3_exc.RouterInUse(router_id=router_id)
def delete_router(self, context, id): def delete_router(self, context, id):
self._check_router_in_use(context, id) self._check_router_in_use(context, id)
@ -3187,7 +3188,7 @@ class NsxVPluginV2(addr_pair_db.AllowedAddressPairsMixin,
# Clear vdr's gw relative components if the router has gw info # Clear vdr's gw relative components if the router has gw info
if router_driver.get_type() == "distributed": if router_driver.get_type() == "distributed":
router = self.get_router(context, id) router = self.get_router(context, id)
if router.get(l3.EXTERNAL_GW_INFO): if router.get(l3_apidef.EXTERNAL_GW_INFO):
try: try:
router_driver._update_router_gw_info(context, id, {}) router_driver._update_router_gw_info(context, id, {})
except Exception as e: except Exception as e:
@ -3248,7 +3249,7 @@ class NsxVPluginV2(addr_pair_db.AllowedAddressPairsMixin,
router_db.flavor_id = r['flavor_id'] router_db.flavor_id = r['flavor_id']
@staticmethod @staticmethod
@resource_extend.extends([l3.ROUTERS]) @resource_extend.extends([l3_apidef.ROUTERS])
def add_flavor_id(router_res, router_db): def add_flavor_id(router_res, router_db):
router_res['flavor_id'] = router_db['flavor_id'] router_res['flavor_id'] = router_db['flavor_id']
@ -3634,10 +3635,10 @@ class NsxVPluginV2(addr_pair_db.AllowedAddressPairsMixin,
msg = _("cannot add an external subnet/port as a router interface") msg = _("cannot add an external subnet/port as a router interface")
raise n_exc.InvalidInput(error_message=msg) raise n_exc.InvalidInput(error_message=msg)
snat_disabled = (router[l3.EXTERNAL_GW_INFO] and snat_disabled = (router[l3_apidef.EXTERNAL_GW_INFO] and
not router[l3.EXTERNAL_GW_INFO]['enable_snat']) not router[l3_apidef.EXTERNAL_GW_INFO]['enable_snat'])
if snat_disabled and subnet_id: if snat_disabled and subnet_id:
gw_network_id = router[l3.EXTERNAL_GW_INFO]['network_id'] gw_network_id = router[l3_apidef.EXTERNAL_GW_INFO]['network_id']
self._validate_address_scope_for_router_interface( self._validate_address_scope_for_router_interface(
context.elevated(), router_id, gw_network_id, subnet_id) context.elevated(), router_id, gw_network_id, subnet_id)

View File

@ -20,12 +20,12 @@ import time
import eventlet import eventlet
import netaddr import netaddr
from neutron.extensions import l3
from neutron_lib.api.definitions import extra_dhcp_opt as ext_edo from neutron_lib.api.definitions import extra_dhcp_opt as ext_edo
from neutron_lib.api import validators from neutron_lib.api import validators
from neutron_lib import constants from neutron_lib import constants
from neutron_lib import context as q_context from neutron_lib import context as q_context
from neutron_lib import exceptions as n_exc from neutron_lib import exceptions as n_exc
from neutron_lib.exceptions import l3 as l3_exc
from oslo_config import cfg from oslo_config import cfg
from oslo_log import log as logging from oslo_log import log as logging
from oslo_serialization import jsonutils from oslo_serialization import jsonutils
@ -2566,7 +2566,7 @@ class NsxVCallbacks(object):
if uuidutils.is_uuid_like(router_id): if uuidutils.is_uuid_like(router_id):
try: try:
router_db = self.plugin._get_router(context, router_id) router_db = self.plugin._get_router(context, router_id)
except l3.RouterNotFound: except l3_exc.RouterNotFound:
# Router might have been deleted before deploy finished # Router might have been deleted before deploy finished
LOG.warning("Router %s not found", name) LOG.warning("Router %s not found", name)
@ -2632,7 +2632,7 @@ class NsxVCallbacks(object):
try: try:
router_db = self.plugin._get_router(context, router_id) router_db = self.plugin._get_router(context, router_id)
router_db['status'] = constants.ERROR router_db['status'] = constants.ERROR
except l3.RouterNotFound: except l3_exc.RouterNotFound:
# Router might have been deleted before deploy finished # Router might have been deleted before deploy finished
LOG.warning("Router %s not found", router_id) LOG.warning("Router %s not found", router_id)

View File

@ -17,11 +17,13 @@ import netaddr
from neutron_lib.api.definitions import allowedaddresspairs as addr_apidef from neutron_lib.api.definitions import allowedaddresspairs as addr_apidef
from neutron_lib.api.definitions import availability_zone as az_def from neutron_lib.api.definitions import availability_zone as az_def
from neutron_lib.api.definitions import external_net as extnet_apidef from neutron_lib.api.definitions import external_net as extnet_apidef
from neutron_lib.api.definitions import l3 as l3_apidef
from neutron_lib.api.definitions import network as net_def from neutron_lib.api.definitions import network as net_def
from neutron_lib.api.definitions import port_security as psec from neutron_lib.api.definitions import port_security as psec
from neutron_lib.api import faults from neutron_lib.api import faults
from neutron_lib.api.validators import availability_zone as az_validator from neutron_lib.api.validators import availability_zone as az_validator
from neutron_lib.exceptions import allowedaddresspairs as addr_exc from neutron_lib.exceptions import allowedaddresspairs as addr_exc
from neutron_lib.exceptions import l3 as l3_exc
from neutron_lib.exceptions import port_security as psec_exc from neutron_lib.exceptions import port_security as psec_exc
from neutron_lib.services.qos import constants as qos_consts from neutron_lib.services.qos import constants as qos_consts
@ -50,7 +52,6 @@ from neutron.db import models_v2
from neutron.db import portbindings_db from neutron.db import portbindings_db
from neutron.db import portsecurity_db from neutron.db import portsecurity_db
from neutron.db import securitygroups_db from neutron.db import securitygroups_db
from neutron.extensions import l3
from neutron.extensions import providernet from neutron.extensions import providernet
from neutron.extensions import securitygroup as ext_sg from neutron.extensions import securitygroup as ext_sg
from neutron.plugins.common import utils as n_utils from neutron.plugins.common import utils as n_utils
@ -3201,7 +3202,7 @@ class NsxV3Plugin(agentschedulers_db.AZDhcpAgentSchedulerDbMixin,
nsx_rpc.handle_router_metadata_access(self, context, router_id, nsx_rpc.handle_router_metadata_access(self, context, router_id,
interface=None) interface=None)
router = self.get_router(context, router_id) router = self.get_router(context, router_id)
if router.get(l3.EXTERNAL_GW_INFO): if router.get(l3_apidef.EXTERNAL_GW_INFO):
self._update_router_gw_info(context, router_id, {}) self._update_router_gw_info(context, router_id, {})
nsx_router_id = nsx_db.get_nsx_router_id(context.session, nsx_router_id = nsx_db.get_nsx_router_id(context.session,
router_id) router_id)
@ -3522,7 +3523,7 @@ class NsxV3Plugin(agentschedulers_db.AZDhcpAgentSchedulerDbMixin,
raise n_exc.InvalidInput(error_message=err_msg) raise n_exc.InvalidInput(error_message=err_msg)
else: else:
# attach to multiple routers # attach to multiple routers
raise l3.RouterInterfaceAttachmentConflict(reason=err_msg) raise l3_exc.RouterInterfaceAttachmentConflict(reason=err_msg)
def _add_router_interface_wrapper(self, context, router_id, def _add_router_interface_wrapper(self, context, router_id,
interface_info): interface_info):
@ -3633,8 +3634,8 @@ class NsxV3Plugin(agentschedulers_db.AZDhcpAgentSchedulerDbMixin,
context, router_id, subnet_id) context, router_id, subnet_id)
if not (port['device_owner'] in const.ROUTER_INTERFACE_OWNERS if not (port['device_owner'] in const.ROUTER_INTERFACE_OWNERS
and port['device_id'] == router_id): and port['device_id'] == router_id):
raise l3.RouterInterfaceNotFound(router_id=router_id, raise l3_exc.RouterInterfaceNotFound(
port_id=port_id) router_id=router_id, port_id=port_id)
elif 'subnet_id' in interface_info: elif 'subnet_id' in interface_info:
subnet_id = interface_info['subnet_id'] subnet_id = interface_info['subnet_id']
self._confirm_router_interface_not_in_use( self._confirm_router_interface_not_in_use(
@ -3650,8 +3651,8 @@ class NsxV3Plugin(agentschedulers_db.AZDhcpAgentSchedulerDbMixin,
port_id = p['id'] port_id = p['id']
break break
else: else:
raise l3.RouterInterfaceNotFoundForSubnet(router_id=router_id, raise l3_exc.RouterInterfaceNotFoundForSubnet(
subnet_id=subnet_id) router_id=router_id, subnet_id=subnet_id)
try: try:
# TODO(berlin): Revocate announce the subnet on tier0 if # TODO(berlin): Revocate announce the subnet on tier0 if
# enable_snat is False # enable_snat is False

View File

@ -22,11 +22,11 @@ import mock
from neutron_lib import constants from neutron_lib import constants
from neutron_lib import context from neutron_lib import context
from neutron_lib import exceptions as n_exc from neutron_lib import exceptions as n_exc
from neutron_lib.exceptions import l3 as l3_exc
from oslo_config import cfg from oslo_config import cfg
from oslo_log import log from oslo_log import log
from oslo_serialization import jsonutils from oslo_serialization import jsonutils
from neutron.extensions import l3
from neutron.tests import base from neutron.tests import base
from neutron.tests.unit.api.v2 import test_base from neutron.tests.unit.api.v2 import test_base
from neutron.tests.unit import testlib_api from neutron.tests.unit import testlib_api
@ -657,7 +657,7 @@ class SyncTestCase(testlib_api.SqlTestCase):
q_rtr_data = self._plugin._get_router(ctx, q_rtr_id) q_rtr_data = self._plugin._get_router(ctx, q_rtr_id)
with mock.patch.object(self._plugin, with mock.patch.object(self._plugin,
'_get_router') as _get_router: '_get_router') as _get_router:
_get_router.side_effect = l3.RouterNotFound( _get_router.side_effect = l3_exc.RouterNotFound(
router_id=q_rtr_data['id']) router_id=q_rtr_data['id'])
self._plugin._synchronizer.synchronize_router(ctx, q_rtr_data) self._plugin._synchronizer.synchronize_router(ctx, q_rtr_data)

View File

@ -41,6 +41,7 @@ from neutron.tests.unit import testlib_api
from neutron_lib.api.definitions import allowedaddresspairs as addrp_apidef from neutron_lib.api.definitions import allowedaddresspairs as addrp_apidef
from neutron_lib.api.definitions import external_net as extnet_apidef from neutron_lib.api.definitions import external_net as extnet_apidef
from neutron_lib.api.definitions import extra_dhcp_opt as edo_ext from neutron_lib.api.definitions import extra_dhcp_opt as edo_ext
from neutron_lib.api.definitions import l3 as l3_apidef
from neutron_lib.api.definitions import port_security as psec from neutron_lib.api.definitions import port_security as psec
from neutron_lib.api.definitions import portbindings from neutron_lib.api.definitions import portbindings
from neutron_lib.api.definitions import provider_net as pnet from neutron_lib.api.definitions import provider_net as pnet
@ -5623,7 +5624,7 @@ class TestRouterFlavorTestCase(extension.ExtensionTestCase,
self.plugin._process_router_flavor_create = mock.Mock() self.plugin._process_router_flavor_create = mock.Mock()
self.plugin.register_dict_extend_funcs( self.plugin.register_dict_extend_funcs(
l3.ROUTERS, [self._mock_add_flavor_id]) l3_apidef.ROUTERS, [self._mock_add_flavor_id])
# init the availability zones # init the availability zones
self.az_name = 'az7' self.az_name = 'az7'