Public/Get-AGMLibBackupSKUUsage.ps1

# Copyright 2022 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


Function Get-AGMLibBackupSKUUsage ([string]$applianceid) 
{
    <#
    .SYNOPSIS
    Displays the Backup SKU Usage for either all appliances or a nominated appliance
 
    .EXAMPLE
    Get-AGMLibBackupSKUUsage
    Get current Backup SKU usage for all appliances
 
    .EXAMPLE
    Get-AGMLibBackupSKUUsage -applianceid 1234
    Get Backup SKU Usage for the nominated appliance.
 
    .DESCRIPTION
    A function to display current SKU usage. This will not show the full month usage, just the usage in the current hour
 
    #>


    if ( (!($AGMSESSIONID)) -or (!($AGMIP)) )
    {
        Get-AGMErrorMessage -messagetoprint "Not logged in or session expired. Please login using Connect-AGM"
        return
    }
    $sessiontest = Get-AGMVersion
    if ($sessiontest.errormessage)
    {
        Get-AGMErrorMessage -messagetoprint "AGM session has expired. Please login again using Connect-AGM"
        return
    }
    if ($applianceid)
    {
        $appliancegrab = get-agmappliance -id $applianceid
    }
    else {
        $appliancegrab = get-agmappliance
    }
    if (!($appliancegrab))
    {
        if ($applianceid)
        {
            Get-AGMErrorMessage -messagetoprint "Could not find an appliance with ID $applianceid using Get-AGMAppliance"
        }
        else 
        {
            Get-AGMErrorMessage -messagetoprint "Could not find any appliances using Get-AGMAppliance"
        }
    }

    foreach ($appliance in $appliancegrab)
    {
        $output = Get-AGMAPIApplianceReport -applianceid $appliance.id -command reportapps
        if ($output.ApplianceName)
        {
            $AGMArray = @()

            Foreach ($id in $output)
            { 
                $skuname = "No matching SKU found"
                if ($id.AppType -eq "CIFS") { $skuname = "Default Backup SKU for VM (GCE and VMware) and File system data" }
                if ($id.AppType -eq "FileSystem") { $skuname = "Default Backup SKU for VM (GCE and VMware) and File system data" }
                if ($id.AppType -eq "GCP Instance") { $skuname = "Default Backup SKU for VM (GCE and VMware) and File system data"; $id.AppType = "GCE Instance" }
                if ($id.AppType -eq "NFS") { $skuname = "Default Backup SKU for VM (GCE and VMware) and File system data" }
                if ($id.AppType -eq "VMBackup") { $skuname = "Default Backup SKU for VM (GCE and VMware) and File system data" }
                if ($id.AppType -eq "DB2") { $skuname = "Backup SKU for DB2, Oracle, SAP HANA, SAP ASE and SAP MAXdb" }
                if ($id.AppType -eq "DB2Instance") { $skuname = "Backup SKU for DB2, Oracle, SAP HANA, SAP ASE and SAP MAXdb" }
                if ($id.AppType -eq "MAXDB") { $skuname = "Backup SKU for DB2, Oracle, SAP HANA, SAP ASE and SAP MAXdb" }
                if ($id.AppType -eq "Oracle") { $skuname = "Backup SKU for DB2, Oracle, SAP HANA, SAP ASE and SAP MAXdb" }
                if ($id.AppType -eq "SAP ASE") { $skuname = "Backup SKU for DB2, Oracle, SAP HANA, SAP ASE and SAP MAXdb" }
                if ($id.AppType -eq "SAP HANA") { $skuname = "Backup SKU for DB2, Oracle, SAP HANA, SAP ASE and SAP MAXdb" }
                if ($id.AppType -eq "SYBASEIQ") { $skuname = "Backup SKU for DB2, Oracle, SAP HANA, SAP ASE and SAP MAXdb" }
                if ($id.AppType -eq "SYBASEInstance") { $skuname = "Backup SKU for DB2, Oracle, SAP HANA, SAP ASE and SAP MAXdb" }              
                if ($id.AppType -eq "LVM Volume") { $skuname = "Tier2 Database backup usage. Includes backup of Microsoft SQL Server, MySQL, PostgreSQL, MongoDB" }    
                if ($id.AppType -eq "MARIADB") { $skuname = "Tier2 Database backup usage. Includes backup of Microsoft SQL Server, MySQL, PostgreSQL, MongoDB" } 
                if ($id.AppType -eq "MARIADBInstance") { $skuname = "Tier2 Database backup usage. Includes backup of Microsoft SQL Server, MySQL, PostgreSQL, MongoDB" } 
                if ($id.AppType -eq "MYSQL") { $skuname = "Tier2 Database backup usage. Includes backup of Microsoft SQL Server, MySQL, PostgreSQL, MongoDB" } 
                if ($id.AppType -eq "MYSQLInstance") { $skuname = "Tier2 Database backup usage. Includes backup of Microsoft SQL Server, MySQL, PostgreSQL, MongoDB" } 
                if ($id.AppType -eq "POSTGRESQL") { $skuname = "Tier2 Database backup usage. Includes backup of Microsoft SQL Server, MySQL, PostgreSQL, MongoDB" } 
                if ($id.AppType -eq "POSTGRESQLInstance") { $skuname = "Tier2 Database backup usage. Includes backup of Microsoft SQL Server, MySQL, PostgreSQL, MongoDB" } 
                if ($id.AppType -eq "SqlInstance") { $skuname = "Tier2 Database backup usage. Includes backup of Microsoft SQL Server, MySQL, PostgreSQL, MongoDB" } 
                if ($id.AppType -eq "SQLServerAvailabilityGroup") { $skuname = "Tier2 Database backup usage. Includes backup of Microsoft SQL Server, MySQL, PostgreSQL, MongoDB" } 
                if ($id.AppType -eq "SqlServerWriter") { $skuname = "Tier2 Database backup usage. Includes backup of Microsoft SQL Server, MySQL, PostgreSQL, MongoDB" } 
                if ($id.AppType -eq "ConsistGrp") { $skuname = "Tier2 Database backup usage. Includes backup of Microsoft SQL Server, MySQL, PostgreSQL, MongoDB" } 
                $AGMArray += [pscustomobject]@{
                    appliancename = $appliance.name
                    applianceid = $appliance.id
                    apptype = $id.AppType
                    hostname = $id.HostName
                    appname = $id.AppName
                    skudescription = $skuname
                    skuusageGiB = $id."MDLStat(GB)"
                }
            }
            $AGMArray | Sort-Object -Property hostname,appname
        }
        else
        {
            $output
        }
    }
}