给neutron服务添加一个表

参考:https://blog.csdn.net/energysober/article/details/80289478
https://blog.csdn.net/happyAnger6/article/details/54586463
一、给neutron添加数据库中的表:
1.先运行(一行代码):

neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /opt/stack/neutron/neutron/db/migration/alembic.ini revision -m "upgrade" --expand
1
它的意思是添加一个新的操作版本,相当于在生成的py文件中写新的数据库操作。(openstack几乎每个模块都有版本的定义,neutron也不例外 )
在版本目录下形成的py文件相当于是链表形式,以版本号为顺序,遇到报错:
Multiple heads are present; please specify the head revision on which the new revision should be based, or perform a merge.
可能是有多个前版本,需要改下版本链表中的顺序.
其中"upgrade"是要生成py文档名称中的一部分,不固定。
其中 /opt/stack/neutron/neutron/db/migration/alembic.ini 是根据你alembic.ini 文件的位置来写的,一般都在安装neutron/db/migration的文件夹下

2.在生成的py文件中的函数def upgrade():下添加表,类似如下(添加的表名为test_new)。

op.create_table('test_new',
                    sa.Column('admin_id', sa.String(length=12), nullable=False),
                    sa.Column('admin_name', sa.String(5), nullable=True)
    )#生成表
1
2
3
4
2.然后在命令行运行以下代码进行更新:
neutron-db-manage upgrade --expand

PS:每一个版本的更新只能运行一次,如果要新处理表需要,从1重新开始。
二、添加extension。
在参考代码的时候,在第六步重启neutron-server服务,获取token的代码中,下面的http后面的url填的是自己openstack的keystone的地址(是后面跟着文件夹的IP,包括文件夹,即如果有/identity要写上),name和passowrd都是自己openstack登录的信息,“methods”: [ “password” ]不用改。

curl -X POST -d ‘{ “auth”: { “identity”: { “methods”: [ “password” ],
“password”: {“user”: {“name”: “admin”, “domain”: {“name”: “Default”},
“password”: “admin” }}}}}’ -H “Content-type: application/json”
http://url/identity/v3/auth/tokens | python -m json.tool

如果post没有获取到tonken的值的话,通过openstack token issue查看Token的列表,填入下面(url只是IP地址)。
curl -g -X GET http://192.168.0.27:9696/v2.0/tests/ -H “User-Agent: openstacksdk/0.9.13 keystoneauth1/2.18.0 python-requests/2.11.1 CPython/2.7.5” -H “Accept: application/json” -H “X-Auth-Token: token的值”

那个代码里面也有很多要改的地方。
extension/test.py中
1.29行的test改为"test";
2.35行的GROUPS改为TESTS。
model/test.py中
groups定义的是表名;

在extension/test.py里面定义的数据项中’allow_post’:False, ‘allow_put’:False代表是否可以用post和put方法

PS:设置为主键primary key的列不能在model/test.py中在进行设置.

重启服务
sudo systemctl restart [email protected]

重启keystone服务:
systemctl restart [email protected]

PS:1.每一次更新数据库版本都有运行:neutron-db-manage upgrade --expand
2.如果更新有多个表,运行出错时要把前面所有的表删除掉,再更新;
3.如果报错
alembic.script.revision.MultipleHeads: Multiple heads are present for given argument ‘expand@head’; a79ef7038c23, ccba657dc191
代表有多个以上编号的数据表,在/opt/stack/neutron/neutron/db/migration/alembic_migrations/versions/pike/expand中删除重复的
————————————————
版权声明:本文为CSDN博主「cpf945」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cpf945/article/details/98186417

Supongo que te gusta

Origin blog.csdn.net/qq_42533216/article/details/116716421
Recomendado
Clasificación