diff --git a/AsBuiltReport.NetApp.ONTAP.psd1 b/AsBuiltReport.NetApp.ONTAP.psd1 index 3e5fd51..f1cc19d 100755 --- a/AsBuiltReport.NetApp.ONTAP.psd1 +++ b/AsBuiltReport.NetApp.ONTAP.psd1 @@ -27,7 +27,7 @@ #CompanyName = 'Unknown' # Copyright statement for this module - Copyright = '(c) 2025 Jonathan Colon Feliciano. All rights reserved.' + Copyright = '(c) 2026 Jonathan Colon Feliciano. All rights reserved.' # Description of the functionality provided by this module Description = 'A PowerShell module to generate an as built report on the configuration of NetApp ONTAP.' @@ -62,7 +62,7 @@ }, @{ ModuleName = 'Diagrammer.Core'; - ModuleVersion = '0.2.36' + ModuleVersion = '0.2.37' } ) diff --git a/AsBuiltReport.NetApp.ONTAP.psm1 b/AsBuiltReport.NetApp.ONTAP.psm1 index 0ceac63..14c7142 100755 --- a/AsBuiltReport.NetApp.ONTAP.psm1 +++ b/AsBuiltReport.NetApp.ONTAP.psm1 @@ -1,31 +1,22 @@ # Get assemblies files and import them -$assemblyName = switch ($PSVersionTable.PSEdition) { +switch ($PSVersionTable.PSEdition) { 'Core' { if ($IsMacOS) { - @(Get-ChildItem -Path ("$PSScriptRoot{0}Src{0}Bin{0}Assemblies{0}net90{0}osx-x64{0}*.dll" -f [System.IO.Path]::DirectorySeparatorChar) -ErrorAction SilentlyContinue) + Import-Module ("$PSScriptRoot{0}Src{0}Tools{0}Bin{0}osx-x64{0}AsBuiltReportChart.dll" -f [System.IO.Path]::DirectorySeparatorChar) } elseif ($IsLinux) { - @(Get-ChildItem -Path ("$PSScriptRoot{0}Src{0}Bin{0}Assemblies{0}net90{0}linux-x64{0}*.dll" -f [System.IO.Path]::DirectorySeparatorChar) -ErrorAction SilentlyContinue) + Import-Module ("$PSScriptRoot{0}Src{0}Tools{0}Bin{0}linux-x64{0}AsBuiltReportChart.dll" -f [System.IO.Path]::DirectorySeparatorChar) } elseif ($IsWindows) { - @(Get-ChildItem -Path ("$PSScriptRoot{0}Src{0}Bin{0}Assemblies{0}net90{0}win-x64{0}*.dll" -f [System.IO.Path]::DirectorySeparatorChar) -ErrorAction SilentlyContinue) + Import-Module ("$PSScriptRoot{0}Src{0}Tools{0}Bin{0}windows-x64{0}AsBuiltReportChart.dll" -f [System.IO.Path]::DirectorySeparatorChar) } } 'Desktop' { - @(Get-ChildItem -Path ("$PSScriptRoot{0}Src{0}Bin{0}Assemblies{0}net48{0}*.dll" -f [System.IO.Path]::DirectorySeparatorChar) -ErrorAction SilentlyContinue) + Import-Module ("$PSScriptRoot{0}Src{0}Tools{0}Bin{0}windows-x64{0}AsBuiltReportChart.dll" -f [System.IO.Path]::DirectorySeparatorChar) } default { Write-Verbose -Message 'Unable to find compatible assemblies.' } } -foreach ($Assembly in $assemblyName) { - try { - Write-Verbose -Message "Loading assembly '$($Assembly.Name)'." - Add-Type -Path $Assembly.FullName -Verbose - } catch { - Write-Error -Message "Failed to add assembly $($Assembly.FullName): $_" - } -} - # Get public and private function definition files and dot source them $Public = @(Get-ChildItem -Path $PSScriptRoot\Src\Public\*.ps1 -ErrorAction SilentlyContinue) $Private = @(Get-ChildItem -Path $PSScriptRoot\Src\Private\*.ps1 -ErrorAction SilentlyContinue) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe5e12d..2bba745 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Apply powershell best practices - Add ConvertTo-HashToYN function - Add EMS configuration setting health check +- Add support for charts + - Aggragate Usage + - Per Node Disk Assignment ### Changed @@ -33,6 +36,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fix Volume SnapShot Configuration section showing healthcheck for non violated item - Fix CodeQL analysis issues 27 - Fix diagram size not respecting document border size +- Fix HealthCheck - Volume without deduplication section displaying incorrect values ### Removed diff --git a/Samples/Sample NetApp As-Built Report.html b/Samples/Sample NetApp As-Built Report.html index ddd6bfd..0921517 100755 --- a/Samples/Sample NetApp As-Built Report.html +++ b/Samples/Sample NetApp As-Built Report.html @@ -8,31 +8,31 @@ hr { margin-top: 1.0rem; } .portrait { background: white; width: 210mm; display: block; margin-top: 1rem; margin-left: auto; margin-right: auto; margin-bottom: 1rem; position: relative; border-style: solid; border-width: 1px; border-color: #c6c6c6; } .landscape { background: white; width: 297mm; display: block; margin-top: 1rem; margin-left: auto; margin-right: auto; margin-bottom: 1rem; position: relative; border-style: solid; border-width: 1px; border-color: #c6c6c6; } - .NOTOCHeading7 { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; font-style: italic; color: #00ebcd; } - .NOTOCHeading5 { font-family: 'Segoe Ui'; font-size: 0.92rem; text-align: left; font-weight: normal; color: #009684; } - .Caption { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; font-style: italic; color: #072e58; } - .TOC { font-family: 'Segoe Ui'; font-size: 1.33rem; text-align: left; font-weight: normal; color: #072e58; } + .NOTOCHeading6 { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #009683; } + .Footer { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: center; font-weight: normal; color: #565656; } .Heading4 { font-family: 'Segoe Ui'; font-size: 1.00rem; text-align: left; font-weight: normal; color: #958026; } + .Warning { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; background-color: #fff4c7; } + .Heading5 { font-family: 'Segoe Ui'; font-size: 0.92rem; text-align: left; font-weight: normal; color: #009684; } + .Heading3 { font-family: 'Segoe Ui'; font-size: 1.08rem; text-align: left; font-weight: normal; color: #395879; } + .Heading1 { font-family: 'Segoe Ui'; font-size: 1.33rem; text-align: left; font-weight: normal; color: #072e58; } + .Title { font-family: 'Segoe Ui'; font-size: 2.00rem; text-align: center; font-weight: normal; color: #072e58; } .Header { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: center; font-weight: normal; color: #565656; } + .TableDefaultHeading { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #fafafa; background-color: #072e58; } + .OK { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; background-color: #dff0d0; } + .Caption { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; font-style: italic; color: #072e58; } + .Title2 { font-family: 'Segoe Ui'; font-size: 1.50rem; text-align: center; font-weight: normal; color: #204369; } + .TableDefaultAltRow { font-family: 'Calibri','Candara','Segoe','Segoe UI','Optima','Arial','Sans-Serif'; font-size: 0.92rem; text-align: left; font-weight: normal; color: #000000; background-color: #d0ddee; } + .Heading6 { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #009683; } + .Normal { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; } + .TableDefaultRow { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; } .Heading2 { font-family: 'Segoe Ui'; font-size: 1.17rem; text-align: left; font-weight: normal; color: #204369; } + .TOC { font-family: 'Segoe Ui'; font-size: 1.33rem; text-align: left; font-weight: normal; color: #072e58; } .NOTOCHeading4 { font-family: 'Segoe Ui'; font-size: 1.00rem; text-align: left; font-weight: normal; color: #958026; } - .Normal { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; } - .Title3 { font-family: 'Segoe Ui'; font-size: 1.00rem; text-align: left; font-weight: normal; color: #395879; } .Info { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; background-color: #e3f5fc; } - .TableDefaultHeading { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #fafafa; background-color: #072e58; } - .Heading1 { font-family: 'Segoe Ui'; font-size: 1.33rem; text-align: left; font-weight: normal; color: #072e58; } - .Title { font-family: 'Segoe Ui'; font-size: 2.00rem; text-align: center; font-weight: normal; color: #072e58; } - .TableDefaultRow { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; } - .Title2 { font-family: 'Segoe Ui'; font-size: 1.50rem; text-align: center; font-weight: normal; color: #204369; } - .Footer { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: center; font-weight: normal; color: #565656; } - .Warning { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; background-color: #fff4c7; } + .NOTOCHeading5 { font-family: 'Segoe Ui'; font-size: 0.92rem; text-align: left; font-weight: normal; color: #009684; } + .Title3 { font-family: 'Segoe Ui'; font-size: 1.00rem; text-align: left; font-weight: normal; color: #395879; } + .NOTOCHeading7 { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; font-style: italic; color: #00ebcd; } .Critical { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; background-color: #feddd7; } - .Heading6 { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #009683; } - .TableDefaultAltRow { font-family: 'Calibri','Candara','Segoe','Segoe UI','Optima','Arial','Sans-Serif'; font-size: 0.92rem; text-align: left; font-weight: normal; color: #000000; background-color: #d0ddee; } - .NOTOCHeading6 { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #009683; } - .OK { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; background-color: #dff0d0; } - .Heading5 { font-family: 'Segoe Ui'; font-size: 0.92rem; text-align: left; font-weight: normal; color: #009684; } - .Heading3 { font-family: 'Segoe Ui'; font-size: 1.08rem; text-align: left; font-weight: normal; color: #395879; } table.tabledefault { padding: 0.08rem 0.17rem 0.13rem 0.17rem; border-style: solid; border-width: 0.02rem; border-color: #072e58; border-collapse: collapse; } table.tabledefault th { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #fafafa; background-color: #072e58; padding: 0.08rem 0.17rem 0.13rem 0.17rem; border-style: solid; border-width: 0.02rem; border-color: #072e58; border-collapse: collapse; } table.tabledefault td { padding: 0.08rem 0.17rem 0.13rem 0.17rem; border-style: solid; border-width: 0.02rem; border-color: #072e58; border-collapse: collapse; } @@ -49,401 +49,847 @@











AsBuiltReport Logo
-
NetApp ONTAP As Built Report

Acme Inc.






















- - +
NetApp ONTAP As Built Report

As Built Report






















Author:Jonathan Colon
Date:Friday, August 22, 2025
+ +
Author:As Built Report
Date:Tuesday, February 3, 2026
Version:1.0

NetApp ONTAP As Built Report - v1.0

Table of Contents

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1PHARMAX-HQ Cluster Report
1.1   PHARMAX-HQ Cluster Diagram
1.2   Cluster Information
1.2.1      Cluster HA Status
1.3   Node Information
1.3.1      Node Inventory
1.3.1.1         Node Vol0 Inventory
1.4   Storage Information
1.4.1      Aggregate Inventory
1.4.1.1         Storage Aggregate Diagram
1.4.1.2         Aggregate Spares
1.4.2      Disk Information
1.4.2.1         Per Node Disk Assignment
1.4.2.2         Disk Owned by Node PHARMAX-HQ-01
1.4.2.3         Disk Owned by Node PHARMAX-HQ-02
1.4.2.4         Disk Container Type
1.5   Licenses Information
1.5.1      PHARMAX-HQ-01 License Usage
1.5.2      PHARMAX-HQ-02 License Usage
1.6   Network Information
1.6.1      IPSpace
1.6.1.1         Network Ports
1.6.1.1.1            PHARMAX-HQ-01 Ports
1.6.1.1.2            PHARMAX-HQ-02 Ports
1.6.1.2         Network Link Aggregation Group
1.6.1.2.1            PHARMAX-HQ-01 IFGRP
1.6.1.2.2            PHARMAX-HQ-02 IFGRP
1.6.1.3         Network VLANs
1.6.1.3.1            PHARMAX-HQ-01 Vlans
1.6.1.3.2            PHARMAX-HQ-02 Vlans
1.6.1.4         Broadcast Domain
1.6.1.5         Failover Groups
1.6.1.6         PHARMAX-HQ Vserver Routes
1.6.1.7         NAS Vserver Routes
1.6.1.8         Network Interfaces
1.7   Vserver Information
1.7.1      NAS Vserver Configuration
1.7.1.1         Root Volume
1.7.1.2         Storage Volumes
1.7.1.3         Volumes Snapshot Configuration
1.7.1.4         Protocol Information
1.7.1.4.1            CIFS Services Information
1.7.2      SAN Vserver Configuration
1.7.2.1         Root Volume
1.7.2.2         Storage Volumes
1.7.2.3         Volumes Snapshot Configuration
1.7.2.4         Protocol Information
1.7.2.4.1            ISCSI Services
1.7.2.4.2            Lun Storage
1.8   Replication Information
1.8.1      Cluster Replication Diagram
1.8.2      Cluster Peer
1.8.3      Vserver Peer
1.8.3.1         SnapMirror Destinations
1.9   Efficiency Information
1.9.1      Aggregate Total Efficiency
1.9.1.1         HealthCheck - Volume with Disabled Deduplication
1.9.1.2         NAS Vserver Volume Deduplication
1.9.1.2.1            Volume Efficiency
1.9.1.3         SAN Vserver Volume Deduplication
1.9.1.3.1            Volume Efficiency
1.10   Security Information
1.10.1      PHARMAX-HQ Vserver Local User
1.10.2      NAS Vserver Local User
1.10.3      SAN Vserver Local User
1.10.4      Vserver SSL Certificate
1.10.4.1         Vserver SSL Certificate Details
1.10.5      Aggregate Encryption (NAE)
1.10.5.1         Volume Encryption (NVE)
1.10.6      Snaplock Compliance Clock
1.10.6.1         Aggregate Snaplock Type
1.10.6.1.1            Volume Snaplock Type
1.11   System Configuration Information
1.11.1      System Image Configuration
1.11.2      System Web Service
1.11.3      DNS Configuration
1.11.4      Configuration Backup Setting
1.11.5      EMS Configuration
1.11.5.1         Audit Settings
1.11.6      System Timezone Configuration
1.11.6.1         NTP Configuration
1PHARMAX-HQ Cluster Report
1.1   PHARMAX-HQ Cluster Diagram
1.2   Cluster Information
1.2.1      Cluster HA Status
1.2.2      Cluster AutoSupport Status
1.3   Nodes
1.3.1      Inventory
1.3.1.1         Root Volume Vol0
1.3.1.2         Service-Processor
1.4   Storage Information
1.4.1      Aggregates (Local Tiers)
1.4.1.1         Disk Spares
1.4.1.2         Aggregate Diagram
1.4.2      Disks
1.4.2.1         Per Node Disk Assignment
1.4.2.2         Disk Container Type
1.4.2.3         Failed Disk
1.4.2.4         Disk Inventory
1.5   Licenses Information
1.5.1      cluster-01 License Usage
1.5.2      cluster-02 License Usage
1.5.3      cluster-03 License Usage
1.5.4      cluster-04 License Usage
1.6   Networking Diagram
1.7   Network Information
1.7.1      IPSpace
1.7.1.1         Network Ports
1.7.1.1.1            cluster-01 Ports
1.7.1.1.2            cluster-02 Ports
1.7.1.1.3            cluster-03 Ports
1.7.1.1.4            cluster-04 Ports
1.7.1.2         Network Link Aggregation Group
1.7.1.2.1            cluster-01 IFGRP
1.7.1.2.2            cluster-02 IFGRP
1.7.1.2.3            cluster-03 IFGRP
1.7.1.2.4            cluster-04 IFGRP
1.7.1.3         Network VLANs
1.7.1.3.1            cluster-01 Vlans
1.7.1.3.2            cluster-02 Vlans
1.7.1.3.3            cluster-03 Vlans
1.7.1.3.4            cluster-04 Vlans
1.7.1.4         Broadcast Domains
1.7.1.5         Failover Groups
1.7.1.6         Network Subnets
1.7.1.7         PHARMAX-HQ Vserver Routes
1.7.1.8         CIFS Vserver Routes
1.7.1.9         FCP Vserver Routes
1.7.1.10         ISCSI Vserver Routes
1.7.1.11         NFS Vserver Routes
1.7.1.12         Network Interfaces
1.8   Vserver Information
1.8.1      CIFS Vserver Configuration
1.8.1.1         Root Volume
1.8.1.2         Interfaces (Lifs)
1.8.1.3         Storage Volumes
1.8.1.3.1            Per Volumes Export Policies
1.8.1.3.2            Flexcache Volumes
1.8.1.4         Volumes Snapshot Configuration
1.8.1.5         Qtrees
1.8.1.6         Volume Quota
1.8.1.7         Protocol Information
1.8.1.7.1            CIFS Services Information
1.8.2      FCP Vserver Configuration
1.8.2.1         Root Volume
1.8.2.2         Interfaces (Lifs)
1.8.2.3         Protocol Information
1.8.2.3.1            FCP Services Information
1.8.3      ISCSI Vserver Configuration
1.8.3.1         Root Volume
1.8.3.2         Aggregate Resource Allocation
1.8.3.3         Interfaces (Lifs)
1.8.3.4         Storage Volumes
1.8.3.4.1            Per Volumes Export Policies
1.8.3.5         Volumes Snapshot Configuration
1.8.3.6         Protocol Information
1.8.3.6.1            ISCSI Services
1.8.3.6.2            Lun Storage
1.8.4      NFS Vserver Configuration
1.8.4.1         Root Volume
1.8.4.2         Interfaces (Lifs)
1.8.4.3         Export Policies
1.8.4.4         Storage Volumes
1.8.4.4.1            Per Volumes Export Policies
1.8.4.4.2            Flexclone Volumes
1.8.4.5         Volumes Snapshot Configuration
1.8.4.5.1            HealthCheck - Volumes Snapshot
1.8.4.6         Protocol Information
1.8.4.6.1            NFS Services
1.9   Replication Information
1.9.1      Cluster Replication Diagram
1.9.2      Cluster Peer
1.9.3      Vserver Peer
1.9.3.1         SnapMirror Relationship
1.9.3.2         SnapMirror Destinations
1.10   Efficiency Information
1.10.1      Aggregate Total Efficiency
1.10.1.1         HealthCheck - Volume with Disabled Deduplication
1.10.1.2         CIFS Vserver Volume Deduplication
1.10.1.2.1            Volume Efficiency
1.10.1.3         ISCSI Vserver Volume Deduplication
1.10.1.3.1            Volume Efficiency
1.10.1.4         NFS Vserver Volume Deduplication
1.10.1.4.1            Volume Efficiency
1.11   Security Information
1.11.1      PHARMAX-HQ Vserver Local User
1.11.2      CIFS Vserver Local User
1.11.3      FCP Vserver Local User
1.11.4      ISCSI Vserver Local User
1.11.5      NFS Vserver Local User
1.11.6      Vserver SSL Certificate
1.11.6.1         Vserver SSL Certificate Details
1.11.7      Aggregate Encryption (NAE)
1.11.7.1         Volume Encryption (NVE)
1.11.8      Snaplock Compliance Clock
1.11.8.1         Aggregate Snaplock Type
1.11.8.1.1            Volume Snaplock Type
1.12   System Configuration Information
1.12.1      System Image Configuration
1.12.2      System Web Service
1.12.3      DNS Configuration
1.12.4      Configuration Backup Setting
1.12.5      EMS Configuration
1.12.5.1         Audit Settings
1.12.6      Timezone Configuration
1.12.6.1         NTP Configuration

-
NetApp ONTAP As Built Report - v1.0

1 PHARMAX-HQ Cluster Report

The following section provides a summary of the array configuration for PHARMAX-HQ.

1.1 PHARMAX-HQ Cluster Diagram

-NetApp Ontap Diagram +
NetApp ONTAP As Built Report - v1.0

1 PHARMAX-HQ Cluster Report

The following section provides a summary of the array configuration for PHARMAX-HQ.

1.1 PHARMAX-HQ Cluster Diagram

+NetApp Ontap Diagram
-
Image preview: Opens the image in a new tab to view it at full resolution.

1.2 Cluster Information

+

1.2 Cluster Information

- + - - - - - + + + + +
Cluster NamePHARMAX-HQ
Cluster UUID6a7cdc49-6fbd-11f0-9ce1-005056b06182
Cluster UUID8db621bf-d2cf-11f0-9194-005056b09767
Cluster Serial1-80-000011
Cluster Controller192.168.7.60
Cluster Contact-
Cluster Location-
Ontap VersionNetApp Release 9.16.1P4: Tue May 27 23:22:56 UTC 2025
Number of Aggregates4
Number of Volumes6
Cluster Contact--
Cluster Location--
Ontap VersionNetApp Release 9.18.1RC1: Sat Nov 08 06:50:56 UTC 2025
Number of Aggregates8
Number of Volumes17
Overall System HealthOK
Table 1 - Cluster Information - PHARMAX-HQ

-

1.2.1 Cluster HA Status

+

1.2.1 Cluster HA Status

- - -
NamePartnerTakeOver PossibleTakeOver StateHA ModeHA State
PHARMAX-HQ-01PHARMAX-HQ-02Yesnot_in_takeoverhaconnected
PHARMAX-HQ-02PHARMAX-HQ-01Yesnot_in_takeoverhaconnected
-
Table 2 - Cluster HA Status - PHARMAX-HQ

-

1.3 Node Information

The following section provides a summary of the Node on PHARMAX-HQ.

1.3.1 Node Inventory

The following section provides the node inventory on PHARMAX-HQ.

+ + + + +
cluster-01cluster-02Yesnot_in_takeoverhaconnected
cluster-02cluster-01Yesnot_in_takeoverhaconnected
cluster-03cluster-04Nonot_in_takeoverhaconnected
cluster-04cluster-03Nonot_in_takeoverhaconnected
+
Table 2 - Cluster AutoSupport Status - PHARMAX-HQ

+
Health Check:

Best Practice: One or more nodes have takeover capability disabled. It is recommended to enable storage failover capability to ensure high availability in case of node failures.

Best Practice: One or more nodes have HA disabled while operating in HA mode. It is recommended to enable HA to ensure redundancy and high availability.

1.2.2 Cluster AutoSupport Status

+ + + + + +
Node NameProtocolEnabled
cluster-01httpsYes
cluster-02httpsYes
cluster-03httpsYes
cluster-04httpsYes
+
Table 3 - Cluster AutoSupport Status - PHARMAX-HQ

+

1.3 Nodes

The following section provides detailed information of nodes in cluster PHARMAX-HQ.

1.3.1 Inventory

- - -
NameModelIdSerialUptime
PHARMAX-HQ-01SIMBOX4082577507408236851100:42:12
PHARMAX-HQ-02SIMBOX4082577508403438906200:42:12
-
Table 3 - Nodes - PHARMAX-HQ

-

1.3.1.1 Node Vol0 Inventory

- - - -
NodeAggregateVolumeCapacityAvailableUsed
PHARMAX-HQ-01aggr0_PHARMAX_HQ_01vol09 GB3 GB65%
PHARMAX-HQ-02aggr0_PHARMAX_HQ_02vol09 GB3 GB64%
-
Table 4 - Node Storage - PHARMAX-HQ

-

1.4 Storage Information

The following section provides a summary of the storage hardware on PHARMAX-HQ.

1.4.1 Aggregate Inventory

The following section provides the Aggregates on PHARMAX-HQ.

1.4.1.1 Storage Aggregate Diagram

-NetApp Ontap Diagram -
-
Image preview: Opens the image in a new tab to view it at full resolution.
+ + + + +
cluster-01SIMBOX408211650762180300001700:26:30
cluster-02SIMBOX408211650862180300001800:26:31
cluster-03SIMBOX408271760772180300001300:26:30
cluster-04SIMBOX408271760872180300001400:26:30
+
Table 4 - Nodes - PHARMAX-HQ

