ScaleArc 3.3 API Cluster Dynamic Discovery

ScaleArc.3.3.API.Cluster.Dynamic.Discovery (Discovery)

Element properties:

TargetScaleArc.3.3.API.License.Dynamic.Class
EnabledTrue
Frequency600
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.TimedPowerShell.DiscoveryProvider Default

Source Code:

<Discovery ID="ScaleArc.3.3.API.Cluster.Dynamic.Discovery" Enabled="true" Target="ScaleArc.3.3.API.License.Dynamic.Class" ConfirmDelivery="true" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="ScaleArc.3.3.API.Clusters.Dynamic.Class">
<Property TypeID="ScaleArc.3.3.API.Clusters.Dynamic.Class" PropertyID="Component_Name"/>
<Property TypeID="ScaleArc.3.3.API.Clusters.Dynamic.Class" PropertyID="IPAddress"/>
<Property TypeID="ScaleArc.3.3.API.Clusters.Dynamic.Class" PropertyID="ClusterID"/>
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>600</IntervalSeconds>
<SyncTime>00:20</SyncTime>
<ScriptName>ScaleArc.3.3.API.Cluster.Dynamic.Discovery.Script.ps1</ScriptName>
<ScriptBody><Script>
param($sourceId,$managedEntityId,$computerName,$IPAddress,$APIKey)
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$api = new-object -comObject 'MOM.ScriptAPI'
$web = new-object net.webclient

$apikeydycval = [System.Convert]::FromBase64String($APIKey)
$apikeydyc = [System.Text.Encoding]::UTF8.GetString($apikeydycval)
$APIKey = $apikeydyc

$INURL = "https://" + $IPAddress + "/api/clusters?apikey=" + $APIKey
$INURLData = $web.DownloadString($INURL)
$Jparse = $INURLData | ConvertFrom-Json

$discoveryData = $api.CreateDiscoveryData(0, $SourceId, $ManagedEntityId)
$CluIDs = $Jparse.Data.("cluster_id")

foreach($CluID in $CluIDs)
{
$URL = "https://" + $IPAddress + "/api/v1/clustercounters/?apikey=" + $APIKey + "&amp;cid=" + $CluID

$URLenc = [System.Text.Encoding]::UTF8.GetBytes($URL)
$encurl = [System.Convert]::ToBase64String($URLenc)

$UCluID = $IPAddress + ":" + $CluID
$instance = $discoveryData.CreateClassInstance("$MPElement[Name='ScaleArc.3.3.API.Clusters.Dynamic.Class']$")
$instance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$instance.AddProperty("$MPElement[Name='ScaleArc.3.3.API.Clusters.Dynamic.Class']/Component_Name$", 'Cluster')
$instance.AddProperty("$MPElement[Name='ScaleArc.3.3.API.Clusters.Dynamic.Class']/IPAddress$", $IPAddress)
$instance.AddProperty("$MPElement[Name='ScaleArc.3.3.API.Clusters.Dynamic.Class']/ClusterID$", $UCluID)
$instance.AddProperty("$MPElement[Name='ScaleArc.3.3.API.Clusters.Dynamic.Class']/URL$", $encurl)
$discoveryData.AddInstance($instance)
$api.LogScriptEvent("ScaleArc.3.3.API.Cluster.Dynamic.Discovery.Script.ps1", 62, 0 , "ScaleArc.3.3.API.Cluster.Dynamic.Discovery.Script Completed Successfully: $urlencrpt.")
}

$discoveryData

</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>sourceID</Name>
<Value>$MPElement$</Value>
</Parameter>
<Parameter>
<Name>managedEntityID</Name>
<Value>$Target/Id$</Value>
</Parameter>
<Parameter>
<Name>computerName</Name>
<Value>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Value>
</Parameter>
<Parameter>
<Name>IPAddress</Name>
<Value>$Target/Property[Type="ScaleArc.3.3.API.License.Dynamic.Class"]/IPAddress$</Value>
</Parameter>
<Parameter>
<Name>APIKey</Name>
<Value>$Target/Property[Type="ScaleArc.3.3.API.License.Dynamic.Class"]/APIKey$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>180</TimeoutSeconds>
</DataSource>
</Discovery>