CiscoDevNet / intersight-powershell

Cisco Intersight PowerShell
Apache License 2.0
16 stars 4 forks source link

Retrieve Object Firmware Versions #146

Closed tbrock47 closed 5 months ago

tbrock47 commented 6 months ago

I need assistance with retrieving the running firmware bundle version for a specific device. Currently I've been getting the compute board via serial number and then retrieving the parent (be it blade or rack unit) for other projects I have been working on.

What I have not been able to figure out is how to retrieve the "PackageVersion". I think this data is in the management.Controller class on the blade, but I can't seem to sort out how to pass the correct info to Get-IntersightFirmwareRunningFirmware.

$Board = (Get-IntersightComputeBoard -Serial $Serial)
$Parent = $Board.Parent.ActualInstance | Get-IntersightManagedObject | ConvertFrom-Json

I could be going about this all wrong, but the long and short of it is that I would like to retrieve the firmware "PackageVersion" for any device that I have the serial number for.

Also, can someone point me to the best community forum location where I can post future issues like this? I assume in this repo is not likely to be the best place to pose my questions.

briamorr commented 6 months ago

Will this work for you or are you looking for data from a different spot?

Get-IntersightComputePhysicalSummary -Serial $Serial | Select PackageVersion,Firmware

PackageVersion Firmware
-------------- --------
4.1(3f)        4.1(3d)

bundleversion

tbrock47 commented 6 months ago

Yes. That worked. Thanks! The learning curve here is much more difficult than UCSM was. I never even tried that command.

My curiosity has peaked however. Get-IntersightFirmwareRunningFirmware just seemed like the command I needed. How would you pull the information using Get-IntersightFirmwareRunningFirmware?

I'm having the hardest time getting used to not being able to pipe everything together like I used to.

tbrock47 commented 6 months ago

Or lets say I wanted the firmware version for another object time, like a fabric interconnect, or a chassis IOM/IFM. What would be the method for those?

vvb commented 6 months ago

Hi @tbrock47 Get-IntersightRunningFirmware is indeed the right place to get all versions. Here is an example of how you would get all versions related to a given server. You could replace the Server Moid with the Chassis/IFM etc Moid for other use-cases.

Properties of interest are Dn, Ancestors, Parent, Version (VarVersion), PackageVersion

PS /Users/vvb> $server = Get-IntersightComputeRackUnit -Serial WZP232ABCDE
PS /Users/vvb> Get-IntersightFirmwareRunningFirmware -Filter "Ancestors/Moid eq '$($server.Moid)'"| ForEach-Object { $_.Results} | Select Type,VarVersion,Dn

Type               VarVersion                  Dn
----               ----------                  --
blade-bios         C220M5.4.2.2d.0.0808221351… sys/rack-unit-1/bios/fw-boot-loader
blade-controller   4.2(2f)                     sys/rack-unit-1/mgmt/fw-boot-loader
storage-controller 7.19.00.0_0x07130200        sys/rack-unit-1/board/storage-SAS-MRAID/fw-boot-loader
adaptor            0x800016F7-1.826.0          sys/rack-unit-1/network-adapter-L/mgmt/fw-system
blade-controller   4.2(2f)                     sys/rack-unit-1/mgmt/fw-system
storage-controller 51.19.0-4532                sys/rack-unit-1/board/storage-SAS-MRAID/fw-system

PS /Users/vvb>

note: There seems to be an issue here, where Version property is being shown as VarVersion. This is because of Version being a reserved keyword in our generation tooling. We are checking on this. Please use VarVersion for now.

tbrock47 commented 6 months ago

Thanks @vvb Let me see if I can adapt this for my use. We have thousands of blades and rack units so I'll need to adapt it to be dynamic. Also, I am more interested in pulling the "PackageVersion" (Bundle Version) like @briamorr shows in the screen shot. I believe this is pulled from mgmt/fw-system, but I am not positive.

To make it clearer what I'm working on, I'm generating reports for ESXi versions and the currently applied firmware package for all our ESXi hosts. As you can see below from a few of the outputs, we have a mix of B, X and C series hardware.

Get-IntersightFirmwareRunningFirmware gets me the firmware versions for all the components on the device, but if I'm simply looking for the Bundle Version as reported in Intersight, I think I'll just need to limit the return to the mgmt/fw-system object (again assuming this is the item that supplies the data to the bundle version in the GUI).

$VMHost = Get-VMHost | Get-Random
$Serial = ($VMHost.ExtensionData.Hardware.SystemInfo.OtherIdentifyingInfo | Where-Object { $_.IdentifierType.Key -eq 'SerialNumberTag' }).IdentifierValue
$Parent = (Get-IntersightComputeBoard -Serial $Serial).Parent.ActualInstance | Get-IntersightManagedObject | ConvertFrom-Json
Get-IntersightFirmwareRunningFirmware -Filter "Ancestors/Moid eq '$($Parent.Moid)'" | ForEach-Object { $_.Results } | Select-Object Type,PackageVersion,VarVersion,Dn

