发现 ucs 驱动程序的节点属性和功能

https://bugs.launchpad.net/ironic/+bug/1526359

该提案增加了检查/更新硬件属性以及为 Cisco UCS B/C/M 服务器(由 Cisco UCS Manager 管理)自动创建端口的能力。它使用 UcsSdk 提供的带外 H/W 检查实用程序。

注意

由于供应商特定的 UCS 驱动程序不再在 Ironic 中可用,因此该规范已退役。这是由于开源 UcsSdk 库不再维护所致。

问题描述

节点检查会自动收集节点属性。这些属性对于调度或部署(端口创建)是必需的。目前 UCS 驱动程序不支持节点检查。增强 UCS 驱动程序以支持节点检查。

提议的变更

本规范建议更改以增强 UCS 驱动程序,以支持节点检查,该检查会发现由 Cisco UCSM 管理的 Cisco UCS B/C/M 系列服务器的节点属性和功能。这是通过使用 UcsSdk Python 库提供的带外 H/W 检查接口来完成的。

如下强制属性将在节点属性中被发现和更新,如 https://specs.openstack.org/openstack/ironic-specs/specs/kilo/ironic-node-properties-discovery.html 中讨论的那样

  • 内存大小

  • CPU

  • CPU 架构

  • 网卡(s) MAC 地址

  • 磁盘

以下附加属性对 UCS 驱动程序有兴趣,并将作为功能被发现并更新到 node.properties

  • UCS 主机固件包

    功能名称:ucs_host_firmware_package 可能的值:硬件不同,可能有所不同。

  • 服务器名称/型号

    功能名称:server_model 可能的值:硬件不同,可能有所不同。

  • RAID 级别

    功能名称:max_raid_level 可能的值:0,1,5,6,10

  • 安全启动功能

    功能名称:secure_boot 可能的值:true, false

  • PCI (GPU) 设备

    功能名称:pci_gpu_devices 可能的值:此类设备的数量。

  • SR-IOV 功能

    功能名称:sr_iov_devices 可能的值:此类设备的数量。

  • NIC 容量

    功能名称:nic_capacity 可能的值:带有单位的值。

  • TPM 支持

    功能名称:trusted_boot 可能的值:true, false

  • 多 LUN 支持

    功能名称:multi_lun 可能的值:true, false

  • CDN (一致设备名称) 支持

    功能名称:cdn 可能的值:true, false

  • VXLAN 功能

    功能名称:vxlan 可能的值:true, false

  • NV GRE 功能

    功能名称:nv_gre_devices 可能的值:此类设备的数量

  • NET FLOW 功能

    功能名称:supports_net_flow 可能的值:true, false

  • FlexFlash 功能

    功能名称:flex_flash 可能的值:true, false

  • UCS service-profile 模板名称

    功能名称:ucs_sp_template 可能的值:service profile 模板名称

已经设置的属性将在重新调用 inspect_hardware() 时被覆盖,但 NIC 除外。如果端口已经存在,则不会为该 MAC 地址创建新端口。它将负责添加以及删除 NIC 更改的端口 [2]。并非所有功能都适用于所有 Cisco UCS B/C/M 系列服务器型号。如果某个属性不适用于硬件,则该属性将不会被添加到 node.properties 中作为功能。检查仅提取适用于特定服务器型号的功能。

在以下情况下,检查将返回失败
  • 获取基本属性失败。

  • 由于 service-profile 配置错误,获取功能失败。

  • 与 UCS Manager 的通信错误。

UCS 特定模块更改:

  • 实现 InspectInterface 方法 inspect_hardware()。

备选方案

这些属性可以在 ironic 之外手动发现,并相应地更新 node.properties 中的已发现属性。

数据模型影响

无。

状态机影响

REST API 影响

无。

客户端 (CLI) 影响

RPC API 影响

无。

驱动程序 API 影响

无。

Nova 驱动程序影响

无。

Ramdisk 影响

N/A

安全影响

无。

其他最终用户影响

无。

可扩展性影响

无。

性能影响

无。

其他部署者影响

无。

开发人员影响

无。

实现

负责人

主要负责人

saripurigopi

工作项

  • 实现 InspectInterface 类及其方法 inspect_hardware()、validate() 和 get_properties()。

依赖项

  • 此功能针对由 UCS Manager 2.2(4b) 或更高版本管理的 Cisco UCS B/C/M 系列服务器。较旧版本的 UCS Manager(例如 2.2(3b))可能不可用所有列出的功能。

  • 依赖于 UcsSdk 库。

测试

将添加符合 ironic 测试要求的单元测试,模拟 UcsSdk。UCS 团队将使用可用的硬件型号在实际硬件上对其进行测试。

升级和向后兼容性

没有影响。

文档影响

将在 doc/source/drivers/ucs.rst 中添加和更新“硬件检查”部分。

参考资料

1. UcsSdk 库:* https://github.com/CiscoUCS/UcsSdk * https://pypi.ac.cn/project/UcsSdk

2. Introspect 规范:* https://github.com/openstack/ironic-specs/blob/master/specs/kilo/ironic-node-properties-discovery.rst