NSXv - add timestamps to NSXv driver tables

Patch adds create and update to NSXv plugin's database tables.
This should help with error tracking, debugging etc.

Change-Id: Ibe158555bcfe16b3c764e5cfaf1066697dd8a6a0
This commit is contained in:
Kobi Samoray
2016-07-06 13:57:22 +03:00
parent 6a0228be11
commit 4ed02f2d6c
5 changed files with 140 additions and 44 deletions

View File

@@ -1 +1 @@
5e564e781d77 aede17d51d0f

View File

@@ -0,0 +1,86 @@
# Copyright 2016 VMware, Inc.
# 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.
"""add timestamp
Revision ID: aede17d51d0f
Revises: 5e564e781d77
Create Date: 2016-04-21 10:45:32.278433
"""
# revision identifiers, used by Alembic.
revision = 'aede17d51d0f'
down_revision = '5e564e781d77'
from alembic import op
import sqlalchemy as sa
tables = [
'nsxv_router_bindings',
'nsxv_edge_vnic_bindings',
'nsxv_edge_dhcp_static_bindings',
'nsxv_internal_networks',
'nsxv_internal_edges',
'nsxv_security_group_section_mappings',
'nsxv_rule_mappings',
'nsxv_port_vnic_mappings',
'nsxv_router_ext_attributes',
'nsxv_tz_network_bindings',
'nsxv_port_index_mappings',
'nsxv_firewall_rule_bindings',
'nsxv_spoofguard_policy_network_mappings',
'nsxv_vdr_dhcp_bindings',
'nsxv_lbaas_loadbalancer_bindings',
'nsxv_lbaas_listener_bindings',
'nsxv_lbaas_pool_bindings',
'nsxv_lbaas_monitor_bindings',
'nsxv_lbaas_certificate_bindings',
'nsxv_subnet_ext_attributes',
'tz_network_bindings',
'neutron_nsx_network_mappings',
'neutron_nsx_security_group_mappings',
'neutron_nsx_firewall_section_mappings',
'neutron_nsx_rule_mappings',
'neutron_nsx_port_mappings',
'neutron_nsx_router_mappings',
'neutron_nsx_service_bindings',
'neutron_nsx_dhcp_bindings',
'multi_provider_networks',
'networkconnections',
'networkgatewaydevicereferences',
'networkgatewaydevices',
'networkgateways',
'maclearningstates',
'lsn_port',
'lsn',
'qosqueues',
'portqueuemappings',
'networkqueuemappings',
'nsx_l2gw_connection_mappings',
'neutron_nsx_qos_policy_mappings',
'vcns_router_bindings']
def upgrade():
for table in tables:
op.add_column(
table,
sa.Column(u'created_at', sa.DateTime(), nullable=True)
)
op.add_column(
table,
sa.Column(u'updated_at', sa.DateTime(), nullable=True)
)

View File

