I created alarm for a host, and it rings as expected.
However, even after acknowledging the alarm, the red warning pointer on the host is still appearing. I have to manually click "Reset alarm to green" to make it go away.
Could not find an equivalent method in Alarm Manager to "Reset alarm to green"... can someone guide where is this API ?
Please also see the snapshot for more clarity
The acknowledge alarm action will make sure that the alarm doesn't fire again until the status went to back to a green or gray state.
See the AcknowledgeAlarm method.
This is available to avoid that the same actions are fired over and over again.
To reset the status you will have to use the ReconfigureAlarm method.
The following script shows how to do this for a rather simple event alarm (I used the "VM being cloned event" for testing).
$vm = Get-VM <Guest-with-triggered-alarm> | Get-View foreach($daState in $vm.DeclaredAlarmState){ if($daState.OverallStatus -eq "red"){ $alarm = Get-View $daState.Alarm continue } } $spec = [http://VMware.Vim.AlarmSpec|http://VMware.Vim.AlarmSpec]$alarm.Info $alarm.ReconfigureAlarm($spec)
This seems to do the trick but I suspect it will require further testing.
Some features to be added:
*) it won't handle situations where there is more than event on an entity
*) it doesn't allow to specify which alarm should be reset
*) it doesn't handle the same alarm being triggered for multiple entities
*) ....
I feel a blog entry coming up
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Problem: It resets ALL alarms on all managed objects what to do ?
# Which object alarm kicked in ( use env:VMWARE_ALARM_ID) $alMOR = New-Object Vmware.Vim.ManagedObjectReference $alMOR.type = "Alarm" $alMOR.value = "alarm-33" $alarm = Get-View $alMOR # Alarm target host (use env: VMWARE_ALARM_EVENT_HOST) $alarmHost = Get-VMHost serverxyz | Get-View # Acknowledge Alarm --works OK $am.AcknowledgeAlarm($alarm.MoRef, $alarmHost.MoRef) # Reset Alarm to Green -- resets ALL Alarms -- does NOT solves the purpose $alarm.ReconfigureAlarm($alarm.Info)
anyone...pls help
What vCenter build do you use? I don't get the option that you have, was this feature added in a patch? Or is there something special you have to do to get this option? Was that alarm a custom alarm or a default alarm? Little features like this that sneak in are often not controllable via the API, unfortunately.
=====
Carter Shanklin
Read the PowerCLI Blog
[Follow me on Twitter|http://twitter.com/cshanklin]
The method, used by the vSphere Client, is called SetAlarmStatus and is currently undocumented.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Are you able to call that method in PowerCLI? Usually methods like this can't be called, e.g. EnableAdmin / DisableAdmin, without using the "scheduled task trick".
=====
Carter Shanklin
Read the PowerCLI Blog
[Follow me on Twitter|http://twitter.com/cshanklin]
I tried using the CreateScheduledTask method with the MethodAction but it doesn't seem to work.
Keep getting an error on the 1st argument where I try to pass a MoRef to the AlarmManager.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Attached what I got so far, but it doesn't work.
Also tried with CreateObjectScheduledTask but that gives the same problem.
There are a few entries on VMTN about a similar problem with the CreateScheduledTask method, but no solution.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
I tried calling SetAlarmStatus, but it does'nt work. As far as I know, VMWare said 'what you can do with viClient --you can also code in PowerCLI".
Can this be achieved ?
$alMOR = New-Object Vmware.Vim.ManagedObjectReference $alMOR.type = "Alarm" $alMOR.value = "alarm-37" $alarm = Get-View $alMOR $alarm Info : VMware.Vim.AlarmInfo Value : {} AvailableField : {} MoRef : VMware.Vim.ManagedObjectReference Client : VMware.Vim.VimClient $alarmHost = Get-VMHost myHostName | Get-View $am.AcknowledgeAlarm($alarm.MoRef, $alarmHost.MoRef) $am.SetAlarmStatus($alarm.MoRef, $alarmHost.MoRef,"green") <span style="color: #ff0000">Method invocation failed because [http://VMware.Vim.AlarmManager|http://VMware.Vim.AlarmManager] doesn't contain a method named 'SetAlarmStatus'. At line:1 char:19 + $am.SetAlarmStatus( <<<< $alarm.MoRef, $alarmHost.MoRef,"green")</span>
no luck with scheduledTask creation as well :_|
Hi again LucD
Back story: The alarms were turned off for some clusters and the usage (of datastores) went over the thresholds. We now have alarm states at Green whent hey should really be at yellow or red. We need to identify those datastores and reset the alarms. (thresholds =85% warning, 90% alert)
Can we, via powerCLI find those Datastores, and then reset their alarms to the proper state/status? (alarms are defiend on the whole vcenter)
Any help would be appriciated.
-JkB