diff --git a/neutron/db/dvr_mac_db.py b/neutron/db/dvr_mac_db.py index d57a643550c..7f817118b40 100644 --- a/neutron/db/dvr_mac_db.py +++ b/neutron/db/dvr_mac_db.py @@ -14,13 +14,11 @@ # under the License. from neutron_lib import constants -from neutron_lib.db import model_base from neutron_lib import exceptions as n_exc from oslo_config import cfg from oslo_db import exception as db_exc from oslo_log import helpers as log_helpers from oslo_log import log as logging -import sqlalchemy as sa from sqlalchemy import or_ from sqlalchemy.orm import exc @@ -28,13 +26,17 @@ from neutron._i18n import _, _LE from neutron.callbacks import events from neutron.callbacks import registry from neutron.callbacks import resources +from neutron.common import _deprecate from neutron.common import utils from neutron.db import api as db_api +from neutron.db.models import dvr as dvr_models from neutron.db import models_v2 from neutron.extensions import dvr as ext_dvr from neutron.extensions import portbindings from neutron import manager +_deprecate._moved_global('DistributedVirtualRouterMacAddress', + new_module=dvr_models) LOG = logging.getLogger(__name__) @@ -55,15 +57,6 @@ dvr_mac_address_opts = [ cfg.CONF.register_opts(dvr_mac_address_opts) -class DistributedVirtualRouterMacAddress(model_base.BASEV2): - """Represents a v2 neutron distributed virtual router mac address.""" - - __tablename__ = 'dvr_host_macs' - - host = sa.Column(sa.String(255), primary_key=True, nullable=False) - mac_address = sa.Column(sa.String(32), nullable=False, unique=True) - - @db_api.retry_if_session_inactive() def _delete_mac_associated_with_agent(resource, event, trigger, context, agent, **kwargs): @@ -76,8 +69,11 @@ def _delete_mac_associated_with_agent(resource, event, trigger, context, agent, return try: with context.session.begin(subtransactions=True): - entry = (context.session.query(DistributedVirtualRouterMacAddress). - filter(DistributedVirtualRouterMacAddress.host == host). + entry = (context.session.query( + dvr_models.DistributedVirtualRouterMacAddress). + filter( + dvr_models.DistributedVirtualRouterMacAddress.host == + host). one()) context.session.delete(entry) except exc.NoResultFound: @@ -107,9 +103,11 @@ class DVRDbMixin(ext_dvr.DVRMacAddressPluginBase): def _get_dvr_mac_address_by_host(self, context, host): try: - query = context.session.query(DistributedVirtualRouterMacAddress) + query = context.session.query( + dvr_models.DistributedVirtualRouterMacAddress) dvrma = query.filter( - DistributedVirtualRouterMacAddress.host == host).one() + dvr_models.DistributedVirtualRouterMacAddress.host == host + ).one() except exc.NoResultFound: raise ext_dvr.DVRMacAddressNotFound(host=host) return dvrma @@ -119,7 +117,7 @@ class DVRDbMixin(ext_dvr.DVRMacAddressPluginBase): def _create_dvr_mac_address_retry(self, context, host, base_mac): with context.session.begin(subtransactions=True): mac_address = utils.get_random_mac(base_mac) - dvr_mac_binding = DistributedVirtualRouterMacAddress( + dvr_mac_binding = dvr_models.DistributedVirtualRouterMacAddress( host=host, mac_address=mac_address) context.session.add(dvr_mac_binding) LOG.debug("Generated DVR mac for host %(host)s " @@ -144,7 +142,7 @@ class DVRDbMixin(ext_dvr.DVRMacAddressPluginBase): def get_dvr_mac_address_list(self, context): with context.session.begin(subtransactions=True): return (context.session. - query(DistributedVirtualRouterMacAddress).all()) + query(dvr_models.DistributedVirtualRouterMacAddress).all()) def get_dvr_mac_address_by_host(self, context, host): """Determine the MAC for the DVR port associated to host.""" @@ -221,3 +219,6 @@ class DVRDbMixin(ext_dvr.DVRMacAddressPluginBase): internal_port = internal_gateway_ports[0] subnet_info['gateway_mac'] = internal_port['mac_address'] return subnet_info + + +_deprecate._MovedGlobals() diff --git a/neutron/db/migration/models/head.py b/neutron/db/migration/models/head.py index 27a326560a9..95f0e655ce6 100644 --- a/neutron/db/migration/models/head.py +++ b/neutron/db/migration/models/head.py @@ -29,7 +29,6 @@ from neutron.common import utils from neutron.db import agents_db # noqa from neutron.db import agentschedulers_db # noqa from neutron.db import dns_db # noqa -from neutron.db import dvr_mac_db # noqa from neutron.db.extra_dhcp_opt import models as edo_models # noqa from neutron.db import flavors_db # noqa from neutron.db import l3_dvrscheduler_db # noqa diff --git a/neutron/db/models/dvr.py b/neutron/db/models/dvr.py new file mode 100644 index 00000000000..27551ccd48b --- /dev/null +++ b/neutron/db/models/dvr.py @@ -0,0 +1,26 @@ +# Copyright 2016 Hewlett-Packard Development Company, L.P. +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from neutron_lib.db import model_base +import sqlalchemy as sa + + +class DistributedVirtualRouterMacAddress(model_base.BASEV2): + """Represents a v2 neutron distributed virtual router mac address.""" + + __tablename__ = 'dvr_host_macs' + + host = sa.Column(sa.String(255), primary_key=True, nullable=False) + mac_address = sa.Column(sa.String(32), nullable=False, unique=True) diff --git a/neutron/tests/unit/db/test_dvr_mac_db.py b/neutron/tests/unit/db/test_dvr_mac_db.py index 5928fddb853..f495abc0daa 100644 --- a/neutron/tests/unit/db/test_dvr_mac_db.py +++ b/neutron/tests/unit/db/test_dvr_mac_db.py @@ -21,6 +21,7 @@ from neutron.callbacks import registry from neutron.callbacks import resources from neutron import context from neutron.db import dvr_mac_db +from neutron.db.models import dvr as dvr_models from neutron.extensions import dvr from neutron.extensions import portbindings from neutron import manager @@ -42,13 +43,13 @@ class DvrDbMixinTestCase(test_plugin.Ml2PluginV2TestCase): def _create_dvr_mac_entry(self, host, mac_address): with self.ctx.session.begin(subtransactions=True): - entry = dvr_mac_db.DistributedVirtualRouterMacAddress( + entry = dvr_models.DistributedVirtualRouterMacAddress( host=host, mac_address=mac_address) self.ctx.session.add(entry) def test__get_dvr_mac_address_by_host(self): with self.ctx.session.begin(subtransactions=True): - entry = dvr_mac_db.DistributedVirtualRouterMacAddress( + entry = dvr_models.DistributedVirtualRouterMacAddress( host='foo_host', mac_address='foo_mac_address') self.ctx.session.add(entry) result = self.mixin._get_dvr_mac_address_by_host(self.ctx, 'foo_host')