Vblock Discovery

VCE.Vision.Monitoring.Discovery.VblockRoot (Discovery)

Discover Vblocks

Element properties:

TargetVCE.Vision.Monitoring.Class.VProxy
EnabledTrue
Frequency600
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.TimedScript.DiscoveryProvider Default

Source Code:

<Discovery ID="VCE.Vision.Monitoring.Discovery.VblockRoot" Target="VCE.Vision.Monitoring.Class.VProxy" Enabled="true" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="VCE.Vision.Monitoring.Class.VblockRoot"/>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
<IntervalSeconds>600</IntervalSeconds>
<SyncTime/>
<ScriptName>vDiscovery.vbs</ScriptName>
<Arguments>$MPElement$ $Target/Id$ $Target/Property[Type="VCE.Vision.Monitoring.Class.VProxy"]/servicename$</Arguments>
<ScriptBody><Script>Option Explicit

Dim oAPI, oDiscoveryData, oHealthServiceInst, oDoc
Dim source0, target0, sVblockId, host0, sDebugMsg, bDebug

Sub InitDiscovery(ByRef nodelist, ByRef dct)

Set oAPI = CreateObject("MOM.ScriptAPI")

If WScript.Arguments.Count &lt; 3 Then
Call oAPI.LogScriptEvent("vDiscovery", 1002, 1, "The script expects 3 arguments!")
Call WScript.Quit(-1)
End If

Dim sourceKey0, var0
Dim sh, wmi, vRoot, keys, svcItems, svcItem

source0 = WScript.Arguments(0)
target0 = WScript.Arguments(1)
sourceKey0 = WScript.Arguments(2)

Set sh = CreateObject("WScript.Shell")
host0 = sh.RegRead ("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Hostname")
var0 = sh.RegRead ("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Domain")
If Len(var0) &gt; 0 Then host0 = host0 &amp; "." &amp; var0
sDebugMsg = sDebugMsg &amp; host0 &amp; ", " &amp; sourceKey0

Set wmi = GetObject("winmgmts:\\.\root\cimv2")
Set oDoc = CreateObject("Microsoft.XMLDOM")
Set nodeList = Nothing
Set vRoot = Nothing
keys = Split(sourceKey0, ":")
On Error Resume Next
If UBound(keys) = 0 Then
var0 = sh.RegRead ("HKLM\SYSTEM\CurrentControlSet\services\" &amp; sourceKey0 &amp; "\VblocksData")
Call oDoc.load(var0)
Set nodelist = oDoc.documentElement.SelectNodes("/*/vblock")
bDebug = sh.RegRead ("HKLM\SYSTEM\CurrentControlSet\services\" &amp; sourceKey0 &amp; "\mpDebug")
Else
Set svcItems = wmi.ExecQuery("SELECT * FROM Win32_Service WHERE Name LIKE 'VCEProxy_%'")
For Each svcItem in svcItems
var0 = sh.RegRead ("HKLM\SYSTEM\CurrentControlSet\services\" &amp; svcItem.Name &amp; "\VblocksData")
Call oDoc.load(var0)
Set vRoot = oDoc.documentElement.SelectSingleNode("/*/vblock[./moId='" &amp; keys(0) &amp;"']")
If Not vRoot Is Nothing Then
Dim vce2scomNodeList, vce2scomNode, vce2scomAttrNodeList, vce2scomAttrNode, vtype, attrList
Set vce2scomNodeList = oDoc.documentElement.SelectNodes("//vce2scom/genericComponent")
For Each vce2scomNode In vce2scomNodeList
vtype = vce2scomNode.SelectSingleNode("./@type").Text
If Not dct.Exists(vtype &amp; ".type") Then
Call dct.Add(vtype &amp; ".type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockGenericComponent']$")
Call dct.Add(vtype &amp; ".rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockBaseContainsVblockGenericComponent']$")
End If

attrList = ""
Set vce2scomAttrNodeList = vce2scomNode.SelectNodes("./includeAttribute")
For Each vce2scomAttrNode In vce2scomAttrNodeList
attrList = attrList &amp; "|./" &amp; vce2scomAttrNode.Text
Next
If attrList &lt;&gt; "" Then
Call dct.Add(vtype &amp; ".attr0","$MPElement[Name='VCE.Vision.Monitoring.Class.VblockGenericComponent']/sourceData$" &amp; attrList)
End If
Next

sVblockId = vRoot.SelectSingleNode("./moId").Text
Set nodelist = oDoc.documentElement.SelectNodes("/*/*[./associatedObject/dbId='" &amp; keys(1) &amp; "']")
bDebug = sh.RegRead ("HKLM\SYSTEM\CurrentControlSet\services\" &amp; svcItem.Name &amp; "\mpDebug")
Exit For
End If
Next
End If
On Error GoTo 0 'restores VBS error trapping
End Sub

Sub AddPropertiesByNode(oInst, xnode, hash)
Dim attrName, attrNode, attrVal, xPath, tmpVar, tmpArray, clsArray(2), i, j

Call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", GetInstanceName(xnode))

clsArray(0) = "vblockbase"
clsArray(1) = xnode.NodeName
For i = 0 To UBound(clsArray)
If hash.Exists(clsArray(i) &amp; ".attr0") Then
tmpVar = hash.item(clsArray(i) &amp; ".attr0")
tmpArray = Split(tmpVar, "|")
attrName = tmpArray(0)
attrVal = ""
For j = 1 To UBound(tmpArray)
xPath = tmpArray(j)
Set attrNode = xnode.SelectSingleNode(xPath)
If Not attrNode Is Nothing Then
attrVal = attrVal &amp; Mid(xPath,3) &amp; "=" &amp; attrNode.Text &amp; ";" &amp; vbNewLine
End If
Next
Call oInst.AddProperty(attrName, Trim(attrVal))
End If

For j = 1 To 100
tmpVar = hash.item(clsArray(i) &amp; ".attr" &amp; j)
If tmpVar = "" Then Exit For

tmpArray = Split(tmpVar, "|")
attrName = tmpArray(0)
xPath = tmpArray(1)

Set attrNode = xnode.SelectSingleNode(xPath)
If Not attrNode Is Nothing Then
attrVal = Trim(attrNode.Text)
If Len(attrVal) &gt; 0 Then
Call oInst.AddProperty(attrName, attrVal)
End If
End If
Next
Next

End Sub

Sub AddComputeServerProperties(oInst, dbId)

Dim rootNode : Set rootNode = oDoc.documentElement
Dim numOfMemoryUnit, numOfProcessor

numOfMemoryUnit = rootNode.SelectNodes("/*/memoryunit[./associatedObject/dbId='" &amp; dbId &amp; "']").length
If numOfMemoryUnit &gt; 0 Then
Call oInst.AddProperty("$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeServer']/numOfMemoryUnit$", numOfMemoryUnit)
Call oInst.AddProperty("$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeServer']/capacityPerMemoryUnit$", _
rootNode.SelectSingleNode("/*/memoryunit[./associatedObject/dbId='" &amp; dbId &amp; "']/capacity").Text)
Call oInst.AddProperty("$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeServer']/memoryClock$", _
rootNode.SelectSingleNode("/*/memoryunit[./associatedObject/dbId='" &amp; dbId &amp; "']/clock").Text)
End If

numOfProcessor = rootNode.SelectNodes("/*/processorunit[./associatedObject/dbId='" &amp; dbId &amp; "']").length
If numOfProcessor &gt; 0 Then
Call oInst.AddProperty("$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeServer']/numOfProcessor$", numOfProcessor)
Call oInst.AddProperty("$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeServer']/coresPerProcessor$", _
rootNode.SelectSingleNode("/*/processorunit[./associatedObject/dbId='" &amp; dbId &amp; "']/cores").Text)
Call oInst.AddProperty("$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeServer']/cpuSpeed$", _
rootNode.SelectSingleNode("/*/processorunit[./associatedObject/dbId='" &amp; dbId &amp; "']/speed").Text)
Call oInst.AddProperty("$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeServer']/cpuModel$", _
rootNode.SelectSingleNode("/*/processorunit[./associatedObject/dbId='" &amp; dbId &amp; "']/modelName").Text)
End If

End Sub

Function GetInstanceName(xnode)
Dim xtext : xtext = xnode.SelectSingleNode("./name").Text

If xtext = "" Then
xtext = xnode.SelectSingleNode("./alias").Text
End If

If xtext = "" Then
xtext = xnode.SelectSingleNode("./description").Text
End If

If xtext = "" Then
xtext = xnode.NodeName
End If

GetInstanceName = xtext

End Function

Sub AssignHealthService(oInst0, oHealthServiceInst)
Dim oShouldManageInst
Set oShouldManageInst = oDiscoveryData.CreateRelationshipInstance("$MPElement[Name='SC!Microsoft.SystemCenter.HealthServiceShouldManageEntity']$")
oShouldManageInst.Source = oHealthServiceInst
oShouldManageInst.Target = oInst0
Call oDiscoveryData.AddInstance(oShouldManageInst)
End Sub

Sub Main
Dim dct, nodeList, attrExclList

Call InitClassDictionary(dct, attrExclList)
Call InitDiscovery(nodeList, dct)

Set oDiscoveryData = oAPI.CreateDiscoveryData(0, source0, target0)
If nodeList Is Nothing Then
Call oAPI.Return(oDiscoveryData)
Exit Sub
End If
If nodeList.Length = 0 Then
Call oAPI.Return(oDiscoveryData)
Exit Sub
End If

Set oHealthServiceInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='SC!Microsoft.SystemCenter.HealthService']$")
Call oHealthServiceInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", host0)
Call oDiscoveryData.AddInstance(oHealthServiceInst)

Dim oNode, pNode, oInst, pInst, oRel
Dim childDbId, childUId, parentUid, parentTag, childTag
For Each oNode In nodeList
If sVblockId = "" Then 'it's VblockRoot
sVblockId = oNode.SelectSingleNode("./moId").Text
End If

childTag = oNode.NodeName
childDbId = oNode.SelectSingleNode("./dbId").Text
childUId = sVblockId &amp; ":" &amp; childDbId

Set pNode = oNode.SelectSingleNode("./associatedObject[assocationType='parent']")
If Not pNode Is Nothing Then
parentTag = pNode.SelectSingleNode("./elementName").Text
parentUid = sVblockId &amp; ":" &amp; pNode.SelectSingleNode("./dbId").Text
End If

If dct.Exists(childTag &amp; ".type") Then
Set oInst = oDiscoveryData.CreateClassInstance(dct.Item(childTag &amp; ".type"))
Call oInst.AddProperty("$MPElement[Name='VCE.Vision.Monitoring.Class.VblockBase']/uuid$", childUId)
Call AddPropertiesByNode(oInst, oNode, dct)
If childTag = "computeserver" Then
Call AddComputeServerProperties(oInst, childDbId)
End If
Call oDiscoveryData.AddInstance(oInst)
Call AssignHealthService(oInst, oHealthServiceInst)

If pNode Is Nothing Then
sDebugMsg = sDebugMsg &amp; vbNewLine &amp; "+" &amp; childTag &amp; ": " &amp; childUId
Else
If dct.Exists(parentTag &amp; ".type") Then
Set pInst = oDiscoveryData.CreateClassInstance(dct.Item(parentTag &amp; ".type"))
Else
Set pInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='VCE.Vision.Monitoring.Class.VblockGenericComponent']$")
End If
Call pInst.AddProperty("$MPElement[Name='VCE.Vision.Monitoring.Class.VblockBase']/uuid$", parentUid)
Set oRel = oDiscoveryData.CreateRelationshipInstance(dct.Item(childTag &amp; ".rel"))
oRel.Source = pInst
oRel.Target = oInst
Call oDiscoveryData.AddInstance(oRel)
sDebugMsg = sDebugMsg &amp; vbNewLine &amp; "+" &amp; parentTag &amp; "-&gt;" &amp; childTag &amp; ": " &amp; childUId
End If

ElseIf parentTag = "compute" Or parentTag = "network" Or parentTag = "storage" Then
' top level generic objects
Dim attrNodeList, attrNode, attrList
attrList = ""
Set attrNodeList = oNode.SelectNodes("./*[text()]")
For Each attrNode In attrNodeList
If attrExclList.IndexOf(attrNode.NodeName, 0) &lt; 0 Then
attrList = attrList &amp; "|./" &amp; attrNode.NodeName
End If
Next
Call dct.Add(childTag &amp; ".attr0","$MPElement[Name='VCE.Vision.Monitoring.Class.VblockGenericComponent']/sourceData$" &amp; attrList)

Set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='VCE.Vision.Monitoring.Class.VblockGenericComponent']$")
Call oInst.AddProperty("$MPElement[Name='VCE.Vision.Monitoring.Class.VblockBase']/uuid$", childUId)
Call oInst.AddProperty("$MPElement[Name='VCE.Vision.Monitoring.Class.VblockGenericComponent']/sourceTag$", oNode.nodeName)
Call AddPropertiesByNode(oInst, oNode, dct)
Call oDiscoveryData.AddInstance(oInst)

Call AssignHealthService(oInst, oHealthServiceInst)

Set pInst = oDiscoveryData.CreateClassInstance(dct.Item(parentTag &amp; ".type"))
Call pInst.AddProperty("$MPElement[Name='VCE.Vision.Monitoring.Class.VblockBase']/uuid$", parentUid)
Set oRel = oDiscoveryData.CreateRelationshipInstance("$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockBaseContainsVblockGenericComponent']$")
oRel.Source = pInst
oRel.Target = oInst
Call oDiscoveryData.AddInstance(oRel)
sDebugMsg = sDebugMsg &amp; vbNewLine &amp; "+" &amp; parentTag &amp; "-&gt;" &amp; childTag &amp; ": " &amp; childUId
End If
Next

If bDebug = "true" Then
Call oAPI.LogScriptEvent("vDiscovery", 1002, 0, sDebugMsg)
End If

Call oAPI.Return(oDiscoveryData)
End Sub

Call Main()


Sub InitClassDictionary(ByRef dct, ByRef excllist)
Set dct = CreateObject("Scripting.Dictionary")
With dct
.Add "vblockbase.attr1", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockBase']/alias$|./alias"
.Add "vblockbase.attr2", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockBase']/description$|./description"
.Add "vblockbase.attr3", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockBase']/firmwareRev$|./firmwareRev"
.Add "vblockbase.attr4", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockBase']/hardwareRev$|./hardwareRev"
.Add "vblockbase.attr5", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockBase']/softwareRev$|./softwareRev"
.Add "vblockbase.attr6", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockBase']/modelName$|./modelName"
.Add "vblockbase.attr7", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockBase']/serialNum$|./serialNum"
.Add "vblockbase.attr8", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockBase']/vendor$|./vendor"

REM /*/vblock
.Add "vblock.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockRoot']$"
.Add "compute.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockCompute']$"
.Add "compute.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockRootContainsVblockLogicalEntities']$"
.Add "network.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockNetwork']$"
.Add "network.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockRootContainsVblockLogicalEntities']$"
.Add "storage.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockStorage']$"
.Add "storage.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockRootContainsVblockLogicalEntities']$"

REM /*/computesystem
.Add "computesystem.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeSystem']$"
.Add "computesystem.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockLogicalEntityContainsVblockSystems']$"
.Add "computesystem.attr1", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockSystem']/accessPoint$|./accessPoint"
.Add "computesystem.attr2", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockSystem']/ipAddress$|./ipAddress"
.Add "computesystem.attr3", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockSystem']/portNumber$|./portNumber"
.Add "computesystem.attr4", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeSystem']/serverType$|./serverType"
.Add "computesystem.attr5", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeSystem']/sysObjID$|./sysObjID"

REM /*/switch
.Add "switch.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockSwitch']$"
.Add "switch.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockLogicalEntityContainsVblockSystems']$"
.Add "switch.attr1", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockSystem']/accessPoint$|./accessPoint"
.Add "switch.attr2", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockSystem']/ipAddress$|./ipAddress"
.Add "switch.attr3", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockSystem']/portNumber$|./portNumber"
.Add "switch.attr4", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockSwitch']/switchType$|./switchType"
.Add "switch.attr5", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockSwitch']/tag$|./tag"

REM /*/storagearray
.Add "storagearray.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockStorageArray']$"
.Add "storagearray.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockLogicalEntityContainsVblockSystems']$"
.Add "storagearray.attr1", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockSystem']/accessPoint$|./accessPoint"
.Add "storagearray.attr2", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockStorageArray']/type$|./type"
.Add "storagearray.attr3", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockStorageArray']/tag$|./tag"
.Add "storagearray.attr4", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockStorageArray']/memSize$|./memSize"
.Add "storagearray.attr5", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockStorageArray']/numOfDisks$|./numOfDisks"
.Add "storagearray.attr6", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockStorageArray']/totalManagedSpace$|./totalManagedSpace"
.Add "storagearray.attr7", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockStorageArray']/totalRawCapacity$|./totalRawCapacity"

REM /*/storagevirtualizer
.Add "storagevirtualizer.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockStorageVirtualizer']$"
.Add "storagevirtualizer.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockLogicalEntityContainsVblockSystems']$"
.Add "storagevirtualizer.attr1", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockSystem']/ipAddress$|./ipAddress"
.Add "storagevirtualizer.attr2", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockStorageVirtualizer']/type$|./type"
.Add "storagevirtualizer.attr3", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockStorageVirtualizer']/tag$|./tag"

REM /*/computechassis
.Add "computechassis.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeChassis']$"
.Add "computechassis.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockSystemContainsVblockChassis']$"

REM /*/fabricinterconnect
.Add "fabricinterconnect.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockFabricInterconnect']$"
.Add "fabricinterconnect.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockSystemContainsVblockChassis']$"

REM /*/networkchassis
.Add "networkchassis.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockNetworkChassis']$"
.Add "networkchassis.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockSystemContainsVblockChassis']$"

REM /*/controlstationencl
.Add "controlstationencl.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockControlStationEncl']$"
.Add "controlstationencl.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockSystemContainsVblockChassis']$"

REM /*/dpe
.Add "dpe.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockDPE']$"
.Add "dpe.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockSystemContainsVblockChassis']$"

REM /StorageChasses/dae
.Add "dae.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockDAE']$"
.Add "dae.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockSystemContainsVblockChassis']$"

REM /*/dme
.Add "dme.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockDME']$"
.Add "dme.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockSystemContainsVblockChassis']$"

REM /*/psu
.Add "psu.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockPSU']$"
.Add "psu.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockChassisContainsVblockModules']$"
.Add "psu.attr1", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockPSU']/amps$|./amps"
.Add "psu.attr2", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockPSU']/partNumber$|./partNumber"
.Add "psu.attr3", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockPSU']/power$|./power"
.Add "psu.attr4", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockPSU']/powerSupplyID$|./powerSupplyID"
.Add "psu.attr5", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockPSU']/tag$|./tag"

REM /*/fanbay
.Add "fanbay.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockFanbay']$"
.Add "fanbay.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockChassisContainsVblockModules']$"

REM /*/expansionslot
.Add "expansionslot.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockExpansionSlot']$"
.Add "expansionslot.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockChassisContainsVblockModules']$"

REM /*/controlStation
.Add "controlStation.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockControlStation']$"
.Add "controlStation.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockChassisContainsVblockModules']$"

REM /*/datamover
.Add "datamover.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockDatamover']$"
.Add "datamover.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockChassisContainsVblockModules']$"

REM /*/battery
.Add "battery.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockBattery']$"
.Add "battery.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockChassisContainsVblockModules']$"

REM /*/storageprocessor
.Add "storageprocessor.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockStorageProcessor']$"
.Add "storageprocessor.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockChassisContainsVblockModules']$"

REM /*/linkControlCard
.Add "linkControlCard.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockLinkControlCard']$"
.Add "linkControlCard.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockChassisContainsVblockModules']$"

REM /*/computeserver
.Add "computeserver.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeServer']$"
.Add "computeserver.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockChassisContainsVblockModules']$"
.Add "computeserver.attr1", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeServer']/totalMemory$|./totalMemory"
.Add "computeserver.attr2", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeServer']/allocatedStorage$|./os/allocatedStorageMB"
.Add "computeserver.attr3", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeServer']/ipAddress$|./os/ipAddress"
.Add "computeserver.attr4", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeServer']/esxName$|./os/name"
.Add "computeserver.attr5", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeServer']/esxDescription$|./os/description"
.Add "computeserver.attr6", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeServer']/esxType$|./os/osType"
.Add "computeserver.attr7", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeServer']/esxVendor$|./os/vendor"
.Add "computeserver.attr8", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeServer']/esxSysObjId$|./os/sysObjID"
.Add "computeserver.attr9", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeServer']/esxEntityId$|./os/entityObjectId"

REM /*/fabricmodule
.Add "fabricmodule.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockFabricModule']$"
.Add "fabricmodule.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockChassisContainsVblockModules']$"

REM /*/computeiomodule
.Add "computeiomodule.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockComputeIOModule']$"
.Add "computeiomodule.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockChassisContainsVblockModules']$"

REM /*/storageiomodule
.Add "storageiomodule.type", "$MPElement[Name='VCE.Vision.Monitoring.Class.VblockStorageIOModule']$"
.Add "storageiomodule.rel", "$MPElement[Name='VCE.Vision.Monitoring.Relationship.VblockChassisContainsVblockModules']$"

End With

Set excllist = CreateObject ("System.Collections.ArrayList")
With excllist
.Add "alias"
.Add "name"
.Add "description"
.Add "firmwareRev"
.Add "hardwareRev"
.Add "softwareRev"
.Add "modelName"
.Add "serialNum"
.Add "vendor"
.Add "vendorType"
.Add "dbId"
.Add "moId"
.Add "url"
.Add "fru"
.Add "assetId"
.Add "operStatus"
.Add "calculatedStatus"
.Add "lastOperStatus"
.Add "lastStatusChange"
.Add "localInstanceId"
.Add "localName"
.Add "mfgDate"
End With

End Sub
</Script></ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
</DataSource>
</Discovery>