Windows Azure Pack Subscription Discovery

WindowsAzurePack.ManagementPack.Library.WindowsAzurePack.Libary.Subscription.Discovery (Discovery)

Description for the new discovery.

Element properties:

TargetWindowsAzurePack.Library.WAPSite.WindowsAuthSite
EnabledFalse
Frequency7200
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:
Discovered relationships and their attribuets:

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.TimedPowerShell.DiscoveryProvider WindowsAzurePack.Monitoring.Runascred

Source Code:

<Discovery ID="WindowsAzurePack.ManagementPack.Library.WindowsAzurePack.Libary.Subscription.Discovery" Target="WindowsAzurePack.Library.WAPSite.WindowsAuthSite" Enabled="false" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="WindowsAzurePack.Library.WAPSubscription"/>
<DiscoveryRelationship TypeID="WindowsAzurePack.Library.WAPPlan.Hosts.WAPSubscription"/>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider" RunAs="WindowsAzurePack.Monitoring.Runascred">
<IntervalSeconds>7200</IntervalSeconds>
<SyncTime>00:00</SyncTime>
<ScriptName>SubscriptionsDiscovery.Ps1</ScriptName>
<ScriptBody><Script># SubScriptionsDiscovery.ps1
# Written by Oskar Landman. All rights reserved.

param($SourceID, $ManagedEntityID, $WindowsAuthSite, $Account, $Password, $ComputerName)
$Cred = New-Object System.Management.Automation.PSCredential -Argumentlist @($Account,(ConvertTo-SecureString -String $Password -AsPlainText -Force))

$scomapi = new-object -comObject "MOM.ScriptAPI"
$DiscData = $scomapi.CreateDiscoveryData(0, $SourceID, $ManagedEntityID)

$AdminApi = Get-MgmtSvcEndpoint -Name AdminApi
$AdminApi = $AdminApi.Address


$binding = $WindowsAuthSite.split("/")

$url = $binding[0] + "//" + $binding[2]

$token = Get-MgmtSvcToken -Type Windows -AuthenticationSite $url -ClientRealm http://azureservices/AdminSite -User $Cred -DisableCertificateValidation
$subscripts = @()
$subscripts = Get-MgmtSvcSubscription -AdminUri $AdminApi -Token $token -DisableCertificateValidation

foreach ($subscript in $subscripts)


{

$usage = Get-MgmtSvcSubscriptionUsage -AdminUri $AdminApi -Token $token -SubscriptionId $subscript.SubscriptionId -DisableCertificateValidation
$usages = @()
$usages = $usage.Usages

Foreach ($us in $usages)

{
if ($us.DisplayName -eq "RAM")
{
$RAM = $us.Limit
if ($RAM -eq "-1")
{
$RAM = "Unlimited"
}
}
if ($us.DisplayName -eq "Virtual Machines")
{
$VMS = $us.Limit
if ($VMS -eq "-1")
{
$VMS = "Unlimited"
}
}

if ($us.DisplayName -eq "Storage")
{
$Storage = $us.Limit
if ($Storage -eq "-1")
{
$Storage = "Unlimited"
}
}

if ($us.DisplayName -eq "Cores")
{
$Cores = $us.Limit
if ($Cores -eq "-1")
{
$Cores = "Unlimited"
}
}

}


$WAPSub = $DiscData.CreateClassInstance("$MPElement[Name='WindowsAzurePack.Library.WAPSubscription']$")
$WAPSub.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $ComputerName)
$WAPSub.AddProperty("$MPElement[Name='WindowsAzurePack.Library.WAPPlan']/ID$", $subscript.PlanId)
$WAPSub.AddProperty("$MPElement[Name='WindowsAzurePack.Library.WAPSubscription']/AdminEmail$", $subscript.AccountAdminLiveEmailId)
$WAPSub.AddProperty("$MPElement[Name='WindowsAzurePack.Library.WAPSubscription']/SubScriptionID$", $subscript.SubscriptionID)
$WAPSub.AddProperty("$MPElement[Name='WindowsAzurePack.Library.WAPSubscription']/Cores$", $Cores)
$WAPSub.AddProperty("$MPElement[Name='WindowsAzurePack.Library.WAPSubscription']/RAM$", $RAM)
$WAPSub.AddProperty("$MPElement[Name='WindowsAzurePack.Library.WAPSubscription']/VMS$", $VMS)
$WAPSub.AddProperty("$MPElement[Name='WindowsAzurePack.Library.WAPSubscription']/Storage$", $Storage)
$WAPSub.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $subscript.OfferFriendlyName)

$DiscData.AddInstance($WAPSub)




}
$DiscData
</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>sourceId</Name>
<Value>$MPElement$</Value>
</Parameter>
<Parameter>
<Name>managedEntityId</Name>
<Value>$Target/Id$</Value>
</Parameter>
<Parameter>
<Name>Account</Name>
<Value>$RunAs[Name="WindowsAzurePack.Monitoring.Runascred"]/UserName$</Value>
</Parameter>
<Parameter>
<Name>Password</Name>
<Value>$RunAs[Name="WindowsAzurePack.Monitoring.Runascred"]/Password$</Value>
</Parameter>
<Parameter>
<Name>WindowsAuthSite</Name>
<Value>$Target/Property[Type="WindowsAzurePack.Library.WAPSite.WindowsAuthSite"]/Binding$</Value>
</Parameter>
<Parameter>
<Name>ComputerName</Name>
<Value>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>300</TimeoutSeconds>
<StrictErrorHandling>true</StrictErrorHandling>
</DataSource>
</Discovery>