列出镜像缓存节点的新 API¶
https://blueprints.launchpad.net/glance/+spec/list-nodes-image-cached
部署者希望通过一个 API 调用查看镜像在哪些 Glance worker 节点上缓存。
问题描述¶
目前,如果您配置了多个 Glance 节点,并且需要查看镜像是否在特定节点上缓存,则需要查询该特定 Glance 节点或查询每个 Glance 节点。
用例:在 DCN 环境中,您希望查看该特定边缘节点是否缓存了镜像。
提议的变更¶
Glance 现在默认使用集中式数据库进行缓存,这使我们能够访问跨 Glance 节点的全部缓存镜像。我们正在添加一个新的仅限管理员使用的 API,它将接受 image_id 作为输入参数,并返回该特定镜像缓存的所有 Glance 节点的直接 URL。
我们还将引入一个新的策略 list_cached_nodes,以便具有适当权限的用户可以执行此操作。
如果部署中未启用缓存,或者部署未使用集中式数据库进行缓存,则此 API 将向用户返回 HTTP 409 Conflict 响应。
将来,我们可以从 Nova 或 Cinder 等消费者中使用此 API,以便他们可以直接将 API 请求发送到缓存了镜像的特定 Glance 节点。
备选方案¶
无
数据模型影响¶
无
REST API 影响¶
此规范提出以下新 API
新的 API
列出镜像缓存节点
常见响应代码
已接受:200 已接受
禁止:403 Forbidden
冲突:409 冲突
未找到:404 未找到
[新 API] 列出镜像缓存节点
列出节点
GET /v2/cache/nodes/{image_id}
{
"cached_nodes": [
http://node_1:60999,
http://node_2:60999,
http://node_5:60999,
],
}
安全影响¶
如“提议的变更”部分所述,将强制执行新的策略以避免安全漏洞。
通知影响¶
无
其他最终用户影响¶
Glance 客户端和 OpenStack 客户端应进行更新,并添加新的命令
glance cache-nodes-list <image_id>
openstack cache nodes list <image_id>
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
abhishekk
工作项¶
引入新的 API 调用
强制执行新的策略规则
文档
测试
依赖项¶
无
测试¶
新的 Tempest 测试以覆盖此场景
文档影响¶
需要更新 API 文档
还需要使用新命令更新缓存文档