MonitoringFeature Discovery ( EqualLogic )

Dell.FeatureManagement.EqualLogic.MonitoringFeatureDiscoveryProbe (ProbeActionModuleType)

Dell Feature Monitoring inventory discovery data source

Element properties:

TypeProbeActionModuleType
IsolationAny
AccessibilityInternal
RunAsDefault
InputTypeSystem.BaseData
OutputTypeSystem.Discovery.Data

Member Modules:

ID Module Type TypeId RunAs 
PS ProbeAction Dell.FeatureManagement.Pack.PowerShellAPIDiscoveryProbe Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
LogLevelint$Config/LogLevel$Log LevelSets the logging verbosity (1 for enable)

Source Code:

<ProbeActionModuleType ID="Dell.FeatureManagement.EqualLogic.MonitoringFeatureDiscoveryProbe" Accessibility="Internal" Batching="false" PassThrough="false">
<Configuration>
<IncludeSchemaTypes>
<SchemaType>Dell.FeatureManagement.Pack.ImportMethod</SchemaType>
</IncludeSchemaTypes>
<xsd:element minOccurs="1" name="TimeoutSeconds" type="xsd:integer"/>
<xsd:element minOccurs="1" name="LogLevel" type="xsd:integer"/>
<xsd:element minOccurs="1" name="DMSType" type="xsd:string"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="LogLevel" Selector="$Config/LogLevel$" ParameterType="int"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<ProbeAction ID="PS" TypeID="Dell.FeatureManagement.Pack.PowerShellAPIDiscoveryProbe">
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
<DiscoveryCode>
# ------------------------------------------------- #
# Script : FMP Feature Instance Discovery Script #
# Author: Sriram Venkatesh #
# (c) Copyright &#xA9; 2009&#x2013; 2017 Dell Inc, or its subsidiaries. All Rights Reserved #
# ------------------------------------------------- #

# ------------------------------------------------------------------------------------------
# Function to convert Management Pack version and formatted for 3 digits.
# ------------------------------------------------------------------------------------------
function VerToString
{
param($version)
$myver = "Not Installed"
if($version -eq "0")
{
return $myver
}
if(([string]$version).Length -ge 3)
{
return ([string]$version).Substring(0,3) + ".0"
}
}

# --------------------------------------------------------------------------------------------------------------------
# Function to instantiate Management Feature instances if they are detected, else create Scalable Feature instances
# Dell.FeatureManagement.MonitoringFeature - base class of any feature, one instane will always be created
# Specialized MonFeature instance will be created based on presence (install) of the corresponding feature
# This is useful for displaying only applicable tasks on a feature (installed feature)
# ---------------------------------------------------------------------------------------------------------------------
function CreateMP
{
param($Discovery, $name, $desc, $avail, $version, $config, $license)

if ($debugscript -eq $false)
{
$Instance1 = $null
if ($version -eq "0")
{
# $name = "!-" + $name
# psDebugLog -level 1 -message (" -------- NotInstalled feature detected" + $name)
# if feature is not installed
if ($name.Contains("EqualLogic Monitoring"))
{
$Instance1 = $Discovery.CreateClassInstance("$MPElement[Name='Dell.FeatureManagement.MonitoringFeature.NotInstalled.ComplexFeature.EqualLogic']$")
psDebugLog -level 1 -message (" -------- Adding NotInstalled feature instance - " + $name)
}
else
{
# $Instance1 = $Discovery.CreateClassInstance("$MPElement[Name='Dell.FeatureManagement.MonitoringFeature.NotInstalled']$")
psDebugLog -level 1 -message (" -------- Unknown feature Not-Installed instance encountered - " + $name)
}
}
else
{
psDebugLog -level 1 -message (" -------- Installed feature detected")
# feature is installed
if ($name.Contains("EqualLogic Monitoring"))
{
$Instance1 = $Discovery.CreateClassInstance("$MPElement[Name='Dell.FeatureManagement.MonitoringFeature.Installed.ComplexFeature.EqualLogic']$")
psDebugLog -level 1 -message (" -------- Adding installed feature instance - " + $name)
}
else
{
#$Instance1 = $Discovery.CreateClassInstance("$MPElement[Name='Dell.FeatureManagement.MonitoringFeature.Installed']$")
psDebugLog -level 1 -message (" -------- Unknown feature Installed instance encountered - " + $name)
}
}
$Instance1.AddProperty("$MPElement[Name='Dell.FeatureManagement.MonitoringFeature']/FeatureName$", $name)
$Instance1.AddProperty("$MPElement[Name='Dell.FeatureManagement.MonitoringFeature']/Description$", $desc)
$Instance1.AddProperty("$MPElement[Name='Dell.FeatureManagement.MonitoringFeature']/InUseVersion$", (VerToString -version $version))
$Instance1.AddProperty("$MPElement[Name='Dell.FeatureManagement.MonitoringFeature']/ExtractedVersion$", (VerToString -version $avail))
$Instance1.AddProperty("$MPElement[Name='Dell.FeatureManagement.MonitoringFeature']/MonitoringLevel$", $config)

$OMPSInstallKey = "HKLM:\Software\Microsoft\System Center Operations Manager\12\Setup\Powershell\V2"
$regKey = get-item $OMPSInstallKey
$OMPSInstallPath = $regKey.GetValue("InstallDirectory")
$omModule = $OMPSInstallPath + "OperationsManager"
Import-Module -Name $omModule
Import-Module OperationsManager
$ApplianceIP =""
$ApplianceConsole =""
$ApplianceIPOverRide = Get-SCOMOverride -Monitor (Get-SCOMMonitor -Name Dell.SDK.OverrideApplianceIP.UMT)
$ApplianceIP = $ApplianceIPOverRide.Value

if(($ApplianceIP -eq "") -or ($ApplianceIP -eq $null))
{
$ApplianceConsole = "Not Available"
}
else{
$ApplianceConsole = "https://" + $ApplianceIP + "/dlciadminportal/"
}
#$sysinfo = Get-WmiObject -Class Win32_ComputerSystem
#$localFqdn = "{0}.{1}" -f $sysinfo.Name, $sysinfo.Domain
$sysinfo = Get-ItemProperty -Path "HKLM:\SOFTWARE\Dell Computer Corporation\Dell Management Pack Suites"
$localFqdn = $sysinfo.MSHostName
if( $localFqdn -eq $null -or $localFqdn.Length -eq 0 )
{
$sysinfo = [System.Net.Dns]::GetHostEntry([string]$env:computername)
$localFqdn = $sysinfo.HostName
}

$Instance1.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $localFqdn)
psDebugLog -level 1 -message (" -------- Adding Monitoringfeature Host Server's local FQDN (hostKey) - " + $localFqdn)
$Instance1.AddProperty("$MPElement[Name='Dell.FeatureManagement.MonitoringFeature']/TotalNodeLicense$", "Not Applicable")
$Instance1.AddProperty("$MPElement[Name='Dell.FeatureManagement.MonitoringFeature']/LicensesInUse$", "Not Applicable")
$Instance1.AddProperty("$MPElement[Name='Dell.FeatureManagement.MonitoringFeature']/LicensesInformation$", $ApplianceConsole)
$Instance1.AddProperty("$MPElement[Name='Dell.FeatureManagement.MonitoringFeature']/CurrentLicenseUsage$", "Not Applicable")
$Instance1.AddProperty("$MPElement[Name='Dell.FeatureManagement.MonitoringFeature']/EventAutoResolution$", "Not Applicable")
$Discovery.AddInstance($Instance1)
}
}

