from oslo.db import exception as db_exc
import sqlalchemy as sa
from sqlalchemy.orm import exc
+from sqlalchemy import sql
from neutron.common import rpc as n_rpc
from neutron.db import model_base
# TOPIC.host is a target topic
host = sa.Column(sa.String(255), nullable=False)
admin_state_up = sa.Column(sa.Boolean, default=True,
- nullable=False)
+ server_default=sql.true(), nullable=False)
# the time when first report came from agents
created_at = sa.Column(sa.DateTime, nullable=False)
# the time when first report came after agents start
#
import sqlalchemy as sa
+from sqlalchemy import sql
from neutron.db import db_base_plugin_v2
from neutron.db import l3_db
# Modify the Router Data Model adding the enable_snat attribute
setattr(l3_db.Router, 'enable_snat',
- sa.Column(sa.Boolean, default=True, nullable=False))
+ sa.Column(sa.Boolean, default=True, server_default=sql.true(),
+ nullable=False))
class L3_NAT_db_mixin(l3_db.L3_NAT_db_mixin):
import netaddr
import sqlalchemy as sa
from sqlalchemy import orm
+from sqlalchemy import sql
from neutron.api.rpc.agentnotifiers import metering_rpc_agent_api
from neutron.common import constants
sa.ForeignKey("meteringlabels.id",
ondelete="CASCADE"),
nullable=False)
- excluded = sa.Column(sa.Boolean, default=False)
+ excluded = sa.Column(sa.Boolean, default=False, server_default=sql.false())
class MeteringLabel(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant):
--- /dev/null
+# Copyright 2014 OpenStack Foundation
+#
+# 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.
+#
+
+"""set_server_default
+Revision ID: 5446f2a45467
+Revises: 2db5203cb7a9
+Create Date: 2014-07-07 18:31:30.384522
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '5446f2a45467'
+down_revision = '2db5203cb7a9'
+
+
+from alembic import op
+import sqlalchemy as sa
+import sqlalchemy.sql
+
+
+from neutron.plugins.cisco.common import cisco_constants
+
+PLUGINS = {
+ 'brocade': 'neutron.plugins.brocade.NeutronPlugin.BrocadePluginV2',
+ 'cisco': 'neutron.plugins.cisco.network_plugin.PluginV2',
+ 'ml2': 'neutron.plugins.ml2.plugin.Ml2Plugin',
+ 'mlnx': 'neutron.plugins.mlnx.mlnx_plugin.MellanoxEswitchPlugin',
+ 'vmware': [
+ 'neutron.plugins.nicira.NeutronPlugin.NvpPluginV2',
+ 'neutron.plugins.nicira.NeutronServicePlugin.NvpAdvancedPlugin',
+ 'neutron.plugins.vmware.plugin.NsxPlugin',
+ 'neutron.plugins.vmware.plugin.NsxServicePlugin',
+ ],
+ 'agents': [
+ 'neutron.plugins.linuxbridge.lb_neutron_plugin.LinuxBridgePluginV2',
+ 'neutron.plugins.nec.nec_plugin.NECPluginV2',
+ 'neutron.plugins.oneconvergence.plugin.OneConvergencePluginV2',
+ 'neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2',
+ 'neutron.plugins.ibm.sdnve_neutron_plugin.SdnvePluginV2',
+ 'neutron.services.loadbalancer.plugin.LoadBalancerPlugin',
+ ],
+}
+
+
+def upgrade(active_plugins=None, options=None):
+ run(active_plugins, True)
+
+
+def downgrade(active_plugins=None, options=None):
+ run(active_plugins, None)
+
+
+def run(active_plugins, default):
+ if PLUGINS['ml2'] in active_plugins:
+ set_default_ml2(default)
+ if PLUGINS['mlnx'] in active_plugins:
+ set_default_agents(default)
+ set_default_mlnx(default)
+ if PLUGINS['brocade'] in active_plugins:
+ set_default_agents(default)
+ set_default_brocade(default)
+ if PLUGINS['cisco'] in active_plugins:
+ set_default_cisco(default)
+ if set(PLUGINS['vmware']) & set(active_plugins):
+ set_default_vmware(default)
+ set_default_agents(default)
+ if set(PLUGINS['agents']) & set(active_plugins):
+ set_default_agents(default)
+
+
+def set_default_brocade(default):
+ if default:
+ default = ''
+ op.alter_column('brocadeports', 'port_id',
+ server_default=default, existing_type=sa.String(36))
+
+
+def set_default_mlnx(default):
+ if default:
+ default = sqlalchemy.sql.false()
+ op.alter_column('segmentation_id_allocation', 'allocated',
+ server_default=default, existing_nullable=False,
+ existing_type=sa.Boolean)
+
+
+def set_default_cisco(default):
+ if default:
+ default = sqlalchemy.sql.false()
+ op.alter_column('cisco_n1kv_profile_bindings', 'tenant_id',
+ existing_type=sa.String(length=36),
+ server_default=cisco_constants.TENANT_ID_NOT_SET,
+ existing_nullable=False)
+ else:
+ op.alter_column('cisco_n1kv_profile_bindings', 'tenant_id',
+ existing_type=sa.String(length=36),
+ server_default=None, existing_nullable=False)
+ op.alter_column('cisco_network_profiles', 'multicast_ip_index',
+ server_default=default, existing_type=sa.Integer)
+ op.alter_column('cisco_n1kv_vlan_allocations', 'allocated',
+ existing_type=sa.Boolean,
+ server_default=default, existing_nullable=False)
+ op.alter_column('cisco_n1kv_vxlan_allocations', 'allocated',
+ existing_type=sa.Boolean,
+ server_default=default, existing_nullable=False)
+
+
+def set_default_vmware(default=None):
+ if default:
+ default = sqlalchemy.sql.false()
+ op.alter_column('nsxrouterextattributess', 'service_router',
+ server_default=default, existing_nullable=False,
+ existing_type=sa.Boolean)
+ op.alter_column('nsxrouterextattributess', 'distributed',
+ server_default=default, existing_nullable=False,
+ existing_type=sa.Boolean)
+ op.alter_column('qosqueues', 'default',
+ server_default=default, existing_type=sa.Boolean)
+
+
+def set_default_agents(default=None):
+ if default:
+ default = sqlalchemy.sql.true()
+ op.alter_column('agents', 'admin_state_up',
+ server_default=default, existing_nullable=False,
+ existing_type=sa.Boolean)
+
+
+def set_default_ml2(default=None):
+ if default:
+ default = sqlalchemy.sql.false()
+ op.alter_column('ml2_gre_allocations', 'allocated',
+ server_default=default, existing_nullable=False,
+ existing_type=sa.Boolean)
+ op.alter_column('ml2_vxlan_allocations', 'allocated',
+ server_default=default, existing_nullable=False,
+ existing_type=sa.Boolean)
-2db5203cb7a9
\ No newline at end of file
+5446f2a45467
\ No newline at end of file
class BrocadePort(model_base.BASEV2):
"""Schema for brocade port."""
- port_id = sa.Column(sa.String(36), primary_key=True, default="")
+ port_id = sa.Column(sa.String(36), primary_key=True, default="",
+ server_default='')
network_id = sa.Column(sa.String(36),
sa.ForeignKey("brocadenetworks.id"),
nullable=False)
# @author: Rudrajit Tapadar, Cisco Systems Inc.
import sqlalchemy as sa
+from sqlalchemy import sql
from neutron.db import model_base
from neutron.db import models_v2
primary_key=True)
vlan_id = sa.Column(sa.Integer, nullable=False, primary_key=True,
autoincrement=False)
- allocated = sa.Column(sa.Boolean, nullable=False, default=False)
+ allocated = sa.Column(sa.Boolean, nullable=False, default=False,
+ server_default=sql.false())
network_profile_id = sa.Column(sa.String(36),
sa.ForeignKey('cisco_network_profiles.id',
ondelete="CASCADE"),
vxlan_id = sa.Column(sa.Integer, nullable=False, primary_key=True,
autoincrement=False)
- allocated = sa.Column(sa.Boolean, nullable=False, default=False)
+ allocated = sa.Column(sa.Boolean, nullable=False, default=False,
+ server_default=sql.false())
network_profile_id = sa.Column(sa.String(36),
sa.ForeignKey('cisco_network_profiles.id',
ondelete="CASCADE"),
nullable=False)
sub_type = sa.Column(sa.String(255))
segment_range = sa.Column(sa.String(255))
- multicast_ip_index = sa.Column(sa.Integer, default=0)
+ multicast_ip_index = sa.Column(sa.Integer, default=0,
+ server_default=sql.false())
multicast_ip_range = sa.Column(sa.String(255))
physical_network = sa.Column(sa.String(255))
name='profile_type'))
tenant_id = sa.Column(sa.String(36),
primary_key=True,
- default=cisco_constants.TENANT_ID_NOT_SET)
+ default=cisco_constants.TENANT_ID_NOT_SET,
+ server_default=cisco_constants.TENANT_ID_NOT_SET)
profile_id = sa.Column(sa.String(36), primary_key=True)
# @author: Arvind Somya (asomya@cisco.com), Cisco Systems Inc.
import sqlalchemy as sa
+from sqlalchemy import sql
from neutron.db import api as db_api
from neutron.db import model_base
network_id = sa.Column(sa.String(255), nullable=False, primary_key=True)
epg_id = sa.Column(sa.String(64), nullable=False)
segmentation_id = sa.Column(sa.String(64), nullable=False)
- provider = sa.Column(sa.Boolean, default=False, nullable=False)
+ provider = sa.Column(sa.Boolean, default=False, server_default=sql.false(),
+ nullable=False)
class PortProfile(model_base.BASEV2):
from six import moves
import sqlalchemy as sa
from sqlalchemy.orm import exc as sa_exc
+from sqlalchemy import sql
from neutron.common import exceptions as exc
from neutron.db import api as db_api
gre_id = sa.Column(sa.Integer, nullable=False, primary_key=True,
autoincrement=False)
- allocated = sa.Column(sa.Boolean, nullable=False, default=False)
+ allocated = sa.Column(sa.Boolean, nullable=False, default=False,
+ server_default=sql.false())
class GreEndpoints(model_base.BASEV2):
from oslo.config import cfg
import sqlalchemy as sa
from sqlalchemy.orm import exc as sa_exc
+from sqlalchemy import sql
from neutron.common import exceptions as exc
from neutron.db import api as db_api
vxlan_vni = sa.Column(sa.Integer, nullable=False, primary_key=True,
autoincrement=False)
- allocated = sa.Column(sa.Boolean, nullable=False, default=False)
+ allocated = sa.Column(sa.Boolean, nullable=False, default=False,
+ server_default=sql.false())
class VxlanEndpoints(model_base.BASEV2):
# limitations under the License.
import sqlalchemy as sa
+from sqlalchemy import sql
from neutron.db import model_base
primary_key=True)
segmentation_id = sa.Column(sa.Integer, nullable=False, primary_key=True,
autoincrement=False)
- allocated = sa.Column(sa.Boolean, nullable=False, default=False)
+ allocated = sa.Column(sa.Boolean, nullable=False, default=False,
+ server_default=sql.false())
def __init__(self, physical_network, segmentation_id):
self.physical_network = physical_network
from sqlalchemy import Boolean, Column, Enum, ForeignKey, Integer, String
from sqlalchemy import orm
+from sqlalchemy import sql
from neutron.db import l3_db
from neutron.db import model_base
router_id = Column(String(36),
ForeignKey('routers.id', ondelete="CASCADE"),
primary_key=True)
- distributed = Column(Boolean, default=False, nullable=False)
- service_router = Column(Boolean, default=False, nullable=False)
+ distributed = Column(Boolean, default=False, server_default=sql.false(),
+ nullable=False)
+ service_router = Column(Boolean, default=False, server_default=sql.false(),
+ nullable=False)
# Add a relationship to the Router model in order to instruct
# SQLAlchemy to eagerly load this association
router = orm.relationship(
import sqlalchemy as sa
from sqlalchemy import orm
from sqlalchemy.orm import exc
+from sqlalchemy import sql
from neutron.api.v2 import attributes as attr
from neutron.db import db_base_plugin_v2
class QoSQueue(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant):
name = sa.Column(sa.String(255))
- default = sa.Column(sa.Boolean, default=False)
+ default = sa.Column(sa.Boolean, default=False, server_default=sql.false())
min = sa.Column(sa.Integer, nullable=False)
max = sa.Column(sa.Integer, nullable=True)
qos_marking = sa.Column(sa.Enum('untrusted', 'trusted',