本文档旨在跟踪并通知开发人员Neutron中的DB model模型将集中化并转移到目录neutron/db/models目录下的一棵新代码树上。这在文档[1]中讨论过。迁移数据库模型的原因是为了解决在实现Neutron资源的oslo版本化对象时,发生的循环导入问题。
这种迁移背后的原因是Mixin类和Neutron中一些资源的数据库模型db models处于同一模块中。在Mixin类中,有一些方法通过queries提供了获取、添加、更新和删除数据的功能。这些queries将替换为使用版本化对象,及版本化对象的定义将使用DB模型。所以对象文件将被导入模型,Mixin需要导入那些最终会在循环导入中结束的对象。
Model结构体定义
我们决定将所有模型定义转移到neutron/db/models/目录,之后不再有更深的嵌套。移动模型的废弃方法已添加用于避免使用这些模型的第三方插件崩溃。所有迁移的模型都需要使用废弃方法生成警告并返回新类以代替旧类使用。一些迁移模型如[2]和[3]的示例。如果将来定义新模型请确保它们与mixins分离,并在neutron/db/models/目录树下。
References
[1]. https://www.mail-archive.com/openstack-dev@lists.openstack.org/msg88910.html
[2]. https://review.openstack.org/#/c/348562/
[3]. https://review.openstack.org/#/c/348757/