# ----------------------------------------------------------------------
# Function to invoke primary discoover wrt SCOM objects and environment
# ----------------------------------------------------------------------
function CallPrimaryDiscoveryScript
{
param ($Discovery, $SCOMEnv)

$visitor = @{}
# Initialize an array of MPNames as null for each
foreach ($mp in $DeviceMonitoringMPs.Keys)
{
$visitor += @{ $mp = $null }
}

# Initialize an array of FeatureVisitor, Map and Version as default value for each (displayed if not otherwise set)
$featurevisitor = @{}
$featuremap = @{}
$featurever = @{}

foreach ($feature in $MonitoringFeaturesMap.Keys)
{
$featurevisitor += @{ $feature = $false }
$featuremap += @{ $feature = "" }
$featurever += @{ $feature = "0" }
}

# gets all SCOM management packs which fit criteria of listing in $DeviceMonitoringMPs ARRAY and if present in that list, VisitorMap[MP] is set to value
$SCOMEnv.GetManagementPacks() | where-object { $DeviceMonitoringMPs.Contains($_.Name) } | foreach -process {
$visitor[$_.Name] = $_
}

foreach ($feature in $MonitoringFeaturesMap.Keys)
{
foreach ($mp in $MonitoringFeatures[$feature])
{
if ($mp -ne $null -and $visitor[$mp] -ne $null)
{
$featurevisitor[$feature] = $true
if ($MonitoringFeaturesMap[$feature][$mp] -eq 'Detailed Feature')
{
$featuremap[$feature] = 'Detailed Feature'
}
elseif ($featuremap[$feature] -ne 'Detailed Feature')
{
$featuremap[$feature] = $MonitoringFeaturesMap[$feature][$mp]
}
$featurever[$feature] = $visitor[$mp].Version
}
}

}
# Read this from registry
$mpsuiteRegKey=Get-ItemProperty 'HKLM:\SOFTWARE\Dell\Dell EqualLogic Storage Management Pack Suite'
$avail = $mpsuiteRegKey.CurrentVersion

foreach ($feature in $MonitoringFeatures.Keys)
{
if ($featuremap[$feature] -eq '') { $featuremap[$feature] = 'Not Installed' }
CreateMP -Discovery $Discovery -name $feature -desc $DescriptionMap[$feature] -config $featuremap[$feature] -license $LicensedFeaturesMap[$feature] -version $featurever[$feature] -avail $avail
psDebugLog -level 1 -message ("CallPrimaryDiscoveryScript Loop :: -- " + $feature + " -- " + $featuremap[$feature] + " -- " + $featurever[$feature] + " -- " + $avail + " -- ")

}
}
</DiscoveryCode>
<ScriptIt>Discovery_FeatureMonitoring_EqualLogic</ScriptIt>
<LogLevel>$Config/LogLevel$</LogLevel>
<LogDirectory>DellFeatureMonitoring_Logs</LogDirectory>
<DMSType>$Config/DMSType$</DMSType>
</ProbeAction>
</MemberModules>
<Composition>
<Node ID="PS"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
<InputType>System!System.BaseData</InputType>
</ProbeActionModuleType>