可以使用命令cf target
来发现当前的组织和空间。
% 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/...
)来获取当前的组织和空间。我不想解析命令cf target
的结果。
我通常在Bash中编写脚本,通过执行操作来定义变量(例如,获取CF API版本):
Result=$(cf curl /v2/info | jq -r '.api_version')
所以,问题是:假设我已经过身份验证(执行cf curl
),我如何通过cf login
获取组织和空间?
答案 0 :(得分:4)
假设我已经过身份验证(执行cf登录),我如何通过cf curl获取组织和空间?
这不是来自CAPI。 API不管理您所在州的这一方面。此状态保存在本地计算机上的config.json
文件中,该文件由cf cli管理。
如果您想获取当前的组织和空间,可以从该文件中读取它。
jq ".OrganizationFields.Name,.SpaceFields.Name" ~/.cf/config.json
配置文件的正常路径位于文件夹.cf
的主目录下,但如果设置了CF_HOME
,配置文件的路径可能会有所不同。
CF_HOME=path/to/dir/ Override path to default config directory
虽然我不推荐它,但您甚至可以手动更新配置文件以更改组织或空间。同样,不推荐但可能。
为了将来参考,如果您想知道cf cli如何做某事,最简单的方法是查看它正在进行的API调用是在启用跟踪的情况下运行。这会将HTTP请求和响应信息输出到您的控制台。
CF_TRACE=true cf <insert-command>
如果使用cf target
执行此操作,您将看到没有发出命令,这是因为它只是从我提到的文件中读取状态。如果您运行与CF_TRACE=true cf orgs
等API通信的内容,那么您将看到HTTP请求和响应信息。
最后请注意,在Windows上,您需要先运行set CF_TRACE=true
。然后你可以运行cf orgs
或任何你想要的命令,你将获得跟踪输出。这是因为Windows命令提示符不允许您像Bash一样内联设置环境变量。如果您在Windows上使用Bash,则不需要这样做。