+

1.3.1.1 Root Volume Vol0

+ + + + + +
NodeAggregateCapacityAvailableUsed
cluster-01aggr0_cluster_015.8 GB1.3 GB76%
cluster-02aggr0_cluster_025.3 GB928.2 MB81%
cluster-03aggr0_cluster_035.8 GB1.3 GB75%
cluster-04aggr0_cluster_045.3 GB1.2 GB76%
+
Table 5 - Node Storage - PHARMAX-HQ

+

1.3.1.2 Service-Processor

+ + + + + +
NameTypeIP AddressMAC AddressNetwork ConfiguredFirmwareStatus
cluster-01----------unknown
cluster-02----------unknown
cluster-03----------unknown
cluster-04----------unknown
+
Table 6 - Node Service-Processor - PHARMAX-HQ

+
Health Check:

Best Practice: Ensure that all service-processors are online, configured and functioning properly to maintain system management capabilities.

1.4 Storage Information

The following section provides detailed information about the storage configuration for cluster PHARMAX-HQ.

1.4.1 Aggregates (Local Tiers)

The following table summarises the aggregates in PHARMAX-HQ.

- - - - -
NameCapacityAvailableUsedDisk CountRootRaid TypeState
aggr0_PHARMAX_HQ_019 GB454 MB95%10YesRAID_DPonline
aggr0_PHARMAX_HQ_029 GB454 MB95%10YesRAID_DPonline
PHARMAX_HQ_01_SSD_187 GB54 GB38%23NoRAID_DPonline
PHARMAX_HQ_02_SSD_187 GB87 GB0%23NoRAID_DPonline
-
Table 5 - Aggregates - PHARMAX-HQ

-

1.4.1.2 Aggregate Spares

+ + + + + + + + +
aggr0_cluster_016.1 GB303.4 MB5.8 GB14YesRAID_DPonline
aggr0_cluster_025.6 GB278.3 MB5.3 GB13YesRAID_DPonline
aggr0_cluster_036.1 GB303.4 MB5.8 GB14YesRAID_DPonline
aggr0_cluster_045.6 GB278.3 MB5.3 GB13YesRAID_DPonline
cluster_01_SSD_190.6 GB80.5 GB10.1 GB35NoRAID_DPonline
cluster_02_SSD_175.0 GB43.2 GB31.8 GB30NoRAID_DPonline
cluster_03_SSD_190.6 GB60.4 GB30.2 GB35NoRAID_DPonline
cluster_04_SSD_175.0 GB42.9 GB32.1 GB30NoRAID_DPonline
+
Table 7 - Aggregates - PHARMAX-HQ

+

Aggragate Usage - Chart

+Aggragate Usage - Chart +
+

1.4.1.1 Disk Spares

- - - - - -
NameCapacityRoot UsableData UsableShared DiskDisk ZeroedOwner
VMw-1.1111 GB1 GB-YesYesPHARMAX-HQ-01
VMw-1.1211 GB1 GB-YesYesPHARMAX-HQ-01
VMw-1.2211 GB-5 GBYesYesPHARMAX-HQ-01
VMw-1.2111 GB1 GB-YesYesPHARMAX-HQ-02
VMw-1.2211 GB1 GB5 GBYesYesPHARMAX-HQ-02
-
Table 6 - Aggregates Spares - PHARMAX-HQ

-

1.4.2 Disk Information

The following section provides the disk summary information on controller PHARMAX-HQ.

1.4.2.1 Per Node Disk Assignment

The following section provides the number of disks assigned to each controller on PHARMAX-HQ.

+ + + + + + + + + + + +
VMw-1.197.1 GB627.5 MB--YesYescluster-01
VMw-1.77.1 GB627.3 MB--YesYescluster-01
VMw-1.127.1 GB627.3 MB--YesYescluster-02
VMw-1.197.1 GB--3.2 GBYesYescluster-02
VMw-1.247.1 GB627.3 MB--YesYescluster-02
VMw-1.437.1 GB627.3 MB--YesYescluster-03
VMw-1.557.1 GB----NoNocluster-03
VMw-1.667.1 GB627.3 MB--YesYescluster-03
VMw-1.477.1 GB627.3 MB--YesYescluster-04
VMw-1.677.1 GB627.3 MB--YesYescluster-04
VMw-1.707.1 GB--3.2 GBYesYescluster-04
+
Table 8 - Disk Spares - PHARMAX-HQ

+

1.4.1.2 Aggregate Diagram

+NetApp Ontap Diagram +
+

1.4.2 Disks

The following section provides a comprehensive summary of disk inventory and configuration across all controllers in the PHARMAX-HQ cluster.

1.4.2.1 Per Node Disk Assignment

- - -
NodeDisk Count
PHARMAX-HQ-0112
PHARMAX-HQ-0212
-
Table 7 - Assigned Disk - PHARMAX-HQ

-

1.4.2.2 Disk Owned by Node PHARMAX-HQ-01

+ + + + +
cluster-0121
cluster-0215
cluster-0321
cluster-0415
+
Table 9 - Assigned Disk - PHARMAX-HQ

+

Per Node Disk Assignment - Chart

+Per Node Disk Assignment - Chart +
+

cluster-01

+ + + + + + + + + + + + + + + + + + + + + + +
DiskOwner IdHomeHome IdType
VMw-1.14082116507cluster-014082116507SSD
VMw-1.134082116507cluster-014082116507SSD
VMw-1.144082116507cluster-014082116507SSD
VMw-1.154082116507cluster-014082116507SSD
VMw-1.164082116507cluster-014082116507SSD
VMw-1.174082116507cluster-014082116507SSD
VMw-1.184082116507cluster-014082116507SSD
VMw-1.194082116507cluster-014082116507SSD
VMw-1.24082116507cluster-014082116507SSD
VMw-1.254082116507cluster-014082116507SSD
VMw-1.264082116507cluster-014082116507SSD
VMw-1.274082116507cluster-014082116507SSD
VMw-1.284082116507cluster-014082116507SSD
VMw-1.294082116507cluster-014082116507SSD
VMw-1.34082116507cluster-014082116507SSD
VMw-1.304082116507cluster-014082116507SSD
VMw-1.314082116507cluster-014082116507SSD
VMw-1.44082116507cluster-014082116507SSD
VMw-1.54082116507cluster-014082116507SSD
VMw-1.64082116507cluster-014082116507SSD
VMw-1.74082116507cluster-014082116507SSD
+
Table 10 - Node Disk Owner - cluster-01

+

cluster-02

+ + + + + + + + + + + + + + + + +
DiskOwner IdHomeHome IdType
VMw-1.104082116508cluster-024082116508SSD
VMw-1.114082116508cluster-024082116508SSD
VMw-1.124082116508cluster-024082116508SSD
VMw-1.204082116508cluster-024082116508SSD
VMw-1.214082116508cluster-024082116508SSD
VMw-1.224082116508cluster-024082116508SSD
VMw-1.234082116508cluster-024082116508SSD
VMw-1.244082116508cluster-024082116508SSD
VMw-1.324082116508cluster-024082116508SSD
VMw-1.334082116508cluster-024082116508SSD
VMw-1.344082116508cluster-024082116508SSD
VMw-1.354082116508cluster-024082116508SSD
VMw-1.364082116508cluster-024082116508SSD
VMw-1.84082116508cluster-024082116508SSD
VMw-1.94082116508cluster-024082116508SSD
+
Table 11 - Node Disk Owner - cluster-02

+

cluster-03

- - - - - - - - - - - - -
DiskOwner IdHomeHome IdType
VMw-1.14082577507PHARMAX-HQ-014082577507SSD
VMw-1.104082577507PHARMAX-HQ-014082577507SSD
VMw-1.114082577507PHARMAX-HQ-014082577507SSD
VMw-1.124082577507PHARMAX-HQ-014082577507SSD
VMw-1.24082577507PHARMAX-HQ-014082577507SSD
VMw-1.34082577507PHARMAX-HQ-014082577507SSD
VMw-1.44082577507PHARMAX-HQ-014082577507SSD
VMw-1.54082577507PHARMAX-HQ-014082577507SSD
VMw-1.64082577507PHARMAX-HQ-014082577507SSD
VMw-1.74082577507PHARMAX-HQ-014082577507SSD
VMw-1.84082577507PHARMAX-HQ-014082577507SSD
VMw-1.94082577507PHARMAX-HQ-014082577507SSD
-
Table 8 - Node Disk Owner - PHARMAX-HQ-01

-

1.4.2.3 Disk Owned by Node PHARMAX-HQ-02

+ + + + + + + + + + + + + + + + + + + + + +
VMw-1.374082717607cluster-034082717607SSD
VMw-1.384082717607cluster-034082717607SSD
VMw-1.394082717607cluster-034082717607SSD
VMw-1.404082717607cluster-034082717607SSD
VMw-1.414082717607cluster-034082717607SSD
VMw-1.424082717607cluster-034082717607SSD
VMw-1.434082717607cluster-034082717607SSD
VMw-1.494082717607cluster-034082717607SSD
VMw-1.504082717607cluster-034082717607SSD
VMw-1.514082717607cluster-034082717607SSD
VMw-1.524082717607cluster-034082717607SSD
VMw-1.534082717607cluster-034082717607SSD
VMw-1.544082717607cluster-034082717607SSD
VMw-1.554082717607cluster-034082717607SSD
VMw-1.604082717607cluster-034082717607SSD
VMw-1.614082717607cluster-034082717607SSD
VMw-1.624082717607cluster-034082717607SSD
VMw-1.634082717607cluster-034082717607SSD
VMw-1.644082717607cluster-034082717607SSD
VMw-1.654082717607cluster-034082717607SSD
VMw-1.664082717607cluster-034082717607SSD
+
Table 12 - Node Disk Owner - cluster-03

+

cluster-04

- - - - - - - - - - - - -
DiskOwner IdHomeHome IdType
VMw-1.134082577508PHARMAX-HQ-024082577508SSD
VMw-1.144082577508PHARMAX-HQ-024082577508SSD
VMw-1.154082577508PHARMAX-HQ-024082577508SSD
VMw-1.164082577508PHARMAX-HQ-024082577508SSD
VMw-1.174082577508PHARMAX-HQ-024082577508SSD
VMw-1.184082577508PHARMAX-HQ-024082577508SSD
VMw-1.194082577508PHARMAX-HQ-024082577508SSD
VMw-1.204082577508PHARMAX-HQ-024082577508SSD
VMw-1.214082577508PHARMAX-HQ-024082577508SSD
VMw-1.224082577508PHARMAX-HQ-024082577508SSD
VMw-1.234082577508PHARMAX-HQ-024082577508SSD
VMw-1.244082577508PHARMAX-HQ-024082577508SSD
-
Table 9 - Node Disk Owner - PHARMAX-HQ-02

-

1.4.2.4 Disk Container Type

+ + + + + + + + + + + + + + + +
VMw-1.444082717608cluster-044082717608SSD
VMw-1.454082717608cluster-044082717608SSD
VMw-1.464082717608cluster-044082717608SSD
VMw-1.474082717608cluster-044082717608SSD
VMw-1.484082717608cluster-044082717608SSD
VMw-1.564082717608cluster-044082717608SSD
VMw-1.574082717608cluster-044082717608SSD
VMw-1.584082717608cluster-044082717608SSD
VMw-1.594082717608cluster-044082717608SSD
VMw-1.674082717608cluster-044082717608SSD
VMw-1.684082717608cluster-044082717608SSD
VMw-1.694082717608cluster-044082717608SSD
VMw-1.704082717608cluster-044082717608SSD
VMw-1.714082717608cluster-044082717608SSD
VMw-1.724082717608cluster-044082717608SSD
+
Table 13 - Node Disk Owner - cluster-04

+

1.4.2.2 Disk Container Type

- + + + + +
ContainerDisk Count
shared24
aggregate8
broken1
shared62
spare1
+
Table 14 - Disk Container Type - PHARMAX-HQ

+

Aggregate Spare Low Warning Per Node

+ + + + + +
NodeAggregate Spare Low
cluster-01Yes
cluster-02No
cluster-03No
cluster-04No
+
Table 15 - Aggregate Disk Spare Low - PHARMAX-HQ

+
Health Check:

Best Practice: Ensure that aggregate spare capacity is above the recommended threshold to maintain optimal performance and reliability.

1.4.2.3 Failed Disk

+ + +
Disk NameShelfBayPoolDisk Paths
VMw-1.1--00cluster-01:0b.0
cluster-02:0c.0
+
Table 16 - Failed Disk - PHARMAX-HQ

+
Health Check:

Best Practice: Review the failed disk information above. It is recommended to replace any broken disks promptly to maintain data integrity and system performance.

1.4.2.4 Disk Inventory

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Disk NameShelfBayCapacityModelTypeFirmware
VMw-1.1--08.6GVirtualdiskSSD2.0
VMw-1.10--108.6GVirtualdiskSSD2.0
VMw-1.11--118.6GVirtualdiskSSD2.0
VMw-1.12--128.6GVirtualdiskSSD2.0
VMw-1.13--08.6GVirtualdiskSSD2.0
VMw-1.14--18.6GVirtualdiskSSD2.0
VMw-1.15--28.6GVirtualdiskSSD2.0
VMw-1.16--38.6GVirtualdiskSSD2.0
VMw-1.17--48.6GVirtualdiskSSD2.0
VMw-1.18--58.6GVirtualdiskSSD2.0
VMw-1.19--68.6GVirtualdiskSSD2.0
VMw-1.2--18.6GVirtualdiskSSD2.0
VMw-1.20--88.6GVirtualdiskSSD2.0
VMw-1.21--98.6GVirtualdiskSSD2.0
VMw-1.22--108.6GVirtualdiskSSD2.0
VMw-1.23--118.6GVirtualdiskSSD2.0
VMw-1.24--128.6GVirtualdiskSSD2.0
VMw-1.25--08.6GVirtualdiskSSD2.0
VMw-1.26--18.6GVirtualdiskSSD2.0
VMw-1.27--28.6GVirtualdiskSSD2.0
VMw-1.28--38.6GVirtualdiskSSD2.0
VMw-1.29--48.6GVirtualdiskSSD2.0
VMw-1.3--28.6GVirtualdiskSSD2.0
VMw-1.30--58.6GVirtualdiskSSD2.0
VMw-1.31--68.6GVirtualdiskSSD2.0
VMw-1.32--88.6GVirtualdiskSSD2.0
VMw-1.33--98.6GVirtualdiskSSD2.0
VMw-1.34--108.6GVirtualdiskSSD2.0
VMw-1.35--118.6GVirtualdiskSSD2.0
VMw-1.36--128.6GVirtualdiskSSD2.0
VMw-1.37--08.6GVirtualdiskSSD2.0
VMw-1.38--18.6GVirtualdiskSSD2.0
VMw-1.39--28.6GVirtualdiskSSD2.0
VMw-1.4--38.6GVirtualdiskSSD2.0
VMw-1.40--38.6GVirtualdiskSSD2.0
VMw-1.41--48.6GVirtualdiskSSD2.0
VMw-1.42--58.6GVirtualdiskSSD2.0
VMw-1.43--68.6GVirtualdiskSSD2.0
VMw-1.44--88.6GVirtualdiskSSD2.0
VMw-1.45--98.6GVirtualdiskSSD2.0
VMw-1.46--108.6GVirtualdiskSSD2.0
VMw-1.47--128.6GVirtualdiskSSD2.0
VMw-1.48--118.6GVirtualdiskSSD2.0
VMw-1.49--08.6GVirtualdiskSSD2.0
VMw-1.5--48.6GVirtualdiskSSD2.0
VMw-1.50--18.6GVirtualdiskSSD2.0
VMw-1.51--28.6GVirtualdiskSSD2.0
VMw-1.52--38.6GVirtualdiskSSD2.0
VMw-1.53--48.6GVirtualdiskSSD2.0
VMw-1.54--58.6GVirtualdiskSSD2.0
VMw-1.55--68.6GVirtualdiskSSD2.0
VMw-1.56--98.6GVirtualdiskSSD2.0
VMw-1.57--88.6GVirtualdiskSSD2.0
VMw-1.58--108.6GVirtualdiskSSD2.0
VMw-1.59--118.6GVirtualdiskSSD2.0
VMw-1.6--58.6GVirtualdiskSSD2.0
VMw-1.60--08.6GVirtualdiskSSD2.0
VMw-1.61--18.6GVirtualdiskSSD2.0
VMw-1.62--28.6GVirtualdiskSSD2.0
VMw-1.63--38.6GVirtualdiskSSD2.0
VMw-1.64--48.6GVirtualdiskSSD2.0
VMw-1.65--58.6GVirtualdiskSSD2.0
VMw-1.66--68.6GVirtualdiskSSD2.0
VMw-1.67--128.6GVirtualdiskSSD2.0
VMw-1.68--88.6GVirtualdiskSSD2.0
VMw-1.69--108.6GVirtualdiskSSD2.0
VMw-1.7--68.6GVirtualdiskSSD2.0
VMw-1.70--118.6GVirtualdiskSSD2.0
VMw-1.71--128.6GVirtualdiskSSD2.0
VMw-1.72--98.6GVirtualdiskSSD2.0
VMw-1.8--88.6GVirtualdiskSSD2.0
VMw-1.9--98.6GVirtualdiskSSD2.0
+
Table 17 - Disk Inventory - PHARMAX-HQ

+

1.5 Licenses Information

The following section provides a summary of the license usage in PHARMAX-HQ.

1.5.1 cluster-01 License Usage

+ + + + + + + + + + + + +
LicenseTypeDescriptionRisk
CifsLicenseCIFS Licenselow
FcpLicenseFCP Licenselow
FlexcloneLicenseFlexClone Licenselow
IscsiLicenseiSCSI Licenselow
NfsLicenseNFS Licenselow
SnaplockLicenseSnapLock Licenselow
SnapmanagersuiteLicenseSnapCenter Licenselow
SnapmirrorLicenseSnapMirror Licenselow
SnaprestoreLicenseSnapRestore Licenselow
SnapvaultLicenseSnapVault Licenselow
TpmLicenseTrusted Platform Module License--
VeLicenseVolume Encryption License--
-
Table 10 - Disk Container Type - PHARMAX-HQ

-

1.5 Licenses Information

The following section provides a summary of the license usage on PHARMAX-HQ.

1.5.1 PHARMAX-HQ-01 License Usage

+
Table 18 - License Usage - cluster-01

+

1.5.2 cluster-02 License Usage

- - + +
LicenseTypeDescriptionRisk
CifsLicenseCIFS Licenselow
FcpLicenseFCP Licenselow
FlexcloneLicenseFlexClone Licenselow
Insight_BalanceLicenseOnCommand Balancelow
IscsiLicenseiSCSI Licenselow
NfsLicenseNFS Licenselow
SnaplockLicenseSnapLock Licenselow
SnapmanagersuiteLicenseSnapCenter Licenselow
SnapmirrorLicenseSnapMirror Licenselow
SnapprotectappsLicenseSnapProtectApp Licenselow
SnaprestoreLicenseSnapRestore Licenselow
SnapvaultLicenseSnapVault Licenselow
TpmLicenseTrusted Platform Module License--
VeLicenseVolume Encryption License--
-
Table 11 - License Usage - PHARMAX-HQ-01

-

1.5.2 PHARMAX-HQ-02 License Usage

+
Table 19 - License Usage - cluster-02

+

1.5.3 cluster-03 License Usage

- - + +
LicenseTypeDescriptionRisk
CifsLicenseCIFS Licenselow
FcpLicenseFCP Licenselow
FlexcloneLicenseFlexClone Licenselow
Insight_BalanceLicenseOnCommand Balancelow
IscsiLicenseiSCSI Licenselow
NfsLicenseNFS Licenselow
SnaplockLicenseSnapLock Licenselow
SnapmanagersuiteLicenseSnapCenter Licenselow
SnapmirrorLicenseSnapMirror Licenselow
SnapprotectappsLicenseSnapProtectApp Licenselow
SnaprestoreLicenseSnapRestore Licenselow
SnapvaultLicenseSnapVault Licenselow
TpmLicenseTrusted Platform Module License--
VeLicenseVolume Encryption License--
-
Table 12 - License Usage - PHARMAX-HQ-02

-

1.6 Network Information

The following section provides a summary of the networking features on PHARMAX-HQ.

1.6.1 IPSpace

The following section provides the IPSpace information on PHARMAX-HQ.

+
Table 20 - License Usage - cluster-03

+

1.5.4 cluster-04 License Usage

+ + + + + + + + + + + + + +
LicenseTypeDescriptionRisk
CifsLicenseCIFS Licenselow
FcpLicenseFCP Licenselow
FlexcloneLicenseFlexClone Licenselow
IscsiLicenseiSCSI Licenselow
NfsLicenseNFS Licenselow
SnaplockLicenseSnapLock Licenselow
SnapmanagersuiteLicenseSnapCenter Licenselow
SnapmirrorLicenseSnapMirror Licenselow
SnaprestoreLicenseSnapRestore Licenselow
SnapvaultLicenseSnapVault Licenselow
TpmLicenseTrusted Platform Module License--
VeLicenseVolume Encryption License--
+
Table 21 - License Usage - cluster-04

+

1.6 Networking Diagram

+NetApp Ontap Diagram +
+

1.7 Network Information

The following section provides a summary of the networking features in PHARMAX-HQ.

1.7.1 IPSpace

The following section provides the IPSpace information in PHARMAX-HQ.

- +
NameCluster
SVMCluster
PortsPHARMAX-HQ-02:e0a; PHARMAX-HQ-02:e0b; PHARMAX-HQ-01:e0a; PHARMAX-HQ-01:e0b
Portscluster-04:e0a; cluster-04:e0b; cluster-03:e0a; cluster-03:e0b; cluster-02:e0a; cluster-02:e0b; cluster-01:e0a; cluster-01:e0b
Broadcast DomainsCluster
-
Table 13 - Network IPSpace - Cluster

+
Table 22 - Network IPSpace - Cluster

- - - + + +
NameDefault
SVMSAN; NAS; PHARMAX-HQ
PortsPHARMAX-HQ-02:a0a; PHARMAX-HQ-02:a0a-11; PHARMAX-HQ-02:a0a-12; PHARMAX-HQ-02:a0a-5; PHARMAX-HQ-02:a0a-6; PHARMAX-HQ-02:a0a-7; PHARMAX-HQ-02:e0c; PHARMAX-HQ-02:e0d; PHARMAX-HQ-01:a0a; PHARMAX-HQ-01:a0a-11; PHARMAX-HQ-01:a0a-12; PHARMAX-HQ-01:a0a-5; PHARMAX-HQ-01:a0a-6; PHARMAX-HQ-01:a0a-7; PHARMAX-HQ-01:e0c; PHARMAX-HQ-01:e0d
Broadcast DomainsDefault; Default-1; Default-2; Default-3; Default-4; Default-5; Default-6; ISCSI-A; ISCSI-B
SVMNFS; ISCSI; CIFS; FCP; PHARMAX-HQ
Portscluster-04:a0a; cluster-04:a0a-12; cluster-04:a0a-5; cluster-04:a0a-6; cluster-04:a0a-7; cluster-04:a0b; cluster-04:a0b-24; cluster-04:e0c; cluster-04:e0d; cluster-04:e0f; cluster-04:e0g; cluster-04:e0h; cluster-03:a0a; cluster-03:a0a-12; cluster-03:a0a-5; cluster-03:a0a-6; cluster-03:a0a-7; cluster-03:a0b; cluster-03:a0b-24; cluster-03:e0c; cluster-03:e0d; cluster-03:e0f; cluster-03:e0g; cluster-03:e0h; cluster-02:a0a; cluster-02:a0a-12; cluster-02:a0a-5; cluster-02:a0a-6; cluster-02:a0a-7; cluster-02:a0b; cluster-02:a0b-24; cluster-02:e0c; cluster-02:e0d; cluster-02:e0f; cluster-02:e0g; cluster-02:e0h; cluster-01:a0a; cluster-01:a0a-12; cluster-01:a0a-5; cluster-01:a0a-6; cluster-01:a0a-7; cluster-01:a0b; cluster-01:a0b-24; cluster-01:e0c; cluster-01:e0d; cluster-01:e0f; cluster-01:e0g; cluster-01:e0h
Broadcast DomainsDefault; Default-1; Default-2; Default-3; Default-4; Default-5; ISCSI-A-6; ISCSI-B-12; MGMT-5; Replication-11; VM-Network-7
-
Table 14 - Network IPSpace - Default

