Src/Private/Get-AbrVxRailClusterNetwork.ps1
function Get-AbrVxRailClusterNetwork { <# .SYNOPSIS Used by As Built Report to retrieve Dell EMC VxRail cluster network information from the VxRail Manager API .DESCRIPTION .NOTES Version: 0.2.0 Author: Tim Carman Twitter: @tpcarman Github: tpcarman .EXAMPLE .LINK #> begin { Write-PScriboMessage "Collecting VxRail cluster network information." } process { Try { Write-PScriboMessage "Performing API reference call to path /system/proxy." $VxrProxy = Get-VxRailApi -Version 1 -Uri '/system/proxy' Write-PScriboMessage "Performing API reference call to path /system/internet-mode." $VxrInternetMode = Get-VxRailApi -Version 1 -Uri '/system/internet-mode' Write-PScriboMessage "Performing API reference call to path /cluster/network/pools." $VxrClusterNetPools = (Get-VxRailApi -Version 2 -Uri '/cluster/network/pools').data if ($VxrInternetMode) { Section -Style Heading2 'VxRail Network' { Paragraph "The following section details the VxRail Manager general network settings for $($VxRailMgrHostName)." BlankLine #region General Network Section Section -Style Heading3 'General' { $Networking = [PSCustomObject]@{ 'Internet Connection Status' = Switch ($VxrInternetMode.is_dark_site) { $true { 'Disabled' } $false { 'Enabled' } } 'Proxy Status' = & { if ($VxrProxy) { "Enabled" } else { "Disabled" } } } $TableParams = @{ Name = "General Network Specifications - $($VxRailMgrHostName)" List = $true ColumnWidths = 40, 60 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $Networking | Table @TableParams #region Proxy Server Section if ($VxrProxy) { Section -Style Heading3 'Proxy Server' { $ProxyServer = [PSCustomObject]@{ 'Protocol' = $VxrProxy.Type 'IP Address' = $VxrProxy.Server 'Port' = $VxrProxy.Port } $TableParams = @{ Name = "Proxy Server Specifications - $($VxRailMgrHostName)" List = $true ColumnWidths = 40, 60 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $ProxyServer | Table @TableParams } } #endregion Proxy Server Section } #endregion General Network Section #region Network Pools if ($VxrClusterNetPools) { Section -Style Heading3 'Network Pools' { #region Management Network Pool Section -Style Heading4 'Management' { $VxrMgmtNetPool = [PSCustomObject]@{ 'Network Pool' = & { $VxrMgmtNetPoolObj = foreach ($VxrMgmtNetPool in $VxrClusterNetPools.management.pools) { "$($VxrMgmtNetPool.minIp) - $($VxrMgmtNetPool.maxIp)" } $VxrMgmtNetPoolObj -join ', ' } 'Subnet Mask' = $VxrClusterNetPools.management.subnetmask 'Gateway' = $VxrClusterNetPools.gateway 'Total' = $VxrClusterNetPools.management.total 'Used' = $VxrClusterNetPools.management.used 'Available' = ($VxrClusterNetPools.management.total) - ($VxrClusterNetPools.management.used) 'VLAN ID' = $VxrClusterNetPools.management.vlan_id } $TableParams = @{ Name = "Management Network Pool Specifications - $($VxRailMgrHostName)" List = $true ColumnWidths = 40, 60 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $VxrMgmtNetPool | Table @TableParams } #endregion Management Network Pool #region vMotion Network Pool Section -Style NOTOCHeading4 -ExcludeFromToC 'vMotion' { $VxrVmotionNetPool = [PSCustomObject]@{ 'Network Pool' = & { $VxrVmotionNetPoolObj = foreach ($VxrVmotionNetPool in $VxrClusterNetPools.vmotion.pools) { "$($VxrVmotionNetPool.minIp) - $($VxrVmotionNetPool.maxIp)" } $VxrVmotionNetPoolObj -join ', ' } 'Subnet Mask' = $VxrClusterNetPools.vmotion.subnetmask 'Gateway' = $VxrClusterNetPools.gateway 'Total' = $VxrClusterNetPools.vmotion.total 'Used' = $VxrClusterNetPools.vmotion.used 'Available' = ($VxrClusterNetPools.vmotion.total) - ($VxrClusterNetPools.vmotion.used) 'VLAN ID' = $VxrClusterNetPools.vmotion.vlan_id } $TableParams = @{ Name = "vMotion Network Pool Specifications - $($VxRailMgrHostName)" List = $true ColumnWidths = 40, 60 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $VxrVmotionNetPool | Table @TableParams } #endregion vMotion Network Pool #region vSAN Network Pool Section -Style NOTOCHeading4 -ExcludeFromToC 'vSAN' { $VxrVsanNetPool = [PSCustomObject]@{ 'Network Pool' = & { $VxrVsanNetPoolObj = foreach ($VxrVsanNetPool in $VxrClusterNetPools.vsan.pools) { "$($VxrVsanNetPool.minIp) - $($VxrVsanNetPool.maxIp)" } $VxrVsanNetPoolObj -join ', ' } 'Subnet Mask' = $VxrClusterNetPools.vsan.subnetmask 'Gateway' = $VxrClusterNetPools.gateway 'Total' = $VxrClusterNetPools.vsan.total 'Used' = $VxrClusterNetPools.vsan.used 'Available' = ($VxrClusterNetPools.vsan.total) - ($VxrClusterNetPools.vsan.used) 'VLAN ID' = $VxrClusterNetPools.vsan.vlan_id } $TableParams = @{ Name = "vSAN Network Pool Specifications - $($VxRailMgrHostName)" List = $true ColumnWidths = 40, 60 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $VxrVsanNetPool | Table @TableParams } #endregion vSAN Network Pool } } #endregion Network Pools } } } Catch { Write-PScriboMessage -IsWarning "VxRail Cluster Network Section: $($_.Exception.Message)" } } end { } } |