返回超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 的更改。
参考资料¶
否