Resources/Switches.ps1
function New-ACITGlueSwitch { <# .SYNOPSIS Sync Switches from Aruba Central to ITGlue configurations .DESCRIPTION Sync Switches from Aruba Central to ITGlue configurations. Function will also create non-existent models in ITGlue. .EXAMPLE New-ACITGlueSwitches -OrgId 1111111 .EXAMPLE New-ACITGlueSwitches #> Param( [Parameter(Mandatory = $false)] [String]$OrgId ) begin { $endpoint = "/monitoring/v1/switches" $switches = Invoke-ArubaCLRestMethod -uri $endpoint $ManufacturerId = 1657387 $SwitchConfigId = 501527 $ReturnArray = @() if (!$OrgId) { $OrgId = $ACITGlueOrgId } } process { foreach ($switch in $switches.switches) { # Find Model in IT Glue $model = (Get-ITGlueModels).data.attributes | Where-Object { $_.name -eq $switch.model} # If model doesn't exist create it. if (!$model) { $data = @{ type = "models" attributes = @{ name = $switch.model "manufacturer-id" = $ManufacturerId } } New-ITGlueModels -data $data | Out-Null } # Second API call to get the switch model id now that it is created. $model_id = ((Get-ITGlueModels).data | Where-Object { $_.attributes.name -eq $switch.model}).id $ITGlueLocationId = (Get-ITGlueLocations -org_id $OrgId -filter_name $switch.site).data.id $data = @{ "organization_id" = $OrgId "type" = "configurations" attributes = @{ "organization_id" = $OrgId "location_id" = $ITGlueLocationId "name" = $switch.name "mac_address" = $switch.macaddr "serial_number" = $switch.serial "primary_ip" = $switch.ip_address "hostname" = $switch.name "configuration-type-id" = $SwitchConfigId "configuration-type-name" = "Switch" "configuration-type-kind" = "switch" "configuration-status-id" = 37495 "configuration-status-name" = "Active" "manufacturer_id" = $ManufacturerId "model_id" = $model_id } } # Check for existing configuration $configuration = (Get-ITGlueConfigurations -organization_id $OrgId).data.attributes | Where-Object { $_.name -eq $switch.name } if (!$configuration) { New-ITGlueConfigurations -data $data | Out-Null $Properties = @{ "OrgId" = $OrgId "Name" = $switch.name "Status" = $true } $ReturnData = New-Object -TypeName PSObject -Property $Properties $ReturnArray += $ReturnData } else { $Properties = @{ "OrgId" = $OrgId "Name" = $switch.name "Status" = $false } $ReturnData = New-Object -TypeName PSObject -Property $Properties $ReturnArray += $ReturnData } } } end { return $ReturnArray } } |