The Broadcom Compatibility Guide (formerly VMware Compatibility Guide) is where users would go to check hardware (new or existing) compatibility with VMware software.
There are a number of different compatibility guides that you can search through from CPU processors to servers to the various of I/O devices including accelerators and graphics cards. For users with a small number of hardware devices, search is pretty straight forward but if you have a variety of different hardware to check, the web interface may not be the quickest.
One thing that I was pleasantly surprised to learn was that the Broadcom Compatibility Guide (BCG) could easily be consumed programmatically, unlike the previous VMware Compatibility Guide (VCG) which had a different backend system.
While there is not an official BCG API, which would include documentation, support and backwards compatibility, users can interact with the BCG using the same API as the BCG web interface.
To demonstrate the use of the BCG API, I will be using the I/O Device and vSAN SSD compatibility guide as an example and I have created PowerShell script called broadcom-compatibility-guide-api.ps1 which contains the following PowerShell functions:
- Check-BroadcomCompatIoDevice
- Check-BroadcomCompatVsanSsdDevice
Both of these functions assumes you will be searching based on the combination of the Vendor ID (VID), Device ID (DID) and SubSystem Vendor ID (SVID).
Note: The BCG allows for a variety of search and filter options, the examples below is just one way to consume the BCG APIs. If you are interested in other search methods, take a look at the reference at the very bottom that describes how to consume other filter options and/or compatibility guides from the BCG.
Step 1 - Download the queryHostPCIInfo.ps1 script (which I have also updated to allow users to easily exclude non-applicable devices using an exclusion strings) and then make a note of the device VID(s), DID(s) and SVID(s) that you wish to lookup.
Step 2 - Download the broadcom-compatibility-guide-api.ps1 and dot source the file to access the two PowerShell functions:
. ./broadcom-compatibility-guide-api.ps1
Here is an example checking I/O Device BCG:
Check-BroadcomCompatIoDevice -VID "14e4" -DID "1751" -SVID "14e4"
Here is an example checking vSAN SSD BCG:
Check-BroadcomCompatVsanSsdDevice -VID "8086" -DID "0b60" -SVID "1028"
By default, the function will return the last four supported ESXi releases, but you can change that by specifying the ShowNumberOfSupportedReleases parameter:
Check-BroadcomCompatIoDevice -VID "14e4" -DID "1751" -SVID "14e4" -ShowNumberOfSupportedReleases 2
For checking vSAN SSD BCG, you can also specify specific various supported vSAN Tier (Hybrid Cache, All-Flash Cache, All-Flash Capacity or ESA) by using the following params: -ShowHybridCacheTier, -ShowAFCacheTier, -ShowAFCapacityTier and -ShowESATier):
Check-BroadcomCompatVsanSsdDevice -VID "8086" -DID "0b60" -SVID "1028" -ShowNumberOfSupportedReleases 2 -ShowESATier
Check-BroadcomCompatVsanSsdDevice -VID "8086" -DID "0b60" -SVID "1028" -ShowNumberOfSupportedReleases 2 -ShowAFCacheTier -ShowESATier
If you are interested in automating other compatibility guides within BCG, you can figure out the payload by using browser developer mode. For example, in Chrome before invoking a search within a specific compatibility guide, click the three "dots" on the upper right hand corner of your browser and select More Tools->Developer Tools which will open the Chrome Developer console and you can follow the screenshot to understand the JSON payload specification for the "viewResults" API query.
Thanks for the comment!