-

1.6.1.1 Network Ports

The following section provides the physical network ports on PHARMAX-HQ.

1.6.1.1.1 PHARMAX-HQ-01 Ports
+
Table 23 - Network IPSpace - Default

+

1.7.1.1 Network Ports

The following section provides the physical network ports in PHARMAX-HQ.

1.7.1.1.1 cluster-01 Ports
- - - - -
Port NameRoleMac AddressMTULink StatusAdmin Status
e0aCluster00:50:56:b0:61:829000UpUp
e0bCluster00:50:56:b0:e4:9d9000UpUp
e0cNode_Mgmt02:50:56:b0:61:821500UpUp
e0dData02:50:56:b0:61:821500UpUp
-
Table 15 - Physical Port - PHARMAX-HQ-01

-
1.6.1.1.2 PHARMAX-HQ-02 Ports
+ + + + + + + +
e0aCluster00:50:56:b0:97:679000UpUp
e0bCluster00:50:56:b0:39:189000UpUp
e0cNode_Mgmt02:50:56:b0:97:679000UpUp
e0dData02:50:56:b0:97:679000UpUp
e0fData02:50:56:b0:39:189000UpUp
e0gData02:50:56:b0:39:189000UpUp
e0hData00:50:56:b0:fe:c41500UpUp
+
Table 24 - Physical Port - cluster-01

+
1.7.1.1.2 cluster-02 Ports
+ + + + + + + + +
Port NameRoleMac AddressMTULink StatusAdmin Status
e0aCluster00:50:56:b0:b8:949000UpUp
e0bCluster00:50:56:b0:0d:c59000UpUp
e0cNode_Mgmt02:50:56:b0:b8:949000UpUp
e0dData02:50:56:b0:b8:949000UpUp
e0fData02:50:56:b0:0d:c59000UpUp
e0gData02:50:56:b0:0d:c59000UpUp
e0hData00:50:56:b0:53:d31500UpUp
+
Table 25 - Physical Port - cluster-02

+
1.7.1.1.3 cluster-03 Ports
- - - - + + + + + + + +
Port NameRoleMac AddressMTULink StatusAdmin Status
e0aCluster00:50:56:b0:ea:5c9000UpUp
e0bCluster00:50:56:b0:5b:049000UpUp
e0cNode_Mgmt02:50:56:b0:ea:5c1500UpUp
e0dData02:50:56:b0:ea:5c1500UpUp
e0aCluster00:50:56:b0:22:fe9000UpUp
e0bCluster00:50:56:b0:50:bc9000UpUp
e0cNode_Mgmt02:50:56:b0:22:fe9000UpUp
e0dData02:50:56:b0:22:fe9000UpUp
e0fData02:50:56:b0:50:bc9000UpUp
e0gData02:50:56:b0:50:bc9000UpUp
e0hData00:50:56:b0:e5:da1500UpUp
+
Table 26 - Physical Port - cluster-03

+
1.7.1.1.4 cluster-04 Ports
+ + + + + + + + +
Port NameRoleMac AddressMTULink StatusAdmin Status
e0aCluster00:50:56:b0:39:579000UpUp
e0bCluster00:50:56:b0:8d:c29000UpUp
e0cNode_Mgmt02:50:56:b0:39:579000UpUp
e0dData02:50:56:b0:39:579000UpUp
e0fData02:50:56:b0:8d:c29000UpUp
e0gData02:50:56:b0:8d:c29000UpUp
e0hData00:50:56:b0:5f:4e1500UpUp
+
Table 27 - Physical Port - cluster-04

+

1.7.1.2 Network Link Aggregation Group

The following section provides per Node IFGRP Aggregated Ports in PHARMAX-HQ.

1.7.1.2.1 cluster-01 IFGRP
+ + + +
Port NameDistribution FunctionModePortMac AddressPort Participation
a0asequentialmultimodee0c e0d02:50:56:b0:97:67full
a0bsequentialmultimodee0f e0g02:50:56:b0:39:18full
+
Table 28 - Link Aggregation Group - cluster-01

+
1.7.1.2.2 cluster-02 IFGRP
+ + +
Port NameDistribution FunctionModePortMac AddressPort Participation
a0asequentialmultimodee0c e0d02:50:56:b0:b8:94full
a0bsequentialmultimodee0f e0g02:50:56:b0:0d:c5full
-
Table 16 - Physical Port - PHARMAX-HQ-02

-

1.6.1.2 Network Link Aggregation Group

The following section provides per Node IFGRP Aggregated Ports on PHARMAX-HQ.

1.6.1.2.1 PHARMAX-HQ-01 IFGRP
+
Table 29 - Link Aggregation Group - cluster-02

+
1.7.1.2.3 cluster-03 IFGRP
- + +
Port NameDistribution FunctionModePortMac AddressPort Participation
a0aipmultimodee0d02:50:56:b0:61:82full
a0asequentialmultimodee0c e0d02:50:56:b0:22:fefull
a0bsequentialmultimodee0f e0g02:50:56:b0:50:bcfull
-
Table 17 - Link Aggregation Group - PHARMAX-HQ-01

-
1.6.1.2.2 PHARMAX-HQ-02 IFGRP
+
Table 30 - Link Aggregation Group - cluster-03

+
1.7.1.2.4 cluster-04 IFGRP
- + +
Port NameDistribution FunctionModePortMac AddressPort Participation
a0aipmultimodee0d02:50:56:b0:ea:5cfull
a0asequentialmultimodee0c e0d02:50:56:b0:39:57full
a0bsequentialmultimodee0f e0g02:50:56:b0:8d:c2full
-
Table 18 - Link Aggregation Group - PHARMAX-HQ-02

-

1.6.1.3 Network VLANs

The following section provides Network VLAN information on PHARMAX-HQ.

1.6.1.3.1 PHARMAX-HQ-01 Vlans
+
Table 31 - Link Aggregation Group - cluster-04

+

1.7.1.3 Network VLANs

The following section provides Network VLAN information in PHARMAX-HQ.

1.7.1.3.1 cluster-01 Vlans
- +
Interface NameParent InterfaceVlan ID
a0a-11a0a11
a0a-12a0a12
a0b-24a0b24
a0a-5a0a5
a0a-6a0a6
a0a-7a0a7
-
Table 19 - Network VLAN - PHARMAX-HQ-01

-
1.6.1.3.2 PHARMAX-HQ-02 Vlans
+
Table 32 - Network VLAN - cluster-01

+
1.7.1.3.2 cluster-02 Vlans
- +
Interface NameParent InterfaceVlan ID
a0a-11a0a11
a0a-12a0a12
a0b-24a0b24
a0a-5a0a5
a0a-6a0a6
a0a-7a0a7
-
Table 20 - Network VLAN - PHARMAX-HQ-02

-

1.6.1.4 Broadcast Domain

+
Table 33 - Network VLAN - cluster-02

+
1.7.1.3.3 cluster-03 Vlans
+ + + + + + +
Interface NameParent InterfaceVlan ID
a0a-12a0a12
a0b-24a0b24
a0a-5a0a5
a0a-6a0a6
a0a-7a0a7
+
Table 34 - Network VLAN - cluster-03

+
1.7.1.3.4 cluster-04 Vlans
+ + + + + + +
Interface NameParent InterfaceVlan ID
a0a-12a0a12
a0b-24a0b24
a0a-5a0a5
a0a-6a0a6
a0a-7a0a7
+
Table 35 - Network VLAN - cluster-04

+

1.7.1.4 Broadcast Domains

- - - - - - - - - - -
NameIPSpaceFailover GroupsMTUPorts
ClusterClusterCluster9000PHARMAX-HQ-02:e0a
PHARMAX-HQ-02:e0b
PHARMAX-HQ-01:e0a
PHARMAX-HQ-01:e0b
DefaultDefaultDefault1500PHARMAX-HQ-02:a0a
PHARMAX-HQ-02:e0c
PHARMAX-HQ-01:a0a
PHARMAX-HQ-01:e0c
Default-1DefaultDefault-11500PHARMAX-HQ-01:a0a-5
Default-2DefaultDefault-21500PHARMAX-HQ-01:a0a-7
Default-3DefaultDefault-31500PHARMAX-HQ-01:a0a-11
Default-4DefaultDefault-41500PHARMAX-HQ-02:a0a-11
Default-5DefaultDefault-51500PHARMAX-HQ-02:a0a-5
Default-6DefaultDefault-61500PHARMAX-HQ-02:a0a-7
ISCSI-ADefaultISCSI-A1500PHARMAX-HQ-02:a0a-6
PHARMAX-HQ-01:a0a-6
ISCSI-BDefaultISCSI-B1500PHARMAX-HQ-02:a0a-12
PHARMAX-HQ-01:a0a-12
-
Table 21 - Network Broadcast Domain - PHARMAX-HQ

-

1.6.1.5 Failover Groups

+ + + + + + + + + + + + +
ClusterClusterCluster9000cluster-04:e0a
cluster-04:e0b
cluster-03:e0a
cluster-03:e0b
cluster-02:e0a
cluster-02:e0b
cluster-01:e0a
cluster-01:e0b
DefaultDefaultDefault1500cluster-04:a0a
cluster-03:a0a
cluster-02:a0a
cluster-01:a0a
Default-1DefaultDefault-19000cluster-01:a0b
Default-2DefaultDefault-29000cluster-02:a0b
Default-3DefaultDefault-39000cluster-03:a0b
Default-4DefaultDefault-49000cluster-04:a0b
Default-5DefaultDefault-59000cluster-04:a0b-24
cluster-03:a0b-24
cluster-02:a0b-24
cluster-01:a0b-24
ISCSI-A-6DefaultISCSI-A-69000cluster-04:a0a-6
cluster-03:a0a-6
cluster-02:a0a-6
cluster-01:a0a-6
ISCSI-B-12DefaultISCSI-B-129000cluster-04:a0a-12
cluster-03:a0a-12
cluster-02:a0a-12
cluster-01:a0a-12
MGMT-5DefaultMGMT-51500cluster-04:a0a-5
cluster-03:a0a-5
cluster-02:a0a-5
cluster-01:a0a-5
Replication-11DefaultReplication-111500cluster-04:e0h
cluster-03:e0h
cluster-02:e0h
cluster-01:e0h
VM-Network-7DefaultVM-Network-71500cluster-04:a0a-7
cluster-03:a0a-7
cluster-02:a0a-7
cluster-01:a0a-7
+
Table 36 - Network Broadcast Domain - PHARMAX-HQ

+

1.7.1.5 Failover Groups

- - - - - - - - - - -
NameVserverTarget
ClusterClusterPHARMAX-HQ-02:e0a
PHARMAX-HQ-02:e0b
PHARMAX-HQ-01:e0a
PHARMAX-HQ-01:e0b
DefaultPHARMAX-HQPHARMAX-HQ-02:a0a
PHARMAX-HQ-02:e0c
PHARMAX-HQ-01:a0a
PHARMAX-HQ-01:e0c
Default-1PHARMAX-HQPHARMAX-HQ-01:a0a-5
Default-2PHARMAX-HQPHARMAX-HQ-01:a0a-7
Default-3PHARMAX-HQPHARMAX-HQ-01:a0a-11
Default-4PHARMAX-HQPHARMAX-HQ-02:a0a-11
Default-5PHARMAX-HQPHARMAX-HQ-02:a0a-5
Default-6PHARMAX-HQPHARMAX-HQ-02:a0a-7
ISCSI-APHARMAX-HQPHARMAX-HQ-02:a0a-6
PHARMAX-HQ-01:a0a-6
ISCSI-BPHARMAX-HQPHARMAX-HQ-02:a0a-12
PHARMAX-HQ-01:a0a-12
-
Table 22 - Network Failover Group - PHARMAX-HQ

-

1.6.1.6 PHARMAX-HQ Vserver Routes

The following section provides the Routes information on PHARMAX-HQ.

+ + + + + + + + + + + + +
ClusterClustercluster-04:e0a
cluster-04:e0b
cluster-03:e0a
cluster-03:e0b
cluster-02:e0a
cluster-02:e0b
cluster-01:e0a
cluster-01:e0b
DefaultPHARMAX-HQcluster-04:a0a
cluster-03:a0a
cluster-02:a0a
cluster-01:a0a
Default-1PHARMAX-HQcluster-01:a0b
Default-2PHARMAX-HQcluster-02:a0b
Default-3PHARMAX-HQcluster-03:a0b
Default-4PHARMAX-HQcluster-04:a0b
Default-5PHARMAX-HQcluster-04:a0b-24
cluster-03:a0b-24
cluster-02:a0b-24
cluster-01:a0b-24
ISCSI-A-6PHARMAX-HQcluster-04:a0a-6
cluster-03:a0a-6
cluster-02:a0a-6
cluster-01:a0a-6
ISCSI-B-12PHARMAX-HQcluster-04:a0a-12
cluster-03:a0a-12
cluster-02:a0a-12
cluster-01:a0a-12
MGMT-5PHARMAX-HQcluster-04:a0a-5
cluster-03:a0a-5
cluster-02:a0a-5
cluster-01:a0a-5
Replication-11PHARMAX-HQcluster-04:e0h
cluster-03:e0h
cluster-02:e0h
cluster-01:e0h
VM-Network-7PHARMAX-HQcluster-04:a0a-7
cluster-03:a0a-7
cluster-02:a0a-7
cluster-01:a0a-7
+
Table 37 - Network Failover Group - PHARMAX-HQ

+

1.7.1.6 Network Subnets

+ + + + +
NameSubnetGatewayTotal IPUsed IPIp Ranges
DeptA-Client-VMnet4172.23.4.0/24172.23.4.254517172.23.4.100-172.23.4.150
ISCSI-A-6192.168.6.0/24--514192.168.6.100-192.168.6.150
ISCSI-B-12192.168.12.0/24--514192.168.12.100-192.168.12.150
+
Table 38 - Network Subnet - PHARMAX-HQ

+

1.7.1.7 PHARMAX-HQ Vserver Routes

The following section provides the Routes information in PHARMAX-HQ.

+
DestinationGatewayMetricAddress Family
0.0.0.0/0192.168.7.25420ipv4
0.0.0.0/0192.168.11.25420ipv4
-
Table 23 - Network Route - PHARMAX-HQ

-

1.6.1.7 NAS Vserver Routes

The following section provides the Routes information on PHARMAX-HQ.

+
Table 39 - Network Route - PHARMAX-HQ

+

1.7.1.8 CIFS Vserver Routes

The following section provides the Routes information in PHARMAX-HQ.

- +
DestinationGatewayMetricAddress Family
0.0.0.0/0192.168.7.25420ipv4
0.0.0.0/0172.23.4.25420ipv4
-
Table 24 - Network Route - NAS

-

1.6.1.8 Network Interfaces

The following section provides the Network Interfaces information on PHARMAX-HQ.

Cluster Network Interfaces

- - - - - +
Table 40 - Network Route - CIFS

+

1.7.1.9 FCP Vserver Routes

The following section provides the Routes information in PHARMAX-HQ.

Cluster InterfaceStatusData ProtocolsAddressVserver
PHARMAX-HQ-01_clus1UPnone169.254.97.130Cluster
PHARMAX-HQ-01_clus2UPnone169.254.228.157Cluster
PHARMAX-HQ-02_clus1UPnone169.254.234.92Cluster
PHARMAX-HQ-02_clus2UPnone169.254.91.4Cluster
+ + +
DestinationGatewayMetricAddress Family
0.0.0.0/0172.23.4.25420ipv4
+
Table 41 - Network Route - FCP

+

1.7.1.10 ISCSI Vserver Routes

The following section provides the Routes information in PHARMAX-HQ.

+ + +
DestinationGatewayMetricAddress Family
0.0.0.0/0172.23.4.25420ipv4
+
Table 42 - Network Route - ISCSI

+

1.7.1.11 NFS Vserver Routes

The following section provides the Routes information in PHARMAX-HQ.

+ +
DestinationGatewayMetricAddress Family
0.0.0.0/0192.168.5.25420ipv4
-
Table 25 - Cluster Network - PHARMAX-HQ

-

Management Network Interfaces

+
Table 43 - Network Route - NFS

+

1.7.1.12 Network Interfaces

The following section provides the Network Interfaces information in PHARMAX-HQ.

Cluster Network Interfaces

+ + + + + + + + + +
Cluster InterfaceStatusData ProtocolsAddressVserver
cluster-01_clus1UPnone169.254.151.103Cluster
cluster-01_clus2UPnone169.254.57.24Cluster
cluster-02_clus1UPnone169.254.184.148Cluster
cluster-02_clus2UPnone169.254.13.197Cluster
cluster-03_clus1UPnone169.254.34.254Cluster
cluster-03_clus2UPnone169.254.80.188Cluster
cluster-04_clus1UPnone169.254.57.87Cluster
cluster-04_clus2UPnone169.254.141.194Cluster
+
Table 44 - Cluster Network - PHARMAX-HQ

+

Management Network Interfaces

- - + + + +
MGMT InterfaceStatusData ProtocolsAddressVserver
cluster_mgmtUPnone192.168.7.60PHARMAX-HQ
PHARMAX-HQ-01_mgmt1UPnone192.168.7.61PHARMAX-HQ
PHARMAX-HQ-02_mgmt1UPnone192.168.7.62PHARMAX-HQ
cluster-01_mgmt1UPnone192.168.7.61PHARMAX-HQ
cluster-02_mgmt1UPnone192.168.7.62PHARMAX-HQ
cluster-03_mgmt1UPnone192.168.7.63PHARMAX-HQ
cluster-04_mgmt1UPnone192.168.7.64PHARMAX-HQ
-
Table 26 - Management Network - PHARMAX-HQ

-

Intercluster Network Interfaces

+
Table 45 - Management Network - PHARMAX-HQ

+

Intercluster Network Interfaces

- - + + + +
Intercluster InterfaceStatusData ProtocolsAddressVserver
PHARMAX-HQ-01_replication01UPnone192.168.11.61PHARMAX-HQ
PHARMAX-HQ-02_replication01UPnone192.168.11.62PHARMAX-HQ
lif_Default_2276UPnone192.168.11.63PHARMAX-HQ
lif_Default_374UPnone192.168.11.64PHARMAX-HQ
lif_Default_7971UPnone192.168.11.61PHARMAX-HQ
lif_Default_8739UPnone192.168.11.62PHARMAX-HQ
-
Table 27 - Intercluster Network - PHARMAX-HQ

-

Data Network Interfaces

+
Table 46 - Intercluster Network - PHARMAX-HQ

+

Data Network Interfaces

- - - - - - -
Data InterfaceStatusData ProtocolsAddressVserver
PHARMAX-HQ-01_nas01UPnfs cifs fcache192.168.7.63NAS
PHARMAX-HQ-02_nas01UPnfs cifs fcache192.168.7.64NAS
PHARMAX-HQ-01_iscsia01UPiscsi192.168.6.61SAN
PHARMAX-HQ-01_iscsib01UPiscsi192.168.12.61SAN
PHARMAX-HQ-02_iscsia01UPiscsi192.168.6.62SAN
PHARMAX-HQ-02_iscsib01UPiscsi192.168.12.62SAN
-
Table 28 - Data Network - PHARMAX-HQ

-

1.7 Vserver Information

The following section provides a summary of the vserver information on PHARMAX-HQ.

1.7.1 NAS Vserver Configuration

The following section provides the configuration of the vserver NAS.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
lif_CIFS_1728UPcifs172.23.4.102CIFS
lif_CIFS_2101UPcifs172.23.4.103CIFS
lif_CIFS_3310UPcifs172.23.4.101CIFS
lif_CIFS_4245UPnone172.23.4.105CIFS
lif_CIFS_4715UPcifs172.23.4.104CIFS
lif_FCP_1840UPfcp20:07:00:50:56:b0:39:57FCP
lif_FCP_206UPfcp20:08:00:50:56:b0:39:57FCP
lif_FCP_2670UPfcp20:04:00:50:56:b0:39:57FCP
lif_FCP_2920UPfcp20:05:00:50:56:b0:39:57FCP
lif_FCP_7769UPfcp20:01:00:50:56:b0:39:57FCP
lif_FCP_7889UPfcp20:06:00:50:56:b0:39:57FCP
lif_FCP_8085UPnone172.23.4.106FCP
lif_FCP_8379UPfcp20:03:00:50:56:b0:39:57FCP
lif_FCP_8389UPfcp20:02:00:50:56:b0:39:57FCP
lif_ISCSI_253UPiscsi192.168.6.102ISCSI
lif_ISCSI_4091UPiscsi192.168.6.101ISCSI
lif_ISCSI_4260UPiscsi192.168.12.102ISCSI
lif_ISCSI_4837UPnone172.23.4.100ISCSI
lif_ISCSI_6264UPiscsi192.168.12.100ISCSI
lif_ISCSI_6900UPiscsi192.168.6.100ISCSI
lif_ISCSI_7101UPiscsi192.168.12.101ISCSI
lif_ISCSI_8687UPiscsi192.168.6.103ISCSI
lif_ISCSI_8946UPiscsi192.168.12.103ISCSI
lif_NFS_331UPnfs192.168.5.62NFS
lif_NFS_6545UPnfs192.168.5.61NFS
lif_NFS_7087UPnfs192.168.5.64NFS
lif_NFS_9802UPnfs192.168.5.63NFS
+
Table 47 - Data Network - PHARMAX-HQ

+

1.8 Vserver Information

The following section provides a summary of the vserver information in PHARMAX-HQ.

1.8.1 CIFS Vserver Configuration

The following section provides the configuration of the vserver CIFS.

Vserver TypeAllowed ProtocolsDisallowed ProtocolsIPSpaceStatus
datanfs cifs fcp iscsi ndmp s3nvmeDefaultrunning
-
Table 29 - Information - NAS

-

1.7.1.1 Root Volume

+
Table 48 - Information - CIFS

+

1.8.1.1 Root Volume

- -
Root VolumeStatusTotal SizeUsedAvailableDedupAggregate
NAS_rootonline20 MB6%18 MBNoPHARMAX_HQ_02_SSD_1
-
Table 30 - Root Volume - NAS

-

1.7.1.2 Storage Volumes

+ +
CIFS_rootonline20.0 MB5%17.9 MBNocluster_01_SSD_1
+
Table 49 - Root Volume - CIFS

+

1.8.1.2 Interfaces (Lifs)