@@ -25,11 +25,12 @@ from sqlalchemy import sql
from neutron.db import model_base from neutron.db import model_base
from neutron.db import models_v2 from neutron.db import models_v2
from oslo_db.sqlalchemy import models
from vmware_nsx.common import nsx_constants from vmware_nsx.common import nsx_constants
class TzNetworkBinding(model_base.BASEV2): class TzNetworkBinding(model_base.BASEV2, models.TimestampMixin):
"""Represents a binding of a virtual network with a transport zone. """Represents a binding of a virtual network with a transport zone.
This model class associates a Neutron network with a transport zone; This model class associates a Neutron network with a transport zone;
@@ -64,7 +65,7 @@ class TzNetworkBinding(model_base.BASEV2):
self.vlan_id) self.vlan_id)
class NeutronNsxNetworkMapping(model_base.BASEV2): class NeutronNsxNetworkMapping(model_base.BASEV2, models.TimestampMixin):
"""Maps neutron network identifiers to NSX identifiers. """Maps neutron network identifiers to NSX identifiers.
Because of chained logical switches more than one mapping might exist Because of chained logical switches more than one mapping might exist
@@ -83,7 +84,7 @@ class NeutronNsxNetworkMapping(model_base.BASEV2):
dvs_id = sa.Column(sa.String(36), nullable=True) dvs_id = sa.Column(sa.String(36), nullable=True)
class NeutronNsxSecurityGroupMapping(model_base.BASEV2): class NeutronNsxSecurityGroupMapping(model_base.BASEV2, models.TimestampMixin):
"""Backend mappings for Neutron Security Group identifiers. """Backend mappings for Neutron Security Group identifiers.
This class maps a neutron security group identifier to the corresponding This class maps a neutron security group identifier to the corresponding
@@ -98,7 +99,8 @@ class NeutronNsxSecurityGroupMapping(model_base.BASEV2):
nsx_id = sa.Column(sa.String(36), primary_key=True) nsx_id = sa.Column(sa.String(36), primary_key=True)
class NeutronNsxFirewallSectionMapping(model_base.BASEV2): class NeutronNsxFirewallSectionMapping(model_base.BASEV2,
models.TimestampMixin):
"""Backend mappings for Neutron Security-group associated fw sections.""" """Backend mappings for Neutron Security-group associated fw sections."""
__tablename__ = 'neutron_nsx_firewall_section_mappings' __tablename__ = 'neutron_nsx_firewall_section_mappings'
@@ -110,7 +112,7 @@ class NeutronNsxFirewallSectionMapping(model_base.BASEV2):
nsx_id = sa.Column(sa.String(36), nullable=False) nsx_id = sa.Column(sa.String(36), nullable=False)
class NeutronNsxRuleMapping(model_base.BASEV2): class NeutronNsxRuleMapping(model_base.BASEV2, models.TimestampMixin):
"""Backend mappings for firewall rules. """Backend mappings for firewall rules.
This class maps a neutron security group rule with NSX firewall rule. This class maps a neutron security group rule with NSX firewall rule.
@@ -126,7 +128,7 @@ class NeutronNsxRuleMapping(model_base.BASEV2):
nsx_id = sa.Column(sa.String(36), nullable=False) nsx_id = sa.Column(sa.String(36), nullable=False)
class NeutronNsxPortMapping(model_base.BASEV2): class NeutronNsxPortMapping(model_base.BASEV2, models.TimestampMixin):
"""Represents the mapping between neutron and nsx port uuids.""" """Represents the mapping between neutron and nsx port uuids."""
__tablename__ = 'neutron_nsx_port_mappings' __tablename__ = 'neutron_nsx_port_mappings'
@@ -142,7 +144,7 @@ class NeutronNsxPortMapping(model_base.BASEV2):
self.nsx_port_id = nsx_port_id self.nsx_port_id = nsx_port_id
class NeutronNsxRouterMapping(model_base.BASEV2): class NeutronNsxRouterMapping(model_base.BASEV2, models.TimestampMixin):
"""Maps neutron router identifiers to NSX identifiers.""" """Maps neutron router identifiers to NSX identifiers."""
__tablename__ = 'neutron_nsx_router_mappings' __tablename__ = 'neutron_nsx_router_mappings'
neutron_id = sa.Column(sa.String(36), neutron_id = sa.Column(sa.String(36),
@@ -151,7 +153,7 @@ class NeutronNsxRouterMapping(model_base.BASEV2):
nsx_id = sa.Column(sa.String(36)) nsx_id = sa.Column(sa.String(36))
class NeutronNsxServiceBinding(model_base.BASEV2): class NeutronNsxServiceBinding(model_base.BASEV2, models.TimestampMixin):
"""Represents a binding of a Neutron network with enabled NSX services.""" """Represents a binding of a Neutron network with enabled NSX services."""
__tablename__ = 'neutron_nsx_service_bindings' __tablename__ = 'neutron_nsx_service_bindings'
network_id = sa.Column(sa.String(36), network_id = sa.Column(sa.String(36),
@@ -165,7 +167,7 @@ class NeutronNsxServiceBinding(model_base.BASEV2):
nsx_service_id = sa.Column(sa.String(36), nullable=False) nsx_service_id = sa.Column(sa.String(36), nullable=False)
class NeutronNsxDhcpBinding(model_base.BASEV2): class NeutronNsxDhcpBinding(model_base.BASEV2, models.TimestampMixin):
"""Represents a binding of a Neutron port with DHCP address binding.""" """Represents a binding of a Neutron port with DHCP address binding."""
__tablename__ = 'neutron_nsx_dhcp_bindings' __tablename__ = 'neutron_nsx_dhcp_bindings'
port_id = sa.Column(sa.String(36), port_id = sa.Column(sa.String(36),
@@ -177,7 +179,7 @@ class NeutronNsxDhcpBinding(model_base.BASEV2):
nsx_binding_id = sa.Column(sa.String(36), nullable=False, primary_key=True) nsx_binding_id = sa.Column(sa.String(36), nullable=False, primary_key=True)
class MultiProviderNetworks(model_base.BASEV2): class MultiProviderNetworks(model_base.BASEV2, models.TimestampMixin):
"""Networks provisioned through multiprovider extension.""" """Networks provisioned through multiprovider extension."""
__tablename__ = 'multi_provider_networks' __tablename__ = 'multi_provider_networks'
@@ -189,7 +191,8 @@ class MultiProviderNetworks(model_base.BASEV2):
self.network_id = network_id self.network_id = network_id
class NetworkConnection(model_base.BASEV2, models_v2.HasTenant): class NetworkConnection(model_base.BASEV2, models_v2.HasTenant,
models.TimestampMixin):
"""Defines a connection between a network gateway and a network.""" """Defines a connection between a network gateway and a network."""
# We use port_id as the primary key as one can connect a gateway # We use port_id as the primary key as one can connect a gateway
# to a network in multiple ways (and we cannot use the same port form # to a network in multiple ways (and we cannot use the same port form
@@ -214,7 +217,7 @@ class NetworkConnection(model_base.BASEV2, models_v2.HasTenant):
primary_key=True) primary_key=True)
class NetworkGatewayDeviceReference(model_base.BASEV2): class NetworkGatewayDeviceReference(model_base.BASEV2, models.TimestampMixin):
id = sa.Column(sa.String(36), primary_key=True) id = sa.Column(sa.String(36), primary_key=True)
network_gateway_id = sa.Column(sa.String(36), network_gateway_id = sa.Column(sa.String(36),
sa.ForeignKey('networkgateways.id', sa.ForeignKey('networkgateways.id',
@@ -224,7 +227,7 @@ class NetworkGatewayDeviceReference(model_base.BASEV2):
class NetworkGatewayDevice(model_base.BASEV2, models_v2.HasId, class NetworkGatewayDevice(model_base.BASEV2, models_v2.HasId,
models_v2.HasTenant): models_v2.HasTenant, models.TimestampMixin):
nsx_id = sa.Column(sa.String(36)) nsx_id = sa.Column(sa.String(36))
# Optional name for the gateway device # Optional name for the gateway device
name = sa.Column(sa.String(255)) name = sa.Column(sa.String(255))
@@ -238,7 +241,7 @@ class NetworkGatewayDevice(model_base.BASEV2, models_v2.HasId,
class NetworkGateway(model_base.BASEV2, models_v2.HasId, class NetworkGateway(model_base.BASEV2, models_v2.HasId,
models_v2.HasTenant): models_v2.HasTenant, models.TimestampMixin):
"""Defines the data model for a network gateway.""" """Defines the data model for a network gateway."""
name = sa.Column(sa.String(255)) name = sa.Column(sa.String(255))
default = sa.Column(sa.Boolean()) default = sa.Column(sa.Boolean())
@@ -248,7 +251,7 @@ class NetworkGateway(model_base.BASEV2, models_v2.HasId,
network_connections = orm.relationship(NetworkConnection, lazy='joined') network_connections = orm.relationship(NetworkConnection, lazy='joined')
class MacLearningState(model_base.BASEV2): class MacLearningState(model_base.BASEV2, models.TimestampMixin):
port_id = sa.Column(sa.String(36), port_id = sa.Column(sa.String(36),
sa.ForeignKey('ports.id', ondelete="CASCADE"), sa.ForeignKey('ports.id', ondelete="CASCADE"),
@@ -263,7 +266,7 @@ class MacLearningState(model_base.BASEV2):
uselist=False, cascade='delete')) uselist=False, cascade='delete'))
class LsnPort(models_v2.model_base.BASEV2): class LsnPort(models_v2.model_base.BASEV2, models.TimestampMixin):
__tablename__ = 'lsn_port' __tablename__ = 'lsn_port'
@@ -282,7 +285,7 @@ class LsnPort(models_v2.model_base.BASEV2):
self.mac_addr = mac_address self.mac_addr = mac_address
class Lsn(models_v2.model_base.BASEV2): class Lsn(models_v2.model_base.BASEV2, models.TimestampMixin):
__tablename__ = 'lsn' __tablename__ = 'lsn'
lsn_id = sa.Column(sa.String(36), primary_key=True) lsn_id = sa.Column(sa.String(36), primary_key=True)
@@ -293,7 +296,8 @@ class Lsn(models_v2.model_base.BASEV2):
self.lsn_id = lsn_id self.lsn_id = lsn_id
class QoSQueue(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant): class QoSQueue(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant,
models.TimestampMixin):
name = sa.Column(sa.String(255)) name = sa.Column(sa.String(255))
default = sa.Column(sa.Boolean, default=False, server_default=sql.false()) default = sa.Column(sa.Boolean, default=False, server_default=sql.false())
min = sa.Column(sa.Integer, nullable=False) min = sa.Column(sa.Integer, nullable=False)
@@ -303,7 +307,7 @@ class QoSQueue(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant):
dscp = sa.Column(sa.Integer) dscp = sa.Column(sa.Integer)
class PortQueueMapping(model_base.BASEV2): class PortQueueMapping(model_base.BASEV2, models.TimestampMixin):
port_id = sa.Column(sa.String(36), port_id = sa.Column(sa.String(36),
sa.ForeignKey("ports.id", ondelete="CASCADE"), sa.ForeignKey("ports.id", ondelete="CASCADE"),
primary_key=True) primary_key=True)
@@ -319,7 +323,7 @@ class PortQueueMapping(model_base.BASEV2):
cascade='delete', lazy='joined')) cascade='delete', lazy='joined'))
class NetworkQueueMapping(model_base.BASEV2): class NetworkQueueMapping(model_base.BASEV2, models.TimestampMixin):
network_id = sa.Column(sa.String(36), network_id = sa.Column(sa.String(36),
sa.ForeignKey("networks.id", ondelete="CASCADE"), sa.ForeignKey("networks.id", ondelete="CASCADE"),
primary_key=True) primary_key=True)
@@ -335,7 +339,7 @@ class NetworkQueueMapping(model_base.BASEV2):
cascade='delete', lazy='joined')) cascade='delete', lazy='joined'))
class NsxL2GWConnectionMapping(model_base.BASEV2): class NsxL2GWConnectionMapping(model_base.BASEV2, models.TimestampMixin):
"""Define a mapping between L2 gateway connection and bridge endpoint.""" """Define a mapping between L2 gateway connection and bridge endpoint."""
__tablename__ = 'nsx_l2gw_connection_mappings' __tablename__ = 'nsx_l2gw_connection_mappings'
connection_id = sa.Column(sa.String(36), connection_id = sa.Column(sa.String(36),
@@ -347,7 +351,7 @@ class NsxL2GWConnectionMapping(model_base.BASEV2):
bridge_endpoint_id = sa.Column(sa.String(36), nullable=False) bridge_endpoint_id = sa.Column(sa.String(36), nullable=False)
class QosPolicySwitchProfile(model_base.BASEV2): class QosPolicySwitchProfile(model_base.BASEV2, models.TimestampMixin):
# Maps neutron qos policy identifiers to NSX-V3 switch profile identifiers # Maps neutron qos policy identifiers to NSX-V3 switch profile identifiers
__tablename__ = 'neutron_nsx_qos_policy_mappings' __tablename__ = 'neutron_nsx_qos_policy_mappings'
qos_policy_id = sa.Column(sa.String(36), qos_policy_id = sa.Column(sa.String(36),

View File

@@ -21,11 +21,13 @@ from sqlalchemy import orm
from neutron.db import l3_db from neutron.db import l3_db
from neutron.db import model_base from neutron.db import model_base
from neutron.db import models_v2 from neutron.db import models_v2
from oslo_db.sqlalchemy import models
from vmware_nsx.common import nsxv_constants from vmware_nsx.common import nsxv_constants
class NsxvRouterBinding(model_base.BASEV2, models_v2.HasStatusDescription): class NsxvRouterBinding(model_base.BASEV2, models_v2.HasStatusDescription,
models.TimestampMixin):
"""Represents the mapping between neutron router and vShield Edge.""" """Represents the mapping between neutron router and vShield Edge."""
__tablename__ = 'nsxv_router_bindings' __tablename__ = 'nsxv_router_bindings'
@@ -52,7 +54,7 @@ class NsxvRouterBinding(model_base.BASEV2, models_v2.HasStatusDescription):
nullable=True) nullable=True)
class NsxvEdgeVnicBinding(model_base.BASEV2): class NsxvEdgeVnicBinding(model_base.BASEV2, models.TimestampMixin):
"""Represents mapping between vShield Edge vnic and neutron netowrk.""" """Represents mapping between vShield Edge vnic and neutron netowrk."""
__tablename__ = 'nsxv_edge_vnic_bindings' __tablename__ = 'nsxv_edge_vnic_bindings'
@@ -66,7 +68,7 @@ class NsxvEdgeVnicBinding(model_base.BASEV2):
network_id = sa.Column(sa.String(36), nullable=True) network_id = sa.Column(sa.String(36), nullable=True)
class NsxvEdgeDhcpStaticBinding(model_base.BASEV2): class NsxvEdgeDhcpStaticBinding(model_base.BASEV2, models.TimestampMixin):
"""Represents mapping between mac addr and bindingId.""" """Represents mapping between mac addr and bindingId."""
__tablename__ = 'nsxv_edge_dhcp_static_bindings' __tablename__ = 'nsxv_edge_dhcp_static_bindings'
@@ -76,7 +78,7 @@ class NsxvEdgeDhcpStaticBinding(model_base.BASEV2):
binding_id = sa.Column(sa.String(36), nullable=False) binding_id = sa.Column(sa.String(36), nullable=False)
class NsxvInternalNetworks(model_base.BASEV2): class NsxvInternalNetworks(model_base.BASEV2, models.TimestampMixin):
"""Represents internal networks between NSXV plugin elements.""" """Represents internal networks between NSXV plugin elements."""
__tablename__ = 'nsxv_internal_networks' __tablename__ = 'nsxv_internal_networks'
@@ -90,7 +92,7 @@ class NsxvInternalNetworks(model_base.BASEV2):
nullable=True) nullable=True)
class NsxvInternalEdges(model_base.BASEV2): class NsxvInternalEdges(model_base.BASEV2, models.TimestampMixin):
"""Represents internal Edge appliances for NSXV plugin operations.""" """Represents internal Edge appliances for NSXV plugin operations."""
__tablename__ = 'nsxv_internal_edges' __tablename__ = 'nsxv_internal_edges'
@@ -102,7 +104,8 @@ class NsxvInternalEdges(model_base.BASEV2):
name='nsxv_internal_edges_purpose')) name='nsxv_internal_edges_purpose'))
class NsxvSecurityGroupSectionMapping(model_base.BASEV2): class NsxvSecurityGroupSectionMapping(model_base.BASEV2,
models.TimestampMixin):
"""Backend mappings for Neutron Rule Sections. """Backend mappings for Neutron Rule Sections.
This class maps a neutron security group identifier to the corresponding This class maps a neutron security group identifier to the corresponding
@@ -117,7 +120,7 @@ class NsxvSecurityGroupSectionMapping(model_base.BASEV2):
ip_section_id = sa.Column(sa.String(100)) ip_section_id = sa.Column(sa.String(100))
class NsxvRuleMapping(model_base.BASEV2): class NsxvRuleMapping(model_base.BASEV2, models.TimestampMixin):
"""Backend mappings for Neutron Rule Sections. """Backend mappings for Neutron Rule Sections.
This class maps a neutron security group identifier to the corresponding This class maps a neutron security group identifier to the corresponding
@@ -133,7 +136,7 @@ class NsxvRuleMapping(model_base.BASEV2):
nsx_rule_id = sa.Column(sa.String(36), primary_key=True) nsx_rule_id = sa.Column(sa.String(36), primary_key=True)
class NsxvPortVnicMapping(model_base.BASEV2): class NsxvPortVnicMapping(model_base.BASEV2, models.TimestampMixin):
"""Maps neutron port to NSXv VM Vnic Id.""" """Maps neutron port to NSXv VM Vnic Id."""
__tablename__ = 'nsxv_port_vnic_mappings' __tablename__ = 'nsxv_port_vnic_mappings'
@@ -144,7 +147,7 @@ class NsxvPortVnicMapping(model_base.BASEV2):
nsx_id = sa.Column(sa.String(42), primary_key=True) nsx_id = sa.Column(sa.String(42), primary_key=True)
class NsxvRouterExtAttributes(model_base.BASEV2): class NsxvRouterExtAttributes(model_base.BASEV2, models.TimestampMixin):
"""Router attributes managed by NSX plugin extensions.""" """Router attributes managed by NSX plugin extensions."""
__tablename__ = 'nsxv_router_ext_attributes' __tablename__ = 'nsxv_router_ext_attributes'
@@ -166,7 +169,7 @@ class NsxvRouterExtAttributes(model_base.BASEV2):
uselist=False, cascade='delete')) uselist=False, cascade='delete'))
class NsxvTzNetworkBinding(model_base.BASEV2): class NsxvTzNetworkBinding(model_base.BASEV2, models.TimestampMixin):
"""Represents a binding of a virtual network with a transport zone. """Represents a binding of a virtual network with a transport zone.
This model class associates a Neutron network with a transport zone; This model class associates a Neutron network with a transport zone;
@@ -199,7 +202,7 @@ class NsxvTzNetworkBinding(model_base.BASEV2):
self.vlan_id) self.vlan_id)
class NsxvPortIndexMapping(model_base.BASEV2): class NsxvPortIndexMapping(model_base.BASEV2, models.TimestampMixin):
"""Associates attached Neutron ports with the instance VNic index.""" """Associates attached Neutron ports with the instance VNic index."""
__tablename__ = 'nsxv_port_index_mappings' __tablename__ = 'nsxv_port_index_mappings'
@@ -220,7 +223,7 @@ class NsxvPortIndexMapping(model_base.BASEV2):
uselist=False, cascade='delete')) uselist=False, cascade='delete'))
class NsxvEdgeFirewallRuleBinding(model_base.BASEV2): class NsxvEdgeFirewallRuleBinding(model_base.BASEV2, models.TimestampMixin):
"""Mapping between firewall rule and edge firewall rule_id.""" """Mapping between firewall rule and edge firewall rule_id."""
__tablename__ = 'nsxv_firewall_rule_bindings' __tablename__ = 'nsxv_firewall_rule_bindings'
@@ -231,7 +234,8 @@ class NsxvEdgeFirewallRuleBinding(model_base.BASEV2):
rule_vse_id = sa.Column(sa.String(36)) rule_vse_id = sa.Column(sa.String(36))
class NsxvSpoofGuardPolicyNetworkMapping(model_base.BASEV2): class NsxvSpoofGuardPolicyNetworkMapping(model_base.BASEV2,
models.TimestampMixin):
"""Mapping between SpoofGuard and neutron networks""" """Mapping between SpoofGuard and neutron networks"""
__tablename__ = 'nsxv_spoofguard_policy_network_mappings' __tablename__ = 'nsxv_spoofguard_policy_network_mappings'
@@ -243,7 +247,7 @@ class NsxvSpoofGuardPolicyNetworkMapping(model_base.BASEV2):
policy_id = sa.Column(sa.String(36), nullable=False) policy_id = sa.Column(sa.String(36), nullable=False)
class NsxvVdrDhcpBinding(model_base.BASEV2): class NsxvVdrDhcpBinding(model_base.BASEV2, models.TimestampMixin):
"""1:1 mapping between VDR and a DHCP Edge.""" """1:1 mapping between VDR and a DHCP Edge."""
__tablename__ = 'nsxv_vdr_dhcp_bindings' __tablename__ = 'nsxv_vdr_dhcp_bindings'
@@ -258,7 +262,7 @@ class NsxvVdrDhcpBinding(model_base.BASEV2):
model_base.BASEV2.__table_args__) model_base.BASEV2.__table_args__)
class NsxvLbaasLoadbalancerBinding(model_base.BASEV2): class NsxvLbaasLoadbalancerBinding(model_base.BASEV2, models.TimestampMixin):
"""Mapping between Edge LB and LBaaSv2""" """Mapping between Edge LB and LBaaSv2"""
__tablename__ = 'nsxv_lbaas_loadbalancer_bindings' __tablename__ = 'nsxv_lbaas_loadbalancer_bindings'
@@ -269,7 +273,7 @@ class NsxvLbaasLoadbalancerBinding(model_base.BASEV2):
vip_address = sa.Column(sa.String(36), nullable=False) vip_address = sa.Column(sa.String(36), nullable=False)
class NsxvLbaasListenerBinding(model_base.BASEV2): class NsxvLbaasListenerBinding(model_base.BASEV2, models.TimestampMixin):
"""Mapping between Edge VSE and LBaaSv2""" """Mapping between Edge VSE and LBaaSv2"""
__tablename__ = 'nsxv_lbaas_listener_bindings' __tablename__ = 'nsxv_lbaas_listener_bindings'
@@ -280,7 +284,7 @@ class NsxvLbaasListenerBinding(model_base.BASEV2):
vse_id = sa.Column(sa.String(36), nullable=False) vse_id = sa.Column(sa.String(36), nullable=False)
class NsxvLbaasPoolBinding(model_base.BASEV2): class NsxvLbaasPoolBinding(model_base.BASEV2, models.TimestampMixin):
"""Mapping between Edge Pool and LBaaSv2""" """Mapping between Edge Pool and LBaaSv2"""
__tablename__ = 'nsxv_lbaas_pool_bindings' __tablename__ = 'nsxv_lbaas_pool_bindings'
@@ -291,7 +295,7 @@ class NsxvLbaasPoolBinding(model_base.BASEV2):
edge_pool_id = sa.Column(sa.String(36), nullable=False) edge_pool_id = sa.Column(sa.String(36), nullable=False)
class NsxvLbaasMonitorBinding(model_base.BASEV2): class NsxvLbaasMonitorBinding(model_base.BASEV2, models.TimestampMixin):
"""Mapping between Edge Monitor and LBaaSv2""" """Mapping between Edge Monitor and LBaaSv2"""
__tablename__ = 'nsxv_lbaas_monitor_bindings' __tablename__ = 'nsxv_lbaas_monitor_bindings'
@@ -304,7 +308,7 @@ class NsxvLbaasMonitorBinding(model_base.BASEV2):
edge_mon_id = sa.Column(sa.String(36), nullable=False) edge_mon_id = sa.Column(sa.String(36), nullable=False)
class NsxvLbaasCertificateBinding(model_base.BASEV2): class NsxvLbaasCertificateBinding(model_base.BASEV2, models.TimestampMixin):
"""Mapping between Edge certificate and LBaaSv2 object""" """Mapping between Edge certificate and LBaaSv2 object"""
__tablename__ = 'nsxv_lbaas_certificate_bindings' __tablename__ = 'nsxv_lbaas_certificate_bindings'
@@ -314,7 +318,7 @@ class NsxvLbaasCertificateBinding(model_base.BASEV2):
edge_cert_id = sa.Column(sa.String(36), nullable=False) edge_cert_id = sa.Column(sa.String(36), nullable=False)
class NsxvSubnetExtAttributes(model_base.BASEV2): class NsxvSubnetExtAttributes(model_base.BASEV2, models.TimestampMixin):
"""Subnet attributes managed by NSX plugin extensions.""" """Subnet attributes managed by NSX plugin extensions."""
__tablename__ = 'nsxv_subnet_ext_attributes' __tablename__ = 'nsxv_subnet_ext_attributes'

View File

@@ -19,9 +19,11 @@ import sqlalchemy as sa
from neutron.db import model_base from neutron.db import model_base
from neutron.db import models_v2 from neutron.db import models_v2
from oslo_db.sqlalchemy import models
class VcnsRouterBinding(model_base.BASEV2, models_v2.HasStatusDescription): class VcnsRouterBinding(model_base.BASEV2, models_v2.HasStatusDescription,
models.TimestampMixin):
"""Represents the mapping between neutron router and vShield Edge.""" """Represents the mapping between neutron router and vShield Edge."""
__tablename__ = 'vcns_router_bindings' __tablename__ = 'vcns_router_bindings'