Public/New-TEApiTest.ps1
|
function New-TEApiTest { [CmdletBinding(DefaultParameterSetName="called")] Param( ##### Common Parameters ##### [Parameter( Position = 0)] [string]$testName, [Parameter( HelpMessage="Array of Group objects")] [array]$groups, [Parameter( HelpMessage="enable alerts, defaults to false")] [switch]$alertsEnabled, [Parameter( HelpMessage="Array of Alert Rule IDs")] [array]$alertRules, [Parameter( Dontshow, HelpMessage="Type of Test to Create")] [ValidateSet('agent-to-server','agent-to-agent','bgp','http-server','page-load','transactions','ftp-server','dns-trace','dns-server','dns-dnssec','dnsp-domain','dnsp-server','voice')] [string]$testType, [Parameter(ParameterSetName="called", Dontshow, HelpMessage="Body from other functions")] [hashtable[]]$inputBody, [Parameter(ParameterSetName="called", Dontshow, HelpMessage="Body from other functions")] [string]$jsonBody, ##### BGP Test Section ##### [Parameter(ParameterSetName="CreateBGPTest", Mandatory=$true)] [switch]$createBGPTest, [Parameter(ParameterSetName="CreateBGPTest", Mandatory=$true)] [string]$prefix, [Parameter(ParameterSetName="CreateBGPTest")] [switch]$includeCoveredPrefix, ##### DNS Server Test Type ##### [Parameter(ParameterSetName="CreateDNSServerTest", Mandatory=$true, Position=0)] [switch]$CreateDNSServerTest, [Parameter(ParameterSetName="CreateDNSTraceTest", Mandatory=$true, Position=0)] [switch]$CreateDNSTraceTest, ##### DNS Server Parameters ##### [Parameter(ParameterSetName="CreateDNSServerTest", Mandatory=$true)] [Parameter(ParameterSetName="CreateDNSTraceTest", Mandatory=$true)] [array]$agents, [Parameter(ParameterSetName="CreateDNSServerTest")] [switch]$bandwidthMeasurements, [Parameter(ParameterSetName="CreateDNSServerTest")] [switch]$bgpMeasurements, [Parameter(ParameterSetName="CreateDNSServerTest")] [array]$bgpMonitors, [Parameter(ParameterSetName="CreateDNSServerTest", Mandatory=$true)] [array]$dnsServers, [Parameter(ParameterSetName="CreateDNSServerTest", Mandatory=$true)] [Parameter(ParameterSetName="CreateDNSTraceTest", Mandatory=$true)] [string]$domain, [Parameter(ParameterSetName="CreateDNSServerTest", Mandatory=$true)] [Parameter(ParameterSetName="CreateDNSTraceTest", Mandatory=$true)] [int]$interval, [Parameter(ParameterSetName="CreateDNSServerTest")] [switch]$mtuMeasurements, [Parameter(ParameterSetName="CreateDNSServerTest")] [switch]$networkMeasurements, [Parameter(ParameterSetName="CreateDNSServerTest")] [switch]$recursiveQueries, [Parameter(ParameterSetName="CreateDNSTraceTest", Mandatory=$true)] [validateset('A','AAAA','ANY','CNAME','DNSKEY','DS','MX','NS','NSE','NULL','PTR','RRSIG','SOA','TXT')] [string]$type ) Begin{} Process{ if (-not $InputBody){ $body = @{} switch ($PSBoundParameters.keys) { 'testName' { $body.testName = $testName} 'groups' { $body.groups = $groups} 'alertsEnabled' { $body.alertsEnabled = $true} 'alertRules' { $body.alertRules = $alertRules} 'prefix' { $body.prefix = $prefix} 'includeCoveredPrefix' { $body.includeCoveredPrefix = $true} 'agents' { $body.agents = $agents} 'bandwidthMeasurements' { $body.bandwidthMeasurements = $true} 'bgpMeasurements' { $body.bgpMeasurements = $true} 'bgpMonitors' { $body.bgpMonitors = $bgpMonitors} 'dnsServers' { $body.dnsServers = $dnsServers} 'domain' { $body.domain = $domain} 'interval' { $body.interval = $interval} 'mtuMeasurements' { $body.mtuMeasurements = $true} 'networkMeasurements' { $body.networkMeasurements = $true} 'recursiveQueries' { $body.recursiveQueries = $true} 'type' { $body.type = $type} } } if ($inputBody){ $body = $inputBody } if ($jsonBody -eq $null){ $jsonBody = $body | ConvertTo-Json } $urlComponentsList = New-Object System.Collections.Generic.List[System.Object] $urlComponentsList.add('tests') if ($testType){ switch ($testType) { 'agent-to-server' { $urlComponentsList.add('agent-to-server')} 'agent-to-agent' { $urlComponentsList.add('agent-to-agent')} 'bgp' { $urlComponentsList.add('bgp')} 'http-server' { $urlComponentsList.add('http-server')} 'page-load' { $urlComponentsList.add('page-load')} 'transactions' { $urlComponentsList.add('transactions')} 'ftp-server' { $urlComponentsList.add('ftp-server')} 'dns-trace' { $urlComponentsList.add('dns-trace')} 'dns-server' { $urlComponentsList.add('dns-server')} 'dns-dnssec' { $urlComponentsList.add('dns-dnssec')} 'dnsp-domain' { $urlComponentsList.add('dnsp-domain')} 'dnsp-server' { $urlComponentsList.add('dnsp-server')} 'voice' { $urlComponentsList.add('voice')} } } else { switch ($PSBoundParameters.keys) { 'createDnsServerTest' { $urlComponentsList.add('dns-server') } } } $urlComponentsList.add('new') $urlComponents = $urlComponentsList.ToArray() #Write-Output $urlComponents #Write-Output $body #Write-Output $jsonbody $results = send-TEApi -method post -urlcomponents $urlComponents -body $jsonBody $testid = $results.test.testId Write-host "Test ID $testid Created Successfully" -ForegroundColor Green #$testUrl = "https://app.thousandeyes.com/settings/tests/?testid=$testid" #Start-Process $testUrl } End{} } |