# # Name: Wait for OCUM(DFM) 5_2 CMode Monitor Refresh on a Cluster # Version: 1.0.0 # From: NetApp Inc. # Min WFA version needed: WFA3.1P1 # Author: Abhishek Sinha # Email: sinhaa@netapp.com param ( [parameter(Mandatory=$true, HelpMessage="DFM server name or IP address")] [string]$DFMServerName, [parameter(Mandatory=$true, HelpMessage="Cluster name or IP address")] [string]$ClusterName ) Get-WFALogger -Info -message $("Waiting for monitor refresh for cluster " + $ClusterName) $credentials = Get-WfaCredentials -Host $DFMServerName if(!$credentials) { throw "Failed to connect to DFM: " + $DFMServerName + ".`nNo credentials were found."; } #List of monitors to be waited upon $Monitors=@( "vserver", "fs", "lun", "if", "sysInfo", "disk") $TotalMonitors = $Monitors.Count $CompletedMonitors = 0 $FinishedMonitors = @() $Details = Invoke-NaSsh -Name $DFMServerName -Command $("dfm detail " + $ClusterName) -Credential $credentials -Port 22 if ((!$Details) -or ($Details.StartsWith("Error"))) { throw "Error obtaining monitoring information for cluster. DFM returned - " + $Details } $Detailscluster = $Details.split("`n") foreach($Mon in $Monitors) { $TimestampName = $Mon + "Timestamp" $RefreshStatus = $Detailscluster | Select-String -pattern $TimestampName if ($RefreshStatus -match "$TimestampName\s*\S+") { $CompletedMonitors++ Get-WFALogger -Info -Message "Finished: $Mon" $FinishedMonitors += $Mon } } $Progress = [int](($CompletedMonitors/$TotalMonitors)*100) Set-WfaCommandProgress -Total $TotalMonitors -Current $CompletedMonitors -ProgressPercentage $Progress if($Progress -eq 100) { Get-WFALogger -Info -Message "Completed $CompletedMonitors/$TotalMonitors Monitors" }