+ + + + + + +
Data InterfaceStatusData ProtocolsAddressIs Home
lif_CIFS_1728UPcifs172.23.4.102Yes
lif_CIFS_2101UPcifs172.23.4.103Yes
lif_CIFS_3310UPcifs172.23.4.101Yes
lif_CIFS_4245UPnone172.23.4.105Yes
lif_CIFS_4715UPcifs172.23.4.104Yes
+
Table 50 - Data Network - CIFS

+

1.8.1.3 Storage Volumes

- -
VolumeStatusCapacityAvailableUsedAggregate
DATAonline20 GB13 GB29%PHARMAX_HQ_01_SSD_1
-
Table 31 - Volume - NAS

-

1.7.1.3 Volumes Snapshot Configuration

+ + + +
DATAonline10.5 GB10.0 GB0%cluster_02_SSD_1
DATA_destonline128.0 MB121.3 MB0%cluster_03_SSD_1
Global_Documentsonline21.1 GB19.5 GB2%cluster_02_SSD_1
+
Table 51 - Volume - CIFS

+
1.8.1.3.1 Per Volumes Export Policies
+ + + + +
Volume NameExport Policy
DATAdefault
DATA_destdefault
Global_Documentsdefault
+
Table 52 - Per Volume Export Policy - CIFS

+
1.8.1.3.2 Flexcache Volumes
+ + +
Cache ClusterCache VserverCache VolumeOrigin VserverOrigin VolumeCapacity
PHARMAX-DRNAS_DRGlobal_DocumentsCIFSGlobal_Documents21.1 GB
+
Table 53 - Flexcache Volume Connected Cache - CIFS

+

1.8.1.4 Volumes Snapshot Configuration

- -
VolumeSnapshot EnabledReserve SizeReserve AvailableUsedPolicy
DATAYes1 GB1022 MB2 MBdefault
-
Table 32 - Volume SnapShot Configuration - NAS

-

1.7.1.4 Protocol Information

The following section provides a summary of the Vserver protocol information on NAS.

1.7.1.4.1 CIFS Services Information
The following section provides the CIFS Service Information on NAS.

+ + + +
DATAYes538.9 MB536.6 MB2.4 MBdefault
DATA_destNo6.4 MB6.2 MB188.0 KBnone
Global_DocumentsYes1.1 GB1.1 GB2.4 MBdefault
+
Table 54 - Volume SnapShot Configuration - CIFS

+
Health Check:

Best Practice: Snapshots are enabled on volumes but there is no available snapshot reserve space. It is recommended to increase the snapshot reserve size to avoid snapshot failures.

1.8.1.5 Qtrees

+ + + +
QtreeVolumeStatusSecurity StyleExport Policy
ITDATAnormalunixdefault
ITDATA_destreadonlyunixdefault
+
Table 55 - Volume Qtree - CIFS

+
Health Check:

Best Practice: Ensure all qtrees are in 'normal' status to maintain data integrity and accessibility.

1.8.1.6 Volume Quota

CIFS Vserver Volume Quota Status

The following section provides the CIFS Volumes Quota Status Information in PHARMAX-HQ.

+ + + + + +
VolumeStatusSubstatus
CIFS_rootoffnone
DATAonnone
DATA_destoffnone
Global_Documentsoffnone
+
Table 56 - Volume Quota Status - CIFS

+

1.8.1.7 Protocol Information

The following section provides a summary of the Vserver protocol information in CIFS.

1.8.1.7.1 CIFS Services Information
The following section provides the CIFS Service Information in CIFS.

- + - + - + - +
Node NamePHARMAX-HQ-01
Node Namecluster-01
Cifs Domain Namepharmax.local
Cifs NetBios NameNAS
Cifs NetBios NameCIFS
Cifs Domain IP192.168.7.1
AD Server Site 
AD Server Site--
Cifs Server StatusRunning
Status DetailsResponse time (msec): 2016
Status DetailsResponse time (msec): 4027
Statusup
-
Table 33 - CIFS Service - PHARMAX-HQ-01

+
Table 57 - CIFS Service - cluster-01

- + - - - + + + - +
Node NamePHARMAX-HQ-02
Node Namecluster-02
Cifs Domain Namepharmax.local
Cifs NetBios NameNAS
Cifs Domain IP192.168.7.1
AD Server Site 
Cifs NetBios NameCIFS
Cifs Domain IP192.168.5.1
AD Server Site--
Cifs Server StatusRunning
Status DetailsResponse time (msec): 2015
Status DetailsResponse time (msec): 9
Statusup
-
Table 34 - CIFS Service - PHARMAX-HQ-02

-

CIFS Local Group

+
Table 58 - CIFS Service - cluster-02

+
+ + + + + + + + + +
Node Namecluster-03
Cifs Domain Namepharmax.local
Cifs NetBios NameCIFS
Cifs Domain IP192.168.5.1
AD Server Site--
Cifs Server StatusRunning
Status DetailsResponse time (msec): 9
Statusup
+
Table 59 - CIFS Service - cluster-03

+
+ + + + + + + + + +
Node Namecluster-04
Cifs Domain Namepharmax.local
Cifs NetBios NameCIFS
Cifs Domain IP192.168.5.1
AD Server Site--
Cifs Server StatusRunning
Status DetailsResponse time (msec): 8
Statusup
+
Table 60 - CIFS Service - cluster-04

+

CIFS Local Group

@@ -451,162 +897,413 @@
Group NameDescription
BUILTIN\AdministratorsBuilt-in Administrators group
BUILTIN\Backup OperatorsBackup Operators group
BUILTIN\Power UsersRestricted administrative privileges
BUILTIN\UsersAll users
-
Table 35 - CIFS Connected Local Group - NAS

-

CIFS Local Group Members

+
Table 61 - CIFS Connected Local Group - CIFS

+

CIFS Local Group Members

- +
Group NameDescription
BUILTIN\AdministratorsNAS\Administrator
BUILTIN\AdministratorsCIFS\Administrator
BUILTIN\AdministratorsPHARMAX\Domain Admins
BUILTIN\GuestsPHARMAX\Domain Guests
BUILTIN\UsersPHARMAX\Domain Users
-
Table 36 - CIFS Connected Local Group Members - NAS

-

CIFS Share

+
Table 62 - CIFS Connected Local Group Members - CIFS

+

CIFS Share

- + - + +
Share NameVolumePath
c$NAS_root/
c$CIFS_root/
DATADATA/DATA
ipc$NAS_root/
Global_DocumentsGlobal_Documents/Global_Documents
ipc$CIFS_root/
-
Table 37 - CIFS Share - NAS

-

CIFS Share Configuration

+
Table 63 - CIFS Share - CIFS

+

CIFS Share Configuration

- - + + +
Share NameShare ACLShare Properties
c$BUILTIN\Administrators / Full Controloplocks, browsable, changenotify, show_previous_versions
DATAEveryone / Full Controloplocks, browsable, changenotify, show_previous_versions
ipc$ browsable
DATAEveryone / Full Controloplocks, browsable, showsnapshot, changenotify, continuously_available, access_based_enumeration, encrypt_data, show_previous_versions
Global_DocumentsEveryone / Full Controlbrowsable, show_previous_versions, oplocks, changenotify
ipc$--browsable
-
Table 38 - The CIFS Share Properties & Acl - NAS

-

1.7.2 SAN Vserver Configuration

The following section provides the configuration of the vserver SAN.

+
Table 64 - The CIFS Share Properties & Acl - CIFS

+

1.8.2 FCP Vserver Configuration

The following section provides the configuration of the vserver FCP.

Vserver TypeAllowed ProtocolsDisallowed ProtocolsIPSpaceStatus
datanfs cifs fcp iscsi ndmp s3nvmeDefaultrunning
-
Table 39 - Information - SAN

-

1.7.2.1 Root Volume

+
Table 65 - Information - FCP

+

1.8.2.1 Root Volume

- + +
Root VolumeStatusTotal SizeUsedAvailableDedupAggregate
SAN_rootonline20 MB7%18 MBNoPHARMAX_HQ_02_SSD_1
FCP_rootonline20.0 MB7%17.6 MBNocluster_04_SSD_1
+
Table 66 - Root Volume - FCP

+

1.8.2.2 Interfaces (Lifs)

+ + + + + + + + + + +
Data InterfaceStatusData ProtocolsAddressIs Home
lif_FCP_1840UPfcp20:07:00:50:56:b0:39:57Yes
lif_FCP_206UPfcp20:08:00:50:56:b0:39:57Yes
lif_FCP_2670UPfcp20:04:00:50:56:b0:39:57Yes
lif_FCP_2920UPfcp20:05:00:50:56:b0:39:57Yes
lif_FCP_7769UPfcp20:01:00:50:56:b0:39:57Yes
lif_FCP_7889UPfcp20:06:00:50:56:b0:39:57Yes
lif_FCP_8085UPnone172.23.4.106Yes
lif_FCP_8379UPfcp20:03:00:50:56:b0:39:57Yes
lif_FCP_8389UPfcp20:02:00:50:56:b0:39:57Yes
+
Table 67 - Data Network - FCP

+

1.8.2.3 Protocol Information

The following section provides a summary of the Vserver protocol information in FCP.

1.8.2.3.1 FCP Services Information
The following section provides the FCP Service Information in FCP.

+ + +
FCP WWNNStatus
20:00:00:50:56:b0:39:57Up
+
Table 68 - FCP Service - FCP

+

FCP Physical Adapter

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Node NameAdapterProtocolSpeedStatus
cluster-010afibre_channelautoUp
cluster-010bfibre_channelautoUp
cluster-010efibre_channelautoUp
cluster-010ffibre_channelautoUp
cluster-011afibre_channelautoUp
cluster-011bfibre_channelautoUp
cluster-020afibre_channelautoUp
cluster-020bfibre_channelautoUp
cluster-020efibre_channelautoUp
cluster-020ffibre_channelautoUp
cluster-021afibre_channelautoUp
cluster-021bfibre_channelautoUp
cluster-030afibre_channelautoUp
cluster-030bfibre_channelautoUp
cluster-030efibre_channelautoUp
cluster-030ffibre_channelautoUp
cluster-031afibre_channelautoUp
cluster-031bfibre_channelautoUp
cluster-040afibre_channelautoUp
cluster-040bfibre_channelautoUp
cluster-040efibre_channelautoUp
cluster-040ffibre_channelautoUp
cluster-041afibre_channelautoUp
cluster-041bfibre_channelautoUp
+
Table 69 - FCP Physical Adapter - PHARMAX-HQ

+

FCP Interfaces

+ + + + + + + + + +
Interface NameFCP WWPNNode NameHome Port
lif_FCP_776920:01:00:50:56:b0:39:57cluster-010a
lif_FCP_838920:02:00:50:56:b0:39:57cluster-010b
lif_FCP_267020:04:00:50:56:b0:39:57cluster-020b
lif_FCP_837920:03:00:50:56:b0:39:57cluster-020a
lif_FCP_292020:05:00:50:56:b0:39:57cluster-030a
lif_FCP_788920:06:00:50:56:b0:39:57cluster-030b
lif_FCP_184020:07:00:50:56:b0:39:57cluster-040a
lif_FCP_20620:08:00:50:56:b0:39:57cluster-040b
+
Table 70 - FCP Interface - FCP

+

1.8.3 ISCSI Vserver Configuration

The following section provides the configuration of the vserver ISCSI.

+ +
Vserver TypeAllowed ProtocolsDisallowed ProtocolsIPSpaceStatus
datanfs cifs fcp iscsi ndmp s3nvmeDefaultrunning
-
Table 40 - Root Volume - SAN

-

1.7.2.2 Storage Volumes

+
Table 71 - Information - ISCSI

+

1.8.3.1 Root Volume

+ + +
Root VolumeStatusTotal SizeUsedAvailableDedupAggregate
ISCSI_rootonline20.0 MB6%17.7 MBNocluster_03_SSD_1
+
Table 72 - Root Volume - ISCSI

+

1.8.3.2 Aggregate Resource Allocation

+ + + +
AggregateTypeSnapLock TypeAvailable
cluster_03_SSD_1ssdnon_snaplock60.4 GB
cluster_04_SSD_1ssdnon_snaplock42.9 GB
+
Table 73 - Aggregate Resource Allocation - ISCSI

+

1.8.3.3 Interfaces (Lifs)

+ + + + + + + + + + +
Data InterfaceStatusData ProtocolsAddressIs Home
lif_ISCSI_253UPiscsi192.168.6.102Yes
lif_ISCSI_4091UPiscsi192.168.6.101Yes
lif_ISCSI_4260UPiscsi192.168.12.102Yes
lif_ISCSI_4837UPnone172.23.4.100Yes
lif_ISCSI_6264UPiscsi192.168.12.100Yes
lif_ISCSI_6900UPiscsi192.168.6.100Yes
lif_ISCSI_7101UPiscsi192.168.12.101Yes
lif_ISCSI_8687UPiscsi192.168.6.103Yes
lif_ISCSI_8946UPiscsi192.168.12.103Yes
+
Table 74 - Data Network - ISCSI

+

1.8.3.4 Storage Volumes

- + +
VolumeStatusCapacityAvailableUsedAggregate
SQL_DATAonline13 GB2 GB84%PHARMAX_HQ_01_SSD_1
DBonline11.9 GB1.9 GB84%cluster_04_SSD_1
+
Table 75 - Volume - ISCSI

+
Health Check:

Best Practice: Ensure all volumes are below 95% usage to prevent capacity issues.

1.8.3.4.1 Per Volumes Export Policies
+ +
Volume NameExport Policy
DBdefault
-
Table 41 - Volume - SAN

-

1.7.2.3 Volumes Snapshot Configuration

+
Table 76 - Per Volume Export Policy - ISCSI

+

1.8.3.5 Volumes Snapshot Configuration

- +
VolumeSnapshot EnabledReserve SizeReserve AvailableUsedPolicy
SQL_DATAYes643 MB637 MB6 MBdefault
DBNo00196.0 KBnone
-
Table 42 - Volume SnapShot Configuration - SAN

-

1.7.2.4 Protocol Information

The following section provides a summary of the Vserver protocol information on SAN.

1.7.2.4.1 ISCSI Services
The following section provides the ISCSI Service Information on SAN.

+
Table 77 - Volume SnapShot Configuration - ISCSI

+

1.8.3.6 Protocol Information

The following section provides a summary of the Vserver protocol information in ISCSI.

1.8.3.6.1 ISCSI Services
The following section provides the ISCSI Service Information in ISCSI.

- - + +
IQN Nameiqn.1992-08.com.netapp:sn.5971f5526fe011f0aa34005056b06182:vs.3
Alias NameSAN
IQN Nameiqn.1992-08.com.netapp:sn.eb7e8829d2ff11f0bea5005056b09767:vs.6
Alias NameISCSI
Tcp Window Size131400
Max Cmds Per Session128
Max Conn Per Session4
Login Timeout15
StatusUp
-
Table 43 - ISCSI Service - SAN

-

ISCSI Interfaces

+
Table 78 - ISCSI Service - ISCSI

+

ISCSI Interfaces

- - - - -
Interface NameIP AddressPortStatus
PHARMAX-HQ-01_iscsia01192.168.6.613260Up
PHARMAX-HQ-01_iscsib01192.168.12.613260Up
PHARMAX-HQ-02_iscsia01192.168.6.623260Up
PHARMAX-HQ-02_iscsib01192.168.12.623260Up
-
Table 44 - ISCSI Interface - SAN

-
1.7.2.4.2 Lun Storage
The following section provides the Lun Storage Information on SAN.

+ + + + + + + + +
lif_ISCSI_253192.168.6.1023260Up
lif_ISCSI_4091192.168.6.1013260Up
lif_ISCSI_4260192.168.12.1023260Up
lif_ISCSI_6264192.168.12.1003260Up
lif_ISCSI_6900192.168.6.1003260Up
lif_ISCSI_7101192.168.12.1013260Up
lif_ISCSI_8687192.168.6.1033260Up
lif_ISCSI_8946192.168.12.1033260Up
+
Table 79 - ISCSI Interface - ISCSI

+
1.8.3.6.2 Lun Storage
The following section provides the Lun Storage Information in ISCSI.

- - - - + + + + - - - + + + - +
Lun NameSQL_DATA
Parent VolumeSQL_DATA
Path/vol/SQL_DATA/SQL_DATA
Serial NumberwpRkN]Yhbtn8
Lun NameDB
Parent VolumeDB
Path/vol/DB/DB
Serial Numberwp/Ie$ZKGTlF
Initiator GroupSQLLun
Home Node PHARMAX-HQ-01
Capacity10 GB
Available10 GB
Home Node cluster-04
Capacity10.0 GB
Available10.0 GB
Used0%
OS Typewindows_2008
Is ThinNo
Space AllocationEnabled
Space ReservationEnabled
Is MappedYes
StatusUp
StatusDown
-
Table 45 - Lun - SQL_DATA

-

Igroup Mapping

+
Table 80 - Lun - DB

+
Health Check:

Best Practice: Ensure that all LUNs are operational to maintain optimal storage connectivity.

Igroup Mapping

- - + + +
Igroup NameSQLLun
Typewindows
Protocolmixed
Initiatorsiqn.1991-05.com.microsoft:server-dc-01v.pharmax.local
Mapped LunSQL_DATA
Reporting NodesPHARMAX-HQ-01
PHARMAX-HQ-02
Mapped LunDB
Reporting NodesNone
+
Table 81 - Igroup - SQLLun

+

1.8.4 NFS Vserver Configuration

The following section provides the configuration of the vserver NFS.

+ +
Vserver TypeAllowed ProtocolsDisallowed ProtocolsIPSpaceStatus
datanfs cifs fcp iscsi ndmp s3nvmeDefaultrunning
-
Table 46 - Igroup - SQLLun

-

1.8 Replication Information

The following section provides a summary of the replication information on PHARMAX-HQ.

1.8.1 Cluster Replication Diagram

-NetApp Ontap Diagram +
Table 82 - Information - NFS

+

1.8.4.1 Root Volume

+ + +
Root VolumeStatusTotal SizeUsedAvailableDedupAggregate
NFS_rootonline20.0 MB7%17.6 MBNocluster_01_SSD_1
+
Table 83 - Root Volume - NFS

+

1.8.4.2 Interfaces (Lifs)

+ + + + + +
Data InterfaceStatusData ProtocolsAddressIs Home
lif_NFS_331UPnfs192.168.5.62Yes
lif_NFS_6545UPnfs192.168.5.61Yes
lif_NFS_7087UPnfs192.168.5.64Yes
lif_NFS_9802UPnfs192.168.5.63Yes
+
Table 84 - Data Network - NFS

+

1.8.4.3 Export Policies

+ + + + +
Policy NameRule IndexClient MatchProtocolRo RuleRw Rule
DAS10.0.0.0/0anyanynever
VM_DataStore10.0.0.0/0anyanyany
VM_DataStore2192.168.5.253nfs3, nfs4, nfsneverany
+
Table 85 - Export Policies - NFS

+

1.8.4.4 Storage Volumes

+ + + + + + +
VolumeStatusCapacityAvailableUsedAggregate
DASonline10.0 GB9.5 GB0%cluster_01_SSD_1
DAS_clone_515online1.1 GB1023.5 MB0%cluster_01_SSD_1
DATA1online20.0 GB19.0 GB0%cluster_04_SSD_1
DBs_destonline128.0 MB121.3 MB0%cluster_01_SSD_1
VM_DataStoreonline30.0 GB28.5 GB0%cluster_03_SSD_1
+
Table 86 - Volume - NFS

+
1.8.4.4.1 Per Volumes Export Policies
+ + + + + + +
Volume NameExport Policy
DASDAS
DAS_clone_515DAS
DATA1default
DBs_destdefault
VM_DataStoredefault
+
Table 87 - Per Volume Export Policy - NFS

+
1.8.4.4.2 Flexclone Volumes
+ + + + + + + + + + + +
VolumeDAS_clone_515
Parent VolumeDAS
Volume TypeRW
Parent Snapshotclone_DAS_clone_515.2025-12-21_214319.0
Space Reservenone
Space GuaranteeYes
Capacity1.1 GB
Available1.1 GB
Used480.0 KB
Aggregatecluster_01_SSD_1
+
Table 88 - Cloned Volumes - DAS_clone_515

+
Health Check:

Best Practice: Regularly monitor flexclone volumes to manage storage utilization effectively.

1.8.4.5 Volumes Snapshot Configuration

+ + + + + + +
VolumeSnapshot EnabledReserve SizeReserve AvailableUsedPolicy
DASYes512.0 MB510.0 MB2.0 MBdefault
DAS_clone_515Yes53.9 MB51.2 MB2.7 MBdefault
DATA1Yes1.0 GB1023.0 MB1.0 MBdefault
DBs_destNo6.4 MB6.2 MB188.0 KBnone
VM_DataStoreYes1.5 GB1.5 GB2.4 MBdefault
+
Table 89 - Volume SnapShot Configuration - NFS

+
Health Check:

Best Practice: Snapshots are enabled on volumes but there is no available snapshot reserve space. It is recommended to increase the snapshot reserve size to avoid snapshot failures.

1.8.4.5.1 HealthCheck - Volumes Snapshot
The following section provides the Vserver Volumes Snapshot HealthCheck in NFS.

+ + + +
Volume NameSnapshot NameCreated TimeUsed
DASclone_DAS_clone_515.2025-12-21_214319.012/21/2025 21:43:19200.0 KB
DAS_clone_515clone_DAS_clone_515.2025-12-21_214319.012/21/2025 21:43:19204.0 KB
+
Table 90 - HealthCheck - Volume Snapshot over 30 days - NFS

+

1.8.4.6 Protocol Information

The following section provides a summary of the Vserver protocol information in NFS.

1.8.4.6.1 NFS Services
The following section provides the NFS Service Information in NFS.

+ + +
Nfs v3Nfs v4Nfs v41General Access
EnabledEnabledEnabledYes
+
Table 91 - NFS Service - PHARMAX-HQ

+

NFS Volume Export

+ + + + +
Path NameExport Policy
/DASDAS
/vol/DASNone
/vol/DAS_clone_515None
+
Table 92 - NFS Service Volume Export - NFS

+

1.9 Replication Information

The following section provides a summary of the replication information in PHARMAX-HQ.

1.9.1 Cluster Replication Diagram

+NetApp Ontap Diagram
-
Image preview: Opens the image in a new tab to view it at full resolution.

1.8.2 Cluster Peer

The following section provides the Cluster Peer information on PHARMAX-HQ.

+

1.9.2 Cluster Peer

The following section provides the Cluster Peer information in PHARMAX-HQ.

- - +
Cluster PeerCluster NodesPeer AddressesCluster HealthIP SpaceStatus
PHARMAX-DRPHARMAX-DR-0110.10.36.14TrueDefaultavailable
PHARMAX-EDGEPHARMAX-EDGE-01172.23.9.14TrueDefaultavailable
PHARMAX-DRcluster-dr-01192.168.11.70YesDefaultavailable
-
Table 47 - Cluster Peer - PHARMAX-HQ

-

1.8.3 Vserver Peer

+
Table 93 - Cluster Peer - PHARMAX-HQ

+

1.9.3 Vserver Peer

- - + + +
VserverPeer VserverPeer ClusterApplicationsPeer State
NASNAS-EDGEPHARMAX-EDGEsnapmirror
flexcache
peered
SANSAN_DRPHARMAX-DRsnapmirror
flexcache
peered
CIFSNAS_DRPHARMAX-DRsnapmirror
flexcache
peered
ISCSINAS_DRPHARMAX-DRsnapmirrorpeered
NFSNAS_DRPHARMAX-DRsnapmirror
flexcache
peered
-
Table 48 - Peer - PHARMAX-HQ

-

1.8.3.1 SnapMirror Destinations

