Discover node properties and capabilities for ucs drivers

This proposal adds the ability to inspect/update hardware properties and auto-create ports for Cisco UCS B/C/M-servers managed by Cisco UCS Manager. It uses out-of-band H/W inspection utility provided by UcsSdk.


This specification has been retired as the vendor specific UCS driers are no longer available in Ironic. This was a result of the Open Source UcsSdk library no longer being maintained.

Problem description

Node inspection automatically collects node properties. These properties are required for scheduling or for deploy (ports creation). Today UCS drivers doesn’t support node inspection. Enhance UCS drivers to support node inspection.

Proposed change

This spec proposes change to enhance UCS drivers to support node inspection that discovers node properties and capabilities of Cisco UCS B/C/M-series servers managed by Cisco UCSM. This is done by using out-of-band H/W inspection interface provided by UcsSdk Python library.

The following mandatory properties will be discovered and updated in as discussed in

  • memory size

  • CPUs

  • CPU architecture

  • NIC(s) MAC address

  • disks

The following additional properties are of interest to UCS drivers and will be discovered and updated to as capabilities:

  • UCS Host Firmware pack

    capability name : ucs_host_firmware_package possible values : it can vary hardware to hardware.

  • Server Name/Model

    capability name : server_model possible values : it can vary hardware to hardware.

  • RAID level

    capability name : max_raid_level possible values : 0,1,5,6,10

  • secure boot capability

    capability name : secure_boot possible values : true, false

  • PCI (GPU) devices

    capability name : pci_gpu_devices possible values : count of such devices.

  • SR-IOV capabilities

    capability name : sr_iov_devices possible values : count of such devices.

  • NIC Capacity

    capability name : nic_capacity possible values : value with unit.

  • TPM Support

    capability name : trusted_boot possible values : true, false

  • Multi LUN support

    capability name : multi_lun possible values : true, false

  • CDN (Consistent Device Name) Support

    capability name : cdn possible values : true, false

  • VXLAN Capability

    capability name : vxlan possible values : true, false

  • NV GRE Capability

    capability name : nv_gre_devices possible values : count of such devices

  • NET FLOW Capability

    capability name : supports_net_flow possible values : true, false

  • FlexFlash Capability

    capability name : flex_flash possible values : true, false

  • UCS service-profile template name

    capability name : ucs_sp_template possible values : service profile template name

The properties which are already set will be overridden at reinvocation of inspect_hardware() except for NICs. If a port already exists, it will not create a new port for that MAC address. It will take care of adding as well as deleting of the ports for NIC changes [2]. Not all the capabilities are applicable to all Cisco UCS B/C/M-series server models. If a property is not applicable to the hardware, the property will not be added/updated in as capabilities. Inspection fetches only those capabilities applicable to the specific server model.

Inspection returns failure in the following cases:
  • Failed to get basic properties.

  • Failed to get capabilities, due to service-profile configuration errors.

  • Communication errors with UCS Manager.

UCS specific module changes:

  • Implement the InspectInterface method inspect_hardware().


These properties can be discovered manually outside the ironic and updated accordingly with the discovered properties.

Data model impact


State Machine Impact


REST API impact


Client (CLI) impact


RPC API impact


Driver API impact


Nova driver impact


Ramdisk impact


Security impact


Other end user impact


Scalability impact


Performance Impact


Other deployer impact


Developer impact




Primary assignee:


Work Items

  • Implementation of the InspectInterface class and its methods inspect_hardware(), validate() and get_properties().


  • This feature is targeted for Cisco UCS B/C/M-series servers managed by UCS Manager 2.2(4b) or above. All the capabilities listed might not be available with older versions of UCS Manager (like 2.2(3b)).

  • Depends on UcsSdk library.


Unit tests will be added conforming to ironic testing requirements, mocking UcsSdk. It will get tested on real hardware by UCS team with the available hardware models to the team.

Upgrades and Backwards Compatibility

No impact.

Documentation Impact

‘Hardware Inspection’ section will be added and updated accordingly in doc/source/drivers/ucs.rst.


1. UcsSdk library: * *

2. Introspect spec: *