#user-group #api-calls #resources

bin+lib openstack_cli

用 Rust 重写的 OpenStack 客户端

15 个版本 (6 个破坏性更新)

0.7.0 2024 年 8 月 23 日
0.6.3 2024 年 7 月 27 日
0.3.0 2024 年 3 月 15 日

命令行界面 中排名 127

Download history 132/week @ 2024-05-09 19/week @ 2024-05-16 10/week @ 2024-05-23 1/week @ 2024-05-30 9/week @ 2024-06-06 178/week @ 2024-06-13 43/week @ 2024-06-20 112/week @ 2024-06-27 111/week @ 2024-07-04 130/week @ 2024-07-11 25/week @ 2024-07-18 275/week @ 2024-07-25 155/week @ 2024-08-01 25/week @ 2024-08-08 140/week @ 2024-08-15

每月下载量 597

Apache-2.0

16MB
327K SLoC

OpenStackClient

osc 是用 Rust 编写的 OpenStack 命令行界面。它依赖于相应的 openstack_sdk crate(库)并使用 OpenAPI 规范生成。这意味着与完全由人类编写的 python-openstackclient 相比,该工具的维护工作量要小得多。由于是自动生成的,因此与 python cli 存在某些差异,但同时也强制执行 UX 一致性。

注意:作为一个新的工具,它试图解决与原始 python-openstackclient 的一些问题。这意味着它无法提供无缝迁移到另一个工具。

特性

  • 命令实现代码由 (codegenerator)https://opendev.org/openstack/codegenerator 生成,这意味着不需要维护该代码。
  • osc api 作为 API 包装器,允许用户执行任何直接 API 调用,指定服务类型、URL、方法和有效负载。例如,当某些资源当前未本地实现时,可以使用此功能。
  • osc auth 具有子命令,用于明确处理身份验证(显示当前身份验证信息、续订身份验证、MFA/SSO 支持)
  • 每个资源在命令中都有一个服务类型,以解决用户组与卷组等混淆
  • 每个多词资源名称由破折号分隔(例如:floating-ip、access-rule)

输出

  • osc ... -o json 作为明确的机器可读格式输出。它允许查看 API 发送的原始资源 JSON 表示,而不进行任何客户端处理。注意:结果是原始 JSON 响应,但找到在预期资源键下方的原始 JSON 资源信息。此模式可以用于查看 osc 不期望的字段,并允许使用类似 jq 的工具进行进一步简单的机器处理。
  • osc ... -o wide 用于列表操作以返回所有已知字段。默认情况下,列表操作将只返回已知通用资源字段的子集,以防止多行表格。此模式(与不指定 -o 参数)被视为面向人类的输出。字段名称通常不会被重命名,而是按API返回的名称命名。

微版本

最初,python-openstackclient 除非传递了指定微版本的额外参数,否则使用最低微版本。后来,在切换到使用 OpenStackSDK 的命令期间,开始使用尽可能高的微版本(除非用户明确请求微版本,使用 --XXX-api-version Y.Z)。这两种方法的一个共同点是通过让用户控制版本来保证稳定性。这两种方法的缺点是它们带有某些观点,这些观点不一定符合用户的期望,并且使得对将要发生什么的预期变得复杂。对于最终用户来说,在出现、消失和以不同类型重新出现某些参数时,阅读命令的帮助页面非常复杂且容易出错。在这种情况下,实现(和使用)命令也是既复杂又容易出错的。

osc 试图取两种方法的最佳之处,并为微版本提供专门的命令(例如,create20create294)。最新的微版本命令始终有一个通用别名(如上面的 create),以便用户明确使用最新的微版本,但这并不能保证它可以与请求的参数一起调用。这种方法使用户能够非常明确地表达要求,并保证预期的参数。当需要更新的微版本时,用户应明确进行“迁移”步骤,以将调用适配到一组新的参数。通过这种方式,微版本(或功能)的弃用也变得简单得多,并且通过标记整个命令为弃用或完全删除来处理。

Shell 自动完成

osc 支持为各种 shell 生成完成文件。这可以通过执行以下操作启用:

echo 'source <(osc completion bash)' >>~/.bashrc

依赖关系

~23–40MB
~581K SLoC