用于清理和修剪缓存的 API

https://blueprints.launchpad.net/glance/+spec/clean-prune-cache-api

用于清理和修剪镜像缓存目录的新 API 调用。

问题描述

目前,如果部署中启用了镜像缓存,则部署者需要将 glance-cache-cleaner 和 glance-cache-pruner 配置为 cron 任务,以便定期清理无效的镜像缓存文件,并在缓存目录过大时自动删除旧的缓存文件。这给部署者带来了配置和有效运行 cron 任务的负担。

提议的变更

我们提议在本周期内弃用 glance-cache-cleanerglance-cache-prunerglance-cache-prefetcher 命令行工具,并在 G 开发周期中移除它们。正如我们已经有一个 API 调用 /v2/cache/{image_id} 用于缓存镜像一样,我们将添加两个新的 API POST 调用 /v2/cache/clean/v2/cache/prune,它们将代替我们完成修剪和清理工作。这两个 API 将仅供管理员使用,非管理员用户将被禁止使用。

我们将引入两个新的策略 cache_cleancache_prune,默认情况下由 admin 使用,以限制对这些新 API 的使用。

备选方案

与其添加新的 API 调用,不如将现有代码移动到 glance API 服务下作为定期调用来重用。这将需要引入两个额外的配置参数来引入定期调用的间隔。

数据模型影响

REST API 影响

本规范提出以下新的 API

  • 清理无效的缓存镜像

[新 API] 清理无效的缓存镜像

清理无效的缓存镜像

POST /v2/cache/clean
{}

响应代码:* 200 – 授权并通过请求。 * 403 – 权限被拒绝

  • 修剪镜像缓存目录

[新 API] 修剪镜像缓存目录

修剪镜像缓存目录

POST /v2/cache/prune
{}

* JSON response body

.. code-block:: json

    {
        "total_files_pruned": <total_files_pruned>,
        "total_bytes_pruned": <total_bytes_pruned>
    }

响应代码:* 200 – 授权并通过请求。 * 403 – 权限被拒绝

安全影响

如“提议的更改”部分所述,将实施新的策略以避免安全漏洞。

通知影响

其他最终用户影响

glance 客户端和 openstack 客户端应进行更新,并添加新的命令

  • glance cache-clean

  • glance cache-prune

  • openstack cache clean

  • openstack cache-prune

性能影响

其他部署者影响

部署者需要在环境中停止使用 glance-cache-cleanerglance-cache-prunerglance-cache-prefetcher 命令行工具。

开发人员影响

实现

负责人

主要负责人

abhishekk

工作项

  • 引入新的 API 调用

  • 实施新的策略规则

  • 文档

  • 测试

依赖项

测试

新的 tempest 测试以覆盖此场景

文档影响

  • 需要更新 API 文档

  • 还需要使用新命令更新缓存文档

参考资料