Connector virtual Disk Unit event Monitor

Huawei.Server.ConnectorVirtualDiskEventUnitMonitor (UnitMonitor)

Description for the new unit monitor.

Element properties:

TargetHuawei.Server.ControllerVirtualDisk
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.ConnectorVirtualDiskEventUnitMonitor" Accessibility="Public" Enabled="true" Target="Huawei.Server.ControllerVirtualDisk" 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.Computer"]/PrincipalName$</ComputerName>
<LogName>Application</LogName>
<EventExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>GreaterEqual</Operator>
<ValueExpression>
<Value>2003</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>LessEqual</Operator>
<ValueExpression>
<Value>2004</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>ConnectorPhysicalDiskUnitMonitor.vbs</ScriptName>
<Arguments>$MPElement$ $Target/Id$ $Config/Computer$ $Target/Host/Host/Property[Type="Windows!Microsoft.Windows.LogicalDevice"]/DeviceID$ $Target/Property[Type="Huawei.Server.ControllerVirtualDisk"]/ID$</Arguments>
<ScriptBody><Script>
'**********************************************************************************
' Script Name - DellServerMemoryUnit
' Author: Vignesh Pandian
'
' Description:
' Determine Unit Monitor health for ServerMemory
'
' (c) Copyright Huawei Inc. 2007 - 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, objDellConnection, LogMessage, sQuery, colItems, objItemMemory, DiskStatus, TargetComputer, prmDeviceID
TargetComputer = oArgs(2)
prmDeviceID = oArgs(4)
strComputer = "."

set objDellConnection = GetObject("winmgmts:" &amp; "{impersonationLevel=impersonate}!\\" &amp; strComputer &amp; "\root\cimv2\huawei")
If Err.Number &lt;&gt; 0 Then
LogMessage = "WMI Cimv2Dell Error Number : " &amp; Err.Number &amp; ". Description :" &amp; Err.Description
Err.Clear
Else
If IsEmpty(objDellConnection) Then
LogMessage = "Unable to open WMI Namespace root-cimv2-dell. Check to see if the WMI service is enabled and running, and Install/Re-Install ServerAdministrator to ensure this WMI namespace exists. " &amp; Err
Else
sQuery = "Select * from Huawei_LogicDiskInfo WHERE ld_id = '" &amp; prmDeviceID &amp; "'"
MOMDebugLog(sQuery)
Set colItems = objDellConnection.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-dell"
End If
Err.Clear
MOMDebugLog(DiskStatus)
End If
If colItems is Nothing Then
LogMessage = "Unable to retrieve CIM_PhysicalMemory object"
Else
LogMessage = "CIM_PhysicalMemory object retrieved"
MOMDebugLog(DiskStatus)
For Each objItemMemory in colItems
If Err.Number &lt;&gt; 0 Then
If Err.Number = -2147023169 Then
LogMessage = "RPC Failure occurred for cimv2\dell - bmc info : " &amp; Err.Number
ElseIf Err.Number = -2147217389 Then
LogMessage = "If PWS present, Please Install/Re-Install ServerAdministrator on Dell Server : " &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 objItemMemory is Nothing Then
DiskStatus = objItemMemory.ld_state

End If
MOMDebugLog(DiskStatus)
Next
End If 'colItems is nothing
Set colItems = Nothing
End If 'dellconnection is noting
On Error GoTo 0
End If

If DiskStatus = "OPTIMAL" Then
DiskStatus = "OK"
ElseIf DiskStatus = "DEGRADED" OR DiskStatus = "PARTIALLY_DEGRADED" Then
DiskStatus = "Warning"
else if DiskStatus = "OFFLINE"
DiskStatus = "Critical"
else
DiskStatus = "OK"
End If
MOMDebugLog(DiskStatus)
Dim oAPI, oBag
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
Call oBag.AddValue("Status",DiskStatus)
Call oAPI.Return(oBag)
'*****************************************************************
' Function MOMDebugLog
' Add LogMessage Header - ScriptName and Time and Logging it.
'*****************************************************************
Public Function MOMDebugLog (ByVal strMessage)

Const ForReading = 1, ForWriting = 2, ForAppending = 8

Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:\Storage.txt", ForAppending, True)
f.WriteLine strMessage
f.Close

End Function
</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>