ScaleArc 3.3 API ServerType Dynamic Discovery

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

Element properties:

TargetScaleArc.3.3.API.License.Dynamic.Class
EnabledTrue
Frequency120
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.ServerType.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.ServerType.Dynamic.Class">
<Property TypeID="ScaleArc.3.3.API.ServerType.Dynamic.Class" PropertyID="Component_Name"/>
<Property TypeID="ScaleArc.3.3.API.ServerType.Dynamic.Class" PropertyID="IPAddress"/>
<Property TypeID="ScaleArc.3.3.API.ServerType.Dynamic.Class" PropertyID="RunningAs"/>
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>120</IntervalSeconds>
<SyncTime>00:20</SyncTime>
<ScriptName>ScaleArc.3.3.API.ServerType.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

$URL = "https://" + $IPAddress + "/api/ha/status?apikey=" + $APIKey
$URLData = $web.DownloadString($URL)
$Jparse = $URLData | ConvertFrom-Json
$HAStatus = $Jparse.data.("remote_runningas")

$discoveryData = $api.CreateDiscoveryData(0, $SourceId, $ManagedEntityId)
if($HAStatus -eq "Running as Standalone")
{

$instance = $discoveryData.CreateClassInstance("$MPElement[Name='ScaleArc.3.3.API.ServerType.Dynamic.Class']$")
$instance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$instance.AddProperty("$MPElement[Name='ScaleArc.3.3.API.ServerType.Dynamic.Class']/IPAddress$", $IPAddress)
$instance.AddProperty("$MPElement[Name='ScaleArc.3.3.API.ServerType.Dynamic.Class']/Component_Name$", 'StandAlone')
$instance.AddProperty("$MPElement[Name='ScaleArc.3.3.API.ServerType.Dynamic.Class']/RunningAs$", $HAStatus)
$discoveryData.AddInstance($instance)

$api.LogScriptEvent("ScaleArc.3.3.API.ServerType.Dynamic.Discovery.Script.ps1", 53, 0 , "ScaleArc Server with IP: $IPAddress; $HAStatus.")
}
elseif($HAStatus -eq "Running as Primary")
{

$instance = $discoveryData.CreateClassInstance("$MPElement[Name='ScaleArc.3.3.API.ServerType.Dynamic.Class']$")
$instance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$instance.AddProperty("$MPElement[Name='ScaleArc.3.3.API.ServerType.Dynamic.Class']/IPAddress$", $IPAddress)
$instance.AddProperty("$MPElement[Name='ScaleArc.3.3.API.ServerType.Dynamic.Class']/Component_Name$", 'HA')
$instance.AddProperty("$MPElement[Name='ScaleArc.3.3.API.ServerType.Dynamic.Class']/RunningAs$", $HAStatus)
$discoveryData.AddInstance($instance)

$api.LogScriptEvent("ScaleArc.3.3.API.ServerType.Dynamic.Discovery.Script.ps1", 53, 0 , "ScaleArc Server with IP:$IPAddress; $HAStatus.")
}

$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>