HPEnterpriseStorage3PAR.alertNotify_Notification (DataSourceModuleType)

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityInternal
RunAsDefault
OutputTypeSystem.Event.Data

Member Modules:

ID Module Type TypeId RunAs 
3PARNotify DataSource Microsoft.Windows.WmiEventProvider.EventProvider Default
3PARAlertNotifyPropertyBagProbe ProbeAction Microsoft.Windows.ScriptPropertyBagProbe Default
AlertNotifyMapper ConditionDetection System.Event.GenericDataMapper Default

Overrideable Parameters:

IDParameterTypeSelector
IntervalSecondsint$Config/IntervalSeconds$
SyncTimestring$Config/SyncTime$

Source Code:

<DataSourceModuleType ID="HPEnterpriseStorage3PAR.alertNotify_Notification" Accessibility="Internal" Batching="false">
<Configuration>
<xsd:element minOccurs="1" name="IntervalSeconds" type="xsd:integer"/>
<xsd:element minOccurs="1" name="SyncTime" type="xsd:string"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int"/>
<OverrideableParameter ID="SyncTime" Selector="$Config/SyncTime$" ParameterType="string"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<DataSource ID="3PARNotify" TypeID="WindowsLibrary!Microsoft.Windows.WmiEventProvider.EventProvider">
<NameSpace>root\snmp\localhost</NameSpace>
<Query>SELECT * FROM SNMP_ThreeParMIB_alertNotify_Notification</Query>
<PollInterval>60</PollInterval>
</DataSource>
<ProbeAction ID="3PARAlertNotifyPropertyBagProbe" TypeID="WindowsLibrary!Microsoft.Windows.ScriptPropertyBagProbe">
<ScriptName>3PARNotify.vbs</ScriptName>
<Arguments>"key:CLASS" "$Data/EventData/DataItem/Property[@Name='__CLASS']$" "key:AgentAddress" "$Data/EventData/DataItem/Property[@Name='AgentAddress']$" "key:AgentTransportAddress" "$Data/EventData/DataItem/Property[@Name='AgentTransportAddress']$" "key:Component" "$Data/EventData/DataItem/Property[@Name='component']$" "key:Details" "$Data/EventData/DataItem/Property[@Name='details']$" "key:Identification" "$Data/EventData/DataItem/Property[@Name='Identification']$" "key:Severity" "$Data/EventData/DataItem/Property[@Name='severity']$" "key:Time Occurred" "$Data/EventData/DataItem/Property[@Name='timeOccurred']$"</Arguments>
<ScriptBody><Script>

Dim oBag
Dim oArgs
Dim oArg1
Dim LoopCount
Dim Iterator
Dim DescData
Dim strDetails

Dim oAPI
Dim tmpArr1(50)
Dim tmpArr2(25)
Dim tmpArr3(25)
Dim intT1, intT2, intT3, strT1, intT4, strT2
Dim intT5, intT6


Function DebugMsg(TextMsg)
Dim strText
Dim systemDrive
Dim tempFilePath
Dim wshShell
Dim CurrentDateTime
Dim NumArgs
Dim severity
Dim sevDesc

Set objShell = CreateObject("Wscript.Shell")

Const PROGRAM_FILES = &amp;H26&amp;
strSystemDrive = objShell.ExpandEnvironmentStrings("%SystemDrive%")
strtestFilePath = strSystemDrive &amp; "\Program Files (x86)\"
Set fso = CreateObject("Scripting.FileSystemObject")

If fso.FileExists(strtestFilePath) Then
win64 = false
test = "32bit"
Else
win64 = true
test = "64bit"
End If

if win64 then
strRegistryKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Hewlett-Packard\HP Storage Management Pack for System Center\InstallPath"
else
strRegistryKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Hewlett-Packard\HP Storage Management Pack for System Center\InstallPath"
end if

Set WSHShell = CreateObject("WScript.Shell")
strInstallDir = WSHShell.RegRead( strRegistryKey )

CurrentDate = Now
strText = "DebugMsg: " &amp; FormatDateTime(CurrentDate, 0) &amp; ":" &amp; TextMsg
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
Set wshshell = CreateObject("WScript.Shell")

systemDrive = wshshell.ExpandEnvironmentStrings("%SystemDrive%")
tempFilePath = strInstallDir + "\HPE3ParStoreServ.log"
Set objTextFile = objFSO.OpenTextFile(tempFilePath, 8, True)
objTextFile.WriteLine(strText)
objTextFile.Close
End Function


Function HexStrToAscii(var_hex, format)
Dim k, v

HexStrToAscii = ""

For k = 1 To Len(var_hex) Step 2

v = CInt("&amp;H" &amp; Mid(var_hex, k, 2))


