#
from oslo.db import exception as d_exc
-from sqlalchemy import Column
-from sqlalchemy import ForeignKey
from sqlalchemy import orm
-from sqlalchemy import String
-from neutron.db import models_v2
from neutron.openstack.common import log as logging
from neutron.plugins.vmware.common import exceptions as p_exc
+from neutron.plugins.vmware.dbexts import nsx_models
LOG = logging.getLogger(__name__)
-class LsnPort(models_v2.model_base.BASEV2):
-
- __tablename__ = 'lsn_port'
-
- lsn_port_id = Column(String(36), primary_key=True)
-
- lsn_id = Column(String(36), ForeignKey('lsn.lsn_id', ondelete="CASCADE"),
- nullable=False)
- sub_id = Column(String(36), nullable=False, unique=True)
- mac_addr = Column(String(32), nullable=False, unique=True)
-
- def __init__(self, lsn_port_id, subnet_id, mac_address, lsn_id):
- self.lsn_port_id = lsn_port_id
- self.lsn_id = lsn_id
- self.sub_id = subnet_id
- self.mac_addr = mac_address
-
-
-class Lsn(models_v2.model_base.BASEV2):
- __tablename__ = 'lsn'
-
- lsn_id = Column(String(36), primary_key=True)
- net_id = Column(String(36), nullable=False)
-
- def __init__(self, net_id, lsn_id):
- self.net_id = net_id
- self.lsn_id = lsn_id
-
-
def lsn_add(context, network_id, lsn_id):
"""Add Logical Service Node information to persistent datastore."""
with context.session.begin(subtransactions=True):
- lsn = Lsn(network_id, lsn_id)
+ lsn = nsx_models.Lsn(network_id, lsn_id)
context.session.add(lsn)
def lsn_remove(context, lsn_id):
"""Remove Logical Service Node information from datastore given its id."""
with context.session.begin(subtransactions=True):
- context.session.query(Lsn).filter_by(lsn_id=lsn_id).delete()
+ context.session.query(nsx_models.Lsn).filter_by(lsn_id=lsn_id).delete()
def lsn_remove_for_network(context, network_id):
"""Remove information about the Logical Service Node given its network."""
with context.session.begin(subtransactions=True):
- context.session.query(Lsn).filter_by(net_id=network_id).delete()
+ context.session.query(nsx_models.Lsn).filter_by(
+ net_id=network_id).delete()
def lsn_get_for_network(context, network_id, raise_on_err=True):
"""Retrieve LSN information given its network id."""
- query = context.session.query(Lsn)
+ query = context.session.query(nsx_models.Lsn)
try:
return query.filter_by(net_id=network_id).one()
except (orm.exc.NoResultFound, d_exc.DBError):
def lsn_port_add_for_lsn(context, lsn_port_id, subnet_id, mac, lsn_id):
"""Add Logical Service Node Port information to persistent datastore."""
with context.session.begin(subtransactions=True):
- lsn_port = LsnPort(lsn_port_id, subnet_id, mac, lsn_id)
+ lsn_port = nsx_models.LsnPort(lsn_port_id, subnet_id, mac, lsn_id)
context.session.add(lsn_port)
"""Return Logical Service Node Port information given its subnet id."""
with context.session.begin(subtransactions=True):
try:
- return (context.session.query(LsnPort).
+ return (context.session.query(nsx_models.LsnPort).
filter_by(sub_id=subnet_id).one())
except (orm.exc.NoResultFound, d_exc.DBError):
if raise_on_err:
"""Return Logical Service Node Port information given its mac address."""
with context.session.begin(subtransactions=True):
try:
- return (context.session.query(LsnPort).
+ return (context.session.query(nsx_models.LsnPort).
filter_by(mac_addr=mac_address).one())
except (orm.exc.NoResultFound, d_exc.DBError):
if raise_on_err:
def lsn_port_remove(context, lsn_port_id):
"""Remove Logical Service Node port from the given Logical Service Node."""
with context.session.begin(subtransactions=True):
- (context.session.query(LsnPort).
+ (context.session.query(nsx_models.LsnPort).
filter_by(lsn_port_id=lsn_port_id).delete())
# under the License.
#
-import sqlalchemy as sa
-from sqlalchemy import orm
from sqlalchemy.orm import exc
from neutron.api.v2 import attributes
from neutron.db import db_base_plugin_v2
-from neutron.db import model_base
-from neutron.db import models_v2
from neutron.openstack.common import log as logging
+from neutron.plugins.vmware.dbexts import nsx_models
from neutron.plugins.vmware.extensions import maclearning as mac
LOG = logging.getLogger(__name__)
-class MacLearningState(model_base.BASEV2):
-
- port_id = sa.Column(sa.String(36),
- sa.ForeignKey('ports.id', ondelete="CASCADE"),
- primary_key=True)
- mac_learning_enabled = sa.Column(sa.Boolean(), nullable=False)
-
- # Add a relationship to the Port model using the backref attribute.
- # This will instruct SQLAlchemy to eagerly load this association.
- port = orm.relationship(
- models_v2.Port,
- backref=orm.backref("mac_learning_state", lazy='joined',
- uselist=False, cascade='delete'))
-
-
class MacLearningDbMixin(object):
"""Mixin class for mac learning."""
def _update_mac_learning_state(self, context, port_id, enabled):
try:
- query = self._model_query(context, MacLearningState)
- state = query.filter(MacLearningState.port_id == port_id).one()
+ query = self._model_query(context, nsx_models.MacLearningState)
+ state = query.filter(
+ nsx_models.MacLearningState.port_id == port_id).one()
state.update({mac.MAC_LEARNING: enabled})
except exc.NoResultFound:
self._create_mac_learning_state(context,
def _create_mac_learning_state(self, context, port):
with context.session.begin(subtransactions=True):
enabled = port[mac.MAC_LEARNING]
- state = MacLearningState(port_id=port['id'],
- mac_learning_enabled=enabled)
+ state = nsx_models.MacLearningState(
+ port_id=port['id'],
+ mac_learning_enabled=enabled)
context.session.add(state)
return self._make_mac_learning_state_dict(state)
backref='networkgateways',
cascade='all,delete')
network_connections = orm.relationship(NetworkConnection, lazy='joined')
+
+
+class MacLearningState(model_base.BASEV2):
+
+ port_id = sa.Column(sa.String(36),
+ sa.ForeignKey('ports.id', ondelete="CASCADE"),
+ primary_key=True)
+ mac_learning_enabled = sa.Column(sa.Boolean(), nullable=False)
+
+ # Add a relationship to the Port model using the backref attribute.
+ # This will instruct SQLAlchemy to eagerly load this association.
+ port = orm.relationship(
+ models_v2.Port,
+ backref=orm.backref("mac_learning_state", lazy='joined',
+ uselist=False, cascade='delete'))
+
+
+class LsnPort(models_v2.model_base.BASEV2):
+
+ __tablename__ = 'lsn_port'
+
+ lsn_port_id = sa.Column(sa.String(36), primary_key=True)
+
+ lsn_id = sa.Column(sa.String(36),
+ sa.ForeignKey('lsn.lsn_id', ondelete="CASCADE"),
+ nullable=False)
+ sub_id = sa.Column(sa.String(36), nullable=False, unique=True)
+ mac_addr = sa.Column(sa.String(32), nullable=False, unique=True)
+
+ def __init__(self, lsn_port_id, subnet_id, mac_address, lsn_id):
+ self.lsn_port_id = lsn_port_id
+ self.lsn_id = lsn_id
+ self.sub_id = subnet_id
+ self.mac_addr = mac_address
+
+
+class Lsn(models_v2.model_base.BASEV2):
+ __tablename__ = 'lsn'
+
+ lsn_id = sa.Column(sa.String(36), primary_key=True)
+ net_id = sa.Column(sa.String(36), nullable=False)
+
+ def __init__(self, net_id, lsn_id):
+ self.net_id = net_id
+ self.lsn_id = lsn_id