Power Unit Event Unit Monitor

Huawei.Server.HuaweiPowerUnitEventUnitMonitor (UnitMonitor)

Description for the new unit monitor.

Element properties:

TargetHuawei.Server.ServerPowerSuppliesUnit
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateFalse
Alert Auto ResolveTrue
Monitor TypeHuawei.Server.EventTriggeredScriptMonitorType.3StateScriptMonitorType
RemotableTrue
AccessibilityPublic
RunAsDefault

Source Code:

<UnitMonitor ID="Huawei.Server.HuaweiPowerUnitEventUnitMonitor" Accessibility="Public" Enabled="true" Target="Huawei.Server.ServerPowerSuppliesUnit" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Huawei.Server.EventTriggeredScriptMonitorType.3StateScriptMonitorType" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
<OperationalState ID="Critical" MonitorTypeStateID="Critical" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.LogicalDevice"]/DeviceID$</ComputerName>
<LogName>Application</LogName>
<EventExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>GreaterEqual</Operator>
<ValueExpression>
<Value>2007</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>LessEqual</Operator>
<ValueExpression>
<Value>2008</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>Huawei BMA</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</EventExpression>
<ScriptName>HuaweiPowerSuppliesUnitMonitor.vbs</ScriptName>
<Arguments>$MPElement$ $Target/Id$ $Config/Computer$ $Target/Property[Type="Huawei.Server.ServerPowerSuppliesUnit"]/DeviceID$</Arguments>
<ScriptBody><Script>
'**********************************************************************************
' Script Name - HuaweiPowerSuppliesUnitMonitor
' Author:
'
' Description:
' Determine Unit Monitor health for Power
'
' (c) Copyright Huawei Inc. 2013 - All rights reserved
'**********************************************************************************
Option Explicit
On Error Resume Next

Dim oArgs
Set oArgs = WScript.Arguments
if oArgs.Count &lt; 4 Then
Wscript.Quit -1
End If

Dim strComputer, objHuaweiConnection, LogMessage, sQuery, colItems, objItemFan, FanStatus, TargetComputer, prmDeviceID, FanPrecese
TargetComputer = oArgs(2)
strComputer = "."
prmDeviceID = oArgs(3)

set objHuaweiConnection = GetObject("winmgmts:" &amp; "{impersonationLevel=impersonate}!\\" &amp; strComputer &amp; "\root\cimv2\Huawei")
If Err.Number &lt;&gt; 0 Then
LogMessage = "WMI Cimv2Huawei Error Number : " &amp; Err.Number &amp; ". Description :" &amp; Err.Description
Err.Clear
Else
If IsEmpty(objHuaweiConnection) Then
LogMessage = "Unable to open WMI Namespace root-cimv2-huawei. Check to see if the WMI service is enabled and running, and Install/Re-Install BMA to ensure this WMI namespace exists. " &amp; Err
Else
sQuery = "Select * from Huawei_PowerInfo WHERE PowerId = " &amp; prmDeviceID
Set colItems = objHuaweiConnection.ExecQuery(sQuery)
If Err.Number &lt;&gt; 0 Then
LogMessage = sQuery &amp; " Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
If Err.Number = -2147023169 Then
LogMessage = "RPC Failure occurred for namespace root-cimv2-Huawei"
End If
Err.Clear
End If
If colItems is Nothing Then
LogMessage = "Unable to retrieve Huawei_PowerInfo object"
Else
LogMessage = "Huawei_PowerInfo object retrieved"
For Each objItemFan in colItems
If Err.Number &lt;&gt; 0 Then
If Err.Number = -2147023169 Then
LogMessage = "RPC Failure occurred for cimv2\huawei - bmc info : " &amp; Err.Number
ElseIf Err.Number = -2147217389 Then
LogMessage = "If PWS present, Please Install/Re-Install BMA : " &amp; Err.Number
Else
LogMessage = "Object RetrievalLoop Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
End If
Err.Clear
End If
If Not objItemFan is Nothing Then
FanStatus = objItemFan.PowerHealth
End If
Next
End If 'colItems is nothing
Set colItems = Nothing
End If 'dellconnection is noting
On Error GoTo 0
End If
If FanStatus = "" Then
FanStatus = "Warning"
end if
If FanStatus = "Warning" OR FanStatus = "Ok" Then

else

FanStatus = "Ok"
End if

Dim oAPI, oBag
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
Call oBag.AddValue("Status",FanStatus)
Call oAPI.Return(oBag)

</Script></ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
<SuccessExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='Status']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Ok</Value>
</ValueExpression>
</SimpleExpression>
</SuccessExpression>
<WarningExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='Status']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Warning</Value>
</ValueExpression>
</SimpleExpression>
</WarningExpression>
<CriticalExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='Status']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Critical</Value>
</ValueExpression>
</SimpleExpression>
</CriticalExpression>
</Configuration>
</UnitMonitor>