HPC 2008 Head Node Network Discovery

Microsoft.HPC.2008.Discovery.HeadNode.Network (Discovery)

Element properties:

TargetMicrosoft.HPC.2008.HeadNode
EnabledTrue
Frequency86400
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:

Member Modules:

ID Module Type TypeId RunAs 
CommandExecuter DataSource System.CommandExecuterDiscoveryDataSource Default

Source Code:

<Discovery ID="Microsoft.HPC.2008.Discovery.HeadNode.Network" Enabled="true" Target="Microsoft.HPC.2008.HeadNode" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="Microsoft.HPC.2008.HeadNode.Network"/>
</DiscoveryTypes>
<DataSource ID="CommandExecuter" TypeID="System!System.CommandExecuterDiscoveryDataSource">
<IntervalSeconds>86400</IntervalSeconds>
<ApplicationName>%windir%\System32\cmd.exe</ApplicationName>
<WorkingDirectory/>
<CommandLine>/c powershell -Command "&amp; {.\GetHpcNetwork.ps1 '$MPElement$' '$Target/Id$'}"</CommandLine>
<TimeoutSeconds>300</TimeoutSeconds>
<RequireOutput>true</RequireOutput>
<Files>
<File>
<Name>GetHpcNetwork.ps1</Name>
<Contents><Script>
if ($Args.Count -lt 2)
{
return -1;
}
$sourceId = $Args[0];
$ManagedEntityId = $Args[1];
$clusterName = (Get-ItemProperty -Path hklm:\SOFTWARE\Microsoft\HPC).ClusterName

$oAPI = new-object -comobject MOM.ScriptAPI;
$oDiscData = $oAPI.CreateDiscoveryData(0, $sourceId, $ManagedEntityId)

function RetrieveNetwork ($clusName, $netType)
{
Add-PSSnapin Microsoft.HPC;
$Parameters = "";
if ($clusName -ne $null)
{
$Parameters = $Parameters + "-Scheduler " + $clusName + " ";
}
if ($netType -ne $null)
{
$Parameters = $Parameters + "-Type " + $netType + " ";
}
$net = Invoke-Expression "Get-HpcNetworkInterface $Parameters";

if ($net -ne $null)
{
$oInst = $oDiscData.CreateClassInstance("$MPElement[Name='Microsoft.HPC.2008.HeadNode.Network']$");
$oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", "$Target/Host/Property[Type='Windows!Microsoft.Windows.Computer']/PrincipalName$");
$oInst.AddProperty("$MPElement[Name='Microsoft.HPC.2008.HeadNode.Network']/NetworkType$", $net.Type);
$oInst.AddProperty("$MPElement[Name='Microsoft.HPC.2008.HeadNode.Network']/AdapterName$", $net.Name);
$oInst.AddProperty("$MPElement[Name='Microsoft.HPC.2008.HeadNode.Network']/Subnet$", $net.IpAddress + "/" + $net.SubnetMask);
$oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $netType);
$oDiscData.AddInstance($oInst);
}
}

RetrieveNetwork $clusterName "Enterprise";
RetrieveNetwork $clusterName "Private";
RetrieveNetwork $clusterName "Application";
$oAPI.Return($oDiscData);
</Script></Contents>
</File>
</Files>
</DataSource>
</Discovery>