python-openstackclient 中的 Trove 支持

将一套新的 Trove 命令作为 python-openstackclient 插件实现。

Launchpad 蓝图:https://blueprints.launchpad.net/trove/+spec/trove-support-in-python-openstackclient

问题描述

python-openstackclient 正在成为许多 OpenStack 项目的默认命令行客户端。Trove 可以从将其所有客户端命令作为在 python-troveclient 仓库中实现的单个 python-openstackclient 插件来实现中受益。

提议的变更

本规范的意图是确定要实现的命令并建立命令和参数名称的约定。本规范不打算成为命令和参数名称的完整且正确的规范。细节可以留给命令本身的代码审查。

将采用以下约定来命名命令

  • 按照 OpenStackClient 约定,命令名称始终采用以下形式

openstack [<global-options>] <object-1> <action> [<object-2>] \
          [command-arguments]

将采用以下约定来命名参数和参数标志

  • 按照 openstack 约定,除了非常常见的参数外,将避免使用单字符标志。

  • 当数据库或集群名称和 ID 被指定时,它们将分别是完整命令名称之后的第一和第二个位置参数。

  • 当参数是必需时,它将是一个位置参数。

以下 trove 命令已经为 openstack 实现

trove secgroup-add-rule
openstack security group rule create

trove secgroup-delete-rule
openstack security group rule delete

trove secgroup-list
openstack security group list

trove secgroup-list-rules
openstack security group rule list

以下 trove 命令将最初为 openstack 实现,建议使用这些命令名称

trove backup-create <instance> <name>
openstack database backup create <instance> <name>

trove backup-delete <backup>
openstack database backup delete <backup>

trove backup-list
openstack database backup list

trove backup-list-instance <instance>
openstack database backup list <instance>

trove backup-show <backup>
openstack database backup show <backup>

trove cluster-create <name> <datastore> <datastore_version>
openstack database cluster create <name> <datastore> <datastore_version>

trove cluster-delete <cluster>
openstack database cluster delete <cluster>

trove cluster-list
openstack database cluster list

trove cluster-modules <cluster>
openstack database module list cluster <cluster>

trove cluster-show <cluster>
openstack database cluster show <cluster>

trove configuration-attach <instance> <configuration>
openstack database configuration add <instance> <configuration>

trove configuration-create <name> <values>
openstack database configuration create <name> <values>

trove configuration-default <instance>
openstack database configuration show <instance>

trove configuration-delete <configuration_group>
openstack database configuration delete <configuration_group>

trove configuration-detach <instance>
openstack database configuration remove <instance>

trove configuration-instances <configuration_group>
openstack database configuration list --instance <configuration_group>

trove configuration-list
openstack database configuration list

trove configuration-parameter-list <datastore_version>
openstack database configuration parameter list <datastore_version>

trove configuration-parameter-show <datastore_version> <parameter>
openstack database configuration parameter show <datastore_version> <parameter>

trove configuration-patch <configuration_group> <values>
openstack database configuration set --patch <configuration_group> <values>

trove configuration-show <configuration_group>
openstack database configuration show <configuration_group>

trove configuration-update <configuration_group> <values>
openstack database configuration set <configuration_group> <values>

trove create <name> <flavor>
openstack database cluster create <name> <datastore> <datastore_version>

trove database-create <instance> <name>
openstack database add <instance> <name>

trove database-delete <instance> <database>
openstack database remove <instance> <database>

trove database-list <instance>
openstack database list <instance>

trove datastore-list
openstack datastore list

trove datastore-show <datastore>
openstack datastore show <datastore>

trove datastore-version-list <datastore>
openstack datastore version list <datastore>

trove datastore-version-show <datastore_version>
openstack datastore version show <datastore_version>

trove delete <instance>
openstack database cluster delete <cluster>

trove detach-replica <instance>
openstack database replica unset <instance>

trove flavor-list
openstack database flavor list

trove flavor-show <flavor>
openstack database flavor show <flavor>

trove limit-list
openstack database limits list

trove list
openstack database instance list
openstack database cluster list

trove module-apply <instance> <module>
openstack database instance set module <instance> <module>

trove module-create <name> <type> <filename>
openstack database module create <name> <type> <filename>

trove module-delete <module>
openstack database module delete <module>

trove module-instances <module>
openstack database instance list module <module>

trove module-list
openstack database module list

trove module-list-instance <instance>
openstack database module list instance <instance>

trove module-query <instance>
openstack database instance list module <instance> --status

trove module-remove <instance> <module>
openstack database instance remove module <instance> <module>

trove module-retrieve <instance>
openstack database instance show module <instance>

trove module-show <module>
openstack database module show <module>

trove module-update <module>
openstack database module set <module>

trove resize-instance <instance> <flavor>
openstack database instance resize <instance> <flavor>
openstack database cluster resize <cluster> <flavor>

trove resize-volume <instance> <size>
openstack database instance volume resize <instance> <size>
openstack database cluster volume resize <cluster> <size>

trove restart <instance>
openstack database instance restart <instance>
openstack database cluster restart <cluster>

trove root-enable <instance_or_cluster>
openstack database set --root <instance_or_cluster>

trove root-show <instance_or_cluster>
openstack database show --root <instance_or_cluster>

trove show <instance>
openstack database cluster show <cluster>

trove update <instance>
openstack database cluster set <cluster>

trove user-create <instance> <name> <password>
openstack database user create <instance> <name> <password>

trove user-delete <instance> <name>
openstack database user delete <instance> <name>

trove user-grant-access <instance> <name> <databases>
openstack database user add --access <instance> <name> <databases>

trove user-list <instance>
openstack database user list <instance>

trove user-revoke-access <instance> <name> <database>
openstack database user remove --access <instance> <name> <database>

trove user-show <instance> <name>
openstack database user show <instance> <name>

trove user-show-access <instance> <name>
openstack database user show --access <instance> <name>

trove user-update-attributes <instance> <name>
openstack database user set --attributes <instance> <name>

配置

数据库

公共 API

公共 API 安全

Python API

CLI (python-troveclient)

将在 /troveclient/osc 下创建一个名为 osc 的新目录,用于 OpenStackClient 插件和上述命令。

内部 API

Guest Agent

备选方案

Dashboard 影响 (UX)

实现

负责人

主要负责人

twm2016

Dashboard 指定人

里程碑

完成目标里程碑

Ocata-3

工作项

如上所述的 CLI 命令。集成测试 功能测试

升级影响

依赖项

python-openstackclient osc-lib

测试

功能测试将位于:/troveclient/tests/osc/ 功能测试将测试所列命令的输入和输出。集成测试将验证 OpenStackClient 插件是否与其他项目协同工作。这些应该放在 /trove/tests/tempest/tests/api

文档影响

OpenStack 客户端采用列表将被更新以包含 python-troveclient。

附录