将实例名称作为参数添加到各种 CLI 命令

蓝图

https://blueprints.launchpad.net/trove/+spec/add-instance-name-to-cli

该提案允许在 CLI 中当前使用实例 ID 的任何地方指定实例名称。

问题描述

目前,只有“trove show”命令可以将实例 ID 或实例名称作为其参数。CLI 中还有许多其他命令需要实例引用作为参数,但要求使用实例 ID。允许客户在整个 CLI 中互换使用实例 ID 或实例名称将会很有帮助。

提议的变更

允许将实例 ID 或实例名称传递给以下命令

  • backup-create

  • backup-list-instance

  • configuration-attach

  • configuration-default

  • configuration-detach

  • database-create

  • database-delete

  • database-list

  • detach-replica

  • 删除

  • metadata-create

  • metadata-delete

  • metadata-edit

  • metadata-list

  • metadata-show

  • metadata-update

  • resize-flavor

  • resize-instance

  • resize-volume

  • restart

  • root-enable

  • root-show

  • update

  • user-create

  • user-delete

  • user-grant-access

  • user-list

  • user-revoke-access

  • user-show

  • user-show-access

  • user-update-attributes

例如,trove delete 目前看起来是这样

usage: trove delete <instance>

Deletes an instance.

Positional arguments:
    <instance>  ID of the instance.

该提案使其看起来像这样

usage: trove delete <instance>

Deletes an instance.

Positional arguments:
    <instance>  ID or name of the instance.

这将仅是 CLI 的更改。

目前,如果提供的名称与多个实例匹配,trove show 命令将显示错误。该错误表明,在这种情况下,必须使用实例 ID。此行为将被保留,并用于上述所有命令。

配置

数据库

公共 API

公共 API 安全

内部 API

Guest Agent

备选方案

实现

负责人

主要负责人

  • 0-doug (dougshelley66)

  • peterstac

里程碑

完成目标里程碑

Kilo-2

工作项

  1. 遍历 python-troveclient/troveclient/v1/shell.py,并在每个“do_<>”方法中的“实际”工作之前调用 _find_instance(cs, args.instance)。

  2. 修改 shell.py 中的帮助文本,以指示使用名称或 ID。

  3. 根据需要修改现有的单元测试。

依赖项

测试

如果我们的 Tempest 覆盖了 CLI,它将被调整为对所有修改后的命令传递实例名称。此外,LP 中存在一个现有 bug [1],表明我们应该为 CLI 编写测试。

这两点都被认为超出此 BP 的范围。

[1] https://bugs.launchpad.net/python-troveclient/+bug/1314793

文档影响

上述命令的帮助文本将被修改,以现在包含实例名称作为有效参数。我相信 CLI 文档是从代码生成的。

参考资料