Type             PackageVersion VarVersion                 Dn
----             -------------- ----------                 --
blade-controller                4.2(1c)                    sys/chassis-14/blade-4/mgmt/fw-boot-loader
blade-bios       4.2(1i)        B200M5.4.1.3i.0.0713210713 sys/chassis-14/blade-4/bios/fw-boot-loader
adaptor          4.2(1i)        4.5(1a)                    sys/chassis-14/blade-4/adaptor-2/mgmt/fw-system
adaptor          4.2(1i)        4.5(1a)                    sys/chassis-14/blade-4/adaptor-1/mgmt/fw-system
blade-controller 4.2(1i)        4.2(1c)                    sys/chassis-14/blade-4/mgmt/fw-system

Type             PackageVersion VarVersion                 Dn
----             -------------- ----------                 --
blade-bios       4.2(1i)        B200M6.4.2.1f.0.0916212235 sys/chassis-15/blade-8/bios/fw-boot-loader
blade-controller                4.2(1c)                    sys/chassis-15/blade-8/mgmt/fw-boot-loader
blade-controller 4.2(1i)        4.2(1c)                    sys/chassis-15/blade-8/mgmt/fw-system
adaptor          4.2(1i)        5.2(1b)                    sys/chassis-15/blade-8/adaptor-1/mgmt/fw-system

Type               PackageVersion VarVersion                 Dn
----               -------------- ----------                 --
blade-bios         4.2(1n)        C240M6.4.2.1j.0.0709220804 sys/rack-unit-14/bios/fw-boot-loader
blade-controller                  4.2(1j)                    sys/rack-unit-14/mgmt/fw-boot-loader
storage-controller                09.31.00.00_16.00.07.00    sys/rack-unit-14/board/storage-SAS-1/fw-boot-loader
storage-controller                09.31.00.00_16.00.07.00    sys/rack-unit-14/board/storage-SAS-2/fw-boot-loader
storage-controller                1.1.17.1002                sys/rack-unit-14/board/storage-SATA-3/fw-boot-loader
blade-controller   4.2(1n)        4.2(1j)                    sys/rack-unit-14/mgmt/fw-system
adaptor            4.2(1n)        5.2(1d)                    sys/rack-unit-14/adaptor-1/mgmt/fw-system
storage-controller 4.2(2c)        20.65.05.00                sys/rack-unit-14/board/storage-SAS-1/fw-system
local-disk                        D3MC000                    sys/rack-unit-14/board/storage-SAS-1/disk-1/fw-system
local-disk                        0107                       sys/rack-unit-14/board/storage-SAS-1/disk-2/fw-system
local-disk                        D3MC000                    sys/rack-unit-14/board/storage-SAS-1/disk-3/fw-system
local-disk                        D3MC000                    sys/rack-unit-14/board/storage-SAS-1/disk-4/fw-system
local-disk                        D3MC000                    sys/rack-unit-14/board/storage-SAS-1/disk-5/fw-system
local-disk                        D3MC000                    sys/rack-unit-14/board/storage-SAS-1/disk-6/fw-system
local-disk                        D3MC000                    sys/rack-unit-14/board/storage-SAS-1/disk-7/fw-system
local-disk                        D3MC000                    sys/rack-unit-14/board/storage-SAS-1/disk-8/fw-system
local-disk                        D3MC000                    sys/rack-unit-14/board/storage-SAS-1/disk-9/fw-system
local-disk                        D3MC000                    sys/rack-unit-14/board/storage-SAS-1/disk-10/fw-system
local-disk                        D3MC000                    sys/rack-unit-14/board/storage-SAS-1/disk-11/fw-system
local-disk                        D3MC000                    sys/rack-unit-14/board/storage-SAS-1/disk-12/fw-system
storage-controller 4.2(2c)        20.65.05.00                sys/rack-unit-14/board/storage-SAS-2/fw-system
storage-controller 4.2(2c)        2.3.17.1014                sys/rack-unit-14/board/storage-SATA-3/fw-system
local-disk         4.2(2c)        D3MC000                    sys/rack-unit-14/board/storage-SATA-3/disk-253/fw-system
local-disk         4.2(2c)        D3MC000                    sys/rack-unit-14/board/storage-SATA-3/disk-254/fw-system

Type             PackageVersion VarVersion                 Dn
----             -------------- ----------                 --
blade-bios       4.3(2c)        X210M6.4.3.2c.0.0726232000 sys/chassis-1/blade-1/bios/fw-boot-loader
blade-controller                5.2(0.230092)              sys/chassis-1/blade-1/mgmt/fw-boot-loader
blade-controller 4.3(2c)        5.2(0.230092)              sys/chassis-1/blade-1/mgmt/fw-system
adaptor          4.3(2c)        5.3(2.40)                  sys/chassis-1/blade-1/adaptor-1/mgmt/fw-system
tbrock47 commented 6 months ago

I think @briamorr may have the simpler solution with Get-IntersightComputePhysicalSummary.

(Get-IntersightComputePhysicalSummary -Serial $Serial).PackageVersion

vvb commented 6 months ago

If you are only interested in PackageVersion from the Server Objects then yes, Get-IntersightComputePhysicalSummary will internally fetch the package version for both compute.Blade and compute.RackUnit objects. The Summary object is a view that is mapped to Blade and RackUnits objects internally.

tbrock47 commented 6 months ago

Thanks for the help. I think I'm on the right track here.

Last question was if you all could point me to a better community forum to pose questions like this in the future rather than posting in the repo.

tbrock47 commented 5 months ago

Going to go ahead and close this issue. Thanks for the help.