openstack neutron网络模块分析(五)--- 扩展数据库

neutron 扩展数据库

环境:ocata版本

openstack几乎每个模块都有版本的定义,neutron也不例外
neutron的版本定义目录就在
/neutron/db/migration/alembic_migrations/version/ocata/expand下
可以看到下面的文件都是前面一段数据加字幕组成的id后面就是自定义的文件名,所以这个文件名不能像nova那样安装顺利添加,只能用命令生成

neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /usr/lib/python2.7/site-packages/neutron/db/migration/alembic.ini revision -m "add FILE_NAME" --expand

alembic.ini 这个文件目录不一定是上面这个,如果报错没找到,就用find命令查找下这个文件的目录,然后替换,
成功运行这个命令之后就能在/neutron/db/migration/alembic_migrations/version/ocata/expan下看到新的版本文件

revision = 'a9c43481023c'
down_revision = '929c968efe70'

from alembic import op
import sqlalchemy as sa
from sqlalchemy.engine.reflection import Inspector as insp

from neutron.common import constants
from neutron.db import migration

MYSQL_ENGINE = 'mysql'
ML2_PORT_BINDING = 'ml2_port_bindings'
neutron_milestone = [migration.OCATA]


def upgrade():
    bind = op.get_bind()
    engine = bind.engine

打开文件基本都是这样,然后我们就要添加我们的代码了

* 新增表格:*

op.create_table('trunks',
        sa.Column('admin_state_up', sa.Boolean(),
                  nullable=False, server_default=sql.true()),
        sa.Column('tenant_id', sa.String(length=255), nullable=True,
                  index=True),
        sa.Column('id', sa.String(length=36), nullable=False),
        sa.Column('name', sa.String(length=255), nullable=True),
        sa.Column('port_id', sa.String(length=36), nullable=False),
        sa.Column('status', sa.String(length=16),
                  nullable=False, server_default='ACTIVE'),
        sa.Column('standard_attr_id', sa.BigInteger(), nullable=False),
        sa.ForeignKeyConstraint(['port_id'], ['ports.id'],
                                ondelete='CASCADE'),
        sa.ForeignKeyConstraint(['standard_attr_id'],
                                ['standardattributes.id'],
                                ondelete='CASCADE'),
        sa.PrimaryKeyConstraint('id'),
        sa.UniqueConstraint('port_id'),
        sa.UniqueConstraint('standard_attr_id')
    )

增加字段

op.add_column(TABLE, sa.Column('standard_attr_id', sa.BigInteger(),
                                   nullable=True))

其它的操作就不讲解了,可以多看version下其它版本的扩展文件是怎么写的,就能发现点什么了
最后就是文件生效了

neutron-db-manage upgrade --expand

这样就能在数据库中看到最新的变动了

你可能感兴趣的:(openstack,neutron)