+
Table 94 - Peer - PHARMAX-HQ

+

1.9.3.1 SnapMirror Relationship

- - - - + + + + + + + - + + +
Destination VserverNAS-EDGE
Destination LocationNAS-EDGE:DATA
Source VserverNAS
Source LocationNAS:DATA
Source VserverCIFS
Source LocationCIFS:DATA
Destination VserverCIFS
Destination LocationCIFS:DATA_dest
Mirror Statesnapmirrored
Schedule--
Relationship TypeXDP
PolicyMirrorLatest
Policy Typeasync_mirror
StatusUnknown
Unhealthy ReasonNone
Lag Time1 days, 21 hrs, 53 mins, 1 secs
StatusIDLE
-
Table 49 - SnapMirror Destination (List-Destinations) - NAS-EDGE:DATA

+
Table 95 - SnapMirror relationship - CIFS:DATA

- - - - + + + + + + + + + + + + +
Destination VserverSAN_DR
Destination LocationSAN_DR:SQL_DATA_dest
Source VserverSAN
Source LocationSAN:SQL_DATA
Source VserverNAS_DR
Source LocationNAS_DR:DBs
Destination VserverNFS
Destination LocationNFS:DBs_dest
Mirror Statesnapmirrored
Schedule--
Relationship TypeXDP
PolicyMirrorLatest
Policy Typeasync_mirror
Unhealthy ReasonNone
Lag Time1 days, 21 hrs, 50 mins, 1 secs
StatusIDLE
+
Table 96 - SnapMirror relationship - NAS_DR:DBs

+

1.9.3.2 SnapMirror Destinations

+ + + + + + + + +
Destination VserverCIFS
Destination LocationCIFS:DATA_dest
Source VserverCIFS
Source LocationCIFS:DATA
Relationship TypeXDP
Policy Typeasync_mirror
StatusUnknown
+
Table 97 - SnapMirror Destination (List-Destinations) - CIFS:DATA_dest

+
Health Check:

Best Practice: Ensure that all SnapMirror relationships have a known status to maintain replication integrity.

+ + + + +
Destination VserverNAS_DR
Destination LocationNAS_DR:DB_dest2
Source VserverISCSI
Source LocationISCSI:DB
Relationship TypeXDP
Policy Typemirror_vault
Statusidle
-
Table 50 - SnapMirror Destination (List-Destinations) - SAN_DR:SQL_DATA_dest

-

1.9 Efficiency Information

The following section provides the Storage Efficiency Saving information on PHARMAX-HQ.

+
Table 98 - SnapMirror Destination (List-Destinations) - NAS_DR:DB_dest2

+

1.10 Efficiency Information

The following section provides the Storage Efficiency Saving information in PHARMAX-HQ.

- - + + + +
AggregateUsed %Capacity Tier UsedCompaction Saved %Deduplication Saved %Total Data Reduction
PHARMAX_HQ_01_SSD_138%00%0%10.99:1
PHARMAX_HQ_02_SSD_10%00%0%1.91:1
cluster_01_SSD_111%00%0%1.24:1
cluster_02_SSD_142%00%0%4.05:1
cluster_03_SSD_133%00%0%2.34:1
cluster_04_SSD_143%00%0%2.20:1
-
Table 51 - Storage Efficiency Savings - PHARMAX-HQ

-

1.9.1 Aggregate Total Efficiency

The following section provides the Aggregate Efficiency Saving information on PHARMAX-HQ.

+
Table 99 - Storage Efficiency Savings - PHARMAX-HQ

+

1.10.1 Aggregate Total Efficiency

The following section provides the Aggregate Efficiency Saving information in PHARMAX-HQ.

- - + + + +
AggregateLogical UsedPhysical UsedCompaction SavedData Reduction
PHARMAX_HQ_01_SSD_16 GB6 GB 1.00:1
PHARMAX_HQ_02_SSD_14 MB4 MB 1.00:1
cluster_01_SSD_116.6 MB16.6 MB--1.00:1
cluster_02_SSD_112.8 MB12.8 MB--1.00:1
cluster_03_SSD_15.6 MB5.6 MB--1.00:1
cluster_04_SSD_14.2 MB4.2 MB--1.00:1
-
Table 52 - Aggregate Efficiency Savings - PHARMAX-HQ

-

1.9.1.1 HealthCheck - Volume with Disabled Deduplication

The following table provides the Volume efficiency healthcheck Information on PHARMAX-HQ.

+
Table 100 - Aggregate Efficiency Savings - PHARMAX-HQ

+

1.10.1.1 HealthCheck - Volume with Disabled Deduplication

The following table provides the Volume efficiency healthcheck Information in PHARMAX-HQ.

- -
AggregateVolumes without Deduplication
PHARMAX_HQ_01_SSD_1DATA, SQL_DATA
-
Table 53 - HealthCheck - Volume without deduplication - PHARMAX-HQ

-

1.9.1.2 NAS Vserver Volume Deduplication

1.9.1.2.1 Volume Efficiency
+ + + +
cluster_01_SSD_1DAS, DAS_clone_515
cluster_03_SSD_1VM_DataStore
cluster_04_SSD_1DB, DATA1
+
Table 101 - HealthCheck - Volume without deduplication - PHARMAX-HQ

+
Health Check:

Best Practice: Ensure that deduplication is enabled on all volumes to maximize storage efficiency.

1.10.1.2 CIFS Vserver Volume Deduplication

+ + + + +
VolumeStateStatusSchedule Or PolicyProgress
DATADisabledidleautoIdle for 726:15:54
DATA_destEnabledidle-Idle for 45:53:27
Global_DocumentsDisabledidleautoIdle for 1411:48:56
+
Table 102 - Volume Deduplication - CIFS

+
Health Check:

Best Practice: Ensure that volume deduplication is enabled on volumes where data reduction is beneficial to optimize storage efficiency.

1.10.1.2.1 Volume Efficiency
- + + +
VolumeCapacityUsedSnapshot UsedTotal SavingsEffective UsedEfficiency Percent
DATA19 GB6 GB2 MB6 GB11 GB59.9%
DATA10.0 GB7.7 MB2.4 MB7.5 MB15.3 MB0.1%
DATA_dest121.6 MB356.0 KB188.0 KB168.0 KB524.0 KB0.4%
Global_Documents20.0 GB513.1 MB2.4 MB512.9 MB1.0 GB5.0%
-
Table 54 - Volume Efficiency Savings - NAS

-

1.9.1.3 SAN Vserver Volume Deduplication

1.9.1.3.1 Volume Efficiency
- - +
Table 103 - Volume Efficiency Savings - CIFS

+

1.10.1.3 ISCSI Vserver Volume Deduplication

VolumeCapacityUsedSnapshot UsedTotal SavingsEffective UsedEfficiency Percent
SQL_DATA12 GB10 GB6 MB10 GB20 GB168.3%
+ +
VolumeStateStatusSchedule Or PolicyProgress
DBDisabledidleautoIdle for 1413:08:28
-
Table 55 - Volume Efficiency Savings - SAN

-

1.10 Security Information

The following section provides the Security related information on PHARMAX-HQ.

1.10.1 PHARMAX-HQ Vserver Local User

The following section provides the Local User information on PHARMAX-HQ.

+
Table 104 - Volume Deduplication - ISCSI

+
Health Check:

Best Practice: Ensure that volume deduplication is enabled on volumes where data reduction is beneficial to optimize storage efficiency.

1.10.1.3.1 Volume Efficiency
+ + +
VolumeCapacityUsedSnapshot UsedTotal SavingsEffective UsedEfficiency Percent
DB11.9 GB10.0 GB196.0 KB10.0 GB20.1 GB168.3%
+
Table 105 - Volume Efficiency Savings - ISCSI

+

1.10.1.4 NFS Vserver Volume Deduplication

+ + + + + +
VolumeStateStatusSchedule Or PolicyProgress
DASDisabledidleautoIdle for 1051:42:04
DAS_clone_515DisabledidleautoIdle for 1051:42:04
DBs_destEnabledidle-Idle for 45:49:39
VM_DataStoreDisabledidleautoIdle for 1413:11:35
+
Table 106 - Volume Deduplication - NFS

+
Health Check:

Best Practice: Ensure that volume deduplication is enabled on volumes where data reduction is beneficial to optimize storage efficiency.

1.10.1.4.1 Volume Efficiency
+ + + + + + +
VolumeCapacityUsedSnapshot UsedTotal SavingsEffective UsedEfficiency Percent
DAS9.5 GB940.0 KB2.0 MB750.2 KB1.7 MB0.0%
DAS_clone_5151.0 GB480.0 KB2.7 MB549.8 KB1.0 MB0.1%
DATA119.0 GB736.0 KB1.0 MB589.1 KB1.3 MB0.0%
DBs_dest121.6 MB368.0 KB188.0 KB180.0 KB548.0 KB0.4%
VM_DataStore28.5 GB1.0 MB2.4 MB798.0 KB1.8 MB0.0%
+
Table 107 - Volume Efficiency Savings - NFS

+

1.11 Security Information

The following section provides the Security related information in PHARMAX-HQ.

1.11.1 PHARMAX-HQ Vserver Local User

The following section provides the Local User information in PHARMAX-HQ.

@@ -616,117 +1313,159 @@
User NameApplicationAuth MethodRole NameLocked
adminAmqppasswordadminNo
adminConsolepasswordadminNo
adminSshpasswordadminNo
autosupportConsolepasswordautosupportNo
-
Table 56 - Security Local Users - PHARMAX-HQ

-

1.10.2 NAS Vserver Local User

The following section provides the Local User information on NAS.

+
Table 108 - Security Local Users - PHARMAX-HQ

+

1.11.2 CIFS Vserver Local User

The following section provides the Local User information in CIFS.

- - - + + +
User NameApplicationAuth MethodRole NameLocked
vsadminHttppasswordvsadminYes
vsadminOntapipasswordvsadminYes
vsadminSshpasswordvsadminYes
vsadminHttppasswordvsadminNo
vsadminOntapipasswordvsadminNo
vsadminSshpasswordvsadminNo
-
Table 57 - Security Local Users - NAS

-

1.10.3 SAN Vserver Local User

The following section provides the Local User information on SAN.

+
Table 109 - Security Local Users - CIFS

+

1.11.3 FCP Vserver Local User

The following section provides the Local User information in FCP.

+ + + + +
User NameApplicationAuth MethodRole NameLocked
vsadminHttppasswordvsadminNo
vsadminOntapipasswordvsadminNo
vsadminSshpasswordvsadminNo
+
Table 110 - Security Local Users - FCP

+

1.11.4 ISCSI Vserver Local User

The following section provides the Local User information in ISCSI.

+ + + + +
User NameApplicationAuth MethodRole NameLocked
vsadminHttppasswordvsadminNo
vsadminOntapipasswordvsadminNo
vsadminSshpasswordvsadminNo
+
Table 111 - Security Local Users - ISCSI

+

1.11.5 NFS Vserver Local User

The following section provides the Local User information in NFS.

User NameApplicationAuth MethodRole NameLocked
vsadminHttppasswordvsadminYes
vsadminOntapipasswordvsadminYes
vsadminSshpasswordvsadminYes
-
Table 58 - Security Local Users - SAN

-

1.10.4 Vserver SSL Certificate

The following section provides the Vserver SSL Certificates information on PHARMAX-HQ.

+
Table 112 - Security Local Users - NFS

+

1.11.6 Vserver SSL Certificate

The following section provides the Vserver SSL Certificates information in PHARMAX-HQ.

- - - -
Common NameCertificate AuthorityClient AuthServer AuthSerial NumberVserver
NASNASNoYes185C5D33114F6D5DNAS
PHARMAX-HQPHARMAX-HQNoYes1857FFF41883F7A4PHARMAX-HQ
SANSANNoYes18580D938FAA5CCBSAN
-
Table 59 - Per Vserver SSL - PHARMAX-HQ

-

1.10.4.1 Vserver SSL Certificate Details

+ + + + + +
CIFSCIFSNoYes187ECA83103365B0CIFS
FCPFCPNoYes188366D9C772700CFCP
ISCSIISCSINoYes187EC5E9C5482D4AISCSI
CIFSCIFSNoYes187EC4E124A07BFDNFS
PHARMAX-HQPHARMAX-HQNoYes187EB31560CB29BDPHARMAX-HQ
+
Table 113 - Per Vserver SSL - PHARMAX-HQ

+

1.11.6.1 Vserver SSL Certificate Details

- - - -
Common NameProtocolHash FunctionSerial NumberExpirationVserver
NASsslSHA256185C5D33114F6D5D8/16/2026NAS
PHARMAX-HQsslSHA2561857FFF41883F7A48/2/2026PHARMAX-HQ
SANsslSHA25618580D938FAA5CCB8/2/2026SAN
-
Table 60 - SSL Detailed - PHARMAX-HQ

-

1.10.5 Aggregate Encryption (NAE)

The following section provides the Aggregate Encryption (NAE) information on PHARMAX-HQ.

+ + + + + +
CIFSsslSHA256187ECA83103365B012/6/2026CIFS
FCPsslSHA256188366D9C772700C12/21/2026FCP
ISCSIsslSHA256187EC5E9C5482D4A12/6/2026ISCSI
CIFSsslSHA256187EC4E124A07BFD12/6/2026NFS
PHARMAX-HQsslSHA256187EB31560CB29BD12/6/2026PHARMAX-HQ
+
Table 114 - SSL Detailed - PHARMAX-HQ

+

1.11.7 Aggregate Encryption (NAE)

The following section provides the Aggregate Encryption (NAE) information in PHARMAX-HQ.

- - - - -
AggregateAggregate EncryptionVolume CountState
aggr0_PHARMAX_HQ_01No1Online
aggr0_PHARMAX_HQ_02No1Online
PHARMAX_HQ_01_SSD_1No2Online
PHARMAX_HQ_02_SSD_1No2Online
-
Table 61 - Aggregate Encryption (NAE) - PHARMAX-HQ

-

1.10.5.1 Volume Encryption (NVE)

+ + + + + + + + +
aggr0_cluster_01No1Online
aggr0_cluster_02No1Online
aggr0_cluster_03No1Online
aggr0_cluster_04No1Online
cluster_01_SSD_1No5Online
cluster_02_SSD_1No2Online
cluster_03_SSD_1No3Online
cluster_04_SSD_1No3Online
+
Table 115 - Aggregate Encryption (NAE) - PHARMAX-HQ

+

1.11.7.1 Volume Encryption (NVE)

- - -
NameAggregateEncryptedState
DATAPHARMAX_HQ_01_SSD_1NoOnline
SQL_DATAPHARMAX_HQ_01_SSD_1NoOnline
-
Table 62 - Volume Encryption (NVE) - PHARMAX-HQ

-

1.10.6 Snaplock Compliance Clock

The following section provides the Snaplock Compliance Clock information on PHARMAX-HQ.

+ + + + + + + + + +
DATAcluster_02_SSD_1NoOnline
DATA_destcluster_03_SSD_1NoOnline
Global_Documentscluster_02_SSD_1NoOnline
DBcluster_04_SSD_1NoOnline
DAScluster_01_SSD_1NoOnline
DAS_clone_515cluster_01_SSD_1NoOnline
DATA1cluster_04_SSD_1NoOnline
DBs_destcluster_01_SSD_1NoOnline
VM_DataStorecluster_03_SSD_1NoOnline
+
Table 116 - Volume Encryption (NVE) - PHARMAX-HQ

+

1.11.8 Snaplock Compliance Clock

The following section provides the Snaplock Compliance Clock information in PHARMAX-HQ.

- - + + + +
Node NameCompliance Clock
PHARMAX-HQ-01ComplianceClock is not configured.
PHARMAX-HQ-02ComplianceClock is not configured.
cluster-01Sun Feb 01 23:20:10 AST 2026 -04:00
cluster-02Sun Feb 01 23:19:25 AST 2026 -04:00
cluster-03Sun Feb 01 23:19:16 AST 2026 -04:00
cluster-04Sun Feb 01 23:20:12 AST 2026 -04:00
-
Table 63 - Snaplock Compliance Clock - PHARMAX-HQ

-

1.10.6.1 Aggregate Snaplock Type

+
Table 117 - Snaplock Compliance Clock - PHARMAX-HQ

+

1.11.8.1 Aggregate Snaplock Type

- - + + + +
Aggregate NameSnaplock Type
PHARMAX_HQ_01_SSD_1Non_Snaplock
PHARMAX_HQ_02_SSD_1Non_Snaplock
cluster_01_SSD_1Non_Snaplock
cluster_02_SSD_1Non_Snaplock
cluster_03_SSD_1Non_Snaplock
cluster_04_SSD_1Non_Snaplock
-
Table 64 - Aggregate Snaplock Type - PHARMAX-HQ

-
1.10.6.1.1 Volume Snaplock Type
+
Table 118 - Aggregate Snaplock Type - PHARMAX-HQ

+
1.11.8.1.1 Volume Snaplock Type
- - -
VolumeAggregateSnaplock Type
DATAPHARMAX_HQ_01_SSD_1Non_Snaplock
SQL_DATAPHARMAX_HQ_01_SSD_1Non_Snaplock
-
Table 65 - Volume Snaplock Type - PHARMAX-HQ

-

1.11 System Configuration Information

The following section provides the Cluster System Configuration on PHARMAX-HQ.

1.11.1 System Image Configuration

+ + + + + + + + + +
DATAcluster_02_SSD_1Non_Snaplock
DATA_destcluster_03_SSD_1Non_Snaplock
Global_Documentscluster_02_SSD_1Non_Snaplock
DBcluster_04_SSD_1Non_Snaplock
DAScluster_01_SSD_1Non_Snaplock
DAS_clone_515cluster_01_SSD_1Non_Snaplock
DATA1cluster_04_SSD_1Non_Snaplock
DBs_destcluster_01_SSD_1Non_Snaplock
VM_DataStorecluster_03_SSD_1Non_Snaplock
+
Table 119 - Volume Snaplock Type - PHARMAX-HQ

+

1.12 System Configuration Information

The following section provides the Cluster System Configuration in PHARMAX-HQ.

1.12.1 System Image Configuration

- - - - + + + +
NodeLocationIs CurrentIs DefaultInstall TimeVersion
PHARMAX-HQ-01image1YesYes08/02/2025 14:35:489.16.1P4
PHARMAX-HQ-01image2NoNo08/02/2025 13:54:169.15.1P11
PHARMAX-HQ-02image1YesYes08/02/2025 14:37:089.16.1P4
PHARMAX-HQ-02image2NoNo08/02/2025 13:56:069.15.1P11
cluster-01image1YesYes--9.18.1RC1
cluster-02image1YesYes--9.18.1RC1
cluster-03image1YesYes--9.18.1RC1
cluster-04image1YesYes--9.18.1RC1
-
Table 66 - System Image - PHARMAX-HQ

-

1.11.2 System Web Service

+
Table 120 - System Image - PHARMAX-HQ

+

1.12.2 System Web Service

- - + + + +
NodeHttp EnabledHttp PortHttps PortExternalStatusStatus Code
PHARMAX-HQ-01No80443YesOnline200
PHARMAX-HQ-02No80443YesOnline200
cluster-01No80443YesOnline200
cluster-02No80443YesOnline200
cluster-03No80443YesOnline200
cluster-04No80443YesOnline200
-
Table 67 - System Web Service - PHARMAX-HQ

-

1.11.3 DNS Configuration

+
Table 121 - Web Service - PHARMAX-HQ

+

1.12.3 DNS Configuration

- - + +
VserverDns StateDomainsName ServersTimeout/s
NASEnabledpharmax.local192.168.5.12
PHARMAX-HQEnabledpharmax.local192.168.5.12
CIFSEnabledpharmax.local192.168.5.12
PHARMAX-HQEnabledpharmax.local192.168.5.12
-
Table 68 - System DNS Configuration - PHARMAX-HQ

-

1.11.4 Configuration Backup Setting

+
Table 122 - DNS Configuration - PHARMAX-HQ

+
Health Check:

Best Practice: It is recommended to configure at least two DNS name servers for redundancy and reliability.

1.12.4 Configuration Backup Setting

UrlUsername
Not ConfiguredNot Configured
-
Table 69 - System Configuration Backup Setting - PHARMAX-HQ

-

1.11.5 EMS Configuration

The following section provides the EMS Configuration on PHARMAX-HQ.

+
Table 123 - Configuration Backup Setting - PHARMAX-HQ

+
Health Check:

Best Practice: It is recommended to backup the system configuration to a remote location to ensure recovery in case of failures.

1.12.5 EMS Configuration

The following section provides the EMS Configuration in PHARMAX-HQ.

- - - - - -
NameEmail DestinationsSnmp TraphostSnmp CommunitySyslogSyslog Facility
allevents-----
asup-----
criticals-----
pager-----
traphost-----
-
Table 70 - System EMS Configuration Setting - PHARMAX-HQ

-

1.11.5.1 Audit Settings

The following section provides information about Audit Setting from PHARMAX-HQ.

+ + + + + +
allevents----------
asup----------
criticals----------
pager----------
traphost----------
+
Table 124 - EMS Configuration Setting - PHARMAX-HQ

+
Health Check:

Best Practice: It is recommended to configure at least one EMS destination (Email, SNMP, or Syslog) to ensure proper monitoring and alerting of system events.

1.12.5.1 Audit Settings

The following section provides information about Audit Setting from PHARMAX-HQ.

Enable HTTP Get requestNo
Enable ONTAPI Get requestNo
Enable CLI Get requestNo
-
Table 71 - Audit Settings - PHARMAX-HQ

-

1.11.6 System Timezone Configuration

The following section provides the System Timezone Configuration on PHARMAX-HQ.

+
Table 125 - Audit Settings - PHARMAX-HQ

+

1.12.6 Timezone Configuration

The following section provides the Timezone Configuration in PHARMAX-HQ.

- +
TimezoneTimezone UTCTimezone VersionCurrent Time
America/Puerto_Rico-04002024a08/22/2025 15:31:34
America/Puerto_Rico-04002024a02/03/2026 17:17:16
-
Table 72 - System TimeZone - PHARMAX-HQ

-

1.11.6.1 NTP Configuration

+
Table 126 - TimeZone - PHARMAX-HQ

+

1.12.6.1 NTP Configuration

- +
Server NameNTP VersionPreferredAuthentication Enabled
192.168.5.1AutoNoNo
192.168.5.1AutoNoNo
-
Table 73 - System Network Time Protocol - PHARMAX-HQ

-
-

+
Table 127 - Network Time Protocol - PHARMAX-HQ

+
Health Check:

Best Practice: It is recommended to configure multiple NTP servers for redundancy and reliability.

+

