I want to hopefully clear up any confusion around how ADDM retrieves ESXi serial numbers using the vSphere API (either when talking directly to the ESX/ESXi host or via a vCenter instance)
According to the link that Roland provided (above), the serial number isn’t reliably exposed in previous versions of the vSphere API so we can generally only retrieve the serial number from ESXi 5.0.0 servers (if you are using vCenter for discovery then this must also be 5.0 or later but that is required to managed ESXi 5.0.0 servers in any case). We have seen the serial number retrieved on some Dell servers running ESXi 4.0/4.1 so you may see that but this is the exception not the rule.
As described in the VMware release notes, ADDM looks at the HostSystemIdentificationInfo structures for the serial number. In fact we will retrieve all the values defined there if they are “set” – by “set” we mean the value is not empty or the string “unknown” as those aren’t useful values. These values are all stored as attributes on the recovered HostInfo. We specifically process a value called “ServiceTag” to be the serial number (the “serial” attribute), nothing else is renamed. We do this as both Dell and HP hardware report the serial number in the “ServiceTag” value (there appears to be no documented standard for these names)
So, assuming that the “ServiceTag” value is present in the HostSystemIdentificationInfo and the value is not empty or “unknown” then ADDM should report the serial number of the ESX server. You can confirm whether this value is present by looking at the “Configuration” tab for the server in the vSphere client UI – the HostSystemIdentificationInfo values are listed towards the bottom (values like “Service Tag”, “Asset Tag” and so on)
One potential confusion is that the vSphere client UI will often display a serial number under the “Hardware Status” tab. This value does not seem to come from the HostSystemIdentificationInfo structure – in fact it’s not clear where is comes from at all and appears to be some internal magic! If anyone can point me at some documentation on how we can obtain this value I would love to know how the vSphere client does this
To hopefully illustrate how all this looks I’ve attached a few screenshots:
mob.jpg – how the data appears in the vSphere API (using the vSphere Managed Object Browser). This is example of the data from a vCenter 5.0 instance but the ESXi host looks identical. As you can see there are two values shown, “OemSpecificString” with the value “Product ID: 432195-421” and “ServiceTag” with the value “CZC8091FPP”. There is also an “AssetTag” value which “unknown” (not shown, ADDM will ignore this entry)
client.png – how the data appears on the “Configuration” tab of the vSphere client UI.
vCenter.jpg – how the data appears in the ADDM HostInfo object when the server is discovered via vCenter. The “ServiceTag” value has be put in the “serial” attribute (label “Serial Number”) while the “OemSpecificString” value has been stored in an attribute with the same name (the UI has tried to be clever and labelled this “Oem Specific String”)
vSphere.jpg – the same data in ADDM when the server is discovered directly using the vSphere API.
If the ServiceTag value is present in HostSystemIdentificationInfo in the Managed Object Browser or the “Configuration” tab of the vSphere UI then ADDM should be retrieving it. If the value is not present and the ESX version is 5.0.0 then you need to ask VMware what they mean by “The chassis serial number is available for all hardware vendors.”