Resources/Networks.ps1

function New-ACITGlueNetwork {
    <#
      .SYNOPSIS
      Sync Networks from Aruba Central to ITGlue flexable assets
 
      .DESCRIPTION
      Sync Networks from Aruba Central to ITGlue flexable assets
 
      .EXAMPLE
      New-ACITGlueNetwork -OrgId 1111111
 
      .EXAMPLE
      New-ACITGlueNetwork
    #>


    Param(
        [Parameter(Mandatory = $false)]
        [String]$OrgId
    )
    begin {
        $endpoint = "/monitoring/v2/networks"
        $networks = Invoke-ArubaCLRestMethod -uri $endpoint
        $WirelessFlexId = 234110
        $ReturnArray = @()
        if (!$OrgId) { $OrgId = $ACITGlueOrgId }
    }
    process {
        foreach ($network in $networks.networks) {    
            $data = @{
                "organization_id" = $OrgId
                "type" = "flexible-assets"
                attributes = @{
                    "organization-id" = $OrgId
                    "flexible-asset-type-id" = $WirelessFlexId
                    traits = @{
                        "network-name" = $network.essid
                        "ssid" = $network.essid
                        "security-type" = $network.security
                        #"pre-shared-key" = "10101010" # AC Will not return this.
                        "hidden" = "False"
                    }
                }
            }
            $Asset = (Get-ITGlueFlexibleAssets -filter_flexible_asset_type_id $WirelessFlexId `
                -filter_organization_id $OrgId -filter_name $network.essid).data.attributes
            if (!$Asset) { 
                New-ITGlueFlexibleAssets -data $data | Out-Null
                $Properties = @{
                    "OrgId" = $OrgId
                    "Name" = $network.essid
                    "Status" = $true
                }
                $ReturnData = New-Object -TypeName PSObject -Property $Properties
                $ReturnArray += $ReturnData
            } else {
                $Properties = @{
                    "OrgId" = $OrgId
                    "Name" = $network.essid
                    "Status" = $false
                }
                $ReturnData = New-Object -TypeName PSObject -Property $Properties
                $ReturnArray += $ReturnData
            }
        }
    }
    end { return $ReturnArray }
}
function Set-ACITGlueNetwork {
    <#
      .SYNOPSIS
      Sync Networks from Aruba Central to ITGlue flexable assets
 
      .DESCRIPTION
      This will update an existing ITGlue asset with latest information from Aruba Central.
 
      .EXAMPLE
      Set-ACITGlueNetwork -OrgId 1111111
 
      .EXAMPLE
      Set-ACITGlueNetwork
    #>


    Param(
        [Parameter(Mandatory = $false)]
        [String]$OrgId,
        [Parameter(Mandatory = $false)]
        [string]$IgnoreSite
    )
    begin {
        if (!$OrgId) { $OrgId = $ACITGlueOrgId }
        $WirelessFlexId = 234110
        $ACEndpointNetwork = "/monitoring/v2/networks"
        $ACEndpointSite = "/central/v2/sites"
        $ACSites = (Invoke-ArubaCLRestMethod -uri $ACEndpointSite -limit 100).sites
        $ReturnArray = @()
        # Hacky way to handle SSIDs at more than one location.
        $DenyList = @()
    }
    process {
        foreach ($site in $ACSites) {
            $site_name = $site.site_name
                $ACNetworks = Invoke-ArubaCLRestMethod -uri ($ACEndpointNetwork + "?site=" + $site_name)
                foreach ($ACNetwork in $ACNetworks.networks) {
                    $AssetId = (Get-ITGlueFlexibleAssets -filter_flexible_asset_type_id $WirelessFlexId `
                        -filter_organization_id $OrgId -filter_name $ACNetwork.essid).data.id
                    $data = @{
                        "organization_id" = $OrgId
                        "type" = "flexible-assets"
                        attributes = @{
                            "organization-id" = $OrgId
                            "flexible-asset-type-id" = $WirelessFlexId
                            traits = @{
                                "network-name" = $ACNetwork.essid
                                "ssid" = $ACNetwork.essid
                                "security-type" = $ACNetwork.security
                                #"pre-shared-key" = "10101010" # AC Will not return this.
                                "hidden" = "False"
                                "physical-location" = (Get-ITGlueLocations -org_id $OrgId -filter_name $site_name).data.id
                            }   
                        }
                    }
                    if ($DenyList.Contains($ACNetwork.essid)) { continue }
                    $Properties = @{
                        "OrgId" = $OrgId
                        "Name" = $site_name
                        "SSID" = $ACNetwork.essid
                    }
                    $ReturnData = New-Object -TypeName PSObject -Property $Properties
                    $ReturnArray += $ReturnData
                    Set-ITGlueFlexibleAssets -id $AssetId -data $data | Out-Null
                    $DenyList += $ACNetwork.essid
                }
        }
    } 
    end { return $ReturnArray }
}