MongoDB 数据库管理¶
https://blueprints.launchpad.net/trove/+spec/mongodb-database
启用 MongoDB 数据库管理功能。
问题描述¶
MongoDB 数据存储不支持数据库管理功能。允许用户通过 API 创建、列出和删除数据库至关重要。
提议的变更¶
三个标准的 Trove 命令将针对 MongoDB 启用
database-create
database-list
database-delete
更改将仅限于 guestagent 代码。taskmanager、API 和 conductor 不需要任何代码更改。代码更改将实现一个新的类 service.MongoDBAdmin 及其作为类成员的相应方法。manager.Manager 的方法将被更新,以调用 admin 函数。
对 MongoDB 的调用将通过 Python 借助 PyMongo 库完成,该库需要在 guest 上预先安装。
配置¶
不会对任何配置文件进行更改。
数据库¶
这里不会添加新的项目。
公共 API¶
没有 API 更改。
公共 API 安全¶
没有 API 安全性更改。
Python API¶
无 (合并后添加的空部分)
CLI (python-troveclient)¶
无 (合并后添加的空部分)
内部 API¶
没有内部 API 更改。
Guest Agent¶
修改的文件
trove/guestagent/db/models.py - add a MongoDBSchema class.
trove/guestagent/datastore/experimental/mongodb/manager.py - enable functions.
trove/guestagent/datastore/experimental/mongodb/service.py - add functions.
Guest Agent 将被更改以支持以下管理器函数
create_database - MongoDB 没有显式创建数据库的方法。要使用的数据库通过 ‘use <dbname>’ 指定,但这不会创建数据库。数据库在首次向其插入 ‘文档’ 时创建。为了确保创建数据库,将插入一个虚拟文档,然后将其删除。
list_databases - 运行 ‘pymongo.MongoClient.database_names()’ 并返回结果列表。
delete_database - 使用 ‘pymongo.MongoClient.drop_database(“<dbname>”)’ 删除数据库。与数据库关联的用户需要手动删除。
备选方案¶
create_database 无法在数据库中创建虚拟对象。
升级影响¶
不会有升级影响。
依赖项¶
没有对正在进行的其他工作的依赖。
测试¶
将添加单元测试以验证非平凡的代码路径。如有需要,可以添加集成测试。
文档影响¶
MongoDB 数据存储文档可以更新以反映启用的功能。
参考资料¶
此文档中没有外部引用。