If ((v&gt;31) And (v&lt;128)) Then
HexStrToAscii = HexStrToAscii &amp; (chr(v))
Else
If (format) Then
Select Case v
Case 8
HexStrToAscii = HexStrToAscii &amp; vbTab
Case 10
HexStrToAscii = HexStrToAscii &amp; vbCrLf
Case 13
Case Else
HexStrToAscii = HexStrToAscii &amp; "."
End Select
Else
HexStrToAscii = HexStrToAscii &amp; "."
End If
End If
Next
End Function

Const EVENT_TYPE_ERROR = 1
Const EVENT_TYPE_WARNING = 2
Const EVENT_TYPE_INFORMATION = 4

Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
Set oArgs = WScript.Arguments


intT1 = oArgs.Count
intT1 = intT1 - 1

For intT2 = 0 To intT1
tmpArr1(intT2) = oArgs(intT2)
Next

intT2 = 0
intT4 = 0

For intT3 = 0 To intT1

strT1 = tmpArr1(intT3)
strT2 = tmpArr1(intT3 + 1)
If(Instr(strT1,"key:")) Then
intT5 = Instr(strT1,"key:")
strT = Mid(strT1,intT5 + 4)
tmpArr2(intT2) = strT

intT2 = intT2 + 1
If(Instr(strT2,"key:")) Then
tmpArr3(intT4) = ""
Else
tmpArr3(intT4) = strT2
End If
intT4 = intT4 + 1
End If

Next
intT1 = Ubound(tmpArr2)

For i = 0 To oArgs.Count
if oArgs(i) = "key:Details" then
j = i
j = j + 1
desc = HexStrToAscii(oArgs(j),true)
exit for
end if

Next



Call oBag.AddValue("Event: ", desc)

For i = 0 To oArgs.Count
if oArgs(i) = "key:AgentAddress" then
j = i
j = j + 1
DeviceMgmtUrl = oArgs(j)

exit for
end if

Next

DeviceMgmtUrl = "http://" + DeviceMgmtUrl
Call oBag.AddValue("DeviceMgmtUrl", DeviceMgmtUrl)

For intT2 = 0 to intT1
If(tmpArr2(intT2) = "") Then
t = 0
Else
if(tmpArr2(intT2) = "Details") then
strDet = HexStrToAscii(tmpArr3(intT2),true)
desc = desc &amp; vbLf &amp; tmpArr2(intT2) &amp; ": " &amp; strDet
Call oBag.AddValue(tmpArr2(intT2), strDet)
else
desc = desc &amp; vbLf &amp; tmpArr2(intT2) &amp; ": " &amp; tmpArr3(intT2)

Call oBag.AddValue(tmpArr2(intT2), tmpArr3(intT2))
end if
End If
Next

For i = 0 To oArgs.Count
if oArgs(i) = "key:Severity" then
j = i
j = j + 1
sevDesc = oArgs(j)

exit for
end if

Next



If sevDesc = "critical" Then
severity = EVENT_TYPE_ERROR
ElseIf sevDesc = "major" Then
severity = EVENT_TYPE_WARNING
ElseIf sevDesc = "degraded" Then
severity = EVENT_TYPE_ERROR
ElseIf sevDesc = "info" Then
severity = EVENT_TYPE_INFORMATION
ElseIf sevDesc = "fatal" Then
severity = EVENT_TYPE_ERROR
ElseIf sevDesc = "minor" Then
severity = EVENT_TYPE_WARNING
End If

DebugMsg(desc)
if(severity = EVENT_TYPE_WARNING) then
Call oAPI.LogScriptEvent("", 102, severity, desc)
end if

if(severity = EVENT_TYPE_ERROR) then
Call oAPI.LogScriptEvent("", 102, severity, desc)
end if
Call oBag.AddValue("EventLevel", severity)
Call oAPI.AddItem(oBag)
set oBag = nothing
Call oAPI.ReturnItems()
</Script></ScriptBody>
<TimeoutSeconds>60</TimeoutSeconds>
</ProbeAction>
<ConditionDetection ID="AlertNotifyMapper" TypeID="SystemLibrary!System.Event.GenericDataMapper">
<EventOriginId>$Target/Id$</EventOriginId>
<PublisherId>$MPElement$</PublisherId>
<PublisherName>HPE 3PAR &amp; Primera Storage</PublisherName>
<Channel>Operation Manager</Channel>
<LoggingComputer>$Target/Property[Type="HPEnterpriseStorage3PARMP.SNMPTrap"]/Name$</LoggingComputer>
<EventNumber>52000</EventNumber>
<EventCategory>0</EventCategory>
<EventLevel>$Data/Property[@Name='EventLevel']$</EventLevel>
<UserName>Administrator</UserName>
<Description>A System event generated.</Description>
<Params/>
</ConditionDetection>
</MemberModules>
<Composition>
<Node ID="AlertNotifyMapper">
<Node ID="3PARAlertNotifyPropertyBagProbe">
<Node ID="3PARNotify"/>
</Node>
</Node>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>SystemLibrary!System.Event.Data</OutputType>
</DataSourceModuleType>