Public/Get-TEApiAlert.ps1
|
function Get-TEApiAlert { <# .SYNOPSIS Function for getting alerts .DESCRIPTION #### STATUS: COMPLETE #### Grabs either a list of all alert rules, active alerts, or details for a specific alert .EXAMPLE Get-TEApiAlert This will use the default behavior and return all Active Alerts .EXAMPLE Get-TEApiAlert -alertRules .PARAMETER apiVersion API version defaults to version 6 .PARAMETER aid Account Group ID .PARAMETER id Alert ID .PARAMETER alertRules returns a list of alert Rules configured on the account .PARAMETER window Specifies a window of time for active alerts (optional) [0-9]+[smhdw] .PARAMETER timeRange Specifies an explicit start and end time (optional) YYYY-mm-ddTHH:MM:SS&to=YYYY-mm-ddTHH:MM:SS #> [CmdletBinding(DefaultParameterSetName='AlertList')] param( [int]$apiVersion = 6, [string]$aid, [Parameter(ParameterSetName="AlertDetails", Mandatory=$True, ValueFromPipeline=$true, HelpMessage="Agent ID")] [string[]]$id, [Parameter(ParameterSetName="alertRules", Mandatory=$True, HelpMessage="Bgp Monitor List")] [switch]$alertRules, [Parameter(ParameterSetName="AlertList", HelpMessage="window")] [validateScript({ If ($_ -match "[0-9]+[smhdw]") { $True } else { Throw "$_ must start with digit and include s,m,h,d, or w " } })] [string]$window, [Parameter(ParameterSetName="AlertList", HelpMessage="Explicit time Range <from>")] [string]$timeRangeFrom, [Parameter(ParameterSetName="AlertList", HelpMessage="Explicit time Range<to>")] [string]$timeRangeTo, [Parameter(ParameterSetName="RuleDetails", HelpMessage="Explicit time Range<to>")] [string]$ruleId ) BEGIN {} PROCESS { if (($timeRangeFrom -and (-not $timeRangeTo)) -or ($timeRangeTo -and (-not $timeRangeFrom))) { Write-Output "Time Range must include both a timeRangeFrom and timeRangeTo"; break } $windowParam = 'window='+$window $timeRangeFromParam = 'from='+$timeRangeFrom $timeRangeToParam = 'to='+$timeRangeTo write-debug $windowParam if ($id){ ForEach ($alert in $id) { $alertDetailsObject = Send-TEApi $apiVersion -urlComponents:@("alerts", "$alert") -aid $aid Write-Output $alertDetailsObject.alert } } elseif ($alertRules -eq $true) { $alertDetailsObject = Send-TEApi $apiVersion -urlComponents:@("alert-rules") -aid $aid Write-Output $alertDetailsObject.alertRules } elseif ($window) { $alertListObject = Send-TEApi $apiVersion -urlComponents:@("alerts") -aid $aid -optionalParams:@("$windowParam") Write-Output $alertListObject.alert while($alertListObject.pages.next){ $alertListObject = Send-TEApi -pageURL $alertListObject.pages.next Write-Output $alertListObject.alert } } elseif ($timeRangeFrom) { $alertListObject = Send-TEApi $apiVersion -urlComponents:@("alerts") -aid $aid -optionalParams:@("$timeRangeFromParam", "$timeRangeToParam") Write-Output $alertListObject.alert while($alertListObject.pages.next){ $alertListObject = Send-TEApi -pageURL $alertListObject.pages.next Write-Output $alertListObject.alert } } elseif($ruleId){ $alertDetailsObject = Send-TEApi $apiVersion -urlComponents:@("alert-rules", "$ruleId") -aid $aid Write-Output $alertDetailsObject.alertRules } else { $alertListObject = Send-TEApi $apiVersion -urlComponents:@("alerts") -aid $aid Write-Output $alertListObject } } END {} } |