cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Announcements

Cisco UCS PowerTool Suite - PowerShell Modules for Cisco UCS Manager, Cisco IMC, UCS Central

171332
Views
57
Helpful
67
Comments

We are pleased to announce the release of Cisco UCS PowerTool Suite version 2.4.1.

 

Cisco UCS PowerTool suite is a set of PowerShell modules for Cisco UCS Manager, Cisco IMC and Cisco UCS Central that helps in configuration and management of Cisco UCS domains and solutions.

 

Key Features in Release 2.4.1

  • Support for new features in Cisco IMC Release 3.1(3a)
  • Support for new features in Cisco UCSM Release 3.2(3)
  • Updated cmdletSet-ImcHuuFirmwareUpdaterwith new parameters.
  • Updated catalog rules for M5 Servers.

 

Key Features in Release 2.3.1

  • Support for new features in Cisco IMC Release 3.1(1d)
  • Support for new features in Cisco UCS Central Release 2.0(1b)
  • Support for new features in Cisco UCSM Release 3.2(1d)
  • Updated cmdletAdd-UcsCentralServiceProfileFromTemplateto create Service profile with service profile template
  • Added cmdletGet-UcsCentralPolicyUsageto provide support to fetch policy details for any managed object.

 

Key Features in Release 2.2.1

  • Support for new features in Cisco IMC Release 3.0(1c) and 3.0(2b)
  • Support to launch the UCS Manager HTML GUI automatic login
  • Support to specify the JSON file as input for uploading the hardware profile to HCL Tool
  • Support to collect advisories for the hardware profile in HCL Tool cmdlet
  • Security enhancement to HCL Tool cmdlets

Your scripts written using PowerTool 1.x will break due to module name changes.

The following table lists the module name changes in this release:

 

Previous Module Name

 

New Module Name

CiscoUcsCentralPS

Cisco.UCSCentral

CiscoImcPS

Cisco.IMC

CiscoUcsPS

Cisco.UCSManager

 

Installer download (from cisco.com):

 

Module download (from Powershell Gallery):

  • Cisco.UCSManager

             https://www.powershellgallery.com/packages/Cisco.UCSManager/2.4.1.3

  • Cisco.IMC

               https://www.powershellgallery.com/packages/Cisco.IMC/2.4.1.3

  • Cisco.UCSCentral

              https://www.powershellgallery.com/packages/Cisco.UCSCentral/2.4.1.3

  • Cisco.UCS.DesiredStateConfiguration

               https://www.powershellgallery.com/packages/Cisco.UCS.DesiredStateConfiguration/2.4.1.3

 

Documentation:

 

Reference: Cisco UCS PowerTool Command Reference for Cisco UCS Manager

 

 

External customers - For any queries/feedback on PowerTool, contact Cisco TAC or ucs-powertool@cisco.com or add a discussion to the Cisco Developed Integrations sub-space on Cisco UCS Communities

We are also on Slack - slack requires registration, but the cisco-ucs-powertool channel on powershell team is open invitation to anyone to register here. Once you join the powershell slack team you can join cisco-ucs-powertool channel here

 

Internal (Cisco) customers and employees - Contact us at ucs-powertool@cisco.com for support questions and ask-ucs-tme@cisco.com or ask-ucs-pm@cisco.com for roadmap questions and feedback.

 

Comments
Jeffrey Foster
Cisco Employee

Hi Cheryl,

Upon second look, this functionality is available via the adminPower attribute. I missed it in my review of the In Schema yesterday - but you can initiate a reboot using either the XML API or PowerTool.

With PowerTool you can use the 'Set-ImcRackUnit' Cmdlet:

Set-ImcRackUnit -AdminPower bmc-reset-immediate

Cheers!

Jeff

tfarray
Cisco Employee

Hello,

Here is an easy one that could get easily fixed in future version of UCSM PowerCli :

$Requested_VLAN = Add-UcsVlan -Name $newPG -Id $newVlanID -LanCloud $LanCloud

I am trying to hide out the output of this command but it does not work.

Could the result of this command not get printed on screen when storing result to a variable ? This would greatly clear out the screen output.

Thanks

nveda
Beginner

Hi Thomas,

I have tried above and result of command will not print on screen when you store result in a variable.

S C:\> $LanCloud = Get-UcsLanCloud
PS C:\> $newPG = "testVlan"
PS C:\> $newVlanID = "65"
PS C:\> $Requested_VLAN = Add-UcsVlan -Name $newPG -Id $newVlanID -LanCloud $LanCloud
PS C:\>
PS C:\> $Requested_VLAN


AssocPrimaryVlanState    : ok
AssocPrimaryVlanSwitchId : NONE
Cloud                    : ethlan
CompressionType          : included
ConfigIssues             :
DefaultNet               : no
EpDn                     :
Global                   : 0
Id                       : 65
IfRole                   : network
IfType                   : virtual
Local                    : 0
Locale                   : external
McastPolicyName          :
Name                     : testVlan
OperMcastPolicyName      :
OperState                : ok
OverlapStateForA         : ok
OverlapStateForB         : ok
PeerDn                   :
PolicyOwner              : local
PubNwDn                  :
PubNwId                  : 1
PubNwName                :
Sacl                     :
Sharing                  : none
SwitchId                 : dual
Transport                : ether
Type                     : lan
Dn                       : fabric/lan/net-testVlan
Rn                       : net-testVlan
Status                   : created
XtraProperty             : {}
Ucs                      : ****-******

Let me know if I am missing something or you have different question.

Thank you,

Nitin

Lionel1
Community Member

Any chance you guys are going to do a better job getting your UCS Central CMDLETs to support pipelining?

Most people would expect this to work:

$blade | get-UcsCentralEquipmentLocatorLedOperation | set-UcsCentralEquipmentLocatorLedOperation -AdminState on -force

but I have to do something like this:

$bladeLocatorDn = "$($blade.dn)/locator-led/remote-oper"

get-UcsCentralEquipmentLocatorLedOperation -dn $bladeLocatorDn | set-UcsCentralEquipmentLocatorLedOperation -AdminState on -force

Ben

nveda
Beginner

Hi Ben,

You are missing parent of EquipmentLocatorLedOperation . Try below and it should work for you.

PowerTool C:\> Get-UcsCentralBlade -SlotId 2| Get-UcsCentralLocatorLed | Get-UcsCentralEquipmentLocatorLedOperation | Set-UcsCentralEquipmentLocatorLedOperation -AdminState on -Force

AdminState       : on
LastModified     : 1970-01-01T05:30:00.000
RemoteErrorCode  : 0
RemoteErrorDescr :
TriggerStatus    : unknown
Dn               : compute/sys-1008/chassis-1/blade-2/locator-led/remote-oper
Rn               : remote-oper
Status           : modified
XtraProperty     : {}
UcsCentral       : XXXX

A good way to learn cmdlet meta hierarchy is to use below cmdlet.

PS C:\> Get-UcsCentralCmdletMeta -ClassId EquipmentLocatorLedOperation -Tree

EquipmentLocatorLed (UcsCentralLocatorLed) (Get, Set)

  |-EquipmentLocatorLedOperation (UcsCentralEquipmentLocatorLedOperation) (Get, Set

     |-FaultInst (UcsCentralFault) (Get)

Hope above helps.

Do let us know if you have any additional questions.

Thank you,
Nitin

Ben Conrad
Beginner

Hi,

I tried this with another cmdlet

PowerTool C:\> $blade | Get-UcsCentralStorageLocalDisk

>>> Doesn't work, I will use CmdletMeta to find the proper class below...

PowerTool C:\>

PowerTool C:\>

PowerTool C:\> Get-UcsCentralCmdletMeta -class StorageLocalDisk -tree

StorageController (UcsCentralStorageController) (Get)

  |-StorageLocalDisk (UcsCentralStorageLocalDisk) (Get)

PowerTool C:\>

PowerTool C:\>

PowerTool C:\> $blade | Get-UcsCentralStorageController

>>> Doesn't work because this CMDLET does not support pipelining

PowerTool C:\>

PowerTool C:\> $blade.dn

compute/sys-1007/chassis-1/blade-1

PowerTool C:\> $storageControllerDn = $blade.dn+"/board/storage-SAS-1"

>>> I have to tack this on to match the storagecontroller DN

PowerTool C:\> Get-UcsCentralStorageController -dn $storageControllerDn

>>> This works.

So, I have learned to use Get-UcsCentralCmdletMeta and that is good.  But the pipelining support is not very good (my original complaint).  Is there a way to reduce the amount of work and trial and error?

Ben

reswaran
Cisco Employee

Ben,

It is

PowerTool C:\> get-ucscentralblade | Get-UcsCentralComputeBoard | Get-UcsCentralStorageController |

Get-UcsCentralStorageLocalDisk

"..../blade-1/board/storage-SAS-1"

in the above DN, blade-1 corresponds to the ComputeBlade MO, board  corresponds to the ComputeBoard, storage-SAS-1 is for the StorageController. So the DN should convey the level of pipeline required.

Hope this helps.

BTW, did you try the convertto cmdlet in ucs central powertool? Agree that its not very straightforward but I suggest you trying it .Please refer the release notes for the steps to enable GUI logs. Once enabled, you can run the convertto cmdlet on the same machine which will convert the GUI actions into cmdlets.

Cisco UCS Central PowerTool, Release 0.9.x User Guide - Cisco

Ben Conrad
Beginner

Thanks, I neglected to use CmdletMeta on UcsCentralStorageController.


When I map it out with CmdletMeta it's clear that I need to use class UcsCentralComputeBoard and class UcsCentralComputeBoard accepts UcsCentralBlade.

Ben

Ben Conrad
Beginner

Another CmdletMeta question,

This works: Get-UcsCentralCmdletMeta -Tree -ClassId StorageLocalDisk

This does not: Get-UcsCentralCmdletMeta -Tree -ClassId ServerPower

So it's hard to figure out how to use pipelining to do something like this:

$blade | Get-UcsCentralServerPower

It seems not all CMDLETs honor Get-UcsCentralCmdletMeta but that is not what is happening....

So I dig around some more, I this should work but it does not:

Get-UcsCentralCmdletMeta -Tree -ClassId ServiceProfile

So I try Get-UcsCentralCmdletMeta -Tree -Noun UcsCentralServiceProfile and that works and I see the classID is 'LsServer'  I also happen to see that noun UcsCentralServerPower maps to LsPower classID.

Then I see that I can do something like this:

Get-UcsCentralServiceProfile -Dn $blade.AssignedToDn | Get-UcsCentralServerPower

So, is the rule of thumb to always use the Noun and not the ClassID?  After going through all this I think the answer is obviously yes and this thread is a good reference for Google search :-)

