扩展其他存储的 stores-info 详细信息

https://blueprints.launchpad.net/glance/+spec/expanding-stores-detail

问题描述

在 Yoga 版本中,我们添加了一个新的 API (GET /v2/info/stores/detail),它暴露了存储特定的详细信息。目前,Discovery API 仅暴露 RBD 后端的存储详细信息和属性。我们希望使 API 更加通用,并暴露其他存储的详细信息。

提议的变更

我们将扩展 Discovery (GET /v2/info/stores/detail) API 的功能,该 API 将暴露有关存储的存储特定详细信息,例如存储类型以及 cinder、swift、filesystem 等其他存储的特定存储属性。可以为不同存储提供的好处选项

  • Cinder: cinder_volume_type

  • Filesystem: filesystem_store_dir, chunk_size, thin_provisioning, filesystem_store_dirs

  • Swift: container, obj_size 和 chunk_size

  • S3: s3_store_large_object_size, s3_store_large_object_chunk_size, s3_store_thread_pools

我们将使用现有的方法 get_store_from_store_identifier,该方法返回存储类实例,并利用它来获取存储特定信息,并通过 API 返回它。

备选方案

数据模型影响

REST API 影响

通过这种新的实现,我们将现在为其他存储(除了 RBD)返回“properties”值。

GET /v2/info/stores/detail

输出如下

{
    "stores": [
        {
            "id":"reliable",
            "type": "rbd",
            "description": "Reliable RBD store",
            "default": true,
            "properties": {
                "pool": "pool1"
                "chunk_size": 65553
                "thin_provisioning": false
            }
        },
        {
            "id":"cheap",
            "type": "file",
            "description": "Cheap file store",
            "properties": {
                "datadir": "fdir"
                "chunk_size": 65553
                "thin_provisioning": false
            }
        },
        {
            "id":"fast",
            "type": "cinder",
            "description": "Fast Cinder Store",
            "properties": {
                "volume_type": "volume1"
                "use_multipath": false
            }
        },
        {
            "id":"slow",
            "type": "swift",
            "description": "Slow Swift store",
            "properties": {
                "container": "container1"
                "obj_size": 52428
                "chunk_size": 204800
            }
        },


    ]
}

安全影响

此 API 确实暴露了一些额外的敏感信息,但仅对管理员开放,这与其他我们已经暴露的信息一致。

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

mrjoshi, whoami-rajat

其他贡献者

工作项

  • 从特定的存储/后端获取详细信息,并在 API 响应中返回它

依赖项

测试

  • 单元测试

  • 功能测试

文档影响

添加文档,提供有关为每个存储暴露的属性的详细信息

参考资料

https://review.opendev.org/c/openstack/glance-specs/+/817391 https://review.opendev.org/c/openstack/glance/+/824438