MongoDB 数据库管理

https://blueprints.launchpad.net/trove/+spec/mongodb-database

启用 MongoDB 数据库管理功能。

问题描述

MongoDB 数据存储不支持数据库管理功能。允许用户通过 API 创建、列出和删除数据库至关重要。

提议的变更

三个标准的 Trove 命令将针对 MongoDB 启用

  1. database-create

  2. database-list

  3. 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 将被更改以支持以下管理器函数

  1. create_database - MongoDB 没有显式创建数据库的方法。要使用的数据库通过 ‘use <dbname>’ 指定,但这不会创建数据库。数据库在首次向其插入 ‘文档’ 时创建。为了确保创建数据库,将插入一个虚拟文档,然后将其删除。

  2. list_databases - 运行 ‘pymongo.MongoClient.database_names()’ 并返回结果列表。

  3. delete_database - 使用 ‘pymongo.MongoClient.drop_database(“<dbname>”)’ 删除数据库。与数据库关联的用户需要手动删除。

备选方案

create_database 无法在数据库中创建虚拟对象。

实现

负责人

Matthew Van Dijk

里程碑

liberty-1

工作项

更改将以单个提交实现。范围很小,功能相关联。

升级影响

不会有升级影响。

依赖项

没有对正在进行的其他工作的依赖。

测试

将添加单元测试以验证非平凡的代码路径。如有需要,可以添加集成测试。

文档影响

MongoDB 数据存储文档可以更新以反映启用的功能。

参考资料

此文档中没有外部引用。