Advertisement
skyerjoe

VM Ware Alarms Move Script

Jan 22nd, 2014
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Set-Variable -Name alarmLength -Value 80 -Option "constant"
  2.  
  3. function Move-Alarm{
  4.   param($Alarm, $To, [switch]$DeleteOriginal = $false)
  5.  
  6.   $alarmObj = Get-View $Alarm
  7.   $alarmMgr = Get-View AlarmManager
  8.   if($deleteOriginal){
  9.     $alarmObj.RemoveAlarm()
  10.   }
  11.   else{
  12.     $updateAlarm = New-Object VMware.Vim.AlarmSpec
  13.     $updateAlarm = $alarmObj.Info
  14.     $oldName = $alarmObj.Info.Name
  15.     $oldState = $alarmObj.Info.Enabled
  16.     $oldDescription = $alarmObj.Info.Description
  17.     $suffix = " (moved to " + ([string]($to | %{$_.Name + ","})).TrimEnd(",") + ")"
  18.     if(($oldName.Length + $suffix.Length) -gt $alarmLength){
  19.       $newName = $oldName.Substring(0, $alarmLength - $suffix.Length) + $suffix
  20.     }
  21.     else{
  22.       $newName = $oldName + $suffix
  23.     }
  24.     $updateAlarm.Name =  $newName
  25.     $updateAlarm.Enabled = $false
  26.     $updateAlarm.Description += ("`rOriginal name: " + $oldName)
  27.     $updateAlarm.Expression.Expression | %{
  28.       if($_.GetType().Name -eq "EventAlarmExpression"){
  29.         $_.Status = $null
  30.         $needsChange = $true
  31.       }
  32.     }
  33.  
  34.     $alarmObj.ReconfigureAlarm($updateAlarm)
  35.  
  36.     $alarmObj.Info.Name = $oldName
  37.     $alarmObj.Info.Enabled = $oldState
  38.     $alarmObj.Info.Description = $oldDescription
  39.   }
  40.  
  41.   $newAlarm = New-Object VMware.Vim.AlarmSpec
  42.   $newAlarm = $alarmObj.Info
  43.   $oldName = $alarmObj.Info.Name
  44.   $oldDescription = $alarmObj.Info.Description
  45.   foreach($destination in $To){
  46.     if($To.Count -gt 1){
  47.       $suffix = " (" + $destination.Name + ")"
  48.       if(($oldName.Length + $suffix.Length) -gt $alarmLength){
  49.         $newName = $oldName.Substring(0, $alarmLength - $suffix.Length) + $suffix
  50.       }
  51.       else{
  52.         $newName = $oldName + $suffix
  53.       }
  54.       $newAlarm.Name = $newName
  55.       $newAlarm.Description += ("`rOriginal name: " + $oldName)
  56.     }
  57.     $newAlarm.Expression.Expression | %{
  58.       if($_.GetType().Name -eq "EventAlarmExpression"){
  59.         $_.Status = $null
  60.         $needsChange = $true
  61.       }
  62.     }
  63.  
  64.     $alarmMgr.CreateAlarm($destination.MoRef,$newAlarm)
  65.     $newAlarm.Name = $oldName
  66.     $newAlarm.Description = $oldDescription
  67.   }
  68. }
  69.  
  70. $alarmMgr = Get-View AlarmManager
  71.  
  72. $from = Get-Folder -Name "Datacenter"
  73. $to1 = Get-Datacenter -Name "VM"
  74.  
  75.  
  76. $alarm = (Get-AlarmDefinition -Name “Virtual machine total disk latency”).ExtensionData
  77.  Move-Alarm -Alarm $alarm -From $from -To $to1 -DeleteOriginal:$false
  78.  
  79.  
  80.  
  81.  
  82. #$alarms = $alarmMgr.GetAlarm($from.ExtensionData.MoRef)
  83. #$alarms | % {
  84.  # Move-Alarm -Alarm $_ -To $to.ExtensionData -DeleteOriginal:$false
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement