Resources/Subscriptions.ps1

function New-ACITGlueSubscription {
    <#
      .SYNOPSIS
      Sync Subscriptions from Aruba Central to ITGlue licenses
 
      .DESCRIPTION
      Sync subscriptions from Aruba Central to ITGlue licenses
 
      .EXAMPLE
      New-ACITGlueSites -OrgId 1111111
 
      .EXAMPLE
      New-ACITGlueSites
 
      .EXAMPLE
      This will included expired licenses from Aruba Central.
      New-ACITGlue Sites -OrgID 1111111 -IncludeExpired
    #>


  Param(
    [Parameter(
        Mandatory = $false,
        HelpMessage = "ITGlue Organization ID."
        )]
    [String]$OrgId,
    [Parameter(
        Mandatory = $false,
        HelpMessage = "Will include expired licenses."
    )]
    [switch]$IncludeExpired = $false
    )
    begin {
        $ACEndpoint = "/platform/licensing/v1/subscriptions?license_type=all"
        $Subscriptions = Invoke-ArubaCLRestMethod -uri $ACEndpoint
        $LicenseFlexId = 234119
        $Manufacturer = "Aruba Networks"
        $ReturnArray = @()
        [datetime]$OriginStart = '1970-01-01 00:00:00'
        [datetime]$OriginEnd = '1970-01-01 00:00:00'
        $SubCount = $Subscriptions.subscriptions.Count
        $i = 0
        if (!$OrgId) { $OrgId = $ACITGlueOrgId }
    }
    process {
        foreach ($Sub in $Subscriptions.subscriptions) {
            Write-Progress -Activity "Processing Subscription ($($Sub.subscription_key))" -Status "$($i) of $($SubCount)" -PercentComplete (($i / $SubCount) * 100)
            if (!$IncludeExpired) {
                if ($Sub.status -ne "OK") { 
                    $i++
                    continue 
                }
            }
            $StartTime = $Sub.start_date
            $RenewalTime = $Sub.end_date
            $LicenseKey = "<div>" + $Sub.subscription_key + " : " + $Sub.sku + "<br></div>"
            $data = @{
                "organization_id" = $OrgId
                "type" = "flexible-assets"
                attributes = @{
                    "flexible-asset-type-id" = $LicenseFlexId
                    traits = @{
                        "manufacturer" = $Manufacturer
                        "name" = $Sub.subscription_key
                        "seats" = $Sub.quantity
                        "license-key-s" = $LicenseKey
                        "purchase-date" = $OriginStart.AddSeconds($StartTime)
                        "renewal-date"  = $OriginEnd.AddSeconds($RenewalTime)
                        "version" = $Sub.license_type
                    }
                }
            }
            $AssetName = $Manufacturer + " " + $Sub.subscription_key + " " + $Sub.license_type
            $Asset = (Get-ITGlueFlexibleAssets -filter_flexible_asset_type_id $LicenseFlexId `
            -filter_organization_id $OrgId -filter_name $AssetName).data

            if (!$Asset) {
                New-ITGlueFlexibleAssets -organization_id $OrgId -data $data | Out-Null
            }
            $i++
        }
    }
    end { return $ReturnArray }
}