HPC 2008 Job Scheduler Nodes Reachable Data Source

Microsoft.HPC.2008.DataSource.JobScheduler.NodesReachable (DataSourceModuleType)

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityInternal
RunAsDefault
OutputTypeSystem.PropertyBagData

Member Modules:

ID Module Type TypeId RunAs 
SimpleScheduler DataSource System.SimpleScheduler Default
CommandExecuter ProbeAction System.CommandExecuterProbePropertyBagBase Default

Overrideable Parameters:

IDParameterTypeSelector
IntervalSecondsint$Config/IntervalSeconds$
SyncTimestring$Config/SyncTime$
TimeoutSecondsint$Config/TimeoutSeconds$
ClusterNamestring$Config/ClusterName$

Source Code:

<DataSourceModuleType ID="Microsoft.HPC.2008.DataSource.JobScheduler.NodesReachable" Accessibility="Internal" Batching="false">
<Configuration>
<xsd:element minOccurs="1" name="IntervalSeconds" type="xsd:integer"/>
<xsd:element minOccurs="0" name="SyncTime" type="xsd:string"/>
<xsd:element minOccurs="1" name="TimeoutSeconds" type="xsd:integer"/>
<xsd:element minOccurs="1" name="ClusterName" type="xsd:string"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int"/>
<OverrideableParameter ID="SyncTime" Selector="$Config/SyncTime$" ParameterType="string"/>
<OverrideableParameter ID="TimeoutSeconds" Selector="$Config/TimeoutSeconds$" ParameterType="int"/>
<OverrideableParameter ID="ClusterName" Selector="$Config/ClusterName$" ParameterType="string"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<DataSource ID="SimpleScheduler" TypeID="System!System.SimpleScheduler">
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<SyncTime>$Config/SyncTime$</SyncTime>
</DataSource>
<ProbeAction ID="CommandExecuter" TypeID="System!System.CommandExecuterProbePropertyBagBase">
<ApplicationName>%windir%\System32\cmd.exe</ApplicationName>
<WorkingDirectory/>
<CommandLine>/c powershell -Command "&amp; {.\GetNodesReachable.ps1 '$Config/ClusterName$'}"</CommandLine>
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
<RequireOutput>true</RequireOutput>
<Files>
<File>
<Name>GetNodesReachable.ps1</Name>
<Contents><Script>
if ($Args.Count -lt 1)
{
return -1;
}
$clusterName = $Args[0];

Add-PSSnapin Microsoft.HPC;
$Parameters = "-GroupName ComputeNodes ";
if ($clusterName -ne "Null")
{
$Parameters = $Parameters + "-Scheduler " + $clusterName + " ";
}
$results = Invoke-Expression "Get-HpcNode $Parameters";

if ($results.GetType().Name -eq 'HpcNode')
{
if ($results.NodeHealth -ne 'Unreachable')
{
$PercentNode = 1;
}
else
{
$PercentNode = 0;
}
}
else
{
$failedNode = 0;
foreach ($n in $results)
{
if ($n.NodeHealth -ne 'Unreachable')
{
++$failedNode;
}
}
$PercentNode = [int]($failedNode / $results.Length * 10000) / 10000;
}
$PercentNode;

$oAPI = new-object -comObject "MOM.ScriptAPI";
$oBag = $oAPI.CreateTypedPropertyBag(3);
$oBag.AddValue("PercentNode",$PercentNode);
$oAPI.AddItem($oBag);
$oAPI.ReturnItems();
</Script></Contents>
</File>
</Files>
<OutputType>System.PropertyBagData</OutputType>
</ProbeAction>
</MemberModules>
<Composition>
<Node ID="CommandExecuter">
<Node ID="SimpleScheduler"/>
</Node>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.PropertyBagData</OutputType>
</DataSourceModuleType>