Ben

nveda
Beginner
Hi Ben,
Get-UcsCentralCmdletMeta cmdlet works well with ClassId and Noun.
Below is not working for you because ServerPower is not ClassId. ClassId for this Managed Object is
lsPower
Get-UcsCentralCmdletMeta -Tree -ClassId ServerPower
Please try below cmdlet to get list of all ClassId and Noun.
Get-UcsCentralCmdletMeta | more
Thank you,
Nitin
Ben Conrad
Beginner

Yup, so that's the trick to easily map the CMDLET to the ClassId:

PS E:\> Get-UcsCentralCmdletMeta | ? {$_.Noun -eq 'UcsCentralServerPower' }

ClassId                   : LsPower

Noun                      : UcsCentralServerPower

Verb                      : Get, Set

PipelineClassId           : {ComputeInstance, LsServer}

LimitScopePipelineClassId : {}

Provider                  : {}

DefaultProvider           :

MoMeta                    : Cisco.UcsCentral.UcsMoMeta

Thanks,

Ben

tfarray
Cisco Employee

Hello,

In Ucs Central, I'm trying to find all local service profiles (not UCS Central managed) that are in pending reboot - due to FW update, for example.

The UCSM equivalent is : Get-UcsServiceProfile -OperState pending-reboot

But this is slow, as we have to connect to every single UCS.

almost all of the UCS are connected (linked or managed) to UCS Central, so why not using UCS Central ?

Unfortunately, while using powershell commands, I wasn't able to retrieve this information.

I tried using the following :

$UcscCS = Get-UcsCentralComputeSystem | ? { $_.name -like "aer01-dcm01n-ucs02" }

$UcsBlades = Get-UcsCentralBlade | ? { $_.dn -like ($UCSCS.dn + "/*")}

But then I am unable get the command which would get me the needed information.

I tried getting it through the Firmware cmd but this led me nowhere as I would need to know which FW should the Service Profile have.

Using the GUI, and browsing inside

server > Local Service Profile > opening properties of a local service profile > I can see that it is possible to retrieve pending reboot state.

But get-ucscentralserviceprofile won't allow me to show local service profiles, only Managed SP (unless I missed a switch or statement somewhere)

Is there any way to retrieve pending-reboot state for a "linked" / local service profile ?

Thanks

vravish
Cisco Employee

Hi Thomas,

In UcsCentral PowerTool, Global Service Profiles are accessed with Get-UcsCentralServiceProfile cmdlet and Local Service Profiles are accessed using “Get-UcsCentralComputeInstance” cmdlet.
For your case you can try cmdlet: “Get-UcsCentralComputeInstance -OperState pending-reboot”.

Please let us know if you have any more queries.

Thanks,
Vinay Ravish

Ben Conrad
Beginner

Vinay,

Can you post the API reference for UCS Central?  It seems that using UCSC PowerTool is a trial and error operation as shown from the Get-UcsCentralComputeInstance example.

Ben

reswaran
Cisco Employee

Hi Ben,

Unfortunately, we do not have one right now. We understand your problem. We will discuss and see how it can be addressed asap.

-Ravikumar

Create
Recognize Your Peers
Content for Community-Ad