我在使用 Cinder API v3 时遇到问题,最终出现以下错误
http://openstack_api:8776/v3/project_ID/volumes/detail
{
"badRequest": {
"code": 400,
"message": "Malformed request url"
}
}
请注意,我能够查询 Keystone 来获取令牌并在 Nova 中使用该令牌,并且它会返回结果,这与 cinder 不同。
尝试从 openstack 客户端进行调试,并使用我在 api 中使用的相同查询成功返回结果,唯一的区别是在 openstack 堆栈客户端中,标头中的令牌使用 {SHA256},而从 keynote 中提取的令牌则不使用。
任何帮助都将受到赞赏。
答案1
好的,问题解决了,使用 -vvv 从 openstack 客户端运行调试后,这个技巧可以找到执行了哪些 API 调用来列出卷
问题是生成的令牌来自管理项目,而我将卷 API 放入另一个项目,错误消息具有误导性!将 API 调用更改为管理项目,并且成功了
要列出所有租户的所有卷,请使用 http://:8776/v3//volumes/detail?all_tenants=真