# # Name: WFA command Refresh Cluster monitoring on an OCUM6.X # Version: 1.0.0 # From: NetApp Inc. # Min WFA version needed: WFA2.2 # Copyright (C) 2015 NetApp, Inc. All rights reserved. # # Email: sinhaa@netapp.com param ( [parameter(Mandatory=$true, HelpMessage="'Name or IP address of the OnCommand Unified Manager server")] [string]$OCUMServer, [parameter(Mandatory=$true, HelpMessage="Cluster name or IP address")] [string]$Cluster ) $credentials = Get-WfaCredentials -Host $OCUMServer if(!$credentials) { throw "Failed to connect to OCUM: " + $OCUMServer + ".`nNo credentials were found."; } #Create ZapiServer object $zapiServer = New-Object NetApp.Manage.NaServer ($OCUMServer,"1","0") $zapiServer.ServerType = "OCUM" $clearPassword = ConvertFromSecureToPlain -SecurePassword $credentials.Password $zapiServer.SetAdminUser($credentials.UserName, $clearPassword ) $tag="start" while($tag) { Get-WFALogger -Info -message "TAG=$tag" $datasourceListStartNaElement = New-Object NetApp.Manage.naElement("cluster-iter") if($tag -ne "start") { $datasourceListStartNaElement.AddNewChild("tag", $tag) } $results = $zapiServer.InvokeElem($datasourceListStartNaElement) $tag = $results.GetChildContent("next-tag") Get-WFALogger -Info -message $("Finding datasource id of cluster " + $Cluster + " in the returned results.") foreach ($ds in $results.GetChildByName("records").GetChildren()) { $clusAddress = $ds.GetChildContent("cluster-address") $clusName = $ds.GetChildContent("cluster-name") Get-WFALogger -Info -message $clusAddress Get-WFALogger -Info -message $clusName if( $clusAddress -eq $Cluster -or $clusName -eq $Cluster) { $dsId = $ds.GetChildContent("datasource-id") Get-WFALogger -Info -message $("Found Datasource having datasource id: $dsId") $breakOuterLoop = $true break } } if($breakOuterLoop) { break } } $refreshNaElement = New-Object NetApp.Manage.naElement("datasource-object-refresh") $refreshNaElement.AddNewChild("datasource-id",$dsId) $results = $zapiServer.InvokeElem($refreshNaElement) $jobId = $results.GetChildContent("job-id") if($results.GetAttr("status") -eq "passed") { Get-WFALogger -Info -message $("Refreshing object initiated successfully on cluster '$Cluster' with job-id $jobId") } else { throw ("Failed to execute ZAPI call. Reason: " + $results.GetAttr("status")) } Get-WFALogger -Info -message $("Waiting for completion of job " + $jobId) $jobWaitForStateNaElement = New-Object NetApp.Manage.naElement("job-wait-for-state") $jobList = New-Object NetApp.Manage.naElement("job-list") $jobList.AddNewChild("job-id",$jobId) $jobWaitForStateNaElement.AddChildElement($jobList); $jobWaitForStateNaElement.AddNewChild("wait-for-state-timeout","120") $results = $zapiServer.InvokeElem($jobWaitForStateNaElement) $returnedJobId = $results.GetChildByName("job-list").GetChildContent("job-id") if(!$returnedJobId) { Get-WFALogger -Error -message $("Cluster acquisition failed") throw "Cluster acquisition failed" } Get-WFALogger -Info -message $("Cluster Refresh monitoring job " + $returnedJobId+ " completed successfully")