什么 cf curl 命令可以显示当前组织和 space?

What cf curl command can show the current org and space?

可以使用命令 cf target 来发现当前组织和 space.

% cf target

API endpoint:  https://api.run.domain.com (API version 2.48.0)
User:          admin
Org:           myorg
Space:         myspace

我想使用 REST API (cf curl /v2/...) 获取当前组织和 space。我不想解析命令 cf target.

的结果

我通常在 Bash 中编写脚本,通过执行以下操作来定义变量(例如获取 CF API 版本):

Result=$(cf curl /v2/info | jq -r '.api_version')

所以,问题是:假设我已经通过身份验证(执行 cf login),如何通过 cf curl 获取组织和 space?

how can I get the org and space via cf curl, assuming I have already authenticated (performed cf login)?

这不是来自 CAPI。 API 不管理您状态的这方面。此状态保存在本地计算机上的 config.json 文件中,该文件由 cf cli 管理。

如果您想获取当前组织和 space,您可以直接从该文件中读取它。

jq ".OrganizationFields.Name,.SpaceFields.Name" ~/.cf/config.json

配置文件的正常路径位于主目录下的文件夹 .cf 中,但如果设置了 CF_HOME,配置文件的路径可能会有所不同。

CF_HOME=path/to/dir/               Override path to default config directory

虽然我不推荐它,但您甚至可以手动更新配置文件以更改您的组织或 space。同样,不推荐但可能。

为了将来参考,如果您想知道 cf cli 是如何做某事的,查看 API 调用的最简单方法是启用跟踪 运行。这会将 HTTP 请求和响应信息输出到您的控制台。

CF_TRACE=true cf <insert-command>

如果您使用 cf target 执行此操作,您将看到没有发出任何命令,这是因为它只是从我提到的文件中读取状态。如果您 运行 可以与 API 对话的内容,例如 CF_TRACE=true cf orgs,那么您将看到 HTTP 请求和响应信息。

最后请注意,在 Windows 您需要先 运行 set CF_TRACE=true。然后你可以 运行 cf orgs 或任何你想要的命令,你会得到跟踪输出。这是因为 Windows 命令提示符不允许您像 Bash 那样内联设置环境变量。如果您在 Windows 上使用 Bash,则没有必要。

我不确定@Steve Amerige 使用的是哪个 CF CLI 版本,但下面的 CF 命令可以直接提供他正在寻找的详细信息。

此命令在 CF CLI 版本 6 和 7 中均可用。