返回超visor节点状态

https://blueprints.launchpad.net/nova/+spec/return-status-for-hypervisor-node

问题描述

目前,当用户查看或列出超visor时,无法得知其状态,可能已经宕机或被禁用。有时这会导致混淆,例如在 bug https://bugs.launchpad.net/nova/+bug/1285259 中。

提议的变更

建议在显示超visor节点时返回服务状态/状态。对于 v2 api,将添加一个额外的扩展。当扩展加载时,我们将返回服务状态/状态。对于后续 v2.1 api 的一个微版本,我们将始终返回状态/状态。

当服务被禁用时,在 details/show 端点中的服务信息中添加禁用原因。

备选方案

还有其他一些选项

  • 用户首先从超visor节点获取服务信息,然后显示服务状态。但我认为直接显示超visor状态会更直接。例如,在 https://bugs.launchpad.net/nova/+bug/1285259 中,用户可能试图找出计算节点中的实例,但没有意识到该节点已经被禁用,并且信息是无用的。

  • 目前 os-hypervisors 扩展已经返回了诸如主机和服务 id 之类的服务信息。我们可以扩展该字段以包含所有服务状态/状态/禁用原因信息。但是,将状态/状态添加到列表端点,而仅将禁用原因添加到服务信息可能更好。

数据模型影响

数据模型没有变化。

REST API 影响

  • 对于 V2 API,将添加一个新的扩展:别名:os-hypervisor-status 名称:HypervisorStatus 命名空间:https://docs.openstack.org/compute/ext/hypervisor_status/api/v1.1

    当新的扩展“os-hypervisor-status”加载时,一个新的字段‘status’将被添加到 os-hypervisor API 中。

  • 对于后续 v2.1 API 的一个微版本,不需要新的扩展,现有的超visor REST API 将被更新以返回状态。

  • URL:现有的超visor扩展
    • /v2/{tenant_id}/os-hypervisors

    • /v2.1/os-hypervisors

    JSON 响应体

    {
        "hypervisor": [
        {
            "state": "enabled",
            "status": "up",
            "id": 1,
            "hypervisor_hostname": "otccloud06"
         }]
     }
    

    ‘status’ 和 ‘state’ 是新添加的字段,与服务 API 相同。

  • URL:现有的超visor扩展
    • /v2/{tenant_id}/os-hypervisors/{id}

    • /v2.1/os-hypervisors/{id}

    JSON 响应体

    {"hypervisor": {
            "state": "enabled",
            "status": "up",
            "os-pci:pci_stats": [],
            "service":
            {
                "host": "otccloud06",
                "id": 3,
                "disabled_reason": ""
            },
            "vcpus_used": 0,
            "hypervisor_type": "QEMU",
            "local_gb_used": 0,
            "host_ip": "172.25.110.34",
            "hypervisor_hostname": "otccloud06",
            "memory_mb_used": 512,
            "memory_mb": 128956,
            "current_workload": 0,
            "vcpus": 32,
            "cpu_info": {"vendor": "Intel}
            "running_vms": 0,
            "free_disk_gb": 469,
            "hypervisor_version": 1000000,
            "disk_available_least": 408,
            "local_gb": 469,
            "free_ram_mb": 128444,
            "id": 1}
    }
    

    ‘status’、‘disabled_reason’ 和 ‘state’ 是新添加的字段,与服务 API 相同。

安全影响

通知影响

其他最终用户影响

是的,这将影响 python-novaclient。novaclient 应该在 ‘nova hypervisor list’ 中显示状态。

性能影响

其他部署者影响

对于 V2 api,应该添加扩展。

开发人员影响

实现

负责人

主要负责人

yunhong-jiang

工作项

  • V2 API 的更改

  • V3 API 的更改

依赖项

测试

将创建单元和 Tempest 测试,以确保正确的实现。

文档影响

记录 REST API 的更改。

参考资料