\ No newline at end of file diff --git a/Src/Private/Get-AbrOntapDiskAssign.ps1 b/Src/Private/Get-AbrOntapDiskAssign.ps1 index d459fab..a4654a2 100755 --- a/Src/Private/Get-AbrOntapDiskAssign.ps1 +++ b/Src/Private/Get-AbrOntapDiskAssign.ps1 @@ -26,8 +26,12 @@ function Get-AbrOntapDiskAssign { try { $NodeDiskCount = Get-NcDisk -Controller $Array | ForEach-Object { $_.DiskOwnershipInfo.HomeNodeName } | Group-Object if ($NodeDiskCount) { + $ChartData = @() + $OwnerName = @() $OutObj = @() foreach ($Disks in $NodeDiskCount) { + $OwnerName += $Disks.Name + $ChartData += $Disks.Count $inObj = [ordered] @{ 'Node' = $Disks.Name 'Disk Count' = $Disks | Select-Object -ExpandProperty Count @@ -44,6 +48,16 @@ function Get-AbrOntapDiskAssign { } $OutObj | Table @TableParams } + try { + $Chart = New-BarChart -Values $ChartData -Labels $OwnerName -Title 'Disk Assignment' -EnableLegend -LegendOrientation Horizontal -LegendAlignment UpperCenter -Width 600 -Height 600 -Format base64 -LabelYAxis 'Disk Count' -LabelXAxis 'Nodes' -TitleFontSize 20 -TitleFontBold -AreaOrientation Vertical -EnableCustomColorPalette -CustomColorPalette @('#395879', '#59779a', '#7b98bc', '#9dbae0', '#c0ddff') -AxesMarginsTop 0.5 + if ($Chart) { + Section -Style NOTOCHeading5 -ExcludeFromTOC 'Per Node Disk Assignment - Chart' { + Image -Text 'Per Node Disk Assignment - Chart' -Align 'Center' -Percent 100 -Base64 $Chart + } + } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message + } } catch { Write-PScriboMessage -IsWarning $_.Exception.Message } diff --git a/Src/Private/Get-AbrOntapEfficiencyAggr.ps1 b/Src/Private/Get-AbrOntapEfficiencyAggr.ps1 index e1beaf6..a1d7a0e 100755 --- a/Src/Private/Get-AbrOntapEfficiencyAggr.ps1 +++ b/Src/Private/Get-AbrOntapEfficiencyAggr.ps1 @@ -55,10 +55,10 @@ function Get-AbrOntapEfficiencyAggr { $OutObj | Table @TableParams } try { + $OutObj = @() $Data = Get-NcAggr -Controller $Array | Where-Object { $_.AggrRaidAttributes.HasLocalRoot -ne 'True' } $Savingfilter = (Get-NcAggrEfficiency -Controller $Array | Select-Object -ExpandProperty AggrEfficiencyAdditionalDetailsInfo).NumberOfSisDisabledVolumes | Measure-Object -Sum if ($Data -and $Savingfilter.Sum -gt 0 -and $Healthcheck.Storage.Efficiency) { - $OutObj = @() foreach ($Item in $Data) { try { $Saving = (Get-NcAggrEfficiency -Aggregate $Item.Name -Controller $Array | Select-Object -ExpandProperty AggrEfficiencyAdditionalDetailsInfo).NumberOfSisDisabledVolumes diff --git a/Src/Private/Get-AbrOntapRepRelations.ps1 b/Src/Private/Get-AbrOntapRepRelations.ps1 index 6662e66..f880bb3 100755 --- a/Src/Private/Get-AbrOntapRepRelations.ps1 +++ b/Src/Private/Get-AbrOntapRepRelations.ps1 @@ -38,7 +38,7 @@ function Get-AbrOntapRepRelationship { 'Destination Vserver' = $Item.DestinationVserver 'Destination Location' = $Item.DestinationLocation 'Mirror State' = $Item.MirrorState - 'Schedule' = ${Item}?.Schedule.toUpper() + 'Schedule' = ${Item}?.Schedule?.toUpper() 'Relationship Type' = switch ($Item.RelationshipType) { 'extended_data_protection' { 'XDP' } 'data_protection' { 'DP' } @@ -51,7 +51,7 @@ function Get-AbrOntapRepRelationship { 'Policy Type' = $Item.PolicyType 'Unhealthy Reason' = ($Null -eq $Item.UnhealthyReason) ? 'None': $Item.UnhealthyReason 'Lag Time' = $lagtime - 'Status' = ${Item}?.Status.toUpper() + 'Status' = ${Item}?.Status?.toUpper() } $ReplicaObj = [pscustomobject](ConvertTo-HashToYN $inObj) diff --git a/Src/Private/Get-AbrOntapStorageAGGR.ps1 b/Src/Private/Get-AbrOntapStorageAGGR.ps1 index 84066d2..0d13461 100755 --- a/Src/Private/Get-AbrOntapStorageAGGR.ps1 +++ b/Src/Private/Get-AbrOntapStorageAGGR.ps1 @@ -27,9 +27,15 @@ function Get-AbrOntapStorageAGGR { try { $ObjectData = Get-NcAggr -Controller $Array if ($ObjectData) { + $ChartData = @() + $AggrName = @() $ObjectDataInfo = @() foreach ($Data in $ObjectData) { try { + if (-not (Get-NcAggr -Name $Data.Name -Controller $Array).AggrRaidAttributes.IsRootAggregate) { + $AggrName += $Data.Name + $ChartData += , @([math]::Round((($Data.Totalsize - $Data.Available) / $Data.TotalSize * 100), 0), [math]::Round(($Data.Available / $Data.TotalSize) * 100, 0)) + } $AggrOwner = (Get-NcAggr -Name $Data.Name ).AggrOwnershipAttributes $inObj = [Ordered]@{ 'Name' = $Data.Name @@ -39,7 +45,7 @@ function Get-AbrOntapStorageAGGR { 'Available' = ($Data.Available | ConvertTo-FormattedNumber -ErrorAction SilentlyContinue -NumberFormatString 0.0 -Type Datasize) ?? '--' 'Used' = (($Data.Totalsize - $Data.Available ) | ConvertTo-FormattedNumber -ErrorAction SilentlyContinue -NumberFormatString 0.0 -Type Datasize) ?? '--' 'Disk Count' = $Data.Disks - 'Root' = ((Get-NcAggr -Name $Data.Name -Controller $Array | ForEach-Object { $_.AggrRaidAttributes.HasLocalRoot }) -eq 'False') ? 'No': 'Yes' + 'Root' = ((Get-NcAggr -Name $Data.Name -Controller $Array).AggrRaidAttributes.IsRootAggregate) ? 'Yes': 'No' 'Raid Type' = (($Data.RaidType.Split(',')[0]).ToUpper()) ?? '--' 'Raid Size' = $Data.RaidSize 'Volumes in Aggregate' = $Data.Volumes @@ -104,6 +110,12 @@ function Get-AbrOntapStorageAGGR { BlankLine } } + $Chart = New-StackedBar -Values $ChartData -Labels $AggrName -LegendCategories @('Used', 'Free') -Title 'Aggregates Usage' -EnableLegend -LegendOrientation Horizontal -LegendAlignment UpperCenter -Width 600 -Height 600 -Format base64 -LabelYAxis '%' -LabelXAxis 'Aggregates' -TitleFontSize 20 -TitleFontBold -AreaOrientation Horizontal -EnableCustomColorPalette -CustomColorPalette @('#7b98bc', '#c0ddff') + if ($Chart) { + Section -Style NOTOCHeading4 -ExcludeFromTOC 'Aggragate Usage - Chart' { + Image -Text 'Aggragate Usage - Chart' -Align 'Center' -Percent 100 -Base64 $Chart + } + } } } catch { Write-PScriboMessage -IsWarning $($_.Exception.Message) diff --git a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 index 461d964..0f832d9 100755 --- a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 +++ b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 @@ -51,7 +51,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { if ($Options.UpdateCheck) { Write-Host ' - Getting dependency information:' # Check the version of the dependency modules - $ModuleArray = @('Diagrammer.Core') + $ModuleArray = @('AsBuiltReport.Core', 'Diagrammer.Core', 'NetApp.ONTAP') foreach ($Module in $ModuleArray) { try { @@ -217,8 +217,12 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { Get-AbrOntapDiskAssign $Nodes = Get-NcNode -Controller $Array foreach ($Node in $Nodes) { - Section -ExcludeFromTOC -Style NOTOCHeading5 $Node { - Get-AbrOntapDiskOwner -Node $Node + try { + Section -ExcludeFromTOC -Style NOTOCHeading5 $Node { + Get-AbrOntapDiskOwner -Node $Node + } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } @@ -293,8 +297,12 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { BlankLine $Nodes = Get-NcNode -Controller $Array foreach ($Node in $Nodes) { - Section -Style Heading5 "$Node Ports" { - Get-AbrOntapNetworkPort -Node $Node + try { + Section -Style Heading5 "$Node Ports" { + Get-AbrOntapNetworkPort -Node $Node + } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } @@ -304,10 +312,14 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { BlankLine $Nodes = Get-NcNode -Controller $Array foreach ($Node in $Nodes) { - if (Get-NcNetPortIfgrp -Node $Node -Controller $Array) { - Section -Style Heading4 "$Node IFGRP" { - Get-AbrOntapNetworkIfgrp -Node $Node + try { + if (Get-NcNetPortIfgrp -Node $Node -Controller $Array) { + Section -Style Heading4 "$Node IFGRP" { + Get-AbrOntapNetworkIfgrp -Node $Node + } } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } @@ -318,10 +330,14 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { BlankLine $Nodes = Get-NcNode -Controller $Array foreach ($Node in $Nodes) { - if (Get-NcNetPortVlan -Node $Node -Controller $Array) { - Section -Style Heading4 "$Node Vlans" { - Get-AbrOntapNetworkVlan -Node $Node + try { + if (Get-NcNetPortVlan -Node $Node -Controller $Array) { + Section -Style Heading4 "$Node Vlans" { + Get-AbrOntapNetworkVlan -Node $Node + } } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } @@ -339,17 +355,21 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { } $Vservers = Get-NcVserver -Controller $Array | Where-Object { $_.VserverType -ne 'node' -and $_.VserverType -ne 'system' -and $_.Vserver -notin $Options.Exclude.Vserver } | Select-Object -ExpandProperty Vserver foreach ($SVM in $Vservers) { - if (Get-NcNetRoute -VserverContext $SVM -Controller $Array) { - Section -Style Heading4 "$SVM Vserver Routes" { - Paragraph "The following section provides the Routes information in $($ClusterInfo.ClusterName)." - BlankLine - Get-AbrOntapNetworkRoute -Vserver $SVM - if ($InfoLevel.Network -ge 2) { - Section -Style Heading5 'Network Interface Routes' { - Get-AbrOntapNetworkRouteLif -Vserver $SVM + try { + if (Get-NcNetRoute -VserverContext $SVM -Controller $Array) { + Section -Style Heading4 "$SVM Vserver Routes" { + Paragraph "The following section provides the Routes information in $($ClusterInfo.ClusterName)." + BlankLine + Get-AbrOntapNetworkRoute -Vserver $SVM + if ($InfoLevel.Network -ge 2) { + Section -Style Heading5 'Network Interface Routes' { + Get-AbrOntapNetworkRouteLif -Vserver $SVM + } } } } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } Section -Style Heading4 'Network Interfaces' { @@ -372,299 +392,303 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { BlankLine $Vservers = Get-NcVserver -Controller $Array | Where-Object { $_.VserverType -eq 'data' -and $_.Vserver -notin $Options.Exclude.Vserver } | Select-Object -ExpandProperty Vserver foreach ($SVM in $Vservers) { - Section -Style Heading3 "$SVM Vserver Configuration" { - Paragraph "The following section provides the configuration of the vserver $($SVM)." - BlankLine - Get-AbrOntapVserverSummary -Vserver $SVM + try { + Section -Style Heading3 "$SVM Vserver Configuration" { + Paragraph "The following section provides the configuration of the vserver $($SVM)." + BlankLine + Get-AbrOntapVserverSummary -Vserver $SVM - if (Get-NcNetInterface -Controller $Array | Where-Object { $_.Role -eq 'data' -and $_.Vserver -notin $options.Exclude.Vserver -and $_.Vserver -eq $SVM }) { - Section -Style Heading4 'Interfaces (Lifs)' { - Get-AbrOntapVserverNetworkInterface -Vserver $SVM + if (Get-NcNetInterface -Controller $Array | Where-Object { $_.Role -eq 'data' -and $_.Vserver -notin $options.Exclude.Vserver -and $_.Vserver -eq $SVM }) { + Section -Style Heading4 'Interfaces (Lifs)' { + Get-AbrOntapVserverNetworkInterface -Vserver $SVM + } } - } - if ($InfoLevel.Vserver -ge 2) { - if (Get-NcVol -Controller $Array | Select-Object -ExpandProperty VolumeQosAttributes) { - Section -Style Heading4 'Volumes QoS Policy' { - Paragraph "The following section provides the Vserver QoS Configuration in $($ClusterInfo.ClusterName)." - Section -Style Heading5 'Volumes Fixed QoS Policy' { - Get-AbrOntapVserverVolumesQosGPFixed - } - Section -Style Heading5 'Volumes Adaptive QoS Policy' { - Get-AbrOntapVserverVolumesQosGPAdaptive + if ($InfoLevel.Vserver -ge 2) { + if (Get-NcVol -Controller $Array | Select-Object -ExpandProperty VolumeQosAttributes) { + Section -Style Heading4 'Volumes QoS Policy' { + Paragraph "The following section provides the Vserver QoS Configuration in $($ClusterInfo.ClusterName)." + Section -Style Heading5 'Volumes Fixed QoS Policy' { + Get-AbrOntapVserverVolumesQosGPFixed + } + Section -Style Heading5 'Volumes Adaptive QoS Policy' { + Get-AbrOntapVserverVolumesQosGPAdaptive + } } } } - } - if (Get-NcExportRule -VserverContext $SVM -Controller $Array) { - Section -Style Heading4 'Export Policies' { - Get-AbrOntapVserverExportPolicy -Vserver $SVM + if (Get-NcExportRule -VserverContext $SVM -Controller $Array) { + Section -Style Heading4 'Export Policies' { + Get-AbrOntapVserverExportPolicy -Vserver $SVM + } } - } - if (Get-NcVol -VserverContext $SVM -Controller $Array | Where-Object { $_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' }) { - Section -Style Heading4 'Storage Volumes' { - Get-AbrOntapVserverVolume -Vserver $SVM - if ((Get-NcVol -VserverContext $SVM -Controller $Array | Where-Object { $_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' } | Select-Object -ExpandProperty VolumeExportAttributes) ) { - Section -Style Heading5 'Per Volumes Export Policies' { - Get-AbrOntapVserverVolumesExportPolicy -Vserver $SVM + if (Get-NcVol -VserverContext $SVM -Controller $Array | Where-Object { $_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' }) { + Section -Style Heading4 'Storage Volumes' { + Get-AbrOntapVserverVolume -Vserver $SVM + if ((Get-NcVol -VserverContext $SVM -Controller $Array | Where-Object { $_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' } | Select-Object -ExpandProperty VolumeExportAttributes) ) { + Section -Style Heading5 'Per Volumes Export Policies' { + Get-AbrOntapVserverVolumesExportPolicy -Vserver $SVM + } } - } - if ($InfoLevel.Vserver -ge 2) { - if (Get-NcVol -VserverContext $SVM -Controller $Array | Select-Object -ExpandProperty VolumeQosAttributes) { - Section -Style Heading5 'Per Volumes QoS Policies' { - Get-AbrOntapVserverVolumesQosSetting -Vserver $SVM + if ($InfoLevel.Vserver -ge 2) { + if (Get-NcVol -VserverContext $SVM -Controller $Array | Select-Object -ExpandProperty VolumeQosAttributes) { + Section -Style Heading5 'Per Volumes QoS Policies' { + Get-AbrOntapVserverVolumesQosSetting -Vserver $SVM + } } } - } - if (Get-NcVol -VserverContext $SVM -Controller $Array | Where-Object { $_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' -and $_.VolumeStateAttributes.IsFlexgroup -eq 'True' }) { - Section -Style Heading4 'FlexGroup Volumes' { - Get-AbrOntapVserverVolumesFlexgroup -Vserver $SVM + if (Get-NcVol -VserverContext $SVM -Controller $Array | Where-Object { $_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' -and $_.VolumeStateAttributes.IsFlexgroup -eq 'True' }) { + Section -Style Heading4 'FlexGroup Volumes' { + Get-AbrOntapVserverVolumesFlexgroup -Vserver $SVM + } } - } - if (Get-NcVolClone -VserverContext $SVM -Controller $Array) { - Section -Style Heading4 'Flexclone Volumes' { - Get-AbrOntapVserverVolumesFlexclone -Vserver $SVM + if (Get-NcVolClone -VserverContext $SVM -Controller $Array) { + Section -Style Heading4 'Flexclone Volumes' { + Get-AbrOntapVserverVolumesFlexclone -Vserver $SVM + } } - } - if ((Get-NcFlexcacheConnectedCache -VserverContext $SVM -Controller $Array) -or ((Get-NcFlexcache -Controller $Array).CacheVolume).count -gt 0) { - Section -Style Heading4 'Flexcache Volumes' { - Get-AbrOntapVserverVolumesFlexcache -Vserver $SVM + if ((Get-NcFlexcacheConnectedCache -VserverContext $SVM -Controller $Array) -or ((Get-NcFlexcache -Controller $Array).CacheVolume).count -gt 0) { + Section -Style Heading4 'Flexcache Volumes' { + Get-AbrOntapVserverVolumesFlexcache -Vserver $SVM + } } } - } - if (Get-NcVol -VserverContext $SVM -Controller $Array | Where-Object { $_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' } | Get-NcSnapshot -Controller $Array) { - Section -Style Heading4 'Volumes Snapshot Configuration' { - Get-AbrOntapVserverVolumeSnapshot -Vserver $SVM - if ($HealthCheck.Vserver.Snapshot) { - Get-AbrOntapVserverVolumeSnapshotHealth -Vserver $SVM + if (Get-NcVol -VserverContext $SVM -Controller $Array | Where-Object { $_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' } | Get-NcSnapshot -Controller $Array) { + Section -Style Heading4 'Volumes Snapshot Configuration' { + Get-AbrOntapVserverVolumeSnapshot -Vserver $SVM + if ($HealthCheck.Vserver.Snapshot) { + Get-AbrOntapVserverVolumeSnapshotHealth -Vserver $SVM + } } } - } - if (Get-NcQtree -VserverContext $SVM -Controller $Array | Where-Object { $NULL -ne $_.Qtree }) { - Section -Style Heading4 'Qtrees' { - Get-AbrOntapVserverVolumesQtree -Vserver $SVM - } - } - if (Get-NcQuota -VserverContext $SVM -Controller $Array) { - Section -Style Heading4 'Volume Quota' { - Get-AbrOntapVserverVolumesQuota -Vserver $SVM - } - } - } - Section -Style Heading4 'Protocol Information' { - Paragraph "The following section provides a summary of the Vserver protocol information in $($SVM)." - BlankLine - #---------------------------------------------------------------------------------------------# - # NFS Section # - #---------------------------------------------------------------------------------------------# - if (Get-NcNfsService -VserverContext $SVM -Controller $Array) { - Section -Style Heading5 'NFS Services' { - Paragraph "The following section provides the NFS Service Information in $($SVM)." - BlankLine - Get-AbrOntapVserverNFSSummary -Vserver $SVM - if ($InfoLevel.Vserver -ge 2) { - Section -ExcludeFromTOC -Style Heading6 'NFS Options' { - Get-AbrOntapVserverNFSOption -Vserver $SVM - } + if (Get-NcQtree -VserverContext $SVM -Controller $Array | Where-Object { $NULL -ne $_.Qtree }) { + Section -Style Heading4 'Qtrees' { + Get-AbrOntapVserverVolumesQtree -Vserver $SVM } - if (Get-NcVserver -VserverContext $SVM -Controller $Array | Where-Object { $_.VserverType -eq 'data' -and $_.AllowedProtocols -eq 'nfs' -and $_.State -eq 'running' } | Get-NcNfsExport) { - Section -ExcludeFromTOC -Style Heading6 'NFS Volume Export' { - Get-AbrOntapVserverNFSExport -Vserver $SVM - } + } + if (Get-NcQuota -VserverContext $SVM -Controller $Array) { + Section -Style Heading4 'Volume Quota' { + Get-AbrOntapVserverVolumesQuota -Vserver $SVM } } } - #---------------------------------------------------------------------------------------------# - # CIFS Section # - #---------------------------------------------------------------------------------------------# - if (Get-NcVserver -VserverContext $SVM -Controller $Array | Where-Object { $_.VserverType -eq 'data' -and $_.AllowedProtocols -eq 'cifs' -and $_.State -eq 'running' } | Get-NcCifsServerStatus -Controller $Array -ErrorAction SilentlyContinue) { - Section -Style Heading5 'CIFS Services Information' { - Paragraph "The following section provides the CIFS Service Information in $($SVM)." - BlankLine - Get-AbrOntapVserverCIFSSummary -Vserver $SVM - if ($InfoLevel.Vserver -ge 2) { - Section -ExcludeFromTOC -Style Heading6 'CIFS Service Configuration' { - Get-AbrOntapVserverCIFSSecurity -Vserver $SVM + Section -Style Heading4 'Protocol Information' { + Paragraph "The following section provides a summary of the Vserver protocol information in $($SVM)." + BlankLine + #---------------------------------------------------------------------------------------------# + # NFS Section # + #---------------------------------------------------------------------------------------------# + if (Get-NcNfsService -VserverContext $SVM -Controller $Array) { + Section -Style Heading5 'NFS Services' { + Paragraph "The following section provides the NFS Service Information in $($SVM)." + BlankLine + Get-AbrOntapVserverNFSSummary -Vserver $SVM + if ($InfoLevel.Vserver -ge 2) { + Section -ExcludeFromTOC -Style Heading6 'NFS Options' { + Get-AbrOntapVserverNFSOption -Vserver $SVM + } } - Section -ExcludeFromTOC -Style Heading6 'CIFS Domain Controller' { - Get-AbrOntapVserverCIFSDC -Vserver $SVM + if (Get-NcVserver -VserverContext $SVM -Controller $Array | Where-Object { $_.VserverType -eq 'data' -and $_.AllowedProtocols -eq 'nfs' -and $_.State -eq 'running' } | Get-NcNfsExport) { + Section -ExcludeFromTOC -Style Heading6 'NFS Volume Export' { + Get-AbrOntapVserverNFSExport -Vserver $SVM + } } } - if (Get-NcCifsLocalGroup -VserverContext $SVM -Controller $Array) { - Section -ExcludeFromTOC -Style Heading6 'CIFS Local Group' { - Get-AbrOntapVserverCIFSLocalGroup -Vserver $SVM + } + #---------------------------------------------------------------------------------------------# + # CIFS Section # + #---------------------------------------------------------------------------------------------# + if (Get-NcVserver -VserverContext $SVM -Controller $Array | Where-Object { $_.VserverType -eq 'data' -and $_.AllowedProtocols -eq 'cifs' -and $_.State -eq 'running' } | Get-NcCifsServerStatus -Controller $Array -ErrorAction SilentlyContinue) { + Section -Style Heading5 'CIFS Services Information' { + Paragraph "The following section provides the CIFS Service Information in $($SVM)." + BlankLine + Get-AbrOntapVserverCIFSSummary -Vserver $SVM + if ($InfoLevel.Vserver -ge 2) { + Section -ExcludeFromTOC -Style Heading6 'CIFS Service Configuration' { + Get-AbrOntapVserverCIFSSecurity -Vserver $SVM + } + Section -ExcludeFromTOC -Style Heading6 'CIFS Domain Controller' { + Get-AbrOntapVserverCIFSDC -Vserver $SVM + } } - } - if (Get-NcCifsLocalGroupMember -VserverContext $SVM -Controller $Array) { - Section -ExcludeFromTOC -Style Heading6 'CIFS Local Group Members' { - Get-AbrOntapVserverCIFSLGMember -Vserver $SVM + if (Get-NcCifsLocalGroup -VserverContext $SVM -Controller $Array) { + Section -ExcludeFromTOC -Style Heading6 'CIFS Local Group' { + Get-AbrOntapVserverCIFSLocalGroup -Vserver $SVM + } } - } - if ($InfoLevel.Vserver -ge 2) { - Section -ExcludeFromTOC -Style Heading6 'CIFS Options' { - Get-AbrOntapVserverCIFSOption -Vserver $SVM + if (Get-NcCifsLocalGroupMember -VserverContext $SVM -Controller $Array) { + Section -ExcludeFromTOC -Style Heading6 'CIFS Local Group Members' { + Get-AbrOntapVserverCIFSLGMember -Vserver $SVM + } } - } - if (Get-NcCifsShare -VserverContext $SVM -Controller $Array) { - Section -ExcludeFromTOC -Style Heading6 'CIFS Share' { - Get-AbrOntapVserverCIFSShare -Vserver $SVM + if ($InfoLevel.Vserver -ge 2) { + Section -ExcludeFromTOC -Style Heading6 'CIFS Options' { + Get-AbrOntapVserverCIFSOption -Vserver $SVM + } } - Section -ExcludeFromTOC -Style Heading6 'CIFS Share Configuration' { - Get-AbrOntapVserverCIFSShareProp -Vserver $SVM + if (Get-NcCifsShare -VserverContext $SVM -Controller $Array) { + Section -ExcludeFromTOC -Style Heading6 'CIFS Share' { + Get-AbrOntapVserverCIFSShare -Vserver $SVM + } + Section -ExcludeFromTOC -Style Heading6 'CIFS Share Configuration' { + Get-AbrOntapVserverCIFSShareProp -Vserver $SVM + } } - } - if ($InfoLevel.Vserver -ge 2) { - if (Get-NcCifsSession -VserverContext $SVM -Controller $Array) { - Section -ExcludeFromTOC -Style Heading6 'CIFS Sessions' { - Get-AbrOntapVserverCIFSSession -Vserver $SVM + if ($InfoLevel.Vserver -ge 2) { + if (Get-NcCifsSession -VserverContext $SVM -Controller $Array) { + Section -ExcludeFromTOC -Style Heading6 'CIFS Sessions' { + Get-AbrOntapVserverCIFSSession -Vserver $SVM + } } } } } - } - #---------------------------------------------------------------------------------------------# - # NVME Section # - #---------------------------------------------------------------------------------------------# - if ( Get-NcNvme -Controller $Array | Where-Object { $_.Vserver -eq $SVM } ) { - Section -Style Heading5 'Nvme Services Information' { - Paragraph "The following section provides the Nvme Service Information in $($SVM)." - BlankLine - # Get-AbrOntapVserverNvmeSummary -Vserver $SVM - if (Get-NcNvmeInterface -VserverContext $Vserver -Controller $Array | Where-Object { $_.PhysicalProtocol -eq 'fibre_channel' }) { - Section -ExcludeFromTOC -Style Heading6 'Nvme FC Physical Adapter' { - Get-AbrOntapVserverNvmeFcAdapter -Vserver $SVM + #---------------------------------------------------------------------------------------------# + # NVME Section # + #---------------------------------------------------------------------------------------------# + if ( Get-NcNvme -Controller $Array | Where-Object { $_.Vserver -eq $SVM } ) { + Section -Style Heading5 'Nvme Services Information' { + Paragraph "The following section provides the Nvme Service Information in $($SVM)." + BlankLine + # Get-AbrOntapVserverNvmeSummary -Vserver $SVM + if (Get-NcNvmeInterface -VserverContext $Vserver -Controller $Array | Where-Object { $_.PhysicalProtocol -eq 'fibre_channel' }) { + Section -ExcludeFromTOC -Style Heading6 'Nvme FC Physical Adapter' { + Get-AbrOntapVserverNvmeFcAdapter -Vserver $SVM + } } - } - if (Get-NcNvmeInterface -VserverContext $Vserver -Controller $Array | Where-Object { $_.PhysicalProtocol -eq 'ethernet' }) { - Section -ExcludeFromTOC -Style Heading6 'Nvme TCP Physical Adapter' { - Get-AbrOntapVserverNvmeTcpAdapter -Vserver $SVM + if (Get-NcNvmeInterface -VserverContext $Vserver -Controller $Array | Where-Object { $_.PhysicalProtocol -eq 'ethernet' }) { + Section -ExcludeFromTOC -Style Heading6 'Nvme TCP Physical Adapter' { + Get-AbrOntapVserverNvmeTcpAdapter -Vserver $SVM + } + } + Section -ExcludeFromTOC -Style Heading6 'NVME Interfaces' { + Get-AbrOntapVserverNvmeInterface -Vserver $SVM } - } - Section -ExcludeFromTOC -Style Heading6 'NVME Interfaces' { - Get-AbrOntapVserverNvmeInterface -Vserver $SVM } } - } - #---------------------------------------------------------------------------------------------# - # ISCSI Section # - #---------------------------------------------------------------------------------------------# - if ( Get-NcIscsiService -Controller $Array | Where-Object { $_.Vserver -eq $SVM } ) { - Section -Style Heading5 'ISCSI Services' { - Paragraph "The following section provides the ISCSI Service Information in $($SVM)." - BlankLine - Get-AbrOntapVserverIscsiSummary -Vserver $SVM - Section -ExcludeFromTOC -Style Heading6 'ISCSI Interfaces' { - Get-AbrOntapVserverIscsiInterface -Vserver $SVM - } + #---------------------------------------------------------------------------------------------# + # ISCSI Section # + #---------------------------------------------------------------------------------------------# + if ( Get-NcIscsiService -Controller $Array | Where-Object { $_.Vserver -eq $SVM } ) { + Section -Style Heading5 'ISCSI Services' { + Paragraph "The following section provides the ISCSI Service Information in $($SVM)." + BlankLine + Get-AbrOntapVserverIscsiSummary -Vserver $SVM + Section -ExcludeFromTOC -Style Heading6 'ISCSI Interfaces' { + Get-AbrOntapVserverIscsiInterface -Vserver $SVM + } - $ISCSIClientInitiators = Get-AbrOntapVserverIscsiInitiator -Vserver $SVM - if ($ISCSIClientInitiators) { - Section -ExcludeFromTOC -Style Heading6 'ISCSI Client Initiators' { - $ISCSIClientInitiators + $ISCSIClientInitiators = Get-AbrOntapVserverIscsiInitiator -Vserver $SVM + if ($ISCSIClientInitiators) { + Section -ExcludeFromTOC -Style Heading6 'ISCSI Client Initiators' { + $ISCSIClientInitiators + } } } } - } - #---------------------------------------------------------------------------------------------# - # FCP Section # - #---------------------------------------------------------------------------------------------# - if ( Get-NcFcpService -Controller $Array | Where-Object { $_.Vserver -eq $SVM } ) { - Section -Style Heading5 'FCP Services Information' { - Paragraph "The following section provides the FCP Service Information in $($SVM)." - BlankLine - Get-AbrOntapVserverFcpSummary -Vserver $SVM - Section -ExcludeFromTOC -Style Heading6 'FCP Physical Adapter' { - Get-AbrOntapVserverFcpAdapter - } - Section -ExcludeFromTOC -Style Heading6 'FCP Interfaces' { - Get-AbrOntapVserverFcpInterface -Vserver $SVM + #---------------------------------------------------------------------------------------------# + # FCP Section # + #---------------------------------------------------------------------------------------------# + if ( Get-NcFcpService -Controller $Array | Where-Object { $_.Vserver -eq $SVM } ) { + Section -Style Heading5 'FCP Services Information' { + Paragraph "The following section provides the FCP Service Information in $($SVM)." + BlankLine + Get-AbrOntapVserverFcpSummary -Vserver $SVM + Section -ExcludeFromTOC -Style Heading6 'FCP Physical Adapter' { + Get-AbrOntapVserverFcpAdapter + } + Section -ExcludeFromTOC -Style Heading6 'FCP Interfaces' { + Get-AbrOntapVserverFcpInterface -Vserver $SVM + } } } - } - #---------------------------------------------------------------------------------------------# - # Lun Storage Section # - #---------------------------------------------------------------------------------------------# - if (Get-NcLun -Controller $Array | Where-Object { $_.Vserver -eq $SVM }) { - Section -Style Heading5 'Lun Storage' { - Paragraph "The following section provides the Lun Storage Information in $($SVM)." - BlankLine - Get-AbrOntapVserverLunStorage -Vserver $SVM - if (Get-NcIgroup -Vserver $SVM -Controller $Array) { - Section -ExcludeFromTOC -Style Heading6 'Igroup Mapping' { - Get-AbrOntapVserverLunIgroup -Vserver $SVM + #---------------------------------------------------------------------------------------------# + # Lun Storage Section # + #---------------------------------------------------------------------------------------------# + if (Get-NcLun -Controller $Array | Where-Object { $_.Vserver -eq $SVM }) { + Section -Style Heading5 'Lun Storage' { + Paragraph "The following section provides the Lun Storage Information in $($SVM)." + BlankLine + Get-AbrOntapVserverLunStorage -Vserver $SVM + if (Get-NcIgroup -Vserver $SVM -Controller $Array) { + Section -ExcludeFromTOC -Style Heading6 'Igroup Mapping' { + Get-AbrOntapVserverLunIgroup -Vserver $SVM + } } - } - $NonMappedLun = Get-AbrOntapVserverNonMappedLun -Vserver $SVM - if ($Healthcheck.Vserver.Status -and $NonMappedLun) { - Section -ExcludeFromTOC -Style Heading6 'HealthCheck - Non-Mapped Lun Information' { - Paragraph "The following section provides information of Non Mapped Lun in $($SVM)." - BlankLine - $NonMappedLun + $NonMappedLun = Get-AbrOntapVserverNonMappedLun -Vserver $SVM + if ($Healthcheck.Vserver.Status -and $NonMappedLun) { + Section -ExcludeFromTOC -Style Heading6 'HealthCheck - Non-Mapped Lun Information' { + Paragraph "The following section provides information of Non Mapped Lun in $($SVM)." + BlankLine + $NonMappedLun + } } } } - } - #---------------------------------------------------------------------------------------------# - # NameSpace & Subsystem Storage Section # - #---------------------------------------------------------------------------------------------# - if (Get-NcNvmeNamespace -Controller $Array | Where-Object { $_.Vserver -eq $SVM }) { - Section -Style Heading5 'Namespace Storage' { - Paragraph "The following section provides the Namespace Storage Information in $($SVM)." - BlankLine - Get-AbrOntapVserverNamespaceStorage -Vserver $SVM - if (Get-NcNvmeSubsystem -Vserver $SVM -Controller $Array) { - Section -ExcludeFromTOC -Style Heading6 'Subsystem Mapping' { - Get-AbrOntapVserverSubsystem -Vserver $SVM + #---------------------------------------------------------------------------------------------# + # NameSpace & Subsystem Storage Section # + #---------------------------------------------------------------------------------------------# + if (Get-NcNvmeNamespace -Controller $Array | Where-Object { $_.Vserver -eq $SVM }) { + Section -Style Heading5 'Namespace Storage' { + Paragraph "The following section provides the Namespace Storage Information in $($SVM)." + BlankLine + Get-AbrOntapVserverNamespaceStorage -Vserver $SVM + if (Get-NcNvmeSubsystem -Vserver $SVM -Controller $Array) { + Section -ExcludeFromTOC -Style Heading6 'Subsystem Mapping' { + Get-AbrOntapVserverSubsystem -Vserver $SVM + } } - } - $NonMappedNamespace = Get-AbrOntapVserverNonMappedNamespace -Vserver $SVM - if ($Healthcheck.Vserver.Status -and $NonMappedNamespace) { - Section -ExcludeFromTOC -Style Heading6 'HealthCheck - Non-Mapped Namespace Information' { - Paragraph "The following table provides information about Non Mapped Namespace in $($SVM)." - BlankLine - $NonMappedNamespace + $NonMappedNamespace = Get-AbrOntapVserverNonMappedNamespace -Vserver $SVM + if ($Healthcheck.Vserver.Status -and $NonMappedNamespace) { + Section -ExcludeFromTOC -Style Heading6 'HealthCheck - Non-Mapped Namespace Information' { + Paragraph "The following table provides information about Non Mapped Namespace in $($SVM)." + BlankLine + $NonMappedNamespace + } } } } - } - #---------------------------------------------------------------------------------------------# - # Consistency Groups Section # - #---------------------------------------------------------------------------------------------# - $CGs = Get-NetAppOntapAPI -uri "/api/application/consistency-groups?svm=$SVM&fields=**&return_records=true&return_timeout=15" - if ($CGs) { - Section -Style Heading5 'Consistency Groups' { - Paragraph "The following section provides Consistency Group Information in $($SVM)." - BlankLine - Get-AbrOntapVserverCGSummary -Vserver $SVM - foreach ($CG in $CGs) { - if ($CG.luns) { - Section -ExcludeFromTOC -Style Heading6 "$($CG.name) Luns" { - Get-AbrOntapVserverCGLun -CGObj $CG + #---------------------------------------------------------------------------------------------# + # Consistency Groups Section # + #---------------------------------------------------------------------------------------------# + $CGs = Get-NetAppOntapAPI -uri "/api/application/consistency-groups?svm=$SVM&fields=**&return_records=true&return_timeout=15" + if ($CGs) { + Section -Style Heading5 'Consistency Groups' { + Paragraph "The following section provides Consistency Group Information in $($SVM)." + BlankLine + Get-AbrOntapVserverCGSummary -Vserver $SVM + foreach ($CG in $CGs) { + if ($CG.luns) { + Section -ExcludeFromTOC -Style Heading6 "$($CG.name) Luns" { + Get-AbrOntapVserverCGLun -CGObj $CG + } } - } - if ($CG.namespaces) { - Section -ExcludeFromTOC -Style Heading6 "$($CG.name) Namespaces" { - Get-AbrOntapVserverCGNamespace -CGObj $CG + if ($CG.namespaces) { + Section -ExcludeFromTOC -Style Heading6 "$($CG.name) Namespaces" { + Get-AbrOntapVserverCGNamespace -CGObj $CG + } } } } } - } - #---------------------------------------------------------------------------------------------# - # S3 Section # - #---------------------------------------------------------------------------------------------# - $S3Data = Get-NetAppOntapAPI -uri "/api/protocols/s3/services?svm=$SVM&fields=*&return_records=true&return_timeout=15" - if ($S3Data) { - Section -Style Heading5 'S3 Services Configuration Information' { - Paragraph "The following section provides the S3 Service Information in $($SVM)." - BlankLine - Get-AbrOntapVserverS3Summary -Vserver $SVM - Section -ExcludeFromTOC -Style Heading6 'S3 Buckets' { - Get-AbrOntapVserverS3Bucket -Vserver $SVM + #---------------------------------------------------------------------------------------------# + # S3 Section # + #---------------------------------------------------------------------------------------------# + $S3Data = Get-NetAppOntapAPI -uri "/api/protocols/s3/services?svm=$SVM&fields=*&return_records=true&return_timeout=15" + if ($S3Data) { + Section -Style Heading5 'S3 Services Configuration Information' { + Paragraph "The following section provides the S3 Service Information in $($SVM)." + BlankLine + Get-AbrOntapVserverS3Summary -Vserver $SVM + Section -ExcludeFromTOC -Style Heading6 'S3 Buckets' { + Get-AbrOntapVserverS3Bucket -Vserver $SVM + } } } } } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } @@ -734,19 +758,23 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { BlankLine Get-AbrOntapEfficiencyAggr foreach ($SVM in $Vservers) { - $VolFilter = Get-NcVol -VserverContext $SVM -Controller $Array | Where-Object { ($_.State -eq 'online') -and ($_.Name -ne 'vol0') } - if (Get-NcEfficiency -Volume $VolFilter.Name[0] -Vserver $SVM -Controller $Array) { - Section -Style Heading4 "$SVM Vserver Volume Deduplication" { - Get-AbrOntapEfficiencyVolSisStatus -Vserver $SVM - Section -Style Heading5 'Volume Efficiency' { - Get-AbrOntapEfficiencyVol -Vserver $SVM - } - if ($InfoLevel.Efficiency -ge 2) { - Section -Style Heading5 'Detailed Volume Efficiency' { - Get-AbrOntapEfficiencyVolDetailed -Vserver $SVM + try { + $VolFilter = Get-NcVol -VserverContext $SVM -Controller $Array | Where-Object { ($_.State -eq 'online') -and ($_.Name -ne 'vol0') } + if ($VolFilter -and (Get-NcEfficiency -Volume $VolFilter.Name[0] -Vserver $SVM -Controller $Array)) { + Section -Style Heading4 "$SVM Vserver Volume Deduplication" { + Get-AbrOntapEfficiencyVolSisStatus -Vserver $SVM + Section -Style Heading5 'Volume Efficiency' { + Get-AbrOntapEfficiencyVol -Vserver $SVM + } + if ($InfoLevel.Efficiency -ge 2) { + Section -Style Heading5 'Detailed Volume Efficiency' { + Get-AbrOntapEfficiencyVolDetailed -Vserver $SVM + } } } } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } @@ -764,12 +792,16 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { Paragraph "The following section provides the Security related information in $($ClusterInfo.ClusterName)." BlankLine foreach ($SVM in $Vservers) { - if (Get-NcUser -Vserver $SVM -Controller $Array) { - Section -Style Heading3 "$SVM Vserver Local User" { - Paragraph "The following section provides the Local User information in $($SVM)." - BlankLine - Get-AbrOntapSecurityUser -Vserver $SVM + try { + if (Get-NcUser -Vserver $SVM -Controller $Array) { + Section -Style Heading3 "$SVM Vserver Local User" { + Paragraph "The following section provides the Local User information in $($SVM)." + BlankLine + Get-AbrOntapSecurityUser -Vserver $SVM + } } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } $MAPData = Get-NetAppOntapAPI -uri '/api/security/multi-admin-verify/approval-groups?fields=**&return_records=true&return_timeout=15' @@ -876,10 +908,14 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { if ($InfoLevel.System -ge 2) { $Nodes = Get-NcNode -Controller $Array foreach ($Node in $Nodes) { - if (Get-NcConfigBackup -Node $Node -Controller $Array) { - Section -Style Heading4 "$Node Configuration" { - Get-AbrOntapSysConfigBackup -Node $Node + try { + if (Get-NcConfigBackup -Node $Node -Controller $Array) { + Section -Style Heading4 "$Node Configuration" { + Get-AbrOntapSysConfigBackup -Node $Node + } } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } @@ -893,10 +929,14 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { if ($InfoLevel.System -ge 2) { $Nodes = Get-NcNode -Controller $Array foreach ($Node in $Nodes) { - if ($HealthCheck.System.EMS -and (Get-NcEmsMessage -Node $Node -Severity 'emergency', 'alert' -Controller $Array | Select-Object -First 30)) { - Section -Style Heading4 "$Node Emergency and Alert Messages" { - Get-AbrOntapSysConfigEMS -Node $Node + try { + if ($HealthCheck.System.EMS -and (Get-NcEmsMessage -Node $Node -Severity 'emergency', 'alert' -Controller $Array | Select-Object -First 30)) { + Section -Style Heading4 "$Node Emergency and Alert Messages" { + Get-AbrOntapSysConfigEMS -Node $Node + } } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Tools/Bin/linux-x64/AsBuiltReportChart.deps.json b/Src/Tools/Bin/linux-x64/AsBuiltReportChart.deps.json new file mode 100644 index 0000000..19950fb --- /dev/null +++ b/Src/Tools/Bin/linux-x64/AsBuiltReportChart.deps.json @@ -0,0 +1,144 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0/linux-x64", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": {}, + ".NETCoreApp,Version=v8.0/linux-x64": { + "AsBuiltReportChart/1.0.0": { + "dependencies": { + "HarfBuzzSharp.NativeAssets.Linux": "8.3.1.2", + "PowerShellStandard.Library": "5.1.1", + "ScottPlot": "5.1.57", + "SkiaSharp": "3.119.1", + "SkiaSharp.NativeAssets.Linux.NoDependencies": "3.119.1" + }, + "runtime": { + "AsBuiltReportChart.dll": {} + } + }, + "HarfBuzzSharp/8.3.1.1": { + "runtime": { + "lib/net8.0/HarfBuzzSharp.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "8.3.1.1" + } + } + }, + "HarfBuzzSharp.NativeAssets.Linux/8.3.1.2": { + "native": { + "runtimes/linux-x64/native/libHarfBuzzSharp.so": { + "fileVersion": "0.0.0.0" + } + } + }, + "PowerShellStandard.Library/5.1.1": { + "runtime": { + "lib/netstandard2.0/System.Management.Automation.dll": { + "assemblyVersion": "3.0.0.0", + "fileVersion": "5.1.1.0" + } + } + }, + "ScottPlot/5.1.57": { + "dependencies": { + "HarfBuzzSharp.NativeAssets.Linux": "8.3.1.2", + "SkiaSharp": "3.119.1", + "SkiaSharp.HarfBuzz": "3.119.0", + "SkiaSharp.NativeAssets.Linux.NoDependencies": "3.119.1" + }, + "runtime": { + "lib/net8.0/ScottPlot.dll": { + "assemblyVersion": "5.1.57.0", + "fileVersion": "5.1.57.0" + } + } + }, + "SkiaSharp/3.119.1": { + "runtime": { + "lib/net8.0/SkiaSharp.dll": { + "assemblyVersion": "3.119.0.0", + "fileVersion": "3.119.1.0" + } + } + }, + "SkiaSharp.HarfBuzz/3.119.0": { + "dependencies": { + "HarfBuzzSharp": "8.3.1.1", + "SkiaSharp": "3.119.1" + }, + "runtime": { + "lib/net8.0/SkiaSharp.HarfBuzz.dll": { + "assemblyVersion": "3.119.0.0", + "fileVersion": "3.119.0.0" + } + } + }, + "SkiaSharp.NativeAssets.Linux.NoDependencies/3.119.1": { + "native": { + "runtimes/linux-x64/native/libSkiaSharp.so": { + "fileVersion": "0.0.0.0" + } + } + } + } + }, + "libraries": { + "AsBuiltReportChart/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "HarfBuzzSharp/8.3.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tLZN66oe/uiRPTZfrCU4i8ScVGwqHNh5MHrXj0yVf4l7Mz0FhTGnQ71RGySROTmdognAs0JtluHkL41pIabWuQ==", + "path": "harfbuzzsharp/8.3.1.1", + "hashPath": "harfbuzzsharp.8.3.1.1.nupkg.sha512" + }, + "HarfBuzzSharp.NativeAssets.Linux/8.3.1.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-//Zak/ddP1XC2tMcWNEQboiFNmsQrZBnnzUyJAmibrZsd/0P1rvCaXip7MtPGkuvfwmu8Im39RytFDZERWySaw==", + "path": "harfbuzzsharp.nativeassets.linux/8.3.1.2", + "hashPath": "harfbuzzsharp.nativeassets.linux.8.3.1.2.nupkg.sha512" + }, + "PowerShellStandard.Library/5.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-e31xJjG+Kjbv6YF3Yq6D4Dl3or8v7LrNF41k3CXrWozW6hR1zcOe5KYuZJaGSiAgLnwP8wcW+I3+IWEzMPZKXQ==", + "path": "powershellstandard.library/5.1.1", + "hashPath": "powershellstandard.library.5.1.1.nupkg.sha512" + }, + "ScottPlot/5.1.57": { + "type": "package", + "serviceable": true, + "sha512": "sha512-x/4nH1T6ILZyVhCsJDd3GYE3DW4xnXk1q1KOHDBOXld8+BooNtjUlE3wPI6Un82/VYQ2h1J6E4wGC8GdN62B+w==", + "path": "scottplot/5.1.57", + "hashPath": "scottplot.5.1.57.nupkg.sha512" + }, + "SkiaSharp/3.119.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-+Ru1BTSZQne3Vp+vbSb50Ke3Nlc3ZnItxx4+751J9WZ8YzLKAV/n+9DAo4zFTyeCI//ueT63c+VybmTTpYBEiw==", + "path": "skiasharp/3.119.1", + "hashPath": "skiasharp.3.119.1.nupkg.sha512" + }, + "SkiaSharp.HarfBuzz/3.119.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5ocGzl+RYEZFnUPUbModshnEFvKTku4hTtOBsLvy5MCK2KAHjq5Nw2+uAVUx79Rjh0z8fTojT6ZVav8MJgW0ug==", + "path": "skiasharp.harfbuzz/3.119.0", + "hashPath": "skiasharp.harfbuzz.3.119.0.nupkg.sha512" + }, + "SkiaSharp.NativeAssets.Linux.NoDependencies/3.119.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5jj6gBCe4K6TLnIERBXZfmUNE0TUyeTaF28RCxdCgIDVDaCAbHwEbk99eNYRFem/ubW/hKdvayZBOt6PaDL05g==", + "path": "skiasharp.nativeassets.linux.nodependencies/3.119.1", + "hashPath": "skiasharp.nativeassets.linux.nodependencies.3.119.1.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/Src/Tools/Bin/linux-x64/AsBuiltReportChart.dll b/Src/Tools/Bin/linux-x64/AsBuiltReportChart.dll new file mode 100644 index 0000000..4c3bdcc Binary files /dev/null and b/Src/Tools/Bin/linux-x64/AsBuiltReportChart.dll differ diff --git a/Src/Tools/Bin/linux-x64/AsBuiltReportChart.pdb b/Src/Tools/Bin/linux-x64/AsBuiltReportChart.pdb new file mode 100644 index 0000000..d5764e6 Binary files /dev/null and b/Src/Tools/Bin/linux-x64/AsBuiltReportChart.pdb differ diff --git a/Src/Tools/Bin/linux-x64/HarfBuzzSharp.dll b/Src/Tools/Bin/linux-x64/HarfBuzzSharp.dll new file mode 100755 index 0000000..ee75381 Binary files /dev/null and b/Src/Tools/Bin/linux-x64/HarfBuzzSharp.dll differ diff --git a/Src/Tools/Bin/linux-x64/ScottPlot.dll b/Src/Tools/Bin/linux-x64/ScottPlot.dll new file mode 100755 index 0000000..264e257 Binary files /dev/null and b/Src/Tools/Bin/linux-x64/ScottPlot.dll differ diff --git a/Src/Tools/Bin/linux-x64/SkiaSharp.HarfBuzz.dll b/Src/Tools/Bin/linux-x64/SkiaSharp.HarfBuzz.dll new file mode 100755 index 0000000..362cbf4 Binary files /dev/null and b/Src/Tools/Bin/linux-x64/SkiaSharp.HarfBuzz.dll differ diff --git a/Src/Tools/Bin/linux-x64/SkiaSharp.dll b/Src/Tools/Bin/linux-x64/SkiaSharp.dll new file mode 100755 index 0000000..40b5f96 Binary files /dev/null and b/Src/Tools/Bin/linux-x64/SkiaSharp.dll differ diff --git a/Src/Tools/Bin/linux-x64/System.Management.Automation.dll b/Src/Tools/Bin/linux-x64/System.Management.Automation.dll new file mode 100755 index 0000000..4774bbd Binary files /dev/null and b/Src/Tools/Bin/linux-x64/System.Management.Automation.dll differ diff --git a/Src/Tools/Bin/linux-x64/libHarfBuzzSharp.so b/Src/Tools/Bin/linux-x64/libHarfBuzzSharp.so new file mode 100755 index 0000000..2d442dc Binary files /dev/null and b/Src/Tools/Bin/linux-x64/libHarfBuzzSharp.so differ diff --git a/Src/Tools/Bin/linux-x64/libSkiaSharp.so b/Src/Tools/Bin/linux-x64/libSkiaSharp.so new file mode 100755 index 0000000..4b81dc9 Binary files /dev/null and b/Src/Tools/Bin/linux-x64/libSkiaSharp.so differ diff --git a/Src/Tools/Bin/osx-x64/AsBuiltReportChart.deps.json b/Src/Tools/Bin/osx-x64/AsBuiltReportChart.deps.json new file mode 100644 index 0000000..d9ad41e --- /dev/null +++ b/Src/Tools/Bin/osx-x64/AsBuiltReportChart.deps.json @@ -0,0 +1,146 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0/osx-x64", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": {}, + ".NETCoreApp,Version=v8.0/osx-x64": { + "AsBuiltReportChart/1.0.0": { + "dependencies": { + "PowerShellStandard.Library": "5.1.1", + "ScottPlot": "5.1.57", + "SkiaSharp": "3.119.1" + }, + "runtime": { + "AsBuiltReportChart.dll": {} + } + }, + "HarfBuzzSharp/8.3.1.1": { + "dependencies": { + "HarfBuzzSharp.NativeAssets.macOS": "8.3.1.1" + }, + "runtime": { + "lib/net8.0/HarfBuzzSharp.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "8.3.1.1" + } + } + }, + "HarfBuzzSharp.NativeAssets.macOS/8.3.1.1": { + "native": { + "runtimes/osx/native/libHarfBuzzSharp.dylib": { + "fileVersion": "0.0.0.0" + } + } + }, + "PowerShellStandard.Library/5.1.1": { + "runtime": { + "lib/netstandard2.0/System.Management.Automation.dll": { + "assemblyVersion": "3.0.0.0", + "fileVersion": "5.1.1.0" + } + } + }, + "ScottPlot/5.1.57": { + "dependencies": { + "SkiaSharp": "3.119.1", + "SkiaSharp.HarfBuzz": "3.119.0" + }, + "runtime": { + "lib/net8.0/ScottPlot.dll": { + "assemblyVersion": "5.1.57.0", + "fileVersion": "5.1.57.0" + } + } + }, + "SkiaSharp/3.119.1": { + "dependencies": { + "SkiaSharp.NativeAssets.macOS": "3.119.1" + }, + "runtime": { + "lib/net8.0/SkiaSharp.dll": { + "assemblyVersion": "3.119.0.0", + "fileVersion": "3.119.1.0" + } + } + }, + "SkiaSharp.HarfBuzz/3.119.0": { + "dependencies": { + "HarfBuzzSharp": "8.3.1.1", + "SkiaSharp": "3.119.1" + }, + "runtime": { + "lib/net8.0/SkiaSharp.HarfBuzz.dll": { + "assemblyVersion": "3.119.0.0", + "fileVersion": "3.119.0.0" + } + } + }, + "SkiaSharp.NativeAssets.macOS/3.119.1": { + "native": { + "runtimes/osx/native/libSkiaSharp.dylib": { + "fileVersion": "0.0.0.0" + } + } + } + } + }, + "libraries": { + "AsBuiltReportChart/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "HarfBuzzSharp/8.3.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tLZN66oe/uiRPTZfrCU4i8ScVGwqHNh5MHrXj0yVf4l7Mz0FhTGnQ71RGySROTmdognAs0JtluHkL41pIabWuQ==", + "path": "harfbuzzsharp/8.3.1.1", + "hashPath": "harfbuzzsharp.8.3.1.1.nupkg.sha512" + }, + "HarfBuzzSharp.NativeAssets.macOS/8.3.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-jbtCsgftcaFLCA13tVKo5iWdElJScrulLTKJre36O4YQTIlwDtPPqhRZNk+Y0vv4D1gxbscasGRucUDfS44ofQ==", + "path": "harfbuzzsharp.nativeassets.macos/8.3.1.1", + "hashPath": "harfbuzzsharp.nativeassets.macos.8.3.1.1.nupkg.sha512" + }, + "PowerShellStandard.Library/5.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-e31xJjG+Kjbv6YF3Yq6D4Dl3or8v7LrNF41k3CXrWozW6hR1zcOe5KYuZJaGSiAgLnwP8wcW+I3+IWEzMPZKXQ==", + "path": "powershellstandard.library/5.1.1", + "hashPath": "powershellstandard.library.5.1.1.nupkg.sha512" + }, + "ScottPlot/5.1.57": { + "type": "package", + "serviceable": true, + "sha512": "sha512-x/4nH1T6ILZyVhCsJDd3GYE3DW4xnXk1q1KOHDBOXld8+BooNtjUlE3wPI6Un82/VYQ2h1J6E4wGC8GdN62B+w==", + "path": "scottplot/5.1.57", + "hashPath": "scottplot.5.1.57.nupkg.sha512" + }, + "SkiaSharp/3.119.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-+Ru1BTSZQne3Vp+vbSb50Ke3Nlc3ZnItxx4+751J9WZ8YzLKAV/n+9DAo4zFTyeCI//ueT63c+VybmTTpYBEiw==", + "path": "skiasharp/3.119.1", + "hashPath": "skiasharp.3.119.1.nupkg.sha512" + }, + "SkiaSharp.HarfBuzz/3.119.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5ocGzl+RYEZFnUPUbModshnEFvKTku4hTtOBsLvy5MCK2KAHjq5Nw2+uAVUx79Rjh0z8fTojT6ZVav8MJgW0ug==", + "path": "skiasharp.harfbuzz/3.119.0", + "hashPath": "skiasharp.harfbuzz.3.119.0.nupkg.sha512" + }, + "SkiaSharp.NativeAssets.macOS/3.119.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-6hR3BdLhApjDxR1bFrJ7/lMydPfI01s3K+3WjIXFUlfC0MFCFCwRzv+JtzIkW9bDXs7XUVQS+6EVf0uzCasnGQ==", + "path": "skiasharp.nativeassets.macos/3.119.1", + "hashPath": "skiasharp.nativeassets.macos.3.119.1.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/Src/Tools/Bin/osx-x64/AsBuiltReportChart.dll b/Src/Tools/Bin/osx-x64/AsBuiltReportChart.dll new file mode 100644 index 0000000..38e249a Binary files /dev/null and b/Src/Tools/Bin/osx-x64/AsBuiltReportChart.dll differ diff --git a/Src/Tools/Bin/osx-x64/AsBuiltReportChart.pdb b/Src/Tools/Bin/osx-x64/AsBuiltReportChart.pdb new file mode 100644 index 0000000..aac531b Binary files /dev/null and b/Src/Tools/Bin/osx-x64/AsBuiltReportChart.pdb differ diff --git a/Src/Tools/Bin/osx-x64/HarfBuzzSharp.dll b/Src/Tools/Bin/osx-x64/HarfBuzzSharp.dll new file mode 100755 index 0000000..ee75381 Binary files /dev/null and b/Src/Tools/Bin/osx-x64/HarfBuzzSharp.dll differ diff --git a/Src/Tools/Bin/osx-x64/ScottPlot.dll b/Src/Tools/Bin/osx-x64/ScottPlot.dll new file mode 100755 index 0000000..264e257 Binary files /dev/null and b/Src/Tools/Bin/osx-x64/ScottPlot.dll differ diff --git a/Src/Tools/Bin/osx-x64/SkiaSharp.HarfBuzz.dll b/Src/Tools/Bin/osx-x64/SkiaSharp.HarfBuzz.dll new file mode 100755 index 0000000..362cbf4 Binary files /dev/null and b/Src/Tools/Bin/osx-x64/SkiaSharp.HarfBuzz.dll differ diff --git a/Src/Tools/Bin/osx-x64/SkiaSharp.dll b/Src/Tools/Bin/osx-x64/SkiaSharp.dll new file mode 100755 index 0000000..40b5f96 Binary files /dev/null and b/Src/Tools/Bin/osx-x64/SkiaSharp.dll differ diff --git a/Src/Tools/Bin/osx-x64/System.Management.Automation.dll b/Src/Tools/Bin/osx-x64/System.Management.Automation.dll new file mode 100755 index 0000000..4774bbd Binary files /dev/null and b/Src/Tools/Bin/osx-x64/System.Management.Automation.dll differ diff --git a/Src/Tools/Bin/osx-x64/libHarfBuzzSharp.dylib b/Src/Tools/Bin/osx-x64/libHarfBuzzSharp.dylib new file mode 100755 index 0000000..3305506 Binary files /dev/null and b/Src/Tools/Bin/osx-x64/libHarfBuzzSharp.dylib differ diff --git a/Src/Tools/Bin/osx-x64/libSkiaSharp.dylib b/Src/Tools/Bin/osx-x64/libSkiaSharp.dylib new file mode 100755 index 0000000..fcde75a Binary files /dev/null and b/Src/Tools/Bin/osx-x64/libSkiaSharp.dylib differ diff --git a/Src/Tools/Bin/windows-x64/AsBuiltReportChart.deps.json b/Src/Tools/Bin/windows-x64/AsBuiltReportChart.deps.json new file mode 100644 index 0000000..79a49a1 --- /dev/null +++ b/Src/Tools/Bin/windows-x64/AsBuiltReportChart.deps.json @@ -0,0 +1,146 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0/win-x64", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": {}, + ".NETCoreApp,Version=v8.0/win-x64": { + "AsBuiltReportChart/1.0.0": { + "dependencies": { + "PowerShellStandard.Library": "5.1.1", + "ScottPlot": "5.1.57", + "SkiaSharp": "3.119.1" + }, + "runtime": { + "AsBuiltReportChart.dll": {} + } + }, + "HarfBuzzSharp/8.3.1.1": { + "dependencies": { + "HarfBuzzSharp.NativeAssets.Win32": "8.3.1.1" + }, + "runtime": { + "lib/net8.0/HarfBuzzSharp.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "8.3.1.1" + } + } + }, + "HarfBuzzSharp.NativeAssets.Win32/8.3.1.1": { + "native": { + "runtimes/win-x64/native/libHarfBuzzSharp.dll": { + "fileVersion": "0.0.0.0" + } + } + }, + "PowerShellStandard.Library/5.1.1": { + "runtime": { + "lib/netstandard2.0/System.Management.Automation.dll": { + "assemblyVersion": "3.0.0.0", + "fileVersion": "5.1.1.0" + } + } + }, + "ScottPlot/5.1.57": { + "dependencies": { + "SkiaSharp": "3.119.1", + "SkiaSharp.HarfBuzz": "3.119.0" + }, + "runtime": { + "lib/net8.0/ScottPlot.dll": { + "assemblyVersion": "5.1.57.0", + "fileVersion": "5.1.57.0" + } + } + }, + "SkiaSharp/3.119.1": { + "dependencies": { + "SkiaSharp.NativeAssets.Win32": "3.119.1" + }, + "runtime": { + "lib/net8.0/SkiaSharp.dll": { + "assemblyVersion": "3.119.0.0", + "fileVersion": "3.119.1.0" + } + } + }, + "SkiaSharp.HarfBuzz/3.119.0": { + "dependencies": { + "HarfBuzzSharp": "8.3.1.1", + "SkiaSharp": "3.119.1" + }, + "runtime": { + "lib/net8.0/SkiaSharp.HarfBuzz.dll": { + "assemblyVersion": "3.119.0.0", + "fileVersion": "3.119.0.0" + } + } + }, + "SkiaSharp.NativeAssets.Win32/3.119.1": { + "native": { + "runtimes/win-x64/native/libSkiaSharp.dll": { + "fileVersion": "0.0.0.0" + } + } + } + } + }, + "libraries": { + "AsBuiltReportChart/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "HarfBuzzSharp/8.3.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tLZN66oe/uiRPTZfrCU4i8ScVGwqHNh5MHrXj0yVf4l7Mz0FhTGnQ71RGySROTmdognAs0JtluHkL41pIabWuQ==", + "path": "harfbuzzsharp/8.3.1.1", + "hashPath": "harfbuzzsharp.8.3.1.1.nupkg.sha512" + }, + "HarfBuzzSharp.NativeAssets.Win32/8.3.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-UsJtQsfAJoFDZrXc4hCUfRPMqccfKZ0iumJ/upcUjz/cmsTgVFGNEL5yaJWmkqsuFYdMWbj/En5/kS4PFl9hBA==", + "path": "harfbuzzsharp.nativeassets.win32/8.3.1.1", + "hashPath": "harfbuzzsharp.nativeassets.win32.8.3.1.1.nupkg.sha512" + }, + "PowerShellStandard.Library/5.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-e31xJjG+Kjbv6YF3Yq6D4Dl3or8v7LrNF41k3CXrWozW6hR1zcOe5KYuZJaGSiAgLnwP8wcW+I3+IWEzMPZKXQ==", + "path": "powershellstandard.library/5.1.1", + "hashPath": "powershellstandard.library.5.1.1.nupkg.sha512" + }, + "ScottPlot/5.1.57": { + "type": "package", + "serviceable": true, + "sha512": "sha512-x/4nH1T6ILZyVhCsJDd3GYE3DW4xnXk1q1KOHDBOXld8+BooNtjUlE3wPI6Un82/VYQ2h1J6E4wGC8GdN62B+w==", + "path": "scottplot/5.1.57", + "hashPath": "scottplot.5.1.57.nupkg.sha512" + }, + "SkiaSharp/3.119.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-+Ru1BTSZQne3Vp+vbSb50Ke3Nlc3ZnItxx4+751J9WZ8YzLKAV/n+9DAo4zFTyeCI//ueT63c+VybmTTpYBEiw==", + "path": "skiasharp/3.119.1", + "hashPath": "skiasharp.3.119.1.nupkg.sha512" + }, + "SkiaSharp.HarfBuzz/3.119.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5ocGzl+RYEZFnUPUbModshnEFvKTku4hTtOBsLvy5MCK2KAHjq5Nw2+uAVUx79Rjh0z8fTojT6ZVav8MJgW0ug==", + "path": "skiasharp.harfbuzz/3.119.0", + "hashPath": "skiasharp.harfbuzz.3.119.0.nupkg.sha512" + }, + "SkiaSharp.NativeAssets.Win32/3.119.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-8C4GSXVJqSr0y3Tyyv5jz6MJSTVUyYkMjeKrzK+VyZPGLo89MNoUEclVuYahzOCDdtbfXrd2HtxXfDuvoSXrUw==", + "path": "skiasharp.nativeassets.win32/3.119.1", + "hashPath": "skiasharp.nativeassets.win32.3.119.1.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/Src/Tools/Bin/windows-x64/AsBuiltReportChart.dll b/Src/Tools/Bin/windows-x64/AsBuiltReportChart.dll new file mode 100644 index 0000000..6f6758c Binary files /dev/null and b/Src/Tools/Bin/windows-x64/AsBuiltReportChart.dll differ diff --git a/Src/Tools/Bin/windows-x64/AsBuiltReportChart.pdb b/Src/Tools/Bin/windows-x64/AsBuiltReportChart.pdb new file mode 100644 index 0000000..1780f86 Binary files /dev/null and b/Src/Tools/Bin/windows-x64/AsBuiltReportChart.pdb differ diff --git a/Src/Tools/Bin/windows-x64/HarfBuzzSharp.dll b/Src/Tools/Bin/windows-x64/HarfBuzzSharp.dll new file mode 100755 index 0000000..ee75381 Binary files /dev/null and b/Src/Tools/Bin/windows-x64/HarfBuzzSharp.dll differ diff --git a/Src/Tools/Bin/windows-x64/ScottPlot.dll b/Src/Tools/Bin/windows-x64/ScottPlot.dll new file mode 100755 index 0000000..264e257 Binary files /dev/null and b/Src/Tools/Bin/windows-x64/ScottPlot.dll differ diff --git a/Src/Tools/Bin/windows-x64/SkiaSharp.HarfBuzz.dll b/Src/Tools/Bin/windows-x64/SkiaSharp.HarfBuzz.dll new file mode 100755 index 0000000..362cbf4 Binary files /dev/null and b/Src/Tools/Bin/windows-x64/SkiaSharp.HarfBuzz.dll differ diff --git a/Src/Tools/Bin/windows-x64/SkiaSharp.dll b/Src/Tools/Bin/windows-x64/SkiaSharp.dll new file mode 100755 index 0000000..40b5f96 Binary files /dev/null and b/Src/Tools/Bin/windows-x64/SkiaSharp.dll differ diff --git a/Src/Tools/Bin/windows-x64/System.Management.Automation.dll b/Src/Tools/Bin/windows-x64/System.Management.Automation.dll new file mode 100755 index 0000000..4774bbd Binary files /dev/null and b/Src/Tools/Bin/windows-x64/System.Management.Automation.dll differ diff --git a/Src/Tools/Bin/windows-x64/libHarfBuzzSharp.dll b/Src/Tools/Bin/windows-x64/libHarfBuzzSharp.dll new file mode 100755 index 0000000..2bb6849 Binary files /dev/null and b/Src/Tools/Bin/windows-x64/libHarfBuzzSharp.dll differ diff --git a/Src/Tools/Bin/windows-x64/libSkiaSharp.dll b/Src/Tools/Bin/windows-x64/libSkiaSharp.dll new file mode 100755 index 0000000..036745b Binary files /dev/null and b/Src/Tools/Bin/windows-x64/libSkiaSharp.dll differ diff --git a/Todo.md b/Todo.md index 1f1ff94..71063ca 100644 --- a/Todo.md +++ b/Todo.md @@ -40,27 +40,22 @@ ```powershell -$password = ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force -$Cred = New-Object System.Management.Automation.PSCredential ("admin", $password) - -Connect-NcController 192.168.7.60 -Credential $Cred - Import-Module AsBuiltReport.NetApp.ONTAP -Force Import-Module NetApp.ONTAP -Force Import-Module Diagrammer.Core -Force -New-AsBuiltReport -Report NetApp.ONTAP -AsBuiltConfigFilePath "$($env:HOME)\script\AsBuiltReport.json" -OutputFolderPath "$($env:HOME)\" -Target 192.168.7.60 -Format HTML -EnableHealthCheck -Credential $Cred -ReportConfigFilePath "$($env:HOME)\script\AsBuiltReport.NetApp.ONTAP.json" +New-AsBuiltReport -Report NetApp.ONTAP -AsBuiltConfigFilePath "$($env:HOME)/script/AsBuiltReport.json" -OutputFolderPath "$($env:HOME)" -Target 192.168.7.60 -Format HTML -EnableHealthCheck -UserName 'admin' -Password 'P@ssw0rd' -ReportConfigFilePath "$($env:HOME)/script/AsBuiltReport.NetApp.ONTAP.json" ``` ```powershell $password = ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force $Cred = New-Object System.Management.Automation.PSCredential ("admin", $password) -Connect-NcController 192.168.5.70 -Credential $Cred +Connect-NcController 192.168.5.72 -Credential $Cred Import-Module AsBuiltReport.NetApp.ONTAP -Force Import-Module NetApp.ONTAP -Force Import-Module Diagrammer.Core -Force -New-AsBuiltReport -Report NetApp.ONTAP -AsBuiltConfigFilePath "$($env:HOME)\script\AsBuiltReport.json" -OutputFolderPath "$($env:HOME)\" -Target 192.168.5.70 -Format HTML -EnableHealthCheck -Credential $Cred -ReportConfigFilePath "$($env:HOME)\script\AsBuiltReport.NetApp.ONTAP.json" +New-AsBuiltReport -Report NetApp.ONTAP -AsBuiltConfigFilePath "$($env:HOME)/script/AsBuiltReport.json" -OutputFolderPath "$($env:HOME)" -Target 192.168.5.72 -Format HTML -EnableHealthCheck -Credential $Cred -ReportConfigFilePath "$($env:HOME)/script/AsBuiltReport.NetApp.ONTAP.json" ``` \ No newline at end of file