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 = @() $SwitchCount = $Switches.Count $i = 0 if (!$OrgId) { $OrgId = $ACITGlueOrgId } } process { foreach ($switch in $switches.switches) { Write-Progress -Activity "Processing switch ($($switch.name))" -Status "$($i) of $($SwitchCount)" -PercentComplete (($i / $SwitchCount) * 100) # 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 { $_."serial-number" -eq $switch.serial } 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 } $i++ } } end { return $ReturnArray } } function Update-ACITGlueSwitch { <# .SYNOPSIS Update Switches from Aruba Central to ITGlue configurations .DESCRIPTION Update Switches from Aruba Central to ITGlue configurations. Function will also create non-existent models in ITGlue. .EXAMPLE Update-ACITGlueSwitches -OrgId 1111111 .EXAMPLE Update-ACITGlueSwitches #> Param( [Parameter(Mandatory = $false)] [String]$OrgId ) begin { if ($false -eq $ACITGlueStatus) { Write-Error -Message "ERROR: ITGlue or Aruba Central are not connected." New-ACITglueConnection } $ACEndpoint = "/monitoring/v1/switches" $Switches = Invoke-ArubaCLRestMethod -uri $ACEndpoint $ManufacturerId = 1657387 $SwitchConfigId = 501527 $ReturnArray = @() $SwitchCount = $switches.Count $i = 0 if ($null -eq $OrgId -and $null -eq $ACITGlueOrgId) { $OrgId = Get-ACITGlueOrgId } if (!$OrgId) { $OrgId = $ACITGlueOrgId } } process { foreach ($Switch in $switches.switches) { Write-Progress -Activity "Processing switch ($($Switch.name))" -Status "$($i) of $($SwitchCount)" -PercentComplete (($i / $SwitchCount) * 100) # 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 } $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 $ConfigurationData = (Get-ITGlueConfigurations -organization_id $OrgId -page_size 250).data | Where-Object ` { $_.attributes."configuration-type-name" -eq "Switch" -and $_.attributes."serial-number" -eq $Switch.serial } if ($ConfigurationData) { [int]$ConfigurationID = $ConfigurationData.id Set-ITGlueConfigurations -organization_id $OrgId -data $data -id $ConfigurationID | 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 } $i++ } } end { return $ReturnArray } } |