环境: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
这样就能在数据库中看到最新的变动了