From e1a832dad8848d5ae41f27d0bf79cbdcc0b4ebaa Mon Sep 17 00:00:00 2001 From: sindhudevale Date: Mon, 15 Aug 2016 18:34:38 +0000 Subject: [PATCH] Relocate Geneve DB models To avoid cyclic imports for OVO work. Change-Id: Iebd5a44d2195276e92111cb8964b90fc2955e2de Partial-Bug: #1597913 --- neutron/db/migration/models/head.py | 1 - .../db/models/plugins/ml2/geneveallocation.py | 42 +++++++++++++++++++ neutron/plugins/ml2/drivers/type_geneve.py | 42 +++++-------------- 3 files changed, 53 insertions(+), 32 deletions(-) create mode 100644 neutron/db/models/plugins/ml2/geneveallocation.py diff --git a/neutron/db/migration/models/head.py b/neutron/db/migration/models/head.py index c219cecaa6b..87c8d5675ce 100644 --- a/neutron/db/migration/models/head.py +++ b/neutron/db/migration/models/head.py @@ -50,7 +50,6 @@ from neutron.db import segments_db # noqa from neutron.db import servicetype_db # noqa from neutron.db import tag_db # noqa from neutron.ipam.drivers.neutrondb_ipam import db_models # noqa -from neutron.plugins.ml2.drivers import type_geneve # noqa from neutron.plugins.ml2 import models as ml2_models # noqa from neutron.services.auto_allocate import models as aa_models # noqa from neutron.services.segments import db # noqa diff --git a/neutron/db/models/plugins/ml2/geneveallocation.py b/neutron/db/models/plugins/ml2/geneveallocation.py new file mode 100644 index 00000000000..6ded6eaf038 --- /dev/null +++ b/neutron/db/models/plugins/ml2/geneveallocation.py @@ -0,0 +1,42 @@ +# 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. + +import sqlalchemy as sa +from sqlalchemy import sql + +from neutron_lib.db import model_base + + +class GeneveAllocation(model_base.BASEV2): + + __tablename__ = 'ml2_geneve_allocations' + + geneve_vni = sa.Column(sa.Integer, nullable=False, primary_key=True, + autoincrement=False) + allocated = sa.Column(sa.Boolean, nullable=False, default=False, + server_default=sql.false(), index=True) + + +class GeneveEndpoints(model_base.BASEV2): + """Represents tunnel endpoint in RPC mode.""" + + __tablename__ = 'ml2_geneve_endpoints' + __table_args__ = ( + sa.UniqueConstraint('host', + name='unique_ml2_geneve_endpoints0host'), + model_base.BASEV2.__table_args__ + ) + ip_address = sa.Column(sa.String(64), primary_key=True) + host = sa.Column(sa.String(255), nullable=True) + + def __repr__(self): + return "" % self.ip_address diff --git a/neutron/plugins/ml2/drivers/type_geneve.py b/neutron/plugins/ml2/drivers/type_geneve.py index 4f31191a4fd..5b6e95c7b02 100644 --- a/neutron/plugins/ml2/drivers/type_geneve.py +++ b/neutron/plugins/ml2/drivers/type_geneve.py @@ -13,19 +13,23 @@ # License for the specific language governing permissions and limitations # under the License. -from neutron_lib.db import model_base + from neutron_lib import exceptions as n_exc from oslo_config import cfg from oslo_log import log -import sqlalchemy as sa -from sqlalchemy import sql from neutron._i18n import _, _LE +from neutron.common import _deprecate +from neutron.db.models.plugins.ml2 import geneveallocation \ + as geneve_model from neutron.plugins.common import constants as p_const from neutron.plugins.ml2.drivers import type_tunnel LOG = log.getLogger(__name__) +_deprecate._moved_global('GeneveAllocation', new_module=geneve_model) +_deprecate._moved_global('GeneveEndpoints', new_module=geneve_model) + geneve_opts = [ cfg.ListOpt('vni_ranges', default=[], @@ -47,37 +51,11 @@ geneve_opts = [ cfg.CONF.register_opts(geneve_opts, "ml2_type_geneve") -class GeneveAllocation(model_base.BASEV2): - - __tablename__ = 'ml2_geneve_allocations' - - geneve_vni = sa.Column(sa.Integer, nullable=False, primary_key=True, - autoincrement=False) - allocated = sa.Column(sa.Boolean, nullable=False, default=False, - server_default=sql.false(), index=True) - - -class GeneveEndpoints(model_base.BASEV2): - """Represents tunnel endpoint in RPC mode.""" - - __tablename__ = 'ml2_geneve_endpoints' - __table_args__ = ( - sa.UniqueConstraint('host', - name='unique_ml2_geneve_endpoints0host'), - model_base.BASEV2.__table_args__ - ) - ip_address = sa.Column(sa.String(64), primary_key=True) - host = sa.Column(sa.String(255), nullable=True) - - def __repr__(self): - return "" % self.ip_address - - class GeneveTypeDriver(type_tunnel.EndpointTunnelTypeDriver): def __init__(self): - super(GeneveTypeDriver, self).__init__(GeneveAllocation, - GeneveEndpoints) + super(GeneveTypeDriver, self).__init__(geneve_model.GeneveAllocation, + geneve_model.GeneveEndpoints) self.max_encap_size = cfg.CONF.ml2_type_geneve.max_header_size def get_type(self): @@ -104,3 +82,5 @@ class GeneveTypeDriver(type_tunnel.EndpointTunnelTypeDriver): def get_mtu(self, physical_network=None): mtu = super(GeneveTypeDriver, self).get_mtu() return mtu - self.max_encap_size if mtu else 0 + +_deprecate._MovedGlobals()