Showing results for 
Search instead for 
Did you mean: 

Cisco UCS Driver and vendor_passthru APIs for OpenStack Ironic Project



Ironic is the OpenStack service which provides the capability to provision bare metal servers. The initial version of Ironic pxe_cisco driver adds support to manage power operations of Cisco UCS B/C series servers that are UCSM managed and provides vendor_passthru APIs.

User can control the power operations using pxe_cisco driver. This doesn’t require IPMI protocol to be enabled on the servers as the operations are controlled via Service Profiles.

The vendor_passthru APIs allows the user to enroll the nodes automatically to Ironic DB. Also provides APIs to get the Node specific information like, Inventory, Faults, Location, Firmware Version etc.

Get Code

Code is available in GitHub @

Python SDK

Use python SDK release 0.8.1 available in


The following are the pre-requisites and/or limitations of this plugin.

  • This plugin doesn’t configure any policies on UCSM. Like creating service-profile, associating with available server while provisioning bare-metal instance.
  • It is expected that the Service Profile is created up front before enrolling the node in ironic.
  • Service-profile and UCSM related information is captured in Ironic node’s driver_info.

Node enroll using pxe_cisco driver

Enroll node:

Host# ironic node-create -d pxe_cisco -i hostname= -i username=admin -i password=password -i service_profile="org-root/ls-blade-1" -p cpus=2  -p memory_mb=16384  -p local_gb=200  -p cpu_arch=x86_64

Create port:

Host# ironic port-create -n <node-uuid> -a <mac-address>

Set Power state:

Host# ironic node-set-power-state <node-uuid> on/off

Show Ironic node:

Host# ironic node-show <node-uuid>

Enroll Nodes using pxe_cisco driver vendor_passthru API:

Host# ironic driver-vendor-specific pxe_cisco enroll_nodes hostname=<ucsm-hostname> username=<username> password=<password>

This allows for automated node enrollment of all associated Service Profiles.

Executing node vendor_passthru APIs:

In addition, using the vendor pass through mechanisms, the following additional GET APIs are supported. Please note that these are not available on CLI shell currently. The Ironic conductor log will contain this information on execution of the API.

Host# ironic node-vendor-passthru <node-uuid> <get-vendor-api>

List of GET vendor APIs supported:

  • get_firmware_version
  • get_inventory
  • get_faults
  • get_location
  • get_power_stats
  • get_temperature_stats

OpenStack bring up on UCS

An OpenStack installation comes with its challenges – from OS installation to the right modules being loaded on the nodes. Tools from various vendors that help deliver a smooth setup process have addressed most of these challenges. This, of course, assumes that the bare metal is already setup and running outside the purview of OpenStack itself.

This document describes how to setup brand new Cisco UCS to use with OpenStack.

At higher level these tasks are divided as below.

  • Install Cisco UCS Hardware.
  • Configure the required policies listed below on centralized policy manager UCS Central /UCS Director.
    • Service-profile templates
    • Identity pools, IP, MAC pool, UUID, server pool.
    • Auto-config policy
    • Server-pool qualifier, server-pooling policy
    • Vlans, Vnics, scrub policy
    • Server-port, uplink port
  • After resolving the policies, UCS Manager would discover the chassis and servers.
  • Use PXE boot provider to boot the server with desired OS.
  • Follow the similar steps to bring up other nodes in the setup.

Note: Setting up PXE boot provider is out of scope of this document.

Content for Community-Ad

This widget could not be displayed.