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.1.0
        Author: Tim Carman
        Twitter: @tpcarman
        Github: tpcarman
    .EXAMPLE
 
    .LINK
 
    #>

    [CmdletBinding()]
    param (
    )

    begin {
        Write-PScriboMessage "Collecting VxRail cluster network information."
    }

    process {
        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' {
                #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 = 50, 50
                    }
                    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 = 50, 50
                            }
                            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 = 50, 50
                            }
                            if ($Report.ShowTableCaptions) {
                                $TableParams['Caption'] = "- $($TableParams.Name)"
                            }
                            $VxrMgmtNetPool | Table @TableParams
                        }
                        #endregion Management Network Pool

                        #region vMotion Network Pool
                        Section -Style Heading4 '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 = 50, 50
                            }
                            if ($Report.ShowTableCaptions) {
                                $TableParams['Caption'] = "- $($TableParams.Name)"
                            }
                            $VxrVmotionNetPool | Table @TableParams
                        }
                        #endregion vMotion Network Pool

                        #region vSAN Network Pool
                        Section -Style Heading4 '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 = 50, 50
                            }
                            if ($Report.ShowTableCaptions) {
                                $TableParams['Caption'] = "- $($TableParams.Name)"
                            }
                            $VxrVsanNetPool | Table @TableParams
                        }
                        #endregion vSAN Network Pool
                    }
                }
                #endregion Network Pools
            }
        }
    }

    end {
    }

}