Lenovo HwPlatform Discovery Provider

IBM.HwPlatform.DiscoveryProvider (DataSourceModuleType)

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityInternal
RunAsDefault
OutputTypeSystem.Discovery.Data

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource IBM.WinComputer.DiscoveryBase.Repository Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
IntervalSecondsint$Config/IntervalSeconds$Lenovo HwPlatform Discovery Provider Interval Seconds
TimeoutSecondsint$Config/TimeoutSeconds$Lenovo HwPlatform Discovery Provider Timeout Seconds

Source Code:

<DataSourceModuleType ID="IBM.HwPlatform.DiscoveryProvider" Accessibility="Internal">
<Configuration>
<xsd:element name="IntervalSeconds" type="xsd:integer"/>
<xsd:element name="TimeoutSeconds" type="xsd:integer"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IntervalSeconds" ParameterType="int" Selector="$Config/IntervalSeconds$"/>
<OverrideableParameter ID="TimeoutSeconds" ParameterType="int" Selector="$Config/TimeoutSeconds$"/>
</OverrideableParameters>
<ModuleImplementation>
<Composite>
<MemberModules>
<DataSource ID="DS" TypeID="IBM.WinComputer.DiscoveryBase.Repository">
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<SyncTime/>
<ScriptName>IBMHwPlatformDiscovery.vbs</ScriptName>
<Arguments>"$MPElement$" "$Target/Id$" "$Target/ManagementGroup/Name$" "$Target/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$" "$Target/Property[Type="IBM.WinComputer"]/SystemUUID$" "$Target/Property[Type="IBM.WinComputer"]/MTAndSN$" "$Target/Property[Type="IBM.WinComputer"]/ModelNumber$" "$Target/Property[Type="IBM.WinComputer"]/PlatformCategory$" "$Target/Property[Type="IBM.WinComputer"]/ProductFamily$" "$Target/Property[Type="IBM.WinComputer"]/PlatformAgentInfo$"</Arguments>
<ScriptBody><Script>

Dim oArgs
Set oArgs = WScript.Arguments
WScript.Echo oArgs.Count
if oArgs.Count &lt; 10 Then
'Wscript.Quit -1
End If
SetLocale("en-us")
Dim sourceID, managedEntityID, managementGroupName, targetComputerPrincipalName, systemUUID, mtAndsn, modelNumber, platformCategory, platformName, agentVersion

sourceID = oArgs(0)
managedEntityID = oArgs(1)
managementGroupName = oArgs(2)
targetComputerPrincipalName = oArgs(3)
systemUUID = oArgs(4)
mtAndsn = oArgs(5)
modelNumber = oArgs(6)
platformCategory = oArgs(7)
platformName = oArgs(8)
agentVersion = oArgs(9)

EventID = 103

Call HwPlatformDiscovery()

Sub HwPlatformDiscovery()

Dim oBag

'Set oAPI = SCOMCreateObject("MOM.ScriptAPI")

Call LogDebugString("Entering HwPlatformDiscovery..." +vbCrlf+ _
" targetComputer:'" + CStr(targetComputerPrincipalName) + "'" +vbCrlf+ _
" systemUUID:'" + CStr(systemUUID) + "'" +vbCrlf+ _
" mt-sn:'" + CStr(mtAndsn) + "'" +vbCrlf+ _
" model:'" + CStr(modelNumber) + "'" +vbCrlf+ _
" platformCat:'" + CStr(platformCategory) + "'", INFO_LEVEL_DETAIL)

Set oDiscoveryData = oAPI.CreateDiscoveryData(0, sourceID, managedEntityID)

If (CreatePlatformInstances() &gt; 0) Then
Call LogDebugString("Created Platform", INFO_LEVEL)
End If

Call oAPI.Return(oDiscoveryData)

End Sub


Function CreatePlatformInstances()

Call LogDebugString("Entering CreatePlatformInstances", INFO_LEVEL_FUNCTION)
CreatePlatformInstances = 0

Dim oPlatformInstance
If (CStr(platformCategory) = RACK_PLATFORM) Then
Set oPlatformInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='IBM.SystemX.RackSystem']$")
'Call oPlatformInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", targetComputerPrincipalName + " (Rack-mount Platform)")
ElseIf (CStr(platformCategory) = IDATAPLEX_PLATFORM) Then
Set oPlatformInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='IBM.SystemX.iDataPlexSystem']$")
ElseIf (CStr(platformCategory) = BLADE_PLATFORM) Then
Set oPlatformInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='IBM.SystemX.BladeSystem']$")
'Call oPlatformInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", targetComputerPrincipalName + " (Blade Platform)")
ElseIf (CStr(platformCategory) = TOWER_PLATFORM) Then
Set oPlatformInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='IBM.SystemX.TowerSystem']$")
'Call oPlatformInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", targetComputerPrincipalName + " (Tower Platform)")
ElseIf (CStr(platformCategory) = ENTERPRISE_PLATFORM) Then
Set oPlatformInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='IBM.SystemX.EnterpriseSystem']$")
'Call oPlatformInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", targetComputerPrincipalName + " (Enterprise Platform)")
ElseIf (CStr(platformCategory) = NODE_PLATFORM) Then
Set oPlatformInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='IBM.SystemX.FlexSystem']$")
'Call oPlatformInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", targetComputerPrincipalName + " (Flex Platform)")
Else
Set oPlatformInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='IBM.SystemX.UnclassifiedSystem']$")
'Call oPlatformInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", targetComputerPrincipalName + " (Unclassified Platform)")
End If

Call oPlatformInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", targetComputerPrincipalName + " (" + platformCategory +")")
Call oPlatformInstance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", targetComputerPrincipalName)
Call UpdatePlatformProperty(oPlatformInstance)

If (CStr(platformCategory) &lt;&gt; THINKSERVER) Then
Call oDiscoveryData.AddInstance(oPlatformInstance)
End If
CreatePlatformInstances = 1
End Function


Function UpdatePlatformProperty(ByRef oPlatformInstance)

Call LogDebugString("Entering UpdateSystemProperty", INFO_LEVEL_FUNCTION)
Dim oPropertyValue

'Update SystemUUID
oPropertyValue = CStr(systemUUID)
Call oPlatformInstance.AddProperty("$MPElement[Name='IBM.SystemX.Platform']/SystemUUID$", oPropertyValue)

'Update mtAndsn
oPropertyValue = CStr(mtAndsn)
Call oPlatformInstance.AddProperty("$MPElement[Name='IBM.SystemX.Platform']/MTAndSN$", oPropertyValue)

'Update ModelNumber
oPropertyValue = CStr(modelNumber)
Call oPlatformInstance.AddProperty("$MPElement[Name='IBM.SystemX.Platform']/ModelNumber$", oPropertyValue)

'Update PlatformCategory
oPropertyValue = CStr(platformCategory)
Call oPlatformInstance.AddProperty("$MPElement[Name='IBM.SystemX.Platform']/PlatformCategory$", oPropertyValue)

'Update PlatformName
oPropertyValue = CStr(platformName)
Call oPlatformInstance.AddProperty("$MPElement[Name='IBM.SystemX.Platform']/ProductFamily$", oPropertyValue)

'Update HostPrincipalName
oPropertyValue = CStr(targetComputerPrincipalName)
Call oPlatformInstance.AddProperty("$MPElement[Name='IBM.SystemX.Platform']/HostPrincipalName$", oPropertyValue)

'Update HostPlatformAgentInfo
oPropertyValue = CStr(agentVersion)
Call oPlatformInstance.AddProperty("$MPElement[Name='IBM.SystemX.Platform']/HostPlatformAgentInfo$", oPropertyValue)

'Update ibmInternalWinEventFiltering
Call oPlatformInstance.AddProperty("$MPElement[Name='IBM.SystemX.Platform']/ibmInternalWinEventFiltering$", GetWinEventFilteringRegValue())

End Function

Function GetWinEventFilteringRegValue()

Dim oReg, rcCode, iWinEventFiltering
'Dim iWinEventFiltering, set this value to 1 means to filter out all winevent's; 0 means to let them go through.
iWinEventFiltering = 1

Call LogDebugString("Entering GetWinEventFilteringRegValue", INFO_LEVEL_FUNCTION)

Set oReg = GetObject("winmgmts://localhost/root/default:StdRegProv")
If (not(oReg is nothing)) Then
Dim dwValue
rcCode = oReg.GetDWORDValue(HKEY_LOCAL_MACHINE, WINEVENT_FILTER_KEY, WINEVENT_FILTER_NAME, dwValue)
If (Not(IsNull(dwValue))) Then
iWinEventFiltering = dwValue
End If
End If
GetWinEventFilteringRegValue = iWinEventFiltering

End Function


</Script></ScriptBody>
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
</DataSource>
</MemberModules>
<Composition>
<Node ID="DS"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>