Spec Lite: 将验证数据与镜像位置一起嵌入¶
- 项目:
glance
- 问题:
使用 HTTP 存储的新镜像,其
locations可以使用 HTTP PATCH 请求中的add或replace操作初始化,但目前没有提供伴随校验和和多哈希值的方法。- 解决方案:
允许在名为
validation_data的新的只写 JSON 对象中嵌入checksum、os_hash_algo和os_hash_value的值,以及镜像位置的url和metadata。这些值将用于填充相应的镜像属性。对于这些项目中的任何新值,只有当镜像状态为
queued并且相应的镜像属性尚未填充时,才会被接受。为了允许幂等性,此对象可以在添加或替换处于active状态或/且已经填充了相应属性的镜像的位置时包含,但提供的值必须与现有值完全匹配。该对象可以包含在
locations列表中的一个或多个项目中,但值必须在所有实例中保持一致。虽然
validation_data对象是可选的,但如果存在,则需要os_hash_algo和os_hash_value项目,以强制采用多哈希。由于多哈希将是 Stein 版本的客户端的默认机制,因此checksum是可选的,但包含在内是为了适应尚未实现多哈希的遗留消费者。预计消费者知道仅在他们的部署需要时才填充checksum。os_hash_algo必须与 Glance 服务器的DEFAULT.hashing_algorithm配置选项匹配。虽然要求输入只有一个可接受的值似乎是多余的,但这是为了确保用户知道需要哪种算法。checksum和os_hash_value无法验证(因为 Glance 服务器没有镜像数据的副本),但它们将被验证为相应算法的正确大小的十六进制值。任何违反上述规则的行为都将导致
HTTPConflict异常(HTTP 状态 409)。以下内容将被添加到
images模式中locations项目的属性中'validation_data': { 'description': _( 'Values to be used to populate the corresponding ' 'image properties. If the image status is not ' '"queued" or/and the image properties are already ' 'populated, any supplied values must exactly match ' 'existing ones.' ), 'type': 'object', 'writeOnly': True, 'properties': { 'checksum': { 'type': 'string', 'minLength': 32, 'maxLength': 32, }, 'os_hash_algo': { 'type': 'string', 'maxLength': 64, }, 'os_hash_value': { 'type': 'string', 'maxLength': 128, }, }, 'required': [ 'os_hash_algo', 'os_hash_value', ], },
还将向 python-glanceclient 中的
add_location()方法和location-addshell 命令添加支持。- 替代方案:
实现一种导入方法,以直接注册镜像以供 HTTP 存储使用(无需使用 HTTP PATCH)。
- 时间线:
包含在 Stein 版本中。需要尽快批准,以便我可以继续为我的 Rocky 升级进行私有回溯(v1 API 已删除)。
- 链接:
- 负责人:
imacdonn