Src/Private/Get-AbrOntapDiskType.ps1
|
function Get-AbrOntapDiskType { <# .SYNOPSIS Used by As Built Report to retrieve NetApp ONTAP disk type information from the Cluster Management Network .DESCRIPTION .NOTES Version: 0.6.12 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux .EXAMPLE .LINK #> [CmdletBinding()] param ( ) begin { Write-PScriboMessage 'Collecting ONTAP disk type per node information.' } process { try { $OutObj = @() foreach ($DiskContainers in (Get-NcDisk -Controller $Array | ForEach-Object { $_.DiskRaidInfo.ContainerType } | Group-Object)) { try { $inObj = [ordered] @{ 'Container' = $DiskContainers.Name 'Disk Count' = $DiskContainers | Select-Object -ExpandProperty Count } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) } catch { Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Storage.DiskStatus) { $OutObj | Where-Object { $_.'Container' -like 'broken' } | Set-Style -Style Critical -Property 'Disk Count' } $TableParams = @{ Name = "Disk Container Type - $($ClusterInfo.ClusterName)" List = $false ColumnWidths = 50, 50 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams $Node = Get-NcNode | Where-Object { $_.IsNodeHealthy -eq 'True' } if ($Node -and (Confirm-NcAggrSpareLow | Where-Object { $_.Value -eq 'True' })) { Section -ExcludeFromTOC -Style NOTOCHeading5 'Aggregate Spare Low Warning Per Node' { $OutObj = @() foreach ($Item in $Node) { try { $inObj = [ordered] @{ 'Node' = $Item.Node 'Aggregate Spare Low' = (Confirm-NcAggrSpareLow -Node $Item.Node).Value.ToString().Replace('True', 'Yes').Replace('False', 'No') } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) } catch { Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Storage.DiskStatus) { $OutObj | Where-Object { $_.'Aggregate Spare Low' -like 'Yes' } | Set-Style -Style Critical -Property 'Node', 'Aggregate Spare Low' } $TableParams = @{ Name = "Aggregate Disk Spare Low - $($ClusterInfo.ClusterName)" List = $false ColumnWidths = 50, 50 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams if ($Healthcheck.Storage.DiskStatus -and ($OutObj | Where-Object { $_.'Aggregate Spare Low' -like 'Yes' })) { Paragraph 'Health Check:' -Bold -Underline BlankLine Paragraph { Text 'Best Practice:' -Bold Text 'Ensure that aggregate spare capacity is above the recommended threshold to maintain optimal performance and reliability.' } BlankLine } } } } catch { Write-PScriboMessage -IsWarning $_.Exception.Message } } end {} } |