一.数据库更新步骤

a. 添加版本文件

在下面的目录中添加新的版本文件,注意文件开头的编号要比本目录下已存在的版本号大。/usr/lib/python2.7/site-packages/storagemgmt/storage/sqlalchemy/migrate_repo/versions

b. 修改models.py文件

修改/usr/lib/python2.7/site-packages/storagemgmt/storage/sqlalchemy/models.py文件中相应表的类

c. 运行storagemgmt-dbsync

执行成功后,在/var/log/storagemgmt-dbsync.log中会看到类似以下的信息:

sqlalchemy update设置空值 sqlalchemy 修改_openstack

二. 数据库更新实例

a. 为数据库添加一张新表

以添加一个新表iscsi_accounts为例。

1. 在/usr/lib/python2.7/site-packages/storagemgmt/storage/sqlalchemy/migrate_repo/versions 目录下新建一个文件, 并且需要为文件名指定一个有序的编号, EG. 023_add_iscsi_accounts.py (注意文件开头的编号要比本目录下已存在的版本号大)

sqlalchemy update设置空值 sqlalchemy 修改_python_02


2. 修改/usr/lib/python2.7/site-packages/storagemgmt/storage/sqlalchemy/models.py,在其中添加一个新类,此处的作用是实现数据库表与类的映射,类中的属性要与数据库表中的字段一致。如下:

sqlalchemy update设置空值 sqlalchemy 修改_dbsync_03


3. 运行storagemgmt-dbsync。

b. 删除一张或多张表

以删除表’ceph_rbd’, ‘ceph_osd’, ‘ceph_mon’为例。

1. 在/usr/lib/python2.7/site-packages/storagemgmt/storage/sqlalchemy/migrate_repo/versions目录下新建一个文件,并且需要为文件名指定一个有序的编号, EG. 024_delete_multi_tables.py(注意文件开头的版本号要比本目录下已存在的版本号大)

sqlalchemy update设置空值 sqlalchemy 修改_openstack_04


2. 修改/usr/lib/python2.7/site-packages/storagemgmt/storage/sqlalchemy/models.py把这几张表对应的类删除掉。

3. 运行storagemgmt-dbsync。

c. 为旧表添加一个字段

以向旧表ceph_rbd中的添加两个字段”parent”和”status”为例。

1. 在/usr/lib/python2.7/site-packages/storagemgmt/storage/sqlalchemy/migrate_repo/versions 目录下新建一个文件, 并且需要为文件名指定一个有序的编号, EG. 024_update_add_parent_status_in_ceph_rbd.py(注意文件开头的版本号要比本目录下已存在的版本号大)

sqlalchemy update设置空值 sqlalchemy 修改_python_05


2. 修改/usr/lib/python2.7/site-packages/storagemgmt/storage/sqlalchemy/models.py把新加的字段parent和status添加到cehp_rbd表对应的类下面。如:

sqlalchemy update设置空值 sqlalchemy 修改_版本号_06


3. 运行storagemgmt-dbsync。

d. 为旧表删除一个字段

sqlalchemy update设置空值 sqlalchemy 修改_python_07

e. 为旧表修改一个字段

sqlalchemy update设置空值 sqlalchemy